论文题目:《Fully Convolutional Networks for Semantic Segmentation》
论文地址:https://arxiv.org/abs/1411.4038
传统的基于CNN的语义分割方法
传统的基于CNN的语义分割方法为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入,用于训练和预测。这种方法有以下几个缺点:
1)存储开销很大、例如,对一个像素使用的图像块的大小为15×15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类。因此,所需的存储空间根据滑动窗口的次数和大小急剧上升。
2)计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。
3)像素块的大小限制了感受野的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部特征,从而导致分类的性能受到限制。
1. FCN概述
通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,7,7)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
核心思想:
1)不含全连接层的全卷积网络,可适应任意尺寸的输入。
2)使用反卷积进行上采样扩大图像尺寸,能够输出精细的结果。
3)使用跳跃连接的结构,提升鲁棒性和精确性。
2. 网络结构
网络结构示意图:
网络结构细节图如下:
- 对原图进行 conv1、pool1 后图像缩小为原图的 1/2。
- 进行 conv2、pool2,图像缩小为原图的 1/4。
- 进行 conv3、pool3,图像缩小为原图的 1/8,此时保留 pool3 的输出结果(特征图)。
- 进行conv4、pool4,图像缩小为原图的 1/16,此时保留 pool4 的输出结果(特征图)。
- 进行 conv5、pool5,图像缩小为原图的 1/32。
- 进行将原全连接层变成卷积操作的 conv6、conv7,输出的特征图大小仍为原图的 1/32。
● FCN-32s
直接将conv7之后只有原图1/32大小的特征图进行32倍上采样恢复到原图大小,然后进行预测。
● FCN-16s
先将conv7之后只有原图1/32大小的特征图进行2倍上采样,此时特征图为原图的1/16;然后和pool4的输出(也是原图大小的1/16)进行融合;最后将融合后的特征图进行16倍上采样恢复到原图大小,再进行预测。
● FCN-8s
先将conv7之后只有原图1/32大小的特征图进行4倍上采样,此时特征图为原图的1/8;然后将pool4输出的特征图进行2倍上采样得到原图1/8大小的特征图;接着将前两个处理之后的特征图和pool3的输出(也是原图大小的1/8)进行融合;最后将融合后的特征图进行8倍上采样恢复到原图大小,再进行预测。
3. 训练细节
训练过程分为四个阶段,如下:
1)第一阶段
使用数据集对模型的分类backbone进行预训练,使卷积层获得提取相应特征的能力。最后两层红色的是全连接层。
2)第二阶段
从特征小图(16×16×4096)预测分割小图(16×16×21),之后直接升采样为大图(300×300×21)。这里输出通道数为21的原因是:采用的PASCAL数据集中有20类,算上背景类一共21类。每个通道预测一类的像素。反卷积(橙色)的步长为32,故该网络被称为FCN-32s
3)第三阶段
这个阶段上采样分为两次完成(橙色×2)。 在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)通过跃层结构融合进来,提升精确性。 第二次反卷积步长为16,这个网络称为FCN-16s。
4)第四阶段
这个阶段上采样分为三次完成(橙色×3)。 进一步融合了第3个pooling层的预测结果。 第三次反卷积步长为8,记为FCN-8s。
4. 实验效果
5. FCN缺点
1)得到的结果还是不够精细。进行8倍上采样虽然比32倍上采样的效果好了很多,但是上采样的结果还是比较模糊,对图像中的细节不敏感。
2)对各个像素进行分类,没有充分考虑像素与像素之间的关系,即便是用卷积层替换了全连接层,但是依然是独立像素进行分类。