全卷积网络《Fully Convolutional Networks for Semantic Segmentation》

大部分转自 https://www.cnblogs.com/gujianhan/p/6030639.html

卷积神经网络的强大之处在于其多层卷积层能够自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感受野较小,学习一些局部特征;较深的卷积层感受野较大,能够学习到更加抽象、全局的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。


传统卷积网络一般都会在卷积层之后接上若干个全连接层,将卷积层产生的特征图映射成一个固定长度的特征向量作为最后几层全连接层的输入特征,利用全连接网络进行分类。简言之,就是讲卷积层当成一个特征提取器,提取完特征然后用后面的全连接网络进行分类。

如下图中的上半部分为AlexNet模型对ImageNet 1000类图像进行分类,进过卷积层,全连接层后输出一个长度为1000的向量,表示输入图像属于每一类的概率,其中“tabby cat”的概率最高。



而FCN则可以对图像进行密集甚至是像素水平的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层后使用全连接进行分类(全连接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,因为其在多次下采样提取特征后会使用反卷积(更多人认为称为转置卷积更准确)进行上采样,使他恢复到与输入图像相同的尺寸,从而可以对每一个像素进行预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图上进行逐像素分类。

最后逐个像素计算softmax相当于每一个像素都是一个样本对应一个label。如下图下半部分所示,FCN与CNN的区别在于FCN把最后几层全连接换成了卷积层,输出的是一张对每个像素都进行了预测的图片。

传统的基于CNN的分割方法一般是将某一个像素及其周围的一小块patch作为CNN的输入用于训练和预测。这种方法有几个缺点:第一是储存开销大,例如对每个像素使用的图像块的大小为15x15,则对于一个300x300的图片需要储存20x20张图片,当图片变得更大时,储存需求会更加急剧的上升;第二是计算效率低下,对于一个300x300的图片,如果将15x15的分类作为其一块patch的分类,则其一共需要计算20x20次;第三是像素块的大小限制了感受区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部特征,从而导致了分类性能受到限制。

而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

全连接层转换为全连接层

全连接层和卷积层的唯一不同就是卷积层中的神经元仅与输入数据中的一个局部区域连接,并且在卷积中的神经元共享参数。而在两类中,神经元都是计算点积,所以他们的函数形式是一样的。因此,将两者进行转化是可行的:

  • 对于任何一个卷积层,都存在一个能实现和他一样的前向传播函数的全连接层。权重矩阵是一个巨大的矩阵,除了某些特定块,其余部分都为零。而在其中大部分块中,元素都是相等的。
  • 相反,任何全连接层都可以被转化为卷积层。比如,一个k=4096的全连接层,输入数据的尺寸为7x7x512,这个全连接层可以被等效的看做一个filter=7, padding=0, stride=1, c=4096的卷积层。换句话说,就是将滤波器的尺寸设置为和输入数据的尺寸一致。这时的输出就变成了1x1x4096了,这个结果和全连接层是一样的。

为何将全连接层转化为卷积层在实际中会更有用?假设一个卷积神经网络的输入是224x224x3的图像,一系列的卷积层和下采样层将图像尺寸变为7x7x512的feature map。AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于输出各个分类的概率。我们可以将这三个全连接层中的任何一个转化为卷积层:

  • 针对第一个连接区域是7x7x512的全连接层,令其滤波器尺寸为filter=7,这样输出feature map九尾1x1x4096了;
  • 针对第二个全连接层,令其滤波器尺寸为filter=1,则输出feature map为1x1x4096;
  • 针对最后一个全连接层也做类似的,令其filter=1,最终输出为1x1x1000.

实际操作中,每次这样的变换都需要吧全连接层的权重矩阵变为卷积层的滤波器。这样可以让卷积网络在一张更大的输入图片上进行滑动,一次性得到更多输。

举个栗子:如果我们想让224x224尺寸的浮窗以32的步长在384x384的图片上滑动,把每个经停的位置都带入卷积网络,最后得到6x6个位置的分类结果。而将全连接层转化为卷积层后224x224的图片经过卷积层会得到7x7的feature map,那么384x384的图片,经过卷积层则会得到12x12的feature map,然后在经过上面全连接层转化而来的卷积层,最终得到6x6x1000的输出,而这个结果正是浮窗在原图经停的6x6个位置的预测结果。

上面的转化为全卷积网络后的一次前向传播预测相当于6x6个(224经过6次步长32的移动)原来最后三层是全连接层的计算结果。

上采样(Upsampling)

原图为227大小的图像经过多次卷积核下采样后,得到的图像越来越小,分辨率越来越低。其中图像H/32xW/32 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特诊图,得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小。

最后的输出是1000张heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,这里有一个小trick,就是最后通过逐个像素地求其在1000张图像该像素位置的最大数值描述(概率)作为该像素的分类。因此产生了一张已经分类好的图片,如下图右侧有狗狗和猫猫的图。

论文中提及的上采样方式有三种:

  • (1)shift and stitch. 是一个插值重构的过程,具体的也没看太懂,可参考关于FCN 论文中的 Shift-and-stitch 的详尽解释;
  • (2)filter rarefaction. 即放大CNN网络中下采样层filter的尺寸,得到新的filter

    其中s是subsampling的滑动步长,这个新filter的滑动步长要设为1,这样的话,subsampling就没有缩小图像尺寸,最后可以得到dense prediction

以上两种方法均未被作者采用,主要是因为这两种方法都是trade-off的:

  • 对于第一种方法,虽然receptive fileds没有变小,但是由于原图被划分成f*f的区域输入网络,使得filters无法感受更精细的信息;
  • 对于第二种方法,下采样功能被减弱,使得更细节的信息能被filter看到,但是receptive fileds会相对变小,可能会损失全局信息,且会对卷积层引入更多运算。

第三种上采样的方式是通过反卷积(转置卷积)实现的,关于转置卷积实现上采样可通过下面的图简要理解。

如下图所示,经过5次下采样后,feature map 大小变为原来的1/32,对这个feature map使用转置卷积进行上采样,可以还原到conv5的feature map, 但是这样得到的结果仍然是非常粗糙,无法很好地还原图像中的特征,因此这里继续向前迭代,加入最后几层的输出来补充细节,和最后的输出做一个fusion,实际上也就是加和。最后完成整个图像的还原。

缺点:

1、得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
2、是对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

参考:
Shift and stitch理解
全卷积网络 FCN 详解
FCN: Fully Convolutional Networks for Semantic Segmentation
[译] 用于语义分割的全卷积网络FCN(UC Berkeley)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342