一、语义分割之FCN
Fully Convolutional Networks for Semantic Segmentation(语义分割的全卷积网络)
- 论文链接:https://arxiv.org/abs/1411.4038
- 论文翻译:https://www.cnblogs.com/xuanxufeng/p/6249834.html
- 论文详解:https://blog.csdn.net/qq_36269513/article/details/80420363
- 论文代码:https://github.com/shelhamer/fcn.berkeleyvision.org
二、FCN算法
1、主要框架
2、算法详解
网络结构如下。
输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。
2.1 全卷积-提取特征
注:虚线上半部分为全卷积网络。(蓝:卷积;绿:max pooling);
这部分由深度学习分类问题中经典网络AlexNet修改而来。只不过,把最后两个全连接层(fc)改成了卷积层。
解释: 全连接层转卷积层:
AlexNet使用了两个尺寸为4096的全连接层[1×4096],最后一个有1000个神经元的全连接层[1×1000]用于计算分类评分。
我们可以将这3个全连接层中的任意一个转化为卷积层:
针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了;
针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096];
对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000];
2.2 逐像素预测
注:虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。
图1
图2
图1经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低;
图2采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
2.3 跳级结构
- 如上图所示:对原图进行卷积conv1、pool1后图像缩小为1/2;对图像进行第二次卷积conv2、pool2后图像缩小为1/4;对图像进行第三次卷积conv3、pool3后图像缩小为1/8,此时保留pool3的feature map;对图像进行第四次卷积conv4、pool4后图像缩小为1/16,此时保留pool4的feature map;对图像进行第五次卷积conv5、pool5后图像缩小为1/32,然后把原来CNN操作过程中的全连接变成卷积操作的conv6、conv7,图像的feature map的大小依然为原图的1/32,此时图像不再叫feature map而是叫heat map。
- 其实直接使用前两种结构就已经可以得到结果了,这个上采样是通过反卷积(deconvolution)实现的,对第五层的输出(32倍放大)反卷积到原图大小**(FCN-32s)**。但是得到的结果还上不不够精确,一些细节无法恢复。于是将第四层的输出和第三层的输出也依次反卷积,分别需要16倍 (FCN-16s) 和8倍 (FCN-8s) 上采样,结果过也更精细一些了。这种做法的好处是兼顾了local和global信息。
- 如果继续仿照FCN作者的步骤,我们可以对pool2,pool1实现同样的方法,可以有FCN-4s,FCN-2s,最后得到end to end的输出。这里作者给出了明确的结论,超过FCN-8s之后,结果并不能继续优化。
2.4 网络loss层
FCN网络的输入batchsize是1,因为分割loss的计算在每一个像素点都一个真值(标签),相当于每一个像素点的都是一个分类任务softmax,一个图像就有对应像素点个样本。所以分割任务的batch是一个图片,将一个图片最后在所有像素点上的分类loss加起来计算一次梯度的更新。
训练
训练过程分为四个阶段,也体现了作者的设计思路,值得研究。
-
第1阶段
以经典的分类网络为初始化。最后两级是全连接(红色),参数弃去不用。 -
第2阶段
从特征小图(16164096)预测分割小图(161621),之后直接升采样为大图。
反卷积(橙色)的步长为32,这个网络称为FCN-32s。 -
第3阶段
升采样分为两次完成(橙色×2)。
在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。
第二次反卷积步长为16,这个网络称为FCN-16s。 -
第4阶段
升采样分为三次完成(橙色×3)。
进一步融合了第3个pooling层的预测结果。
第三次反卷积步长为8,记为FCN-8s。
较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。
论文创新点
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
- 增大数据尺寸的 反卷积(deconv) 层。能够输出精细的结果。
- 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。