【论文阅读】FCN(Fully Convolutional Networks for Semantic Segmentation)

该论文包含了当下CNN的三个思潮

  • 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
  • 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
  • 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

在这里插入图片描述

Introduction

1.1 problem definition

  • 首先我们来简单看看图像分割的任务是什么样的。所谓的图像分割就是将一幅图像中各个实体的边界确定下来,这样我们可以通过寻找这个实体的边界确定实体的位置。在自然场景中我们可以根据画面中的实体进行划分,在文档图片中,我们也可以找出每一个文字的边界。这些都可以算作是完成分割任务。

1.2 Previous methods and their limits

  • 当然,上面的描述还不太具有可操作性,我们可以把问题做进一步地转化。我们可以把问题转换成一个分类问题,我们判定每一个像素点的类别,然后将相邻且类别相同的像素点聚集起来,不就可以找到实体的边界了么?这样也就是从分类问题出发解决分割问题的方式。
  • 但是这样解决分割问题的方法还是存在一些问题:之前我们对于一张图像,最终只输出一个结果或者几个结果,结果的数量并不多;而现在我们输出的数量和像素的数量相同,那么我们还能够获得和分类问题近似的精确率么?这里面存在着一些需要解决的问题,比如:
  • 在分类问题中,为了解决图像的transform invariance,我们会加入pooling层减小维度,这个被减小的纬度如何能够再次放大呢?

1.3 简述FCN提出的技术来overcome上面的limits

  • FCN,也就是Fully Convolutional Network,是一个不包含全连接层的网络。这里面所谓的不包含全连接层,实际上并不是标榜自己没有全连接层,而是为了保证计算过程中每一层数字的相对位置。 在我们通常的印象中,全连接层需要把本来立体的图像拍平,这样原本存在的空间特性将被抹掉。 为了确保我们识别出来的类别能和原来每一个像素点的位置对上,我们不能粗暴地把中间数据拍平,这也是网络中不使用全连接层的原因。
  • 我们可以利用常规的分类CNN网络得到一个接近最终结果的中间层,这样层的数据往往已经可以代表了一些具有特定含义的特征,而不再像原始的像素亮度那样含义晦涩。因此我们可以从这样的信息出发得到一些分类信息,然后把这些分类信息重新映射到原始图片大小的区域上。
  • 由于中间层的维度比原始图像小,那么恢复到原始大小必然意味着一些插值的工作。一旦使用了插值的算法(比方说bilinear),那么恢复的图像的精度一定会出现问题。所以大神们也曾经担心过这个问题。于是他们也想出过一些其他的方法。这些方法的特点就一条——
  • 维度不缩小
  • 实际上想做到这一步从算法上来说也并不困难,但是这样的方法会增加不少计算量,而且也存在自己的问题。最终大神们选择了反卷积的方式完成了信息由小变大的工作
  • 反卷积可以让维度由小变大,而且我们还可以通过学习其中的参数让这个变化的过程变得不那么简单粗暴。但是小维度毕竟是小维度,谁也没法回避这个问题。就算采用反卷积的方式把维度扩大,精度损失的问题依旧无法避免。所以我们还需要其他的办法。
  • 这个办法就是融合我们不仅仅使用较深层的特征信息,还使用一些较浅的特征信息。我们知道较浅层的特征容易保留一些细节信息,比方说边缘信息,较深的特征容易保留一些类别信息,那么如果我们把这两部分信息融合起来,我们既可以保证找到的类别信息是准确的,同时我们也可以保证一些边缘的位置信息能够找准。这样我们也就解决了这个问题。
  • 文章中还提到了一个有意思的问题,那就是采样的问题。一般来说我们的分类问题都是一张图一套类别信息,而现在的分割问题变成了一张图有许许多多的类别信息。这么多类别信息一起学习,会不会出现过拟合的问题?最终的实验结果告诉了我们,过拟合的问题似乎并不存在,但是当初大家还是担心了一下,也曾经想过采用采样的方式解决这个问题。对于最终输出的每一个像素的类别信息,我们并不把所有的像素点的结果计算到loss中进行反向传播,而是只取其中一部分的像素点。这个想法是有点道理的,因为每一个紧密相邻的像素点之前的特征差距可能并不大,如果每一个像素点都计算在内,那么就相当于我们对某一组特征增加了很高的权重。但好在我们对所有像素点都增加权重的话,这个影响还是会抵消的。
  • 最后提一下分割问题和分类问题在evaluation方面的不同。对于经典的分类问题,我们常用的loss是cross entropy loss,精确率判断则是最终的类别判断的正确率。而在分割问题中,我们除了判断每一个像素点的“分类”loss和精确率,我们还可以计算IoU。它的全称是Intersection of Union。我们有模型预测的边界和Ground Truth的边界。我们计算两个边界相交和它们相并的比例,也可以判断最终的分割效果。如果以IOU作为评价标准,那么只要主体部分能够分割正确,那么我们就可以拿到比较高的分数。所以添加过多浅层的信息可能不会对最终结果造成很大的准确率提升

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

FCN:While a general deep net computes a general nonlinear function, a net with only layers of this form computes a nonlinear filter, which we call a deep filter or fully convolutional network.

参考

FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)
FCN(1)——从分类问题出发*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值