目录
一、概述
FCN网络在Fully Convolutional Networks for Semantic Segmentation一文中由Jonathan Long等人提出的用于图像语义分割的一种框架,主要将CNN网络中的全连接网络全部换为卷积层,并通过上采样(反池化)的方式,提高图片分辨率达到输出语义分割图片的目的。
FCN网络主要思想:替换CNN网络中的全连接层为卷积层。
支持任意尺度的图片输入,打破CNN网络对输入图片的固有局限。
通过反卷积,上采样的方式输出高分辨率图片。
使用膨胀卷积思想,保留高分辨率图片中所含的原始信息。
使用跳级思想,通过卷积先生成的热图,进行反卷积和跳级,生成与输 入图像尺寸相同的特征图,确保鲁棒性和准确性。
二、卷积层如何替换全连接层
由于CNN网络在若干卷积后会连接全连接层,将特征图映射为一个一维若干长度的向量,用于执行图像识别中的分类和回归问题,输出不同类别中每一类的概率。而FCN网络实现的是像素级的分类问题,通过对最后一个卷积层生成的特征图进行反卷积操作,使其逐步恢复到输入图像结构,做到对每一个像素的预测,同时保留的每一个特征信息,并做到对不同尺度的图片进行输入操作。
FCN32s,FCN16s,FCN8s的不同处理方式。(由上到下为32,16,8),可以看到随着FCN网络加深,融合前一个pooling层作为中间层,再进行上采样可以增大特征信息的融合程度。
三、膨胀卷积
膨胀卷积又称空洞卷积,在2018年的Understanding Convolution for Semantic Segmentation论文中提出,其中在论文中使用密集上采样卷积dense upsampling convolution (DUC)来产生双线性上采样中缺少的更详细的信息。在编码阶段提出混合空洞卷积hybrid dilated convolution (HDC) framework,可以有效地扩大了网络的接收域(RF)以聚合全局信息,也减轻了由标准膨胀卷积引起的“网格问题”。论文来源:https://arxiv.org/abs/1702.08502。
空洞卷积主要做法,在卷积时隔行隔列添加0,以保证卷积后覆盖更多的像素点,一般来说第一层会使用1*1卷积,以第一层卷积利用所有的像素点。下图为使用未使用膨胀卷积两次和使用膨胀卷积两次覆盖的像素点的比较。
四、跳级思想
该思想的表现就是FCN32s,16s,8s网络结构的不同,只修改全连接层为卷积层,stride调整为32作为基底的FCN32s网络,将基底的预测(FCN-32s)进行两倍的上采样得到原尺寸的图像,并与从pool4层(stride 16)进行的预测叠加,这一部分的网络作为FCN-16s。再将该网络的预测进行一次两倍的上采样并与从pool3层得到的预测叠加,这一部分的网络被称为FCN-8s。
在不同网络结构的预测语义分割中,可以看出网络加深确实融合了更多的特征信息。
五、FCN网络的扩展与优点
在原论文中,backbone使用当时流行的VGG网络,而随着Resnet网络的建立,backbone逐渐转为使用残差网络的Resnet网络。另外,在DeepLab产生,添加条件随机场的全连接网络可以获得更高的准确度,提高空间一致性。
对于优点,使用不同输入结构的图片作为输入,避免了重复储存和计算卷积的问题。