APP下载

基于深度学习的目标检测技术综述①

2021-03-19刘华海黄长缨刘财喜3

计算机系统应用 2021年3期
关键词:卷积神经网络算法

陆 峰,刘华海,黄长缨,杨 艳,谢 禹,刘财喜3,

1(上海城投环境(集团)有限公司,上海 200331)

2(上海环境物流有限公司,上海 200333)

3(百工汇智(上海)工业科技有限公司,上海 201209)

4(上海宝信软件股份有限公司,上海 201203)

1 引言

目标检测是一种与计算机视觉和图像处理有关的计算机技术,用于检测数字图像和视频中特定类别的语义对象(例如人、建筑物或汽车等),其在视频安防,自动驾驶,交通监控,无人机场景分析和机器人视觉等领域有广阔的应用前景[1,2].近年来,由于卷积神经网络的发展和硬件算力提升,基于深度学习的目标检测取得了突破性的进展.目前,深度学习算法已在计算机视觉的整个领域得到广泛采用,包括通用目标检测和特定领域目标检测.大多数最先进的目标检测算法都将深度学习网络用作其骨干网和检测网络,分别从输入图像(或视频),分类和定位中提取特征.

本文将对基于深度学习的主流目标检测算法进行总结和比较.第2 节对卷积神经网络的发展做简要概述;第3 节对主流卷积神经网络进行分析和比较,总结算法性能以及优缺点;第4、5 节分别对基于候选区域和基于回归的目标检测算法深入分析,包括网络结构以及创新和改进;第6 节对典型的目标检测算法进行比较和总结;第7 节对目标检测算法的未来研究方向进行了思考和展望.

2 神经网络的发展

深度学习模型可以看作是为具有深度结构的神经网络.神经网络的历史可以追溯到1940年代[3],最初的目的是模拟人的大脑系统,以有原则的方式解决一般的学习问题.随着Hinton 等[4]提出的反向传播算法,神经网络算法逐渐变得流行起来.但是,由于缺乏大规模的训练数据、过度拟合、有限的计算能力以及与其他机器学习工具相比性能的不足等缺点,到2000年,各学者对神经网络算法的研究趋于冷淡.自2006年以来,由于语音识别技术的突破,重新燃起了人们对于深度学习研究的热情[5,6].对深度学习的重新重视可以归因于以下几点:

(1)大规模的带注释的训练数据的出现,以充分展现其非常大的学习能力.

(2)快速开发高性能并行计算系统,例如GPU 集群.

(3)网络结构和训练策略设计方面的重大进步.在自动编码器的指导下进行无监督的预训练,可以提供良好的初始化.随着dropout 技术和数据扩充,训练中的过度拟合问题得到缓解.使用批量归一化后,深层次的神经网络的训练变得简单有效.同时,为了提高神经网络的泛化性能,提出各种不同结构的神经网络.例如AlexNet[7]、VGG[8]、GoogLeNet[9]和ResNet[10]等.

卷积神经网络CNN是深度学习的最具代表性的模型[11].CNN的每一层称为特征图,输入层的特征图是不同颜色通道(例如RGB)像素强度的3D 矩阵.任何内部层的特征图都是感应的多通道图像,其“像素”可以视为特定特征.每个神经元都与前一层的一部分相邻神经元相连.可以在特征图上执行不同类型的转换[12],例如滤波和池化,滤波运算将滤波器矩阵(学习的权重)与神经元感受野的值进行卷积,并采用非线性函数(例如Sigmoid,ReLU)以获得最终响应.池化操作,诸如最大池化、平均池化和L2 池化操作[13]是将接收域的响应汇总为一个值,以生成更可靠的特征描述.通过卷积和池化之间的交织,能够构造初始要素的层次性结构,最后添加几个全连接层以适应不同的视觉任务.根据涉及的任务,添加不同的激活函数,以获得每个输出神经元的响应.通过随机梯度下降方法在目标函数(例如均方误差或交叉熵损失)上优化整个网络.

与传统方法相比,CNN的优势可总结如下:

(1)通过分层多级结构[14,15]可以学习到从像素到高级语义特征的多级表示,从而获得输入数据的隐藏信息.

(2)与传统的浅层模型相比,更深的网络结构成倍的增加了表达能力.

(3)CNN的架构为共同优化几个相关任务提供了可能(例如,Fast R-CNN 将分类和边界框回归结合为一种多任务学习方式)

