近年来,深度学习在目标检测领域应用逐渐广泛,如车辆检测与识别、基于视觉目标跟踪、智能视频分析、自动驾驶、基于内容的图像检索等,相应的算法也不计其数。本文浅谈37篇有代表性的基于深度学习的2D目标检测算法,包含一阶段、二阶段以及轻量化网络,并在不同角度分析相关算法的优劣。
1.LeNet
手写字体识别模型LeNet诞生于1998年,是最早的卷积神经网络之一.它利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别.LeNet网络结构除去输入和输出层后,它有6层网络组成,其中包括3个卷积层2个下采样层和1个全连接层.其中卷积层采用5×5卷积核,而下采样层分别采用的平均值池化和最大值池化.
2.AlexNet
2012年Krizhevsky等提出的AlexNet以16.4%的显著优势问鼎ILSVRC的冠军,它第一次采用ReLU,Dropout,GPU加速等技巧,参数数量为6000万个,模型大小240MB左右.其网络结构如图所示,共8层网络结构,其中5个卷积层和3个全连接层.第一个卷积层的卷积为步长为4,大小为11×11;第二个卷积层的卷积核步长为1,大小为5×5;其余卷积层的大小均为3×3,步长为1.
AlexNet将CNN的基本原理应用到了更深的网络中.主要应用的新技术如下:
(1)使用ReLU作为CNN的激活函数,成功解决了Sigmoid在网络较深时的梯度弥散问题.
(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合.
(3)池化层使用重叠的最大池化,避免平均池化的模糊化效果.
(4)提出LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力.
(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算.
(6)数据增强.随机对图片进行镜像,旋转,随机噪声等数据增强操作,大大降低过拟合现象.
3.VGGNet
VGGNet网络结构如图所示,相比AlexNet具有较深的深度,网络表达能力进一步增强,同时在ImageNet上测试的精度进一步提高,VGGNet网络优点:
(1)结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2).
(2)验证了几个小滤波器(3×3)卷积层组合比一个大滤波器(5×5或7×7)卷积层好.减少了参数同时得到更多非线性映射,增加网络表达能力.
(3)验证了深层次的网络可以获得高级语义特征,通过不断加深网络结构可以提升网络性能.
4.OverFeat
Sermanet等改进AlexNet提出了OverFeat算法.该算法结合AlexNet通过多尺度滑动窗口实现特征提取功能,共享特征提取层,并应用于图像分类、定位和目标检测等任务.在ILSVRC2013数据集上的mAP达24.3%,检测效果相比传统检测方法有显著提升.该算法对深度学习的目标检测算法有启发式意义,但对小目标物体检测效果不好,存在较高错误率.
5.GoogLeNet
GoogLeNet是一个22层的深度网络,在主干卷积环节有3个inception模块,模块之间用3×3的最大池化层隔开.Inception模块如图所示,该结构分4条线路并行,将CNN中常用的卷积(1×1,3×3,5×5)、池化操作(3×3)堆叠在一起.采用不同大小的卷积核获得不同大小的感受野,最后拼接融合不同尺度的特征,增加了网络对尺度的适应性.为了解决计算过量的问题,在后3条路线上增加了1×1卷积核来进行降维.同时为了缓解梯度消失的问题,GoogLeNet增加了两个辅助分类器.这两个辅助分类器被添加到网络的中间层,它们和主分类器共享同一套训练数据.
GoogLeNet特点:
(1)采用1×1卷积核,性价比高,用很少的计算量就可以增加一层的特征变换和非线性变换
(2)提出batch normalization,把每层神经元的输入值分布回归到均值0方差1的正太分布,使其落入激活函数的敏感区,避免梯度消失,加快收敛;
(3)引入Inception模块,4个分支结合的结构,每个分支采用1×1的卷积核;
(4)去除了最后的全连接层,大大减少计算量
6.ResNet
越深的网络有越高等级特征,拥有强大表达能力.然而神经网络随着层数的增加,网络退化严重,即深层次的网络反而不如稍浅层次的网络性能,这并非是过拟合导致的.何凯明等提出的ResNet网络很好的解决了这个问题,ResNet模型的核心是通过建立浅层与深层之间的“短路连接”,在浅层网络的基础上叠加y=x层,就是恒等映射(identitymapping),可以让网络深度增加而不退化,有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络,实现更高的准确度.图为残差模块的示意图,残差函数F(x)=H(x)-x,如果F(x)=0,即为恒等映射,这样学习训练过程相当于自主确定了多少层次的网络是最优的.
ResNet特点:
(1)通过残差模块将网络深度进一步提高,解决了不断深化神经网络而使准确率饱和的问题.通过活用1×1卷积降低了特征图维度,控制了参数数量.
(2)存在明显层级,特征图个数层层递进,保证输出特征的表达能力.
(3)使用较少池化层,大量采用下采样,提高传播效率.
7.DenseNet
DenseNet模型的基本思路与ResNet一致,通过短路连接来融合前后几层的信息,但是DenseNet建立前面所有层与后面层的密集连接,同时通过特征上的连接来实现特征重用.这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能,DenseNet也因此斩获CVPR2017的最佳论文奖.DenseNet网络结构主要结构分稠密块(Denseblocks)和过渡层(transitionlayers).稠密块结构能够互相连接所有的层,具体就是每个层都会接受其前面所有层作为其额外的输入.对于一个L层的网络,DesNet共包含L(L+1)/2个连接,可以实现特征重用,提升效率,并且缓解了深层网络的梯度消失问题.过渡层为相邻2个稠密块的中间部分,稠密块是连接两个相邻的稠密块,并且通过池化使特征图大小降低.
DenseNet的优势主要体现在以下几个方面:
(1)由于密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练.由于每层可以直达最后的误差信号,实现了隐式的深度监督;
(2)参数更小且计算更高效,由于DenseNet是通过拼接特征来实现短路连接,实现特征重用;
(3)由于特征复用,最后的分类器使用了低级特征
8.R-CNN
Girshck等针对卷积神经网络如何实现目标定位的问题,提出了将Regionproposal和CNN结合的算法R-CNN,开创了神经网络实现目标检测的先河,其计算流程如图所示,可分为4步,首先利用选择搜索算法提取候选区域,接着将候选区域缩放到固定大小,然后进入卷积神经网络提取特征,随后将提取的特征向量送入SVM分类器得到候选区域目标的类别信息,送入全连接网络进行回归得到位置信息.
R-CNN缺点:
(1)输入的图像大小会进行缩放,导致图像失真;
(2)用选择性搜索算法提取约2000个候选区域,每个候选区域都要送入卷积神经网络提取特征,计算量大耗时多;
(3)训练测试复杂,候选区域提取、特征获、分类和回归都是单独运行,中间数据也是单独保存卷积提取的特征需单独存储,占用大量硬盘空间.
9.SPP-Net
2014年He等针对R-CNN的缺陷进行了改进,开发出了SPP-Net(Spatial Pyramid Pooling Network).SPP-Net将整个图片送入卷积提取特征,避免了候选区域分别送入卷积层提取特征造成的重复计算.在卷积层和全连接层之间增添了空间金字塔池化层(Spatial Pyramid Pooling,SPP),可以对不同大小特征图进行池化操作并生成特定大小的特征图,避免了R-CNN对图像进行缩放导致图像失真
SPP-Net缺点:
(1)与R-CNN设计相同,训练各个阶段都是单独运行,且中间数据必须保存.
(2)训练数据的图像尺寸大小不一致,使候选框感受野过大,不可以使用反向传播有效的更新权重.
(3)网络微调只更新了全连接层,不能实现端到端的检测且检测精度还需进一步提升.
10.Fast R-CNN
借鉴空间金字塔池化层的思路,Ross等2015年提出Fast R-CNN,用感兴趣池化层(Region of Interest,RoI)代替了空间金字塔池化层,它去掉了SPP的多尺度池化,直接用网格将每个候选区域均匀分若干个区域块,同时对每个块进行最大值池化,从而将特征图上大小不一的候选区域转变为大小统一的特征向量.针对在训练期间为多阶段和特征重复计算造成的时间代价以及数据存储过量的问题,将神经网络与SVM分类相结合,由全连接层同时负责分类和回归任务,实现了多任务端到端训练,使检测精度和速度同时得到了提高.Fast R-CNN网络流程如图所示,主要分3部分,首先将图像送入卷积网络提取特征,然后通过感兴趣池化层将候选区域池化为同一长度的特征向量,最后通过全连接层进行分类和回归.Fast R-CNN在PASCALVOC数据集中检测时间为每张0.32s,远小于R-CNN的45s和SPP-Net的2.3s.虽然Fast R-CNN实现了多任务端到端的训练,然而通过选择性搜索算法提取候选区域耗费了较多时间,训练和预测所需时间仍较长,不能实现实时性检测.
11.Cascade R-CNN
R-CNN系列算法在检测目标时均存在IoU阈值选取问题,阈值选取越高就越容易得到高质量的样本,但一味选取高阈值会引发两个问题:(1)样本减少引发的过拟合;(2)在推理阶段出现检测器最优的阈值与输入候选的IOU值发生不匹配.因此,单一检测器很难抉择一个合适的IOU,无论高低都是有很大弊端.针对此类问题Cai等提出了一种级联检测器,他们利用前一个检测器输出作为下一个检测器的输入,同时相应的提高训练时的IoU阈值,使得IoU阈值与预选框的IoU值较为接近,训练的3个检测器最后输出结果精度更高,从而在推理阶段合理的提高了检测器优选IoU阈值.Cascade R-CNN算法核心由一系列的检测模型组成,每个检测模型都基于不同IoU阈值的正负样本训练得到,通过重采样改变了不同阶段的输入假设分布,并且保证了每个阶段有足够固定数量的正例样本数.通过调整阈值的方式重采样,不断改变候选框的分布,在保证样本数不减少的情况下训练出高质量的检测器,从而不会出现过拟合,且在更深层的训练阶段可以得到更高的IoU阈值.
12.Faster R-CNN
Ren等在Fast R-CNN的基础上提出Faster R-CNN算法,在卷积层后添加了区域提取网络RPN(RegionProposalNetwork),代替了Fast R-CNN的选择性搜索算法.RPN核心思想是使用CNN卷积神经网络直接产生候选区域,锚框机制和边框回归可以得到多尺度多长宽比的候选区域.RPN网络也是全卷积网络(Fully-Convolutional Network,FCN),可以针对生成检测建议框的任务端到端训练,能够同时预测出目标物体的边界和分数.Faster R-CNN整个流程如图所示,先对图像进行卷积提取特征,然后进入RPN层得到候选区域,最后全连接层进行分类和回归.整个流程从图像特征提取、候选区域获得到分类和回归都在神经网络中进行,且整个网络流程都能共享卷积神经网络提取的特征信息,提高了算法的速度和准确率,从而实现了两阶段模型的深度.Faster R-CNN在PASCALVOC2007和2012上的mAP分别为73.2%和70.4%,检测速度达到5fps.
Faster R-CNN虽然大幅提高了算法精度和速度,但仍存在一些缺点:
(1)获取候选区域,再对每个候选区域分类计算量还是比较大;
(2)虽然速度有了提高,但还是没达到实时性检测的要求.
13.R-FCN
与Faster R-CNN不同在于,R-FCN只留最后一层卷积层来做预测,剩余所有的层均放在前面做共享网络,相比于Faster R-CNN减少大量计算,提高检测速度。
但只是简单地将所有层移到前面不能解决问题,反而会因为挪动使得平移可变性变差,影响检测的准确度。 因此提出了位置敏感分数网络层来加强结构的平移可变性。 为了引入平移敏感性,在全卷积后面添加了一个 1X1 卷积 输出敏感位置分数图,对感兴趣区域的信息进行编码,使 RoI Pooling层后不再接全连接
层,避免了重复计算。 敏感分数图中存放的是对应目标某一部分的特征图,具体来讲目标被分成K×K个网格,网格对应感兴趣区域的 K×K个子网络的特征图。 得到敏感位置分数图后送入敏感位置 RoI池化层,对每个部分的得分求和作为每个类别的分数,然后通过softmax得到最大值作为对应类别的输出。R-FCN的 mAP达到了83.6% ,测试每张图像耗时170ms。
14.MaskRCNN
2017年He等在FasterR-CNN的基础上再次改进,提出了MaskR-CNN算法,通过添加Mask分支,能够同时实现目标检测和语义分割任务.由于Faster R-CNN在下采样和感兴趣池化层都采取了取整运算,对检测任务产生了影响,特别是对于像素级检测的任务.通过RoI align层替换RoI Pooling层,使用双线性插值来确定非整数位置的像素,使得每个感受野取得的特征能更好对齐原图感受野区域.此外Mask R-CNN采用基础网络ResNet+FPN(Feature Pyramid Network)来提取图像特征,如图所示,在COCO数据集上的检测准确率从Fast R-CNN的19.7%提高至39.8%.
Mask R-CNN网络的优点在于:它在Faster R-CNN网络的基础上增加了目标掩码作为输出量,掩码是将一个对象的空间布局进行编码,从而使得对目标的空间布局提取更精细.其缺点在于:分割分支增加了计算量,导致Mask R-CNN比Faster R-CNN检测速度慢一些.
15.TridentNet
目标检测算法对图像多尺度特征的提取主要是采用骨干网络,影响骨干网络进行多尺度特征提取的因素有:网络下采样率、网络深度和感受野.R-CNN系列算法中大部分学者研究了下采样率和网络深度对算法精度的影响,而对于目标检测中感受野的影响很少有人研究.Li等首次提出了TridentNet算法,通过从感受野的角度来构造多尺度目标的特征图,对于获取不同尺寸目标的特征过程中结构与权重相同,促进不同尺寸的目标能够形成相似特征.实验证明,不同的感受野对不同尺度目标的检测有着不同的影响,大的感受野对尺度较大的目标检测性能较好,小的感受野对小目标的检测性能较好.
TridentNet算法针对多尺度特征提取做了以下两点创新:
(1)多分支结构,在最后一层增加了多分支卷积层,用来提取不同尺度目标的特征图;
(2)不同分支之间结构相同,权重共享,唯一的不同在于不同分支所对应的感受野不一样(使用空洞卷积来实现).
小结:
从R-CNN、SPPNet、FastR-CNN、FasterR-CNN、MaskR-CNN、CascadeR-CNN和TridentNet算法网络逐步优化,每个算法均解决一部分难题,具体来说:
(1)RCNN解决了使用CNN进行目标定位问题;
(2)FastR-CNN解决了目标定位和分类同步问题;
(3)FasterR-CNN解决了选择性搜索目标问题;
(4)MaskR-CNN解决了同时进行目标定位、分类和分割问题;
(5)CascadeR-CNN解决了IoU阈值选取问题;
(6)TridentNet解决了从感受野提取图像特征问题.