1. FCN网络结构图

原论文链接:https://paperswithcode.com/paper/fully-convolutional-networks-for-semantic
参考B站视频:https://www.bilibili.com/video/BV1J3411C7zd/?spm_id_from=333.788

简介:Backbone用的是VGG16(pytorch实现用的是Resnet),将原来的卷积网络的最后两层(全连接和池化)去掉,替换为1X1的卷积和转置卷积。在原来的分类网络中,全连接层的大小限制了图像的输入,因为全连接层的需要固定输入和输出,而卷积层不需要,所以考虑将全连接转换为卷积。

通道数为21,每个通道上的值是一个概率,每个像素的预测类别分别取21个通道上概率值最大的那个类别。

转换之后就变成了这样:卷积层 + 1X1卷积 + 转置卷积

论文中给出的三个模型:FCN-32s,FCN-16s,FCN-8s

给出VGG16模型作为上图参考

2. FCN-32s

原论文中设置了backbone的第一个卷积层处设置了padding=100,是为了适应不同大小的输入图像,如果不设置padding,那么当输入图片大小小于192X192,则在下图中7X7的卷积核处做卷积时会报错,因为此时经过下采样后图像大小已经小于7X7了,无法进行卷积操作。同时,如果输入图像小于32X32,那在backbone中就已经报错了。但是在实际使用时,很少有人会对小于32X32的图像做语义分割(因为本来就是对像素分割,你这么低分辨率的图像那分割出来岂不是很丑)。所以这个padding100可以不用设置,根据自己的需求来做。

在VGG16去掉最后两层的基础上,在FC6的卷积层出加上padding=3,使用4096个卷积核,输出图像大小不变;再经过FC7输出图像大小和通道数未发生改变;然后经过一个1X1大小的卷积,通道数是num_class,即分类的类别;最后再经过一个转置卷积层(上采样),将图像放大32倍后,使用双线性插值的参数来初始化转置卷积的参数,所以最终的输出和原图大小一样,最后用softmax对一个像素的num_class个类别做处理,就可以得到最终的预测类别。

注:原论文中直接将转置卷积层的权重冻结了,相当于直接为双线性插值的参数,因为冻结和不冻结结果没什么差别,所以冻结了还可以不用训练权重。可能是因为上采样率太大,上采样32倍,效果不是很好,所以这个转置卷积层好像用处不大。

3. FCN-16s

和FCN32s的区别在于融合了一次底层特征图信息,经过FC7后先做一次转置卷积,上采样是2倍,然后将BackBone中MaxPool4(下采样16倍,在Backbone中的特征图)的特征图相加后在经过一轮上采样为16倍的转置卷积,得到最终结果。

4. FCN-8s

和FCN-16s的区别在于融合了两次底层特征图信息,经过FCN-16s的中的两部分特征图相加后,再做一次上采样2倍的转置卷积,再加上来自Backbone中MaxPool3(下采样8倍),然后再经过上采样8倍的转置卷积,得到最终结果。

5. 膨胀卷积

如图所示,也叫空洞卷积,和普通卷积的区别在于增加了一个膨胀因子r,也就是每两个卷积参数之间的距离,当r=1时,膨胀卷积和普通卷积之间并无区别。

  • 作用:

    • 增大感受野,从图中可以很明显看出来,在相同3X3卷积核参数的情况下,感受野是5X5。
    • 可以保持原输入特征图的宽和高不变。

    在VGG16中使用池化来增大感受野,但是池化层会导致原图的特征丢失,并且输出特征图大小也发生了改变。如果去掉池化层就会使感受野变小,所以可以考虑使用膨胀卷积。

    gridding effect问题,关于膨胀卷积使用不当引起的问题及解决可以阅读论文:“Understanding Convolution for Semantic Segmentatio” https://arxiv.org/pdf/1702.08502v3.pdf 有时间再补充这部分的内容
    未完待续……