图1为目标检测算法的发展史,时间轴下方展示了基于深度学习的分类网络的发展历程.其中标记框内为one-stage 算法.可以看出图像分类算法贯穿目标检测算法的始终,而two-stage 算法在前期占据主导地位,one-stage 目标检测算法在后期蓬勃发展.这是因为图像分类算法和two-stage 目标检测算法中回归分析方法对于one-stage 目标检测算法的发展都有重要的促进作用.表1比较了不同目标检测算法在COCO 数据集上的性能,可以发现随着目标检测技术的发展,目标检测算法精度和检测速度均得到了大幅提升[16-26].

3 典型的卷积神经网络

3.1 LeNet

手写字体识别模型LeNet[27]诞生于1998年,是最早的卷积神经网络之一.它利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别.

图1 目标检测算法发展史

LeNet 网络结构除去输入和输出层后,它有6 层网络组成,其中包括3 个卷积层(C),2 个下采样层(S)和1 个全连接层(F).其中卷积层采用5×5的卷积核,而下采样层分别采用的平均值池化(S2)和最大值池(S4).

LeNet 特点如下:(1)使用卷积来提取特征,组成基本的结构单元:卷积-池化-非线性激活;(2)加入非线性激活,采用tanh和Sigmoid;(3)池化层使用平均值池化;(4)分类器使用高斯分类.

3.2 AlexNet

2012年Krizhevsky 等[7]提出的AlexNet 以16.4%的显著优势问鼎ILSVRC的冠军,它第一次采用ReLU,dropout,GPU 加速等技巧,参数数量为6000 万个,模型大小240 MB 左右.其网络结构如图2所示,共8 层网络结构,其中5 个卷积层和3 个全连接层.第一个卷积层的卷积为步长为4,大小为11×11;第二个卷积层的卷积核步长为1,大小为5×5;其余卷积层的大小均为3×3,步长为1.

表1 不同目标检测算法性能对比

图2 AlexNet 网络结构图

AlexNet 将CNN的基本原理应用到了更深的网络中.主要应用的新技术如下:

(1)使用ReLU 作为CNN的激活函数,成功解决了Sigmoid 在网络较深时的梯度弥散问题.

(2)训练时使用dropout 随机忽略一部分神经元,以避免模型过拟合.

(3)池化层使用重叠的最大池化,避免平均池化的模糊化效果.

(4)提出LRN 层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力.

(5)使用CUDA 加速深度卷积网络的训练,利用GPU 强大的并行计算能力,处理神经网络训练时大量的矩阵运算.

(6)数据增强.随机对图片进行镜像,旋转,随机噪声等数据增强操作,大大降低过拟合现象.

3.3 VGGNet

VGGNet[8]网络结构如图3所示,相比AlexNet具有较深的深度,网络表达能力进一步增强,同时在ImageNet 上测试的精度进一步提高,VGGNet 网络优点:

(1)结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2).

(2)验证了几个小滤波器(3×3)卷积层组合比一个大滤波器(5×5 或7×7)卷积层好.减少了参数同时得到更多非线性映射,增加网络表达能力.

(3)验证了深层次的网络可以获得高级语义特征,通过不断加深网络结构可以提升网络性能.

图3 VGGNet 网络结构图

3.4 GoogLeNet

GoogLeNet[9]是一个22 层的深度网络,在主干卷积环节有3 个inception 模块,模块之间用3×3的最大池化层隔开.Inception 模块如图4所示,该结构分4 条线路并行,将CNN 中常用的卷积(1×1,3×3,5×5)、池化操作(3×3)堆叠在一起.采用不同大小的卷积核获得不同大小的感受野,最后拼接融合不同尺度的特征,增加了网络对尺度的适应性.为了解决计算过量的问题,在后3 条路线上增加了1×1 卷积核来进行降维.同时为了缓解梯度消失的问题,GoogLeNet 增加了两个辅助分类器.这两个辅助分类器被添加到网络的中间层,它们和主分类器共享同一套训练数据.

图4 Inception 网络结构图

GoogleNet 特点:

(1)采用1×1 卷积核,性价比高,用很少的计算量就可以增加一层的特征变换和非线性变换;

(2)提出batch normalization,把每层神经元的输入值分布回归到均值0 方差1的正太分布,使其落入激活函数的敏感区,避免梯度消失,加快收敛;

