前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Fully Convolutional Networks for Semantic Segmentation》论文阅读

《Fully Convolutional Networks for Semantic Segmentation》论文阅读

作者头像
BBuf
发布2019-12-04 17:52:40
7800
发布2019-12-04 17:52:40
举报
文章被收录于专栏:GiantPandaCVGiantPandaCV

题外话

这篇论文是拿到了CVPR2015 best paper候选的,在图像分割领域是一篇开山力作。

算法概述和关键Trick

算法第一次提出end2end来做语义分割的网络,简称为FCN。

FCN网络的结构如上,直接用原图像的ground truth作为监督信息,训练一个端到端的网络,让网络做像素级别的预测,直接预测标签(mask)图像。

Trick1:在分类网络finetune

将传统网络如AlexNet,VGG等最后的全连接层变为卷积层,可以发现这样做了之后可以共享分类网络的权重。这个过程如下图:

Trick2: 上采样

在一般的CNN结构中均是使用pooling层来缩小输出图片的size,如果在VGG16中,五次pooling之后特征图的大小比输入图缩小了32倍。而在fcn网络中,要求网络输出与原图size相同的分割图,因此我们需要对最后一层进行上采样。在caffe中也被称为反卷积(Deconvolution)。 虽然转置卷基层和卷积层一样,也是可以训练参数的,但是在实验中发现,让转置卷基层可学习,并没有带来性能的提高,所以在实验中转置卷基层的lr全部设为0。

Trick3: Skip Layer(跳跃结构)

从这个图来看,对于输入的原始图像,首先经历了卷积conv1,池化pool1,将原图缩小为1/2。再经过第二次卷积conv2,pool2将原图缩小为1/4。第3次卷积池化conv3,pool3将原图缩小为1/8,这个节点将pool3得到feturemap保存下来。再进行第4次卷积池化,conv4和pool4将现在图像大小变为原图的1/16,并保存pool4得到的feature map。最后对图像经过第5次卷积和池化conv5和pool5将图像缩小为1/32,然后是CNN操作过程中的全连接卷积操作conv6,conv7,得到当前的feature map,conv7的feature map被叫做heat map。

实际上对第5层的输出进行32倍放大(反卷积)就可以得到原图大小了。但是这样做精度不好,会丢失一些细节。所以作者提出将第4层的输出和第3层的输出也依次反卷积,分别做16倍和8倍上采样,最后把不同层级的池化层上采样得到的结果图像叠加在一起,可以得到更加精细的结果,这样做的好处是兼顾了局部和全局的信息,分割细节更加明显。下面有一张32倍,16倍和8倍上采样得到的结果图对比:

可以看到随着上采样做得越多,分割结果越来越精细。

算法优点

FCN有2个明显的优点,首先是end2end,可以接受任意大小的输入图像尺寸。而是更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题。

算法局限

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

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

代码实现

https://github.com/BBuf/Keras-Semantic-Segmentation

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题外话
  • 算法概述和关键Trick
  • Trick1:在分类网络finetune
  • Trick2: 上采样
  • Trick3: Skip Layer(跳跃结构)
  • 算法优点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档