语义分割之FCN网络详解 全卷积网络相关推荐

  1. 憨批的语义分割4——pspnet模型详解以及训练自己的pspnet模型(划分斑马线)

    憨批的语义分割4--pspnet模型详解以及训练自己的pspnet模型(划分斑马线) 注意事项 学习前言 模型部分 什么是pspnet模型 pspnet模型的代码实现 1.主干模型Mobilenet. ...

  2. FCN(Fully Convolutional Network)全卷积网络笔记

    FCN(Fully Convolutional Network)全卷积网络笔记 本文只是个人学习笔记 参考自: 全卷积网络FCN详细讲解(超级详细哦) 转置卷积(Transposed Convolut ...

  3. 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现

    深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...

  4. 语义分割的常用指标详解

    1 混淆矩阵 假设有6个类别,L为10个真实标签的取值,P为对应的预测的标签值,先计算对应的n(类别数,这里假设为6)xL+P: bin的值一定是分类数的平方.混淆矩阵先将真实标签和预测标签抻成一维向 ...

  5. FCN(全卷积网络)详解

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

  6. FCN全卷积网络上采样理解

    FCN全卷积网络将网络的全连接层变成卷积层之后整个网络变成了只有卷积层和池化层的网络,于是网络就称之为全卷积网络.全卷积网络一般是用来对图像进行语义分割的,于是就需要对图像上的各个像素进行分类,这就需 ...

  7. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

  8. MobileNetv1、v2网络详解、使用pytorch搭建模型MobileNetv2并基于迁移学习训练

    1.MobileNetv1网络详解 传统卷积神经网络专注于移动端或者嵌入式设备中的轻量级CNN网络,相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量.(相比VGG16准确率减少 ...

  9. ResNet、ResNeXt网络详解及复现

    网络详解: ResNet网络详解 ResNeXt网络详解 torch复现: import torch.nn as nn import torch''' 对应着18层和34层的残差结构 既要拥有实现部分 ...

最新文章

  1. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、中位数)实战(dot plot)
  2. 逆袭!BCH交易超越BTC
  3. linq之Capacity(转载)
  4. SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法
  5. [转]Responsive Tables Demo
  6. python 中内置函数
  7. c语言divide error,Python numpy.corrcoef()RuntimeWarning:在true_divide中遇到无效值c / = stddev [:,None]...
  8. 彻底告别“人工+Excel”低效模式,传统制造业实现“一站式”数据化管理
  9. Web全栈工程师养成记
  10. Spring Bean生命周期:属性赋值阶段
  11. 华为Esight安装包
  12. DM_SQL建表语法
  13. 夜神模拟器android 8.0,夜神模拟器6.0.8.0
  14. Linux文件误删的恢复
  15. (1/2) sharex录制屏幕没有声音,升级高版本的sharex
  16. The Hidden Agenda User Simulation Model翻译
  17. word分栏 公式居中对齐 自动编号
  18. oracle怎么查询同名学生,数据库:SQL“查询同名同姓学生名单,并统计同名人数”延伸...
  19. 冷战久了一定会分手的星座
  20. 【Android归纳】基于XListView的下拉刷新、上拉加载更多的控件分析

热门文章

  1. CEPI扩大与三叶草生物的合作,以快速推进新冠 疫苗的开发和生产
  2. linux下的oracle中文乱码,linux系统中oracle出现中文乱码怎么办
  3. 寒岩傲松 Ghost XP SP2 v7.0 [2008贺元旦特别版]
  4. C# Task.Run 和 Task.Factory.StartNew 区别
  5. 不光教女朋友学会了Yarn,还让她明白了Yarn与npm的区别
  6. Google IaaS云平台GCE正式发布
  7. php随机数字符串,php生成随机数/生成随机字符串的方法小结【5种方法】
  8. 系统视频播放器——MPMoviePlayerViewController
  9. 计算机的乘法用英语怎么说,乘法用英语怎么说
  10. 怎么更改计算机用户开机密码,怎么设置电脑开机密码 图文结合一看就会