(3)引入Inception 模块,4 个分支结合的结构,每个分支采用1×1的卷积核;

(4)去除了最后的全连接层,大大减少计算量.

3.5 ResNet

越深的网络有越高等级特征,拥有强大表达能力.然而神经网络随着层数的增加,网络退化严重,即深层次的网络反而不如稍浅层次的网络性能,这并非是过拟合导致的.何凯明等提出的ResNet[10]网络很好的解决了这个问题,ResNet 模型的核心是通过建立前面层与后面层之间的“短路连接”,在浅层网络的基础上叠加y=x层,就是恒等映射(identity mapping),可以让网络深度增加而不退化,有助于训练过程中梯度的反向传播,从而能训练出更深的CNN 网络,实现更高的准确度.

图5为残差模块的示意图,残差函数F(x)=H(x)−x,如果F(x)=0,即为恒等映射,这样学习训练过程相当于自主确定了多少层次的网络是最优的.

ResNet 特点:

(1)通过残差模块将网络深度进一步提高,解决了不断深化神经网络而使准确率饱和的问题.通过活用1×1 卷积降低了特征图维度,控制了参数数量.

(2)存在明显层级,特征图个数层层递进,保证输出特征的表达能力.

(3)使用较少池化层,大量采用下采样,提高传播效率.

图5 残差网络结构图

3.6 DenseNet

DenseNet[28]模型的基本思路与ResNet 一致,通过短路连接来融合前后几层的信息,但是DenseNet 建立前面所有层与后面层的密集连接,同时通过特征上的连接来实现特征重用.这些特点让DenseNet 在参数和计算成本更少的情形下实现比ResNet 更优的性能,DenseNet 也因此斩获CVPR 2017的最佳论文奖.

DenseNet 网络结构主要结构分稠密块(Dense blocks)和过渡层(transition layers).稠密块结构能够互相连接所有的层,具体就是每个层都会接受其前面所有层作为其额外的输入.对于一个L 层的网络,DesNet共包含L(L+1)/2 个连接,可以实现特征重用,提升效率,并且缓解了深层网络的梯度消失问题.过渡层为相邻2 个稠密块的中间部分,稠密块是连接两个相邻的稠密块,并且通过池化使特征图大小降低.

DenseNet的优势主要体现在以下几个方面:

(1)由于密集连接方式,DenseNet 提升了梯度的反向传播,使得网络更容易训练.由于每层可以直达最后的误差信号,实现了隐式的深度监督;

(2)参数更小且计算更高效,由于DenseNet是通过拼接特征来实现短路连接,实现特征重用;

(3)由于特征复用,最后的分类器使用了低级特征.

4 基于候选区域的目标检测算法

基于候选区域的目标检测算法,即two-stage 目标检测算法,该方法先提取到目标的候选区域,然后再由神经网络做分类和回归.本节将就two-stage 目标检测主流算法做简要介绍.

4.1 R-CNN

Girshck 等针对卷积神经网络如何实现目标定位的问题,提出了将于Region proposal和CNN 结合的算法R-CNN[14],开创了神经网络实现目标检测的先河,其计算流程如图6所示,可分为4 步,首先利用选择搜索算法提取候选区域,接着将候选区域缩放到固定大小,然后进入卷积神经网络提取特征,随后将提取的特征向量送入SVM 分类器得到候选区域目标的类别信息,送入全连接网络进行回归得到位置信息.

图6 R-CNN 网络结构示意图

R-CNN 缺点:

(1)输入的图像大小会进行缩放,导致图像失真;

(2)用选择性搜索算法提取约2000 个候选区域,每个候选区域都要送入卷积神经网络提取特征,计算量大耗时多;

(3)训练测试复杂,候选区域提取、特征获、分类和回归都是单独运行,中间数据也是单独保存卷积提取的特征需单独存储,占用大量硬盘空间.

4.2 SPP-Net

2014年He 等针对R-CNN的缺陷进行了改进,开发出了SPP-Net (Spatial Pyramid Pooling Network)[29].SPP-Net 将整个图片送入卷积提取特征,避免了候选区域分别送入卷积层提取特征造成的重复计算.再次,在卷积层和全连接层之间增添了空间金字塔池化层(Spatial Pyramid Pooling,SPP),可以对不同大小特征图进行池化操作并生成特定大小的特征图,避免了R-CNN 对图像进行缩放导致图像失真.

SPP-Net 缺点:

