FCN网络学习笔记

article/2025/9/16 16:46:26

目录

  • 前言
  • 1. 网络结构
  • 2. 损失计算:Cross Entropy Loss
  • 参考

前言

FCN网络是首个端对端的针对像素级预测的全卷积网络。
其中,全卷积的含义是将分类网络的全连接层全部替换成了卷积层。使用了分类网络作为backbone,将会复用分类网路在ImageNet上的预训练权重,这就涉及到将全连接层的权重转化到卷积层当中。FCN网络结构十分简单,却又十分有效。从下图中可以看到,FCN-8s的效果已经与GT十分接近。
在这里插入图片描述

1. 网络结构

在这里插入图片描述

从上图可以看到FCN网络正向推理以及反向学习的过程。通过一系列的卷积下采样得到特征层。由于使用的数据集是PASCAL VOC,其中有20个类别,再加上1个背景类,所以输出的通道数目为21。接着再对其进行上采样,就得到和原图同样大小的一个特征图,其channel为21。特征图中每一个像素都有21个通道,对这21个值进行softmax处理,就可以得到该像素针对每一个类别的预测概率。取概率最大的一个类别即为该像素的预测类别。

在分类网络中,最后三层往往是三个全连接层,最后会得到针对1000个类别的预测值,这1000个预测值经过softmax处理之后就能得到每个类别的概率。绘制成柱状图,可以看到预测类别概率越大,高度越高。

可以看到,对于全连接层来说,其输入的节点个数是固定的,训练过程中如果输入个数发生变化,全连接层就会报错。所以,对于当时的分类网络来说,输入图片大小是固定的。(后面提出的全局池化操作解决了这一问题)

如果将全连接层全部转化为卷积层,对于输入的大小则没有严格的限制。对应convolutionalization的过程,将全连接层的权重参数转化到卷积层当中。如果输入图像的大小大于 224 × 224 224 \times 224 224×224最终得到的特征图高度和宽度是大于1的,这样输出的每一个通道的数据变成了二维数据,就可以将其可视化为一个heatmap的形式。
在这里插入图片描述

回忆VGG16的网络模型,输入图片从 224 × 224 × 3 224 \times 224 \times 3 224×224×3 7 × 7 × 512 7 \times 7 \times 512 7×7×512,总共下采样了32倍。最后经过三个全连接层,转化为1000个节点的向量进行输出。
在这里插入图片描述
全连接层的参数如何转换到卷积层当中呢?
在这里插入图片描述
在分类网络当中,将 7 × 7 × 512 7 \times 7 \times 512 7×7×512的矩阵首先进行Flatten展平处理,得到一个长度为25088个节点的向量,通过全连接层输出后得到长度4096维的向量。每一维输出向量都要和输入进行全连接,则总共有 25088 × 4096 25088 \times 4096 25088×4096个权重参数。

当不适用全连接层,直接使用卷积核大小 7 × 7 7 \times 7 7×7,步距为1,卷积核个数为4096的卷积操作时,其中一个卷积核对应 7 × 7 × 512 7 \times 7 \times 512 7×7×512个参数,刚好与全连接层的输入节点个数相同,所以全连接层输出中一个节点所对应的参数个数与一个卷积核的参数是一样的。故直接将全连接层每一个节点所对应的权重参数进行reshape处理,就能直接赋值给卷积层进行使用了。

原论文中提到的FCN-32s、FCN-16s和FCN-8s分别是什么意思?

FCN-32s是指将预测结果上采样了32倍还原回了原图大小,同理16s指上采样16倍,8s指上采样8倍。
FCN-32s的详细结构如下:
在这里插入图片描述

