章 琳,袁非牛,张文睿,曾夏玲
1.江西科技师范大学 数学与计算机科学学院,南昌330038
2.上海师范大学 信息与机电工程学院,上海201418
卷积神经网络已被广泛地应用于很多视觉研究领域[1],比如图像分类、人脸识别、音频检索、ECG 分析等。卷积神经网络之所以取得如此巨大的成功是因为其所采用的卷积、池化等操作。卷积操作具有局部连接、权值共享的特点,能很好地保留二维数据的空间信息,而池化操作能够很好地满足平移不变性,这在分类任务中非常重要。但是卷积神经网络有一个很大的缺陷,就是网络输入必须指定大小,而且一般只能进行一对一的预测,即一个输入只能得到一个预测结果。但是随着视觉领域的发展,这种预测已经无法满足要求,完成的任务越来越复杂,往往需要的是密集预测,即输入对象中的每一个元素都需要进行预测,这是卷积神经网络无法完成的,而全卷积神经网络就是在这种需求下被提出的。
顾名思义,全卷积神经网络中包含的都是卷积层,根据任务需要可以适当保留池化层,为了完成密集预测,卷积神经网络中的全连接层必须被卷积层替代,这也是全卷积神经网络最大的特点之一。由于保留了卷积和池化操作,全卷积神经网络具有卷积神经网络的所有特点,此外,全卷积神经网络对于输入非常宽容,可以处理任意大小的输入信号。早在1992 年,Matan 等[2]就已经将一个卷积神经网络扩展为可以处理任意大小输入信号,但是该网络仅能处理一维信号;而在1994 年,Wolf等[3]将输入信号扩展为二维图像,提出了一个卷积定位网络对邮政地址进行定位,该方法完全可以被看作全卷积神经网络,因为其网络结构中仅采用了卷积和下采样操作,然后通过一个后续的候选框产生方法来完成定位任务。尽管该方法与后期的全卷积神经网络有较大差距,并且不是端对端的,但是它为全卷积神经网络的发展奠定了坚实的基础。
目前,全卷积神经网络被广泛应用于目标分割、目标检测、目标分类等研究领域,并取得了令人瞩目的成果。下面,将分别介绍多个研究领域中一些比较经典的全卷积神经网络算法以及目前一些最新的研究进展。
语义分割,即密集分类问题,需要对输入图像中的每个像素点都进行分类来完成目标分割任务,任务最后的输出是一张与原图大小相关的分类结果图,图中每个值对应的是原图中每个点的分类预测结果。由于语义分割能实现各类目标之间的精确分割,因此被广泛应用于自动驾驶、医疗、地理、机器人等研究领域。
2.1.1 FCN
FCN[4]语义分割算法是在2015年提出的,它第一次真正实现了全卷积神经网络在像素级预测任务上的端对端训练。FCN算法通过将原始CNN网络中的全连接层替换为1×1 的卷积层来实现全卷积网络结构,如图1所示。通过这个操作,FCN可以对图像中的每个像素点都产生一个预测结果,最终输出一个与输入图像大小相关的预测图。在结果预测阶段,提出了一种可学习的双线性上采样方法,实验证明该方法优于采用固定参数的上采样方法。为使分割结果更加精细,FCN采用了跳层结构,将来自多个不同层的特征图上采样到同样大小后,通过求和的方式进行融合。由于浅层信息的加入,输出结果的语义和空间精度得到了有效提升。此外,为了使网络可以快速收敛,利用多种网络结构在ImageNet上训练好的权重对网络参数进行初始化,然后再使用语义分割的训练数据集对网络参数进行微调。FCN 对AlexNet[5]、VGG16[6]和GoogLeNet[7]进行了微调,其中VGG16效果最好。
图1 FCN框架图
FCN有以下优点:1×1卷积层的使用使网络可以处理任意大小的输入;基于块的方法需要在重叠块上进行很多冗余计算,而FCN 中感受野的显著重叠使得网络在前馈和反馈计算中更加高效。FCN也存在以下缺陷:首先网络整体规模过大,很难在相关任务上完成端对端训练;其次,由于预测结果由多个下采样后的特征图通过上采样直接产生,这些特征图太过稀疏,导致分割结果不够精细,缺乏细节信息。FCN通过跳层结构将来自不同层的特征图进行有效融合能有效提升分割精度。这是由于FCN 中较深的层能学习到目标的全局特征,而较浅的层则可以捕获目标的大量细节信息,这种信息的互补对目标分割任务有利。
2.1.2 U-net
U-net[8]是在2015 年提出的一个用于医学图像分割的全卷积网络结构。它是一个对称编-解码网络结构。U-net 也采用了FCN 的跳层结构,但两者有较大区别:U-net 将编码阶段获取的特征图传送到对应的解码阶段,并通过连接的方式融合来自不同阶段的特征图。U-net 采用的是3×3 的非填补卷积操作,因此每经过一次卷积,特征图会缩小2×2个像素,为了实现连接操作,特征在传送过程中还进行了裁剪。
U-net 另一个亮点在于针对生物细胞图像的特点,提出了一个加权交叉熵损失函数:
其中,ω 是一个权重图谱,通过形态学操作的方式计算获得:
损失函数的目的是为了补偿训练数据集中每类像素出现的不同频率,使网络将重点放在相互接触的细胞之间比较细微的区域。此外,采用了He等[9]提出的自适应权重初始化方法:采用标准方差为的高斯分布去初始化权重,其中N 为神经元输入结点的数量。
2.1.3 SegNet
SegNet[10]与U-net非常相似,但二者又有明显不同,首先SegNet没有采用跳层结构;其次,SegNet的编码阶段直接采用了VGG16的前5个块,为了加快收敛抑制过拟合,还在每个卷积层后面增加了一个Batch Normalization(BN)[11],SegNet 使用VGG16 在ImageNet 上训练好的权重来进行网络初始化。
SegNet 最大的亮点在于提出了一种更加有效的unpool方法。作者指出语义分割中边界轮廓至关重要,在内存条件允许的情况下,编码阶段所有特征图的边界信息都应该被保存,但这并不符合实际,因此提出了一种更加有效的方法去存储边界信息。该方法与原始unpool[12]的相同之处是,在编码阶段都需要保存下采样操作中最大特征值在每个池化窗口中的位置信息,文中称之为最大池化索引,然后在解码阶段,利用最大池化索引对输入的特征图进行上采样。不同之处在于最大池化索引的保存方式,原始unpool 采用的是浮点精度,而SegNet仅采用2 bit数据量就完成了存储,这使得SegNet的网络规模大幅度减小,具有更快的运行速度。
2.1.4 Deeplab系列算法
Deeplab 系列算法包括deeplab v1[13]、v2[14]、v3[15]和v3+[16]。Deeplab v1是2016年提出的,它将FCN与全连接条件随机场相结合,分割性能有了很大提升。主要原因在于:首先,为了改善FCN 分割结果太过稀疏的问题,deeplab v1将VGG16中最后两个池化层的步长由2改为1,同时采用边界补0 的方式使池化之后的特征图尽量保持原有大小;其次,为了保证后续卷积层的感受野不受影响,deeplab v1 将最后3 个卷积层和第一个全连接层替换为步长为2和4的空洞卷积(hole algorithm);为了减少计算时间,改用4×4或3×3的卷积核去替换第一个全连接层中的7×7卷积核。经过以上操作,deeplab v1 的输出比FCN 增大了4 倍。由于分割结果边缘过于平滑,在网络后端增加了一个全连接条件随机场去锐化分割边缘。这样做虽然可以获取很好的边缘细节,但是全连接条件随机场的使用大大增加了算法的计算复杂度。
2017年deeplab v2被提出[14],它在v1的基础上进行了两方面改进,首先将基础网络改为ResNet101[17];然后提出了空洞空间金字塔池化(ASPP)以实现目标在多个尺度上的鲁棒分割。ASPP是受到R-CNN[18]中空间金字塔池化方法的启发,对同一特征图同时采用多个并行的带有不同采样率(rate)的空洞卷积层以实现多尺度,然后对不同采样率提取的特征在各自的分支中做进一步的处理并以求和方式进行融合,产生最终结果。ASPP能捕获目标的多尺度信息,空洞卷积的引入解决了特征分辨率和感受野之间的矛盾,为获取足够大的感受野,空洞卷积需要足够大的采样率,当采样率过大时会造成空洞卷积操作无效以及算法复杂度剧增的后果。
同年12 月,deeplab v3[15]问世,它的一个明显不同就是不再使用全连接条件随机场。同时做了以下改进:通过级联方式提出了一个更深的网络模型,复制ResNet网络最后一个块(即block4)的几个副本(即block5-block7),将这些副本通过级联方式连接到网络后端,每个块包含3个3×3的卷积层,除了最后一个块,其他块的最后一个卷积层采用的步长都为2。还提出了一种称为Multi-gird的方法,即在网络中的block4到block7采用了具有不同rate 的空洞卷积。在ASPP 中加入了BN[11],将rate=24的空洞卷积替换为一个1×1的卷积,并且加入了图像级特征。这个改进就是为了解决当采样率过大时,卷积核的大小可能会超过特征图,这种情况下卷积会退化为一个只有中心点权重有效的1×1滤波器。
2018 年,deeplab 系列作者提出了deeplab v3+算法[16]。相比之前的算法,v3+的网络结构有较大改变,它在网络中加入了一个简单但有效的解码模型,如图2所示。v3+模型采用v3 网络作为编码模型,并将其中的ResNet101 替换为Xception[19],并增加了其深度;此外,为了减少网络参数,在ASPP 模块和解码模型中引入了深度可分离卷积(depth wise separable convolution)[19],对于模型中的空洞卷积,则采用空洞可分离卷积替换。此外,将网络中所有的最大池化层替换为步长为2的深度可分离卷积,并且在每个3×3的深度可分离卷积后面都增加了BN和ReLU操作。
根据对deeplab 算法的分析,在网络设计方面可以归纳出一些结论:(1)采用空洞卷积能有效提升分割结果的分辨率,使细节信息更加丰富;(2)全连接条件随机场能有效恢复分割结果的细节,但其计算复杂度较高;(3)更深的网络有利于获取更有效的特征;(4)ASPP 能有效捕获多个尺度的上下文信息,有效解决多尺度问题;(5)深度可分离卷积能有效减少模型参数数量,降低模型计算量,同时有效提升模型的表达能力;(6)编-解码模型能使编码阶段计算速度更快,而解码阶段能通过逐步恢复空间信息获取目标更好的边缘细节[16]。
2.1.5 其他算法
图2 Deeplab v3+网络结构图
RefineNet[20]是一个多通道微调全卷积网络,提出的长距离残差连接方法可以利用早期卷积层获取的细粒度低阶特征直接去微调更深层捕获的高阶特征。网络的输入来自ResNet 的4 个不同尺度的特征输出,RefineNet模块中包含残差卷积单元,多分辨率融合单元以及链条式残差池化单元,这种设计可以保证网络中的梯度通过长距离残差连接轻松地被传播到较早的低阶层,确保整个网络可以进行端对端的训练。
Peng 等[21]提出大部分网络都偏向堆叠小尺寸卷积核,如1×1、3×3,原因在于当计算复杂度相同时,堆叠小卷积核效果更好。但是本文指出当需要同时进行分类和定位时,大卷积核反而更加重要,因此提出了一个采用大卷积核的全局卷积模块以及提升目标边缘精度的边界微调模块,当卷积核大小为11时效果最佳。
PSPNet提出了一个金字塔池化模块[22],并将其嵌入全卷积网络后端,该模块包含多个并行的具有不同步长的全局均值池化操作,可以聚合更多的上下文信息,不同感受野下获取的全局信息可以减少很多误分割。DenseASPP 认为ASPP 获取的特征图尺度不够丰富,感受野覆盖范围不够密集[23],因此借鉴DenseNet 的思想,将ASPP以更加密集的方式进行连接、组合。
Cheng 等[24]提出了一个位置敏感反卷积模块(LSDeconvNet),该模块在deeplabv2 的基础上增加了一个反卷积子网络,网络将RGB 图像和由深度图像编码成的HHA 图像并行送入LS-DeconvNet 并采用一个门控融合层合并两个语义分割结果;黄龙等[25]通过层间融合方式提出了一种快速全卷积网络,有效地避免了连续卷积层造成的图像特征信息损失;Yuan等[26]则提出了一个双支路非对称编-解码网络结构对烟雾目标进行分割。
此外,文献[26-31]都将全卷积网络用于医学图像分割。Yuan 等[27]提出了一个编-解码两阶段全卷积网络,编码阶段包括5个卷积层、3个池化层和1个dropout层,解码阶段包括4 个反卷积层和3 个上采样层,同时针对皮肤图像中病变区域较小的特点提出了基于杰卡德距离的损失函数。文献[28]中提出两种全卷积网络,第一种将三维大脑图像分为冠状位、矢状位和轴状位3种二维图像,同时送入一个多尺度全卷积网络,然后融合3个输出获取分割结果,这样做有效地避免了使用计算量巨大的三维卷积;第二种模型是Auto-U-net,与U-net非常类似,最大的差别在于Auto-U-net 将U-net 中的卷积全部替换为填补卷积,即卷积层的输入输出大小一致。同样的,文献[29]和[30]也以U-net 为基础进行改进,前者在编码阶段的最后引入一个门控循环神经元以获取全局特征,并将网络循环使用提出了一个周期全卷积网络(RFCN);后者则在编码阶段加入了一个ASPP 模块。Li 等[31]提出的全卷积残差网络能同时完成分割和分类任务,包括88 个卷积层和4 个反卷积层,其中采用了类似FCN[4]的跳层结构,同时为了加大网络深度,还提出了一种Residual in Residual 结构。Jia 等[32]则提出了一个基于弱监督的全卷积网络,利用多尺度学习提出了一个深度弱监督损失函数,同时为了获取对学习过程有显著帮助的额外弱监督信息,在网络中引入了关于正样本的约束条件。
文献[32-34]都采用和deeplab v1近似的策略,在全卷积网络后端增加一些后处理模块来进一步提升分割精度。Zhang等[33]提出了一种基于概率超像素的全连接条件随机场去改善全卷积网络得到的粗糙分割图,Sun等[34]则采用数字表面模型(DSM)去增强全卷积网络的分割结果,黄英来等[35]则将改进后的FCN和全连接条件随机场结合用于林木图像分割。
之前介绍的都是基于图像的语义分割,文献[36-39]则是针对视频的。He等[37]最大贡献在于提出了一种时空数据驱动池化方法,该方法包括空间池化层、时间池化层和区域-像素池化层,首先利用全卷积网络产生每一帧图像的超像素分割图,并且利用光流信息建立不同帧对应区域之间的联系,最后采用提出的池化方法将两者进行融合。在文献[36-38]中,都采用了双流结构来进行视频目标分割。Qiu 等[38]利用二维像素和三维像素之间的空间和时间依赖性,提出了一种深度时空全卷积网络,其中二维全卷积网络与卷积长短期记忆模型(ConvLSTM)结合用于二维像素,三维全卷积网络用于三维像素。而Caelles 等[39]和Jain 等[40]提出的双流结构采用的是一样的网络结构,前者一条分支用于分割前景目标,另一条分支用于产生目标轮廓;后者一条分支用于学习视频的外观信息,另一条则用于学习光流信息。
虽然基于FCN 的全监督语义分割取得了巨大成功,但是图像标签需要像素级标注,这是一项巨大的工程。因此,很多学者考虑是否可以采用一些比像素级标注更容易获取的标注信息来替代,如图像级标签,这种方法被称为弱监督语义分割。
2.2.1 STC
Wei等[41]提出了一种由分割简单图像逐步升级为分割复杂图像的弱监督语义分割框架(STC),如图3所示,模型中所有DCNN 均为全卷积结构。该方法的一个前提是假设简单图像只包含一个语义标签,那么就可以通过显著性方法将简单图像中的目标检测出来,给前景候选像素直接分配相应的图像级标签,这就把问题转换成了全监督语义分割,这部分工作由I-DCNN完成,其中采用的显著性分割方法为判别区域特征融合(DRFI)[42]。第二阶段为E-DCNN,它利用I-DCNN 对简单图像进行分割,同时结合图像级标签去训练E-DCNN。最后阶段为P-DCNN,和E-DCNN 策略一样,利用E-DCNN 对复杂图像进行预测,同时结合图像级标签去增强P-DCNN的分割能力。基于这个由简单到复杂的模型,图像分割结果被逐步优化。虽然STC在PASCAL VOC2012上取得了51.2%的成绩,但该模型有两个较大的缺陷,首先必须收集很多具有简单背景单一目标的简单图像作为第一阶段的训练样本,否则后续工作无法继续;其次,STC需要分3个阶段采用不同数据对网络进行训练,因此训练过程复杂,时间过长。
在STC方法之后,针对弱监督语义分割还提出了很多方法[43-45],但这些方法中都包含了使用了全连接层的分类网络,在此不做详细介绍。
2.2.2 WILDCAT
WILDCAT[46]包括3个子网络能同时完成图像分类,检测和分割任务,如图4 所示。该结构以ResNet101 为骨干网络用于提取图像初级特征,通过1×1 卷积层,即图中WSL转换层,将初级特征编码为多个特征图,其中每类C 包含M 个,这部分仅使用图像级标签进行学习。为了总结来自多个特征图的信息,采用平均池化将属于同一类的M 个特征图合并为一个特征图,最后采用提出的空间池化对C 个来自不同类的特征图进行分类、检测和分割。
表1 给出了一些方法在PASCAL VOC2012 测试集上的语义分割结果对比,可以发现,跳层结构、残差结构、空洞卷积、多尺度结构等技巧的使用极大地提升了分割精度。相比全监督算法,虽然弱监督算法的精度还有较大差距,但由于弱监督算法对标签的要求很低,因此也非常具有研究价值,性能也有很大提升空间。
图3 STC框架图
图4 WILDCAT框架图
表1 几种方法在PASCAL VOC2012测试集上的性能对比
实例分割与语义分割有非常本质的区别,且更加符合人类观察物体的实际情况,基于实例的分割要求将属于同一类别的不同目标区分开来,因此实例分割需要目标检测技术作为基础,然后再进行像素级分类。
由于目标不同,原始FCN 并不能被直接用于目标实例分割。但是Dai 等[47]发现,FCN 分割结果中大部分像素都是可以被再次使用的,因此,他们对FCN进行改进,提出了可用于实例分割的FCN 网络,称之为实例FCN。实例FCN的整体流程包括两个分支,第一条分支用于产生输入图像中所有可能的实例分割图,第二条分支产生的是与第一条分支中所有分割图对应的一个分数,用于判断该分割图中是否含有目标,有则为1,没有则为0。最后,根据两条分支的共同输出,产生一些候选的实例分割图。文中采用的损失函数为:
其中第一部分来自第二分支,而第二部分则来自第一分支;i 表示训练时随机选取的滑动窗口的个数,j 为窗口中像素的索引。为进一步提升分割精度,还在网络后端采用了非极大值抑制算法。
第一分支的实例FCN 和传统FCN 有什么关系呢?传统FCN中,同一像素点会产生相同分数,这对实例分割是不够的。在实例分割中,同一像素可能会属于不同实例,需要有不同的分数与其对应。因此为了实现这一目标,实例FCN会输出一系列分数图,每个分数图是图像中每个像素点与实例相对位置的一个分类。其实实例FCN 还是对图像中的每个像素进行分类,不过这里的类别变成了是否属于某个实例的相对位置。通过这种方法,即使是图像中的同一像素,只要它位于实例的不同相对位置,那么在不同的实例中就可以得到不同的分数。然后通过一个滑动窗口来组合每个分数图,产生最终的结果,具体如图5 所示,这里滑动窗口的作用等同于边界框。实例FCN 产生的分数图的个数与k 的选取有关,k 表示滑动窗口中子窗口的个数,即k=3,生成的分数图有k2个。每个分数图代表的是每个像素点是否属于该实例的某个相对位置的分类结果,也就是说在图中,第二排第三列的6号分数图中每个像素点都被分类为是或不是属于这个实例的右边。然后,在相应的分数图中,直接复制对应位置子窗口的值,并根据其位置组合在一起形成实例分割图。最后,为了提高分割结果的分辨率,实例FCN 借鉴了deeplab v1 的方法,将VGG16 中pool4 层的步长由2 改为1,并且在最后一个块的3个卷积层上采用了空洞卷积。
图5 实例FCN分割分支结构图
实例FCN 的优点在于能直接完成实例分割,并且网络参数数量很少。缺点在于只能完成分割任务,如果想对实例进行分类,后续还需再添加一个分类网络。
实例FCN 是将分割和分类任务分开进行,如果想实现实例分类还需要添加一个分类网络。Li 等[48]认为这样没有完全利用两个任务之间的相关性,因此对实例FCN进行改进,首次实现了全卷积网络用于端对端实例分割任务,称之为FCIS。该方法在阈值取0.5 时,平均准确率达到了59.9%。FCIS与实例FCN有几点不同:首先,采用候选区域生成网络(RPN)[49]获取一些感兴趣的区域(RoIs),即采用边界框去替换滑动窗口,这里RPN直接作用于特征图而不是原始输入图像;其次,FCIS除了获取实例FCN 中的分数图(文中称为位置敏感内部分数图),另外还获取了一组分数图用于分类任务(文中称为位置敏感外部分数图);然后,采用和实例FCN 一样的组合方式产生两个分割图,一个用于实例分割,一个则用于实例分类;最后为增强网络提取特征的能力,采用ResNet 替换了VGG16。FCIS 具有很多优点:首先网络参数数量少,所有分数图由单支FCN获取,没有多余操作;其次保留了FCN中局部权重共享的特性;最后每个RoI的计算非常简单、快速。
Mask R-CNN 是2017 年提出的[50],该方法击败了COCO2016挑战赛的冠军,同等条件下的平均准确率提升了5.5%。Mask R-CNN 是对Faster R-CNN[49]的一个扩展,在Faster R-CNN的网络结构中增加了一条分支专门用于生成目标的实例分割结果。由于Faster R-CNN中RoIPool[49]采用的量化操作会造成输入RoI 与输出特征之间无法对齐,因此Mask R-CNN 提出尽量避免对RoI 的边界或块(bins)进行量化操作,使用双线性插值去计算每个RoI块的输入特征在固定的4个采样位置上的精确值,然后通过平均或最大值方法将这四个值进行合并。该方法称为RoIAlign,能有效提升分割精度,克服类内竞争问题。Mask R-CNN算法包括两个阶段:第一阶段采用RPN 生成一系列候选目标边界框,经过卷积神经网络进行特征提取并将这些候选边界框映射到特征图上产生一系列RoIs,然后采用RoIAlign提取每个RoI的特征用于后续操作;第二阶段是一个并行结构,一条分支和Faster R-CNN一样生成目标的类别和最终的目标边界框,另一条分支直接采用FCN[4]对每个RoI 生成一个精细的分割图。这与实例FCN中先完成精细分割,分类依靠分割结果进行形成了鲜明对比。在第一阶段,将ResNeXt101[51]与Lin 等[52]提出的特征金字塔网络(FPN)结合进行图像特征提取,有效地提升了整体网络的精度和速度。此外,由于增加的分割分支规模很小,Mask R-CNN运行速度并未受到什么影响。尽管如此,Mask R-CNN毕竟还是两阶段算法,其速度相比单阶段算法还是不够理想。
Hayder等[53]采用的方法比较类似,先使用RPN对图像产生一些候选框,然后在候选框的基础上采用提出的基于距离变换的残差反卷积结构去进行实例分割,整体网络会重复残差反卷积结构两次。而Liu等[54]的想法则比较新颖,将一个实例分割问题分为水平方向和垂直方向分别进行,首先采用一个带有跳层连接的全卷积网络分别获取目标的水平和垂直分割图,然后通过一个融合网络去生成最终结果。而文献[55]则通过学习静态图特征进行视频实例分割,以deeplab v2 为基础,将视频当前帧以及前一帧的预测分割结果送入网络,通过仿射变换和非刚性变换来模拟两帧之间同一目标的预期运动,引导当前帧进行实例分割。
4.1.1 Overfeat
Overfeat是比较早采用1×1全卷积层替换全连接层的方法之一[56]。该方法能同时完成分类、定位和检测任务。为了增加检测结果的可信度,没有对生成的多个候选框采用抑制方式,而是改用累加方式,通过这种操作,该方法不需要在背景样本上进行训练就可以完成检测任务,可以避免耗时又复杂的训练过程,同时也能让网络更加关注正样本,提升准确率。
Overfeat 最大的特点,是3 个任务共享网络的特征提取部分,只需改变网络的最后几层就可以完成不同的任务。因此在分类任务完成之后,定位和检测的微调并不需要很长时间。文中提出了两种模型,一种速度快,一种精度高。两种模型都以AlexNet[57]为基础,高精度模型的改进为:没有使用对比归一化,池化区域不重叠,第一个卷积层采用更小的步长以获取更大的特征图。另一个亮点在于提出了offset池化。一般的池化都是从特征图第一个像素开始,而且只将一个池化结果送入后续层。但是,分别从特征图的第1、2、3个像素开始,并将3种情况下的池化结果分别送入网络后续层,然后选取多个预测结果中的最大值作为最终结果。由于Overfeat以AlexNet为骨干网络,且没有采用多尺度特征融合,因此对特征的表达能力不足;尽管提出了一种速度快的模型,但是由于采用了贪婪的划窗策略,其计算复杂度还是很高。
4.1.2 R-FCN
为解决分类问题中的平移不变性和目标检测中的平移可变性之间的矛盾,Dai 等[58]提出了一个基于区域的全卷积网络(R-FCN),其整体框架和FCIS 非常类似。与FCIS一样,R-FCN也会产生一系列分数图,但是数量与实例FCN一样,仅为FCIS的一半,因为只需要完成目标检测任务。其次,R-FCN 也是基于区域的,即会由RPN 方法产生一系列RoIs,目标检测任务都在这些RoIs上完成。最后R-FCN没有使用直接复制的方式去合成最后的预测结果,而是提出了一个位置敏感RoI池化操作,其中采用了平均池化,每个RoI会产生k2(C+1)个分数,其中C 为图像中目标类别的数量,然后对每一类的这k2个分数通过平均方式进行投票,对产生的(C+1)维向量采用softmax进行分类。
4.1.3 其他算法
文献[59]和[60]将全卷积网络用于文本目标检测。Zhang 等[59]提出了一个Text-Block 全卷积网络,直接移植VGG16前5个块,采用跳层结构融合来自5个块的特征图,每个特征图都被反卷积上采样到原始图像大小。He等[60]指出文本对象之间存在较大尺度差异,仅采用一个全卷积分支不足以准确地捕捉如此大的文本差异,因此提出一个包含3条分支的网络结构。3条分支结构相同,共享相同的卷积参数,输入为3 个不同尺度上的同一图像。通过这种联合预测,该模型可以捕获更多的上下文信息。Zhu等[61]基于文本目标将全卷积网络用于交通信号检测。采用两阶段策略,首先直接采用Text-Block全卷积网络[59]将交通信号的大致区域从图像中分割出来,这样可以移除一些非文本或背景文本区域,减少文本检测范围,缓解文本尺度变化较大的问题。然后为满足实时要求,利用交通信号文本尺度变化相对较小的特性对TextBoxes[62]进行简化。
Li等[63]将全卷积网络用于三维目标预测,网络主干是一个类似FCN[4]的全卷积网络,然后在第四层进行分裂,一条分支用于目标分类,一条用于三维边界框预测;Zuo等[64]将全卷积网络与循环神经网络相结合用于人类皮肤检测;罗明柱等[65]将改进后的AlexNet 与金字塔模型、非极大值抑制结合进行人脸检测;Yang 等[66]在全卷积神经网络后面采用了基于多马尔科夫随机场的候选区域产生方法对遥感图像中的飞机进行检测;Lin 等[67]将来自网络的浅层特征和深层特征相结合用于近海船只检测;Persello 等[68]则将空洞卷积引入全卷积网络用于VHR图像非正式居住点检测。
基于全卷积网络在目标检测上取得的成绩,很多人都将其引入显著性检测领域。显著目标检测与目标检测最大不同在于,显著检测只需将人眼最关注的那个目标检测出来,它主要依靠目标的显著性来完成任务。
DeepFix 首次将全卷积网络用于预测人眼关注区域[69],其结构与VGG16类似,引入了空洞卷积和两个类似于inception 的模块;Kruthiventi 等[70]提出的方法能预测人眼关注区域并完成显著目标分割,两个任务共享网络前半部分,并在分割任务中采用跳层结构。Hou等[71]提取VGG16 中6 个不同层的特征图,每个深层特征图都传送到前面提取了特征图的层级进行上采样并进行连接操作,最终结果通过融合6 个初始结果产生。Luo等[72]提取VGG16的5个不同阶段的特征图,并在每组特征图后填加了一系列卷积层、池化层和反卷积层。
张守东等[73]提出的方法包含三部分:利用显著性提名网络获取显著目标候选区域;通过候选区域的空间信息和类别置信值获取目标的空间位置特征;融合深层特征、空间位置特征以及初始显著图置信图特征。
Li等[74]将全卷积网络用于显著实例检测任务,提出的方法包括三步:估计显著图;检测显著目标轮廓;识别显著目标实例。提出了一个带跳层结构的多尺度全卷积网络完成前两步,并根据目标轮廓检测结果产生固定数量的显著目标候选框,然后采用子集优化算法对候选框进行筛选,最后将估计显著图和筛选得到的候选框一起送入条件随机场,进行分割结果优化。
Kuen等[75]和Wang等[76]都额外引入了循环神经网络,前者先利用一个卷积-反卷积网络获取初始显著图,然后采用提出的循环关注卷积-反卷积网络对初始结果进行反复微调,这种关注的顺序特性可以使网络利用过去迭代的上下文模式来增强被关注子区域的表达。后者提出了一个循环全卷积网络,将原始图像和其显著先验知识作为网络第一时段的输入,然后将第一时段的结果与原始图像一起送入第二时段,循环多次得到最终结果,由于每次都利用了前一时段的结果作为辅助,因此该方法可以通过逐步修正前期错误来改善显著分割结果。
Wang 等[77]将全卷积网络用于视频显著目标检测。首先采用一个对称的卷积-反卷积网络对当前帧进行静态显著目标检测,以获取视频目标的空间显著信息,然后将当前帧、后一帧和当前帧的显著检测结果一起送入动态显著检测网络,两个检测网络结构相同。该方法没有依赖光流、边缘图或其他需要预先计算的信息,因此在保证精度的同时,处理速度上得到了极大提升。
边界语义检测能获取目标精确的边界语义信息,可以作为语义分割的研究基础。HED[78]是最早将全卷积网络用于边界语义检测的算法,它直接融合VGG16的5个不同阶段的输出并对这5 个输出和最后的输出进行联合监督训练,同时针对任务中正负样本严重不均衡的问题提出了一个带权重的二值交叉熵损失函数;Liu等[79]采用的网络结构与HED类似,也针对样本不均衡问题提出了一个鲁棒标注损失函数;Yang等[80]采用的是一个非对称编-解码全卷积结构;CASENet 则认为对所有阶段的输出都进行监督是不合理的[81],尤其是浅层阶段,因此仅对最后阶段和融合结果进行了监督训练,同时提出一种共享连接方法去融合高阶和低阶特征。
Lee 等[82]首次将全卷积网络用于高光谱图像分类,提出了一个结合了多尺度滤波器组和残差结构的网络,通过多尺度滤波器组获取图像的初始空间和光谱特征,然后融合两种特征送入网络进行分类。Li 等[83]将全卷积网络与优化的极限学习机结合进行高光谱图像分类。Jiao等[84]直接使用FCN-8s[4]网络提取高光谱图像的深度多尺度特征,然后采用权重融合方法将光谱特征和深度多尺度特征进行融合。Mou 等[85]采用无监督方式进行高光谱图像分类,文中采用一个全卷积-反卷积网络进行图像的无监督光谱-空间特征学习,结构中添加了残差学习和在SegNet中的unpool操作。
Zhan 等[86]将全卷积网络用于卫星图像中云和雪的分类,结构与deeplab v1 类似,提出了一个多尺度策略对特征图进行融合。Mancini等[87]将全卷积网络与朴素贝叶斯最近邻模型结合,输入图像被缩放到不同尺度并行送入网络,利用朴素贝叶斯分类器对多尺度特征进行分类。Karim 等[88]将长短期记忆网络(LSTM)和全卷积网络结合用于时间序列分类。
Yu等[89]设计了一个双流全卷积网络,两条分支采用相同结构用于提取外观和运动特征,然后采用一个线性权重融合方法来融合这两种特征,同时引入时间金字塔池化来构建视频级特征以完成动作识别;Liu 等[90]通过人类视觉注意力的帮助去完成动作识别,该网络采用多流全卷积结构,前两条分支用于提取外观和运动特征,第三条分支是一个注视预测全卷积网络用于学习动态注视特征;Yu 等[91]将识别分为两阶段,首先将ResNet[17]改为全卷积网络同时引入跳层,将图像中的皮肤病灶区域分割出来,然后构造一个深度残差网络对第一阶段的结果进行分类,两个网络的不同在于分割网络后面添加了一个7×7平均池化层用于提取全局深度残差特征。
可以发现使用深度网络框架提取的特征能更好地反应数据的内在本质,合适的特征融合方式能有效提升网络的性能,残差结构和多尺度信息的优势越来越明显。
除了以上应用较广泛的领域,全卷积神经网络在图像抠图、图像修复、目标候选框生成等领域也有所表现。
Xu 等[92]提出了一个编-解码+微调的两阶段全卷积网络。第一阶段是一个非对称编-解码结构,主要用于产生一个粗糙的分割结果,由于抠图对图像细节要求很严格,因此增加了一个微调阶段用于增强第一阶段结果的边缘部分。微调阶段的结构非常简单,是一个只包括4 个卷积层的残差结构。该方法的优点在于泛化能力强,抠图结果拥有非常精确的边缘,采用联合损失函数使网络更加快速的收敛;缺点在于训练过程不是端对端的,待第一阶段收敛后才能训练第二阶段。
Tan等[93]提出了一个基于全卷积网络的深度去马赛克模型,任务分两阶段,首先采用全卷积网络产生一个初始去马赛克图像,该网络只包含一系列卷积层,没有任何池化层;然后使用一个深度残差估计和多模融合方法产生一个更高质量的结果,该部分将第一阶段提取的特征送入一个只包含一个1×1 卷积层的残差层以生成残差图像,然后将其与初始去马赛克图像求和形成一副合成图像,最后利用原始图像对合成图像进行矫正。为提升方法性能,提出一种多模训练方式,其中包含3 种模型,每种模型结构相同,区别在于输入信号,第一个模型使用所有数据,另外两个模型分别使用光滑纹理图像和粗糙纹理图像,最后采用加权双插值融合方法去合并3个模型的输出。由于加入了对不同纹理图像的关注,修复的图像能很好地保留原始图像的纹理细节。
最著名的全卷积目标候选框生成方法当属区域建议网络(Region Proposal Network,RPN)[49],将RPN 设计为全卷积网络是为了能够和Fast R-CNN[94]共享一些卷积层。RPN 的输入是共享卷积层最后一层的输出特征图,采用一个3×3 滑动窗口对特征图进行滑动,这里采用的是3×3卷积,然后将获得的特征图送入分类层和回归层,分类层输出2k 个分数用于估计k 个候选框中是否有目标,回归层输出4k 个结果用于编码k 个候选框的坐标信息。为使网络输入可以是任意尺寸,分类层和回归层全部采用1×1 卷积层实现。文中给RPN 的候选框取了另外一个名字:Anchor,Anchor 的中心位置位于滑动窗口中心,每个Anchor 对应不同的尺度和长宽比,如果有3个不同尺度和3个不同长宽比,每个滑动窗口会产生9 个不同的Anchor,RPN 则会输出18 个分类信息和36个坐标信息。
Jie 等[95]采用的结构与VGG16 非常相似,为实现多尺度,将输入图像缩放到不同大小,然后从这些图像中裁剪出40×40 的块送入网络产生一系列目标候选框。由于采用了固定的多尺度输入以及基于块的训练方式,会产生一些检测错误,因此使用一种贪婪迭代搜索方法对每个候选框进行微调;随后,Jie 等[96]又提出了一个尺度感知像素级目标候选网络(SPOP-net)用于解决小目标定位差的问题,SPOP-net 包括三条分支:第一条被称为置信度网络,以预训练好的deeplab v1 为基础,对图像进行像素级分类,另外两条分别用于定位图像中的大目标和小目标,共享同一结构,目标的最终预测坐标为两个分支结果的加权和,权重信息来自第一条分支获取的大/小目标置信度图。
本文对全卷积神经网络在多个研究领域取得的成果进行了系统梳理和分析,重点剖析了几个热门研究方向的一些经典算法的核心所在,同时对目前最新提出的一些方法进行了分析总结。将全卷积神经网络中采用较多的技术进行归纳总结,分析其优缺点,详见表2。
表2 全卷积神经网络采用技术的分析
全卷积神经网络具有能支持任意大小的输入,支持完整图像的端对端训练,更加高效,能更好地学习上下文信息的优点。当然它还存在大量值得研究的问题:
(1)提出更加适合于弱/无监督训练方式的全卷积网络结构。弱/无监督更加符合人脑的思维模式,现有的很多全卷积网络在全监督训练下可以取得很好的成绩,但是移植到弱/无监督之后其效果显著下降,探寻数据内在本质特点,设计更加合适的网络结构值得研究。
(2)全卷积网络通过堆叠众多卷积层来获取长距离依赖信息,以学习目标的可区分性特征。卷积层堆叠过多会带来算法计算复杂度剧增、网络优化困难、多跳依赖关系建模困难的问题。不依靠增加网络深度,提出可区分性特征学习模块也是值得研究的问题。
(3)研究效果与效率并存的卷积操作。全卷积网络中使用最多的就是卷积操作,当由于任务需求需采用大尺寸卷积核时,卷积操作的计算复杂度会剧增。可分离卷积[97]、HetConv[98]等的提出,给这方面研究指引了方向,指出高性能高效率的卷积操作是值得研究的问题。
(4)随着手机终端的大力发展,对实时网络结构需求量剧增,如何设计轻量级、小巧的全卷积网络结构,同时保证一定的性能也是值得研究的问题。