(1)与R-CNN 设计相同,训练各个阶段都是单独运行,且中间数据必须保存.

(2)训练数据的图像尺寸大小不一致,使候选框感受野过大,不可以使用反向传播有效的更新权重.

(3)网络微调只更新了全连接层,不能实现端到端的检测且检测精度还需进一步提升.

4.3 Fast R-CNN

借鉴空间金字塔池化层的思路,Ross 等2015年提出Fast R-CNN[16],用感兴趣池化层(Region of Interest,RoI)代替了空间金字塔池化层,它去掉了SPP的多尺度池化,直接用网格将每个候选区域均匀分若干个区域块,同时对每个块进行最大值池化,从而将特征图上大小不一的候选区域转变为大小统一的特征向量.针对在训练期间为多阶段和特征重复计算造成的时间代价以及数据存储过量的问题,将神经网络与SVM 分类相结合,由全连接层同时负责分类和回归任务,实现了多任务端到端训练,使检测精度和速度同时得到了提高.Fast R-CNN 网络流程如图7所示,主要分3 部分,首先将图像送入卷积网络提取特征,然后通过感兴趣池化层将候选区域池化为同一长度的特征向量,最后通过全连接层进行分类和回归.Fast R-CNN 在PASCAL VOC数据集中检测时间为每张0.32 s,远小于R-CNN的45 s和SPP-Net的2.3 s.

虽然Fast R-CNN 实现了多任务端到端的训练,然而通过选择性搜索算法提取候选区域耗费了较多时间,训练和预测所需时间仍较长,不能实现实时性检测.

4.4 Faster R-CNN

Ren 等在Fast R-CNN的基础上提出Faster R-CNN[17]算法,在卷积层后添加了区域提取网络RPN (Region Proposal Network),代替了Fast R-CNN的选择性搜索算法.RPN 核心思想是使用CNN 卷积神经网络直接产生候选区域,锚框机制和边框回归可以得到多尺度多长宽比的候选区域.RPN 网络也是全卷积网络(Fully-Convolutional Network,FCN),可以针对生成检测建议框的任务端到端训练,能够同时预测出目标物体的边界和分数.

Faster R-CNN 整个流程如图8所示,先对图像进行卷积提取特征,然后进入RPN 层得到候选区域,最后全连接层进行分类和回归.整个流程从图像特征提取、候选区域获得到分类和回归都在神经网络中进行,且整个网络流程都能共享卷积神经网络提取的特征信息,提高了算法的速度和准确率,从而实现了两阶段模型的深度.Faster R-CNN 在PASCAL VOC 2007和2012 上的mAP 分别为73.2%和70.4%,检测速度达到5 fps.

图7 Fast R-CNN 网络流程图

图8 Faster R-CNN 网络流程图

Faster R-CNN 虽然大幅提高了算法精度和速度,但仍存在一些缺点:(1)获取候选区域,再对每个候选区域分类计算量还是比较大;(2)虽然速度有了提高,但还是没达到实时性检测的要求.

4.5 Mask R-CNN

2017年He 等在Faster R-CNN的基础上再次改进,提出了Mask R-CNN[18]算法,通过添加Mask 分支,能够同时实现目标检测和语义分割任务.由于Faster RCNN 在下采样和感兴趣池化层都采取了取整运算,对检测任务产生了影响,特别是对于像素级检测的任务.通过RoI align 层替换RoI Pooling 层,使用双线性插值来确定非整数位置的像素,使得每个感受野取得的特征能更好对齐原图感受野区域.此外Mask R-CNN 采用基础网络ResNet+FPN (Feature Pyramid Network)来提取图像特征,如图9所示,在COCO 数据集上的检测准确率从Fast R-CNN的19.7%提高至39.8%.

图9 Mask R-CNN 网络流程图

Mask R-CNN 网络的优点在于:它在Faster R-CNN网络的基础上增加了目标掩码作为输出量,掩码是将一个对象的空间布局进行编码,从而使得对目标的空间布局提取更精细.其缺点在于:分割分支增加了计算量,导致Mask R-CNN 比Faster R-CNN 检测速度慢一些.

4.6 Cascade R-CNN

R-CNN 系列算法在检测目标时均存在IoU 阈值选取问题,阈值选取越高就越容易得到高质量的样本,但一味选取高阈值会引发两个问题:(1)样本减少引发的过拟合;(2)在推理阶段出现检测器最优的阈值与输入候选的IOU 值发生不匹配.因此,单一检测器很难抉择一个合适的IOU,无论高低都是有很大弊端.

