FCN(全卷积网络)学习笔记

一、概述及相关概念简介

(1)概述

FCN:FCN是对图像进行像素级的分类(也就是每个像素点都进行分类),从而解决了语义级别的图像分割问题

与经典的CNN不同,FCN对传入的图片尺寸没有要求,并且舍弃了全连接层,转而使用上采样的方法将最后的输出采样到原图的大小;不仅如此,FCN的lebal并不像CNN那样是文字,而是一张图片;训练图与标签如下所示:
在这里插入图片描述
在这里插入图片描述

可以说,FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,其输出的是一张已经标记好的图,而不是一个概率值

(2)关于上采样的理解

FCN网络要完成的是对每个像素的分类,所以便需要一个上采样过程将输出上采样至原图大小

双线性插值

双线性插值是图像缩放的一种方式,其主要分为两步线性插值,一是在x方向插值,二是用x方向插值结果再在y方向插值;

首先来看线性插值:
在这里插入图片描述
这里x0与x1对应的点为已知,(x,y)为需插值的点,x为插值的位置,相当于已知的自变量,则因变量y,即待插值的计算公式为:
在这里插入图片描述
对于双线性插值,实质就是进行两次普通的线性插值;实例如下:红色点为已知,待插值的点为P,方法为先对R1、R2进行插值,再对P进行插值,即完成了双线性插值过程
在这里插入图片描述

反卷积上采样

顾名思义,就是利用卷积方法扩大图片大小,主要方法可以利用图像边缘置0,再进行卷积,如下图:
在这里插入图片描述
但边缘置0的方法会使得边缘信息表现不佳,于是可以采用在图像中间置0的方法以解决上述问题。如下图:
在这里插入图片描述
需要注意的是,反卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中得到的,反卷积层也是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed convolution,deconv的前向传播就是conv的反向传播

反池化上采样

这种方法比较好理解,即反向进行最大池化操作;首先我们回顾一下正向的最大池化操作,即下图左边的MaxPooling操作,而反池化需要做的就是将最大值重新放回池化前的位置,其余位置直接置0,即下图右UnPooling过程所示
在这里插入图片描述

(3)跳级结构

对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上也就是加和(即下图中黄色部分过程):
实验表明,这样的分割结果更细致更准确。在逐层fusion的过程中,做到第三行再往下,结果又会变差,所以作者做到这里就停了。
在这里插入图片描述

二、几种经典FCN网络结构

(1)FCN-8s

这是所介绍的几种结构中效果最好的一种,由于进行了三次上采样过程,加上跳级结构的帮助,该结构进一步融合了几个pooling层的预测结果,详细结构如下:
在这里插入图片描述

(2)FCN-16s

与FCN-8s相似,该结构仅使用了两次上采样过程,并使用了调剂结构,融合了最后一个pooling层的预测结果,详细结构如下:
在这里插入图片描述

(3)FCN-32s

仅进行了一次上采样过程,并且未使用跳级结构,上采样过程步长为32,故名为FCN-32s,详细结构如下:
在这里插入图片描述

三、FCN总结

FCN的卷积网络部分可以部分采用VGG等经典的CNN网络,在这些预训练的基础上进行迁移学习,再让对反卷积的结果跟对应的正向feature map进行叠加输出,从而得到更加准确的像素级别分割

缺点

1.得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感

2.对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性

这里放上自己训练完成后一个预测的效果,自行感受:

在这里插入图片描述

在这里插入图片描述

参考资料:
https://blog.csdn.net/zhanly19/article/details/99718242?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161867246216780261994188%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161867246216780261994188&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-99718242.first_rank_v2_pc_rank_v29&utm_term=%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC%E4%B8%8A%E9%87%87%E6%A0%B7

https://blog.csdn.net/qq_41760767/article/details/97521397

https://blog.csdn.net/stu_shanghui/article/details/91491596

https://blog.csdn.net/bestrivern/article/details/89523329

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值