深度学习之图像分割—— FCN基本思想和网络结构以及论文补充

FCN是首个用于像素级预测的全卷积网络,它将分类网络中的全连接层转换为卷积层,实现了端到端训练。主要思想包括下采样、上采样和跳跃连接,通过反卷积恢复特征图尺寸。FCN-32s、16s、8s分别通过不同方式融合特征图,提高分割精度。此外,文章讨论了平移不变性在分割任务中的重要性以及数据预处理和类别平衡的方法。
摘要由CSDN通过智能技术生成

FCN论文链接:Fully Convolutional Networks for Semantic Segmentation

1.FCN网络的引入

1.创新点

1.首个端对端的针对像素级预测的全卷积网络
2.全卷积:将分类经典网络中的全连接层全部替换为卷积层
3.跳跃连接:对前后特征图的补偿
4.反卷积:对特征图尺寸的恢复

由于全连接层的存在,所以必须固定图片输入的大小
在这里插入图片描述
PASCAL VOC2011、2012test数据集,与当年的一些主流网络对比,mean IOU提升了20%,推理时间更短

2.主要思想

先下采样,最后再上采样一个和原图大小相同的分割图
1.下采样
2.上采样(不同的网络不同的合并方式)
3.softmax分类预测类别

FCN-32s通过一系列的卷积下采样得到特征层,特征层的channel为21,因为在当年使用的数据集还是PASCAL VOC(有20个类别,加上背景一共有21个类别)。再经过上采样得到一个和原图同样大小的一个特征图(channels=21),该特征图的每个pixel都有21个值,对这21个值进行softmax处理,得到该像素针对每一个类别的预测概率,取概率最大的类别作为该像素的预测类别

3.论文补充

1.感受域(感受野)

在这里插入图片描述

2.平移不变性
1.不变性?

不变性意味着即使目标的外观发生了某种变化,但是你依然可以把它识别出来。这对图像分类来说是一种很好的特性,因为我们希望图像中目标无论是被平移,被旋转,还是被缩放,甚至是不同的光照条件、视角,都可以被成功地识别出来。

所以上面的描述就对应着各种不变性:
平移不变性:Translation Invariance
旋转/视角不变性:Ratation/Viewpoint Invariance
尺度不变性:Size Invariance
光照不变性:Illumination Invariance

2.平移不变性/平移同变性(分割任务中常用到)

在欧几里得几何中,平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。

平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的 。平移同变性(translation equivariance)意味着系统在不同位置的工作原理相同,但它的响应随着目标位置的变化而变化 。
比如,实例分割任务,就需要平移同变性,目标如果被平移了,那么输出的实例掩码也应该相应地变化。最近看的FCIS这篇文章中提到,一个像素在某一个实例中可能是前景,但是在相邻的一个实例中可能就是背景了,也就是说,同一个像素在不同的相对位置,具有不同的语义,对应着不同的响应,这说的也是平移同变性。

3.shift-and-stitch(拼接过程,用于密集预测任务)

在这里插入图片描述
后续的论文一般不再使用此方法,单纯作为理解论文了解。shift-and-stitch

4.类别平衡

在这里插入图片描述
类别不平衡的解决办法:通过调整不同类别的权重。(比如如果背景比较多的话,那么调小背景的权重就是一个不错的办法)

5.数据预处理

数据预处理:随机镜像 (随机、裁剪、翻转、颜色、亮度、光照)

2.Convolutionalization

在这里插入图片描述
4096,4096,1000对应的是全连接层的输出

输入一张图片,通过分类网络最后会得到一个针对1000个类别的预测值,这1000个预测值通过softmax处理之后得到针对每个类别的概率

全连接层的输入结点的个数是固定的,如果改变会报错

3.VGG16(使用框架)

目前官方实现代码都是resnet
在这里插入图片描述
224x224x3 -> 7x7x512 下采样了32倍

4.全连接层和卷积层

在这里插入图片描述
全连接层计算对应某个结点的输出,将该结点与上一层每个结点的权重与输入对应结点的数值进行相乘再求和,得到对应结点的输出

卷积层(kernel_size=7x7,stride=1,kernel_number=4096,padding可调),卷积核与输入特征矩阵的相应位置的元素进行相乘再相加

全连接层一个结点的参数与一个卷积层的参数相同

第一个全连接层转化为卷积层的过程(Convolutionalization)
将全连接层每一个结点所对应的权重进行reshape处理就能直接赋值给卷积层使用了

通过展平操作就没有高和宽的信息了——4096

卷积能够保留高度和宽度信息——1x1x4096

5.FCN-32s,16s,8s

在这里插入图片描述

3.FCN-32S

在这里插入图片描述
在backbone的第一个卷积层将padding设置为100,为了让FCN网络适应不同大小的图片而设置的

输入图片大小小于192x192,通过VGG模型的backbone,高和宽就小于7,若padding=0则会报错,padding=3就可以训练任意高宽大于32的图片,没必要padding100(增大了网络的计算量;上采样后需要做一定的裁剪)
(padding=3能训练出来大小相等的图片,output = inputsize - kernel + padding 2 + stride / stride 32-7+32+1/1=32)

Convolutionalization FC6、FC7

1x1卷积,num_class 包含背景的分类类别个数

转置卷积,上采样32倍,恢复到原图的大小,冻结权重,上采样率过大

使用双线性插值的参数初始化转置卷积的参数

通过上采样之后,针对每一个pixel有num_class个参数

经过softmax处理就能得到针对每一个像素的预测类别

2.FCN-16S

在这里插入图片描述
转置卷积的上采样率为2倍

额外使用来自MaxPooling4(下采样率16)输出的特征图

3.FCN-8S

在这里插入图片描述额外使用来自MaxPooling4(下采样率8)输出的特征图

融合相对底层的特征图信息

6.损失计算

在这里插入图片描述
针对每一个pixel计算Cross Entropy Loss,将所有Cross Entropy Loss求平均得网络的最终损失

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jul7_LYY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值