针对此类问题Cai 等[19]提出了一种级联检测器,他们利用前一个检测器输出作为下一个检测器的输入,同时相应的提高训练时的IoU 阈值,使得IoU 阈值与预选框的IoU 值较为接近,训练的3 个检测器最后输出结果精度更高,从而在推理阶段合理的提高了检测器优选IoU 阈值.

Cascade R-CNN 算法核心由一系列的检测模型组成,每个检测模型都基于不同IoU 阈值的正负样本训练得到,通过重采样改变了不同阶段的输入假设分布,并且保证了每个阶段有足够固定数量的正例样本数.通过调整阈值的方式重采样,不断改变候选框的分布,在保证样本数不减少的情况下训练出高质量的检测器,从而不会出现过拟合,且在更深层的训练阶段可以得到更高的IoU 阈值.

4.7 TridentNet

目标检测算法对图像多尺度特征的提取主要是采用骨干网络,影响骨干网络进行多尺度特征提取的因素有:网络下采样率、网络深度和感受野.R-CNN 系列算法中大部分学者研究了下采样率和网络深度对算法精度的影响,而对于目标检测中感受野的影响很少有人研究.Li 等[20]首次提出了TridentNet 算法,通过从感受野的角度来构造多尺度目标的特征图,对于获取不同尺寸目标的特征过程中结构与权重相同,促进不同尺寸的目标能够形成相似特征.实验证明,不同的感受野对不同尺度目标的检测有着不同的影响,大的感受野对尺度较大的目标检测性能较好,小的感受野对小目标的检测性能较好.

TridentNet 算法针对多尺度特征提取做了以下两点创新:

(1)多分支结构,在最后一层增加了多分支卷积层,用来提取不同尺度目标的特征图;

(2)不同分支之间结构相同,权重共享,唯一的不同在于不同分支所对应的感受野不一样(使用空洞卷积来实现).

上述的设置既能够保证为不同尺寸目标提取出特征,同时还能促进不同尺寸目标生成相似特征,即结构相同,权重共享.文献[20]通过实验验证采用3 个不同卷积空洞率时算法的性能最佳,通过与现有算法(算法都采用相同的骨干网络ResNet-101)的性能比较,采用多分支不同空洞率和可行变卷积的TridentNet 算法性能明显提高,表明不同感受野的应用有助于算法对不同目标的检测.

从R-CNN、SPP Net、Fast R-CNN、Faster RCNN、Mask R-CNN、Cascade R-CNN和TridentNet算法网络逐步优化,每个算法均解决一部分难题,具体来说:

(1)RCNN 解决了使用CNN 进行目标定位问题;

(2)Fast R-CNN 解决了目标定位和分类同步问题;

(3)Faster R-CNN 解决了选择性搜索目标问题;

(4)Mask R-CNN 解决了同时进行目标定位、分类和分割问题;

(5)Cascade R-CNN 解决了IoU 阈值选取问题;

(6)TridentNet 解决了从感受野提取图像特征问题.

5 基于回归的目标检测算法

5.1 YOLO 系列

2015年Redmon 等提出了基于回归的目标检测算法YOLO (You Only Look Once)[30],其直接使用一个卷积神经网络来实现整个检测过程,创造性的将候选区和对象识别两个阶段合二为一,采用了预定义的候选区(并不是Faster R-CNN 所采用的Anchor),将图片划分为S×S个网格,每个网格允许预测出2 个边框.对于每个网格,YOLO 都会预测出B个边界框,而每个边界框YOLO 都会预测出5 个值,其中4 个代表边界框的位置,还有一个代表框的置信值.

YOLO的网络结构示意图如图10所示,其中,卷积层用来提取特征,全连接层用来进行分类和预测.网络结构是受GoogLeNet的启发,把GoogLeNet的inception层替换成1×1和3×3的卷积.最终,整个网络包括24 个卷积层和2 个全连接层,其中卷积层的前20 层是修改后的GoogLeNet.网络经过最后一个FC 层得到一个1470×1的输出,7×7×30的一个张量,即最终每个网格都有一个30 维的输出,代表预测结果.

图10 YOLO 网络结构图

YOLO 优点:

(1)将目标检测问题转化为一个回归问题求解.结构非常简单,直接使用一个卷积神经网络实现同时预测边界框的位置和类别;