其中,VGG16 Backbone对应到全连接层之前的网络,FC6代表第一个全连接层对应的卷积层,FC7代表第二个全连接层对应的卷积层。对于FC6,由于卷积核大小为 7 × 7 7 \times 7 7×7,所以当 p a d d i n g = 3 padding=3 padding=3时,根据公式 H = H − K + 2 × p a d d i n g s t r i d e + 1 H = \frac{H - K + 2 \times padding}{stride} + 1 H=strideHK+2×padding+1,输出大小不会发生变化。对于FC7,由于卷积核大小为 1 × 1 1 \times 1 1×1,所以输出大小也不会发生变化。

通过 1 × 1 1 \times 1 1×1的卷积层,高宽仍不发生变化,输出通道数变为类别个数(包含背景类)。最后,同通过一个转置卷积上采样32倍,恢复原图大小。其中,原论文的代码实现是使用双线性插值的参数初始化转置卷积的参数。针对每一个像素都有num_cls个参数,对其进行softmax处理,就能得到每一个像素的预测类别。

注意:原论文中对应的源码在backbone的第一个卷积层处,将padding设置为100。这是为了防止输入图片过小而导致模型报错。(现在看来并没有必要)

FCN-16s结构如下:
在这里插入图片描述
与FCN-32s第一个不同之处在于第一个转置卷积。FCN-32s是直接上采样32倍,而FCN-16s则是先上采样2倍,再与来自Max-pooling4输出的特征图相加,最后上采样16倍,得到了原图尺寸。

FCN-8s结构如下:
在这里插入图片描述
FCN-8s中不仅利用到了来自Maxpooling4的输出,还利用到了来自Maxpooling3的输出,最终上采样8倍,得到最终的原图尺寸。

2. 损失计算:Cross Entropy Loss

在这里插入图片描述
左边的图为最终预测还原回原图尺寸的特征图,针对每一个像素的预测类别,可以与其对应的True Label计算交叉熵损失,最后将所有像素的交叉熵损失求平均,得到整个网络的平均交叉熵损失。

参考

FCN网络结构详解(语义分割)


http://chatgpt.dhexx.cn/article/s5DVhgZQ.shtml

相关文章

深度学习-全卷积神经网络(FCN)

1. 简介 全卷积神经网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之…

FCN全卷积网络理解及代码实现(来自pytorch官方实现)

视频链接:https://www.bilibili.com/video/BV1J3411C7zd?vd_sourcea0d4f7000e77468aec70dc618794d26f 代码:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing FCN是2015年提出的首个端对端的针对像素级预测的全卷积网络。 如今的pyt…

FCN网络结构解析

daily:作为深度学习图片分割第一个学习的网络结构 Q1: 为什么要用FCN? A1:应为和以前网络R-CNN,SDS相比提升比较大 Q2:与CNN什么区别? A2:使用全卷积层代替全连接层 Q3:为什么要进行…

FCN网络详解

参考视频:FCN网络结构详解(语义分割)_哔哩哔哩_bilibili FCN是首个端对端的针对像素级预测的全卷积网络 这是作者提出的网络中的输出对比图,可以看到当FCN-8s效果接近真实分割图。 普通卷积分类网络与FCN对比 在这个模型提出之前,我们来看一下…

FCN全卷积神经网络

目录 前言 一、FCN的意义 二、先验知识 1.FCN-32S,FCN-16S,FCN-8S 2.上采样,下采样 3.大体网络结构 4.与传统网络(带全连接层的网络)区别 5.传统网络VGG网络结构 三、FCN网络结构解析 1.FCN-32S 2.FCN-16S 3.FCN-8S !!!重要&…

FCN算法详解

基于全卷积网络的语义分割 1. 摘要 卷积网络是一种强大的视觉模型,可产生特征的层次结构。卷积网络在语义分割方面的应用已超过了最先进的水平。本文关键是建立“全卷积”网络,它接受任意大小的输入,并通过有效的前向传播产生相应大小的输出。本文定义并详细描述了全卷积网…

FCN网络(Fully Convolutional Networks)

