论文下载
bib:
@ARTICLE{ShelhamerLong2017FCN,
author={Evan Shelhamer and Jonathan Long and Trevor Darrell},
title={Fully Convolutional Networks for Semantic Segmentation},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2017},
volume={39},
number={4},
pages={640-651},
doi={10.1109/TPAMI.2016.2572683}
}
1. 摘要
Convolutional networks
are powerful visual models that yield hierarchies of features. We show that convolutional networks by themselves, trained end-to-end, pixels-to-pixels, exceed the state-of-the-art in semantic segmentation. Our key insight is to build “fully convolutional”networks that take input ofarbitrary size
and producecorrespondingly-sized output
with efficient inference and learning. We define and detail the space of fully convolutional networks, explain their application to spatially denseprediction tasks, and draw connections to prior models. We adapt contemporary classification networks (AlexNet [19],the VGG net [31], and GoogLeNet [32]) into fully convolutional networks and transfer their learned representations by fine-tuning [4] to the segmentation task. We then define a novel architecture that combines semantic information from a deep, coarse layer with appearance informationfrom a shallow, fine layer to produce accurate and detailed segmentations. Our fully convolutional network achieves state-of-the-art segmentation of PASCAL VOC (20% relative improvement to 62.2% mean IU on 2012), NYUDv2,and SIFTFlow, while inference takes less than one fifth of a second for a typical image.
“卷积网络"是功能强大的可视化模型,它可以产生特征层次。我们表明卷积网络本身,训练端到端,像素到像素,超过了语义分割的最新水平。我们的关键见解是建立"全卷积"网络,它接受"任意大小"的输入,并通过有效的推理和学习产生"相应大小的输出”。我们定义并详述了全卷积网络的空间,解释了它们在空间密集预测任务中的应用,并画出了与先验模型的联系。我们将当代分类网络(AlexNet [19]、VGG网络[31]和GoogleNet [32])调整为全卷积网络,并通过微调[4]将其学习表示转移到分割任务。然后我们定义了一个新的架构,将来自深层、粗糙层的语义信息与来自浅层、精细层的外观信息相结合,以产生精确和详细的分割。我们的全卷积网络实现了PASCAL VOC(2012年平均IU相对提高20%至62.2%)、NYUDv2和SIFTFlow的最先进分割,而对典型图像的推断时间不到五分之一秒。
Tips:
- 针对的学习任务是语义分割(Semantic Segmentation)。简单来说就是预测图片中像素点所属类别(Dense Prediction),而一般的分类任务是预测图片所属类别。
- 本文的贡献是提出了一种新的网络结构(Fully Convolutional Networks)。
2. 算法描述
算法是任务是预测每个像素点的类别(Dense Prediction),分为两步,第一步是通过FCN
网络获取粗略的输出;第二步是将粗略的输出还原为与原图片同样大小。下面主要是文中提出的三个Tricks。
后面分为了四个小节,其中两个小节讲述的是已有的工作,
- 2.2. Shift-and-stitch is filter rarefaction
OverFeat
是一种上采样方式,但是本文没有使用,主要是我也没有去读相关论文,这里就不多叙述。 - 2.4. Patchwise training is loss sampling
这一节主要是将本文之前的工作,将像素周围的像素作为一个patch来预测该像素所属类别,也叫patchwise prediction
。
在这里,我们主要讲述本文工作的两个小节详细阅读。
2.1. Adapting classifiers for dense prediction
-
紧紧抓住前人工作的弱点,不能适配任意大小的输入图像,抛弃了空间坐标。第一个缺点我没有读之前的文章,不太清楚。第二个缺点,抛弃空间坐标是因为网络中采用了全连接层,需要将卷积池化层捕获的特征展平,在展平的时候,特征中的空间信息就丢失了。值得注意的是,最终展平的特征维度在模型建立的时候就会要求确定(fixed)。
-
全连接层可以看作是具有覆盖其整个输入区域的核的卷积。
Tips:
- 图中上面的表示4096那层是特征向量展平操作;图中下面的4096表示4096个卷积,也就是说有4096个通道。
- FCN中最后一层的每个通道表示像素点对于类别的预测。
2.2. Upsampling is backwards strided convolution
首先理解一下上采样(Upsampling)。上采样是指将图像上采样到更高分辨率(resolution),是一种把低分辨率图像采样成高分辨率图像的技术手段。具体来说,我了解到其中两种手段,
- Unpooling
- Transposed Convolution。
本文采用的上采样方式,backwards convolution
,也叫deconvolution
.
转置卷积如图所示,本质上还是卷积操作,只是在原有的输入中加入不同的padding,stride来控制输出的大小,以达到放大图片的效果。
3. 网络结构
上述提出的方法由于是直接32倍上采样,导致输出结果太粗糙。所以作者提出了一种通过添加最终预测层与具有更精细步幅的较低层组合的链路的方法来解决这个问题。
3. 问题
这里主要记录读论文中的一些疑问。其中,有些疑问是读完后顿悟的,就会有自己的回答,但是有些问题还是没清楚,后面明白再添加。
-
pytorch的转置卷积的参数疑问?
Answers:
-
pixwise loss 具体是怎么计算的?
Answers:
-
Figure 2中的 heat map是怎么得来的?
Answers:
4. 总结
在最开始的时候其实是想精读全文的,一开始很难,因为其中有大量的专用术语,导致最开始精读是不顺利的。后面,我又觉得如果不做这个方向的话,精读其实是意义不大的,搞清楚论文的核心创新点才是重点。
论文的重点就是采用了分为两个部分,第一部分和往常工作是一致的,就是提取图片特征(卷积);第二部分用转置卷积来完成Dense Prediction
任务。其中,第二部分是本文的核心工作。由于,直接用提取图片最后一层的特征来上采样会导致预测结果粗糙(可以理解为高层特征太抽象),作者提出一种将最终预测层与具有更精细步幅的较低层组合来上采样的方法,实验证明这种方法是有效的。