(2)速度非常快,可以实现视频的实时检测;

(3)泛化能力强,能学习到高度泛化的特征,可以迁移到其他领域.

Redmon 等对YOLO 网络结构做修改提出了YOLOv2 方法[21],YOLOv2 用DarkNet-19 用做基础网络,包含19 个卷积层、5 个最大值池化层.YOLOv2 网络通过在每一个卷积层后添加批量归一化层(batch normalization),同时不再使用dropout.YOLOv2 引入了锚框(anchor boxes)概念,提高了网络召回率,YOLOv1只有98 个边界框,YOLOv2 可以达到1000 多个.网络中去除了全连接层,网络仅由卷积层和池化层构成,保留一定空间结构信息.结果mAP 由69.5% 下降到69.2%,下降了0.3%,召回率由81%提升到88%,提升7%.尽管mAP 略微下降,但召回率的上升意味着模型有更大的提升空间.同时利用K-means 聚类,解决了anchor boxes的尺寸选择问题.

YOLOv3[23]借鉴了ResNet的残差结构,使主干网络变得更深(从v2的DarkNet-19 上升到v3的DarkNet-53).整个YOLOv3 结构里面,没有池化层和全连接层,在前向传播过程中,张量的尺寸变换是通过改变卷积核的步长来实现.相应改进使YOLOv3 与SSD 相当的精确度下达到50 fps的检测速度,并在COCO 测试数据上mAP的最佳效果达到33.0%,与RetinaNet的结果相近,速度快了3 倍,但整体模型变得更加复杂,速度和精度相互制衡.

YOLOv3 改进之处:

(1)多尺度预测,借鉴FPN,采用多尺度来对不同大小的目标进行检测.

(2)更好的分类网络,从DarkNet-19 到DarkNet-53.

(3)采用Logistic 对目标进行分类,替换之前用Softmax的分类方法,且Softmax 可被独立的多个Logistic分类器替代,准确率不会下降.

5.2 SSD 系列

Liu 等提出的SSD (Single Shot multibox Detector)方法[22]是对YOLO 算法的改进,其网络结构如图11所示.SSD 与YOLO 主要不同在于以下几个方面:

(1)采用多尺度特征图用于检测.SSD 使用VGG16作为主干网络,并在VGG16的基础上添加了新的卷积层以获得不同大小的特征图,较大的特征图用来检测小目标,较小的特征图用来检测大目标.

(2)采用卷积进行检测.YOLO 最后采用全连接,而SSD 直接采用卷积对不同的特征图进行提取特征.对于形状为m×n×p特征图,只需要采用3×3×p这样较小的卷积核得到检测值.

(3)设置先验框.YOLO 中每个单元预测多个边界框,但是都是相对于这个单元本身,YOLO 需要在训练过程中自适应目标的形状.SSD 借鉴了Faster-RCNN的anchor 理念,每个单元设置尺度或者长宽比不同的先验框,减小了训练的难度,对重叠或近邻的物体有更好的预测效果.

图11 SSD 网络结构图

SSD 算法检测速度较快,整个过程只需要一步.首先在图片不同位置按照不同尺度和宽高比进行密集抽样,然后利用CNN 提取特征后直接进行分类与回归,速度较快,但均匀密集采样会造成正负样本不均衡使得训练比较困难,导致模型准确度有所降低.SSD 对小目标的检测没有大目标好,因为随着网络的加深,在高层特征图中小目标的信息丢失掉,适当增大输入图片的尺寸可以提升小目标的检测效果.

为了提高SSD 对小目标的检测能力,Fu 等提出了DSSD (De-convolutional Single Shot Detector)方法[31].DSSD的核心思想:提高浅层的表征能力.首先将主干网络由VGG 替换成更深的ResNet-101,增强了网络提取的能力,其次修改了预测模块,添加了类似于ResNet的shortcuts 通道,将各层次之间特征相结合.DSSD的主要特点是增加了反卷积模块DM (Deconvolution Module),DM 模块与SSD 中的卷积层网络构成了不对称的“沙漏”结构.DM 模块与整个沙漏结构,更充分利用了上下文信息和浅层的特征,从而与SSD 相比在小目标和密集目标的检测率上有很大的提高.但是由于ResNet-101 网络层数太深,网络结构过于复杂,导致检测速度大幅度降低,DSSD 检测513×513 图像时速度只有6 fps.