首个端到端的针对像素级预测的全卷积网络 原理:将图片进行多次卷积下采样得到chanel为21的特征层,再经过上采样得到和原图一样大的图片,最后经过softmax得到类别概率值 将全连接层全部变成卷积层:通常的图像分类网络最后几层是全…

FCN网络(Fully Convolutional Networks for Semantic Segmentation)

一.概述 FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map。因为FCN网络中所有的层都是卷积层,故称为全卷积网络。 全卷积神经网络主要使用了三种技术: 卷积化(Con…

FCN的代码解读

目录 模型初始化 VGG初始化 FCN初始化 图片的预处理 图片处理 图片编码 计算相关参数 模型训练 一个小问题 完整代码 参考 最近浅研究了一下关于图像领域的图像分割的相关知识,发现水还是挺深的,因为FCN差不多也是领域的开山鼻祖,所以就先从…

FCN网络介绍

目录 前言一.FCN网络二.网络创新点 前言 在图像分割领域,有很多经典的网络,如MASK R-CNN,U-Net,SegNet,DeepLab等网络都是以FCN为基础进行设计的。我们这里简单介绍一下这个网络。 一.FCN网络 FCN 即全卷积网络&#…

FCN简单理解

文章目录 整体把握卷积层替换全连接层的意义卷积层替换全连接层的具体方法网络结构中“放大”、“缩小”跳级的思想损失函数 整体把握 FCN的论文主要集中于语义分割,当然这种结构现在已经运用在计算机视觉的各种任务中。FCN创造性的将传统CNN的全连接层都转换成了卷…

全卷积神经网络(FCN)

目录 卷积化上采样跳跃结构卷积化上采样跳跃结构 卷积化 上采样 跳跃结构 论文:Fully Convolutional Networks for Semantic Segmentation(2015) 参考:https://zhuanlan.zhihu.com/p/80715481 全卷积神经网络(Fully Convolutional Networks…

全卷积网络(FCN)实战:使用FCN实现语义分割

全卷积网络(FCN)实战:使用FCN实现语义分割 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类&…

FCN

转载自: http://blog.csdn.net/taigw/article/details/51401448 在上述原文的基础上结合自己理解做出了部分修改。 从图像分类到图像分割 卷积神经网络(CNN)自2012年以来,在图像分类和图像检测等方面取得了巨大的成就和广泛的应用。 CNN的强大…

FCN的理解

直观展现网络结构:http://ethereon.github.io/netscope/#/editor 卷积与逆卷积的动图https://github.com/vdumoulin/conv_arithmetic 【原文图】“Fully convolutional networks for semantic segmentation.” 上图中,32x即为扩大32倍。 Pool5扩…

FCN(全卷积网络)详解

FCN详解 全卷积网络就是在全连接网络的基础上,通过用卷积网络替换全连接网络得到的。 首先看一下什么是全连接网络,以及全连接网络的缺点。 通常的CNN网络中,在最后都会有几层全连接网络来融合特征信息,然后再对融合后的特征信…

FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)

论文Fully Convolutional Networks for Semantic Segmentation 是图像分割的milestone论文。 理清一下我学习过程中关注的重点。 fcn开源代码 github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org 核心思想 该论文包含了当下CNN的三个思潮 - 不含全连接层(…

FCN详解

FCN(fully convolution net) FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像(为什么?因为全连…

FCN(全卷积神经网络)详解

文章目录 1. 综述简介核心思想 2. FCN网络2.1 网络结构2.2 上采样 Upsampling2.3 跳级结构 3 FCN训练4. 其它4.1 FCN与CNN4.2 FCN的不足4.3 答疑 【参考】 1. 综述 简介 全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于…

FCN网络解析

1 FCN网络介绍 FCN(Fully Convolutional Networks,全卷积网络) 用于图像语义分割,它是首个端对端的针对像素级预测的全卷积网络,自从该网络提出后,就成为语义分割的基本框架,后续算法基本都是在…