5.3 RetinaNet

Lin 等[24]认为基于回归的目标检测方法精度不及基于候选区域的目标检测方法的根本原因在于“类别不平衡”,基于候选区域的目标检测算法由于RPN 网络的存在,过滤掉了大部分背景框,从而缓解了“类别不平衡”的问题.而one-stage 算法直接在生成的“类别极不平衡”的边框中进行难度极大的细分类,意图直接输出边框和标签.而原有交叉熵损失作为分类任务的损失函数,无法抗衡“类别极不平衡”,容易导致分类器训练失败.因此,one-stage 目标检测算法虽然保住了检测速度,却丧失了检测精度.

文献[24]提出的RetinaNet 采用Focal Loss 损失函数代替交叉熵误差,来抑制量大的类别所贡献的损失值.通过此种方法,使得训练过程中量少的类别的权重更大,从而缓解了“类别不平衡”的问题.RetinaNet的网络结构如图12所示,采用ResNet+FPN 网络提取图像的多尺度信息,再利用one-stage 目标识别法+Focal Loss,这个结构在COCO 数据集上的mAP 达到了39.1%,速度为5 fps,精度超过同期所有two-stage的检测器.

5.4 CornerNet

目前大部分常用目标检测算法(比如RCNN 系列,SSD,YOLO 系列等)都是基于锚框(即anchor boxes)进行目标检测,引入锚框的缺点在于:(1)正负样本不均衡.大部分检测算法的锚框数量成千上万,而目标数量相对少很多,导致正样本数量会远远小于负样本.(2)引入更多的超参数,比如anchor的数量、大小和宽高比等.Law 等[25]舍弃了传统的锚框思路,提出了一种无锚框的目标检测新算法,即CornerNet 算法,该算法使用单个卷积神经网络将目标边界框检测为一对关键点(即边界框的左上角和右下角),也就是使用单一卷积模型生成热点图和嵌入式向量.

CornerNet 算法架构包含3 部分:环面网络、右下角和左上角的热图、预测模块,如图13所示.

图12 RetinaNet 网络结构图

图13 CornerNet 网络结构图

(1)环面网络(即Hourglass 网络)是人体姿态估计的典型架构,堆叠两个环面网络生成两组热力特征图来预测不同分类下的角点,其中一组负责预测左上角点,另一组负责预测右下角点,每一个角都包括角合并、对应的热图、嵌入式向量和偏移;

(2)环面网络同时包含多个从下往上(从高分辨率到低分辨率)和从上往下(从低分辨率到高分辨率)过程,目的是在各个尺度下抓取信息;

(3)嵌入式向量使相同目标的两个顶点(左上角和右下角)距离最短,偏移用于调整生成更加紧密的边界定位框.

CornerNet 算法消除了现有one stage 检测算法中对锚框的需要,整个检测网络的训练从头开始并不基于预训练的分类模型,用户能够自由设计特征提取网络,不用受预训练模型的限制.同时该算法提出了一种新的池化方法(即corner pooling),能够帮助网络更好地定位边界框的角点,提高算法的检测精度.

5.5 CenterNet

CornerNet 算法在生成边界框的时候在生成边界框的时候受限于检测的角点对,即如果生成角点对的质量够高,则对应的边界框的质量也高;反之,则会产生错误的边界框.

在生成边界框是不能仅依靠角点对的信息,还需要角点对生成的区域内部信息.Duan 等[26]在CornerNet算法基础上改进并提出的CenterNet 算法,使模型能够自行判断生成边界框的正确性.CenterNet算法将左上角、右下角和中心点结合成为三元组进行物体框的判断,不仅预测角点,也预测中心点,如果角点对所定义的预测框的中心区域包含中心点,则保留此预测框,否则弃掉.同时如果预测的边界框与标注框有很大的交并比,即该预测框的质量较高,该预测框的中心区域应该包含中心关键点.文献[26]为了提高检测角点对和中心点的质量,提出具有创新性的级联角点池化(cascade corner pooling)和中心池化(center pooling)改善上述关键点的生成.

(1)级联角点池化:针对角点对的预测,级联角点池化首先提取物体边界最大值(corner pooling),然后在边界最大值处继续向内部提取最大值,并与边界最大.

(2)值相加,以结合更多内部信息,使其具有感知内部信息的能力.

(3)中心池化:针对中心点的预测,中心池化提取中心点水平方向和垂直方向的最大值并相加,以此给中心点提供所处位置以外的信息,将有助于中心关键点获取目标的更多信息、感知边界框的中心区域.

CornerNet 算法引入了目标内的信息,同时通过级联角点池化和中心池化两种策略来改善了各关键点的生成,利用生成边界框内部的信息来筛选出高质量的边界框,从而显著提升检测效果.

6 目标检测算法比较

目前基于深度学习的目标检测算法受到了学者的广泛关注和深入研究,主要分为两大类算法:基于候选区域的two-stage 算法和基于回归的one-stage 算法.通过国内外学者的广泛研究两类算法衍生出了不同神经网络机制和特性,不同算法之间的优缺点和适用场景均不同,表2显示了几种典型算法优缺点.

表2 不同目标检测算法优缺点总结

Two-stage 目标检测算法由于事先获取候选区域,能够充分学习到目标的特征,其检测精度和定位精度高,但是网络结构复杂,计算量大,检测速度较慢,不适用于实时性要求较高的应用场景.One-stage 目标检测算法结构简单,可直接对输入图像进行处理,检测精度较高并且检测速度快,可以实现实时性检测,能满足一些实时在线检测应用场景,如表面缺陷实时检测,火灾实时检测,高空作业实时检测等,但是one-stage 算法对小目标、多目标物体检测精度较低,特别是在复杂场景下,检测精度并不能满足要求,如自动驾驶领域的目标检测.目前TridentNet和CenterNet 分别为twostage和one-stage 目标检测系列算法中检测精度相对较高的算法,但它们对小目标检测的精度仍比较低,对于目标尺度跨度非常大的应用场景仍不满足要求,因此,目前的绝大多数目标检测算法均只能应用于场景相对较简单却目标尺度跨度不大的应用场景.

7 总结和展望

本文对基于深度学习的主流目标检测算法做了简要综述,主要包括典型算法的思路、创新策略、检测精度和应用场景等方面.虽然在过去的20年中物体目标检测取得了显著的成就,仍然存在许多难以解决的问题[32],下面是对面临的难题以及未来发展方向的一些讨论:

(1)小目标检测.目前算法对于小目标的检测能力相对较弱,但无人机航拍、卫星遥测、红外目标识别等领域对小目标检测有较强的需求.小目标图像往往面临着分辨率低、像素少和训练数据难以标记的问题.例如在无人机高清航拍过程中,即使照片分辨率已经达到4k 级别,但由于小目标所占面积较小,导致难以标定和训练.

(2)弱监督目标检测方法.目前绝大多数目标检测算法的精度均依赖大量标注完整的图像数据集,在大型数据集中标注工作量大,标注时间长,对于算法模型训练时间也长,因此目前目标检测算法的实施成本较高,难度相对较大.弱监督目标检测方法是利用少量完整标注的图像自动检测大量未完整标注的图像,这将大大降低目标检测模型的开发难度和周期,因此开发弱监督目标检测方法是一个值得进一步研究的重要问题.

(3)多领域目标检测:目前算法基本只针对特定场景特定目标物进行检测,特定领域的检测器只能够在指定数据集上实现较高的检测性能,特定领域的检测器应用场景单一,不具备多领域多场景通用性.为了得到一种适用于各种图像检测领域的通用检测器,多领域目标检测器可以在不存在新领域先验知识的情况下解决这一问题,但检测领域转移是一个具有挑战性的课题,有待进一步研究.

(4)多任务学习:多层次特征的聚合骨干网络是提高检测性能的重要方法.当同时进行多个计算机视觉任务,如目标检测、语义分割、实例分割、边缘检测、突出点检测等,可以获得更丰富的信息,大大提高单独任务的性能.多任务学习是一种将多个任务聚合到一个网络中的学习方法,其在保持处理速度和提高准确率同时,对研究者提出了很大的挑战.

猜你喜欢

卷积神经网络算法
基于全卷积神经网络的猪背膘厚快速准确测定
基于FPGA的卷积神经网络加速优化方法
基于神经网络的船舶电力系统故障诊断方法
基于人工智能LSTM循环神经网络的学习成绩预测
基于图像处理与卷积神经网络的零件识别
MIV-PSO-BP神经网络用户热负荷预测
基于深度卷积网络与空洞卷积融合的人群计数
Travellng thg World Full—time for Rree
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
学习算法的“三种境界”