黄 健,张 钢
西安科技大学 通信与信息工程学院,西安 710000
目标检测是计算机视觉以及图像处理领域的一个基本问题,是近些年来理论和应用的研究热点,应用十分广泛,其主要目标是在图像或图像序列中精确定位出各种目标的类别和位置信息。目标检测任务有很多种类型,例如单类目标检测、多类/通用目标检测、静态图像目标检测、视频目标检测等等。目标检测的任务,根据后续任务的需要,有三个主要的层次:分类、检测、分割。然而,目标种类、数量、尺度变化以及外在环境干扰等因素对目标检测任务构成了挑战[1]。为了克服这些困难,众多学者投入到了该领域的研究。
传统目标检测算法的流程包括以下几个阶段:(1)采用滑动窗口的方式对输入图像进行候选框的选取;(2)采用尺度不变特征变换(SITF)、方向梯度直方图(HOG)等方法对每个窗口中的图像信息进行特征提取;(3)使用形变部件模型(DPM)、支持向量机(SVM)等分类器对特征进行分类;(4)使用NMS算法对候选框进行合并,实现物体的检测。然而,传统的目标检测算法比较依赖于手工设计的特征,其采用滑动窗口选取候选框的方式,导致窗口冗余问题严重,而且其特征提取方法泛化性能较差,导致检测精度较低,算法步骤繁多导致检测速度慢、实时性差,所以需要对传统的目标检测算法进行一系列的改进,以达到较好的性能指标[2]。
近些年来,随着深度学习的快速发展,深度卷积神经网络越来越多地应用于计算机视觉领域,并且在该领域取得重大进展[3]。基于深度卷积神经网络的目标检测算法给目标检测带来了新的研究方向,引领了目标检测领域的发展。2012年,Hinton等人首次将深层卷积神经网络AlexNet[4]应用在大规模图像分类任务中,并以碾压的成绩夺得当年的ILSVRC图像分类比赛的冠军,从此卷积神经网络在计算机视觉领域受到了众多学者的青睐。基于深度卷积神经网络的目标检测算法利用ImageNet、PASCAL VOC、COCO 等大规模数据集来训练提取特征的卷积神经网络(CNN)[5],最终大幅提升了目标检测算法的性能指标。例如,2013 年,Girshick 等人提出的R-CNN[6]作为利用深层卷积神经网络进行目标检测任务的开山之作,使用AlexNet 网络进行特征提取,最终的检测精度比传统方法提升了将近30%。
基于深度卷积神经网络的目标检测算法主要分为两类,一类是基于候选区域的目标检测算法(即两阶段目标检测器),另一类是基于回归的目标检测算法(即单阶段目标检测器)。两阶段目标检测器首先对输入图像选取候选区域,然后对候选区域进行分类和位置回归,从而实现目标检测。单阶段目标检测器则省略了候选区域生成步骤,直接将特征提取、目标分类和位置回归的过程都整合到一个卷积神经网络中完成,将目标检测过程简化为一种端到端的回归问题。
数据集对于有监督学习算法十分重要,对于目标检测任务而言,适用性强的数据集不仅能对算法的性能进行测试和评估,同时也促进了目标检测相关研究领域的发展。在目标检测任务中,应用最多的两个数据集是PASCAL VOC数据集和Microsoft COCO数据集。
PASCAL VOC 数据集初始发布于2005 年,经历了多个版本的更新,至2012 年止。VOC2007 和VOC2012是目前学术界用的最多的两个版本,目标类别数均为20类。其中,VOC2007 数据集包含9 963 张图片,由train/val/test 三部分组成,而 VOC2012 数据集包含 11 530 张图片,由train/test两部分组成。学术界有两种使用该数据集用于目标检测任务的方法,一种是使用train2007+train2012 作为训练集,用test2007 作为测试集,另一种是使用train2007+test2007+train2012 作为训练集,用test2012作为测试集。该数据集的主要评价指标是平均精确率均值(mAP)。
Microsoft COCO 数据集初始发布于2014 年,包含了 91 个物体类别、328 000 张图片和 2 500 000 个 lable。COCO 数据集以场景理解为目标,可用于图像分类、图像分割、目标检测等领域,主要研究non-iconic views、contextual reasoning between objects、precise 2D localization 这三个问题。该数据集的发布促进了近几年图像分割领域的发展,是目前为止图像分割领域最大的数据集。表1为COCO数据集主要评价指标。
表1 COCO数据集主要评价指标
目标检测算法常用的性能评价指标包括:检测速度、交并比、精确率、召回率、平均精确率、平均精确率均值等。
其中,检测速度(Frames Per Second,FPS),表示算法模型每秒钟所能检测到的图片数量,FPS可以评估一个模型的实时性,其值越大,说明模型的实时性越好。交并比(Intersection Over Union,IOU),表示为算法模型产生的预测框和原始标注框的交集与并集的比值,它描述了两个区域的重合程度,其值越高代表算法模型的定位越准确。精确率(Precision,P),表示为分类正确的正样本个数与分类后判别为正样本个数的比值,衡量的是一个分类器分出来的正样本的确是正样本的概率。召回率(Recall,R),表示为分类正确的正样本数与真正的正样本数的比值,衡量的是一个分类器能把所有的正样本都找出来的能力,在通常情况下,精确率越高,则召回率越低。平均精确率(Average Precision,AP),表示为精确率-召回率曲线上的精确率对召回率的积分,其值越大,表示分类器对某个类别的检测效果越好。平均精确率均值(mean Average Presion,mAP),表示为所有类别的平均精确率的均值,衡量的是分类器对所有类别的检测效果,它是目标检测算法中用的最多也是最重要的一个指标。
图像是目标检测的基础,目标检测是在分类的基础上,实现图像中的目标定位,给出目标的具体空间位置和边界信息[7]。基于卷积神经网络的目标检测网络需要卷积神经网络进行特征提取来完成目标检测的任务,因此卷积神经网络的性能好坏直接关系到了目标检测网络的性能好坏。
2012 年,Hinton 等人提出的 AlexNet 超越了众多传统图像分类算法模型,以16.4%的Top-5 错误率夺得当年的ILSVRC图像分类比赛的冠军,使得卷积神经网络越来越多地应用在图像分类问题上,标志着深度学习时代的来临。
2013 年,Lin M 等人提出的 NiN[8]网络引入了 1×1卷积层和全局池化,有效地降低了网络的参数量,之后的ResNet[9]和Inception 等网络也借鉴了这种设计。Simonyan K等人提出了VGGNet[10],该网络使用3×3的小卷积核代替了5×5或7×7的大卷积核,增加了网络深度,减少了模型的参数量,使得模型在图像分类任务上的Top-5错误率降低到了6.8%,这证明了通过增加网络深度也能提高模型精确度。
2014年,Szegedy C等人提出的GoogleNet[11]引入了Inception模块,以更少的参数和更高的性能,一举夺得当年的ILSVRC图像分类比赛的冠军。GoogleNet一共包含了Inception-v1、Inception-v2、Inception-v3、Inception-v4四个版本,模型性能不断提高,其在图像分类任务中的Top-5 错误率分别为6.67%、4.82%、3.58%、3.08%。其中,Inception-v1 将CNN 中常用的1×1、3×3、5×5 卷积和3×3 池化堆叠在一起,增加了模型宽度,同时减少了模型参数数量。Inception-v2提出了卷积核分解和特征图尺寸缩减两种优化方法,将5×5 卷积核分解为2 个3×3卷积核,在保持感受野大小的同时减少了模型参数量。Inception-v3 在Inception-v2 基础上,进一步对卷积核进行分解,将7×7卷积核分解为1×7卷积核和7×1卷积核,3×3 卷积核分解为1×3 卷积核和3×1 卷积核,这种设计在加速计算的同时使得网络深度进一步增加,增加了网络的非线性。Inception-v4中使用了ResNet的残差连接方式,在加深网络深度的同时加速了模型的训练速度,模型性能进一步得到提高。
为了解决网络深度达到饱和后出现的梯度消散或梯度爆炸的问题,2015 年He Kaiming 等人提出了残差网络ResNet,其在图像分类任务中的Top-5 错误率为3.57%。该网络通过一种跨层连接的方式,在增加网络深度的同时不会影响误差,对后续卷积神经网络的发展具有很好的借鉴意义,使得之后采用跨层连接方式的卷积神经网络可以在大幅度增加网络深度的同时进一步提高模型性能。
2016 年,Zagoruyko S 等人提出的广度残差网络WRNs[12],通过拓宽残差网络通道数的方式来提升网络性能[13]。2017 年,Xie S 等人提出的 ResNeXt[14]引入了深度和宽度之外的第3个维度“基数”(cardinality),在没有增加模型的参数复杂度的同时提高了模型准确率。Huang G等人设计的DenseNet[15]引入稠密链接,将当前的层与之后的所有层直连,减轻了梯度消失的现象,减少了模型参数量的同时有效防止了模型训练的过拟合。Chen Y等人融合了ResNet和DenseNet的优点,设计了一类全新的双通道网络结构DPN[16],该网络对特征的利用更加充分。
2020 年,Hu J 等人设计的 SENet[17]使用了“特征重标定”的策略来对特征进行处理,它是根据每个特征通道的重要程度,来降低或者提升相应的特征通道的权重,这种设计使得该网络在图像分类中的Top-5错误率降低到了2.3%,从而获得了2017 年ILSVRC 图像分类比赛的冠军。部分卷积神经网络如表2所示。
从表2 可以看出,这几年卷积神经网络发展迅速,模型结构不断优化,模型性能不断提升,在图像分类任务中的错误率从AlexNet 的16.4%降低到了SENet 的2.3%。卷积神经网络的发展推动了目标检测的进步,使基于卷积神经网络的目标检测算法的性能不断提升。
基于候选区域的目标检测算法首先对输入图像选取建议框,然后对建议框进行分类和位置回归,进而得到最终的检测结果。这类算法的典型代表有:R-CNN系列、R-FCN、Mask R-CNN、Cascade R-CNN、Trident-Net等。下面将分别进行介绍。
2014 年,Grishick 等人提出的 R-CNN,开创了将CNN 应用于目标检测的先河,其网络结构如图1 所示。R-CNN首先对输入图像采用Selective Search建议框提取方法生成约2 000 个建议框,并将不同大小的建议框缩放到227×227 的相同大小,然后使用AlexNet 对建议框进行特征提取,得到特征图,最后分别使用SVM分类器和回归器确定目标的类别和位置。
表2 部分卷积神经网络
图1 R-CNN网络结构
R-CNN算法的性能大大超越了之前最好的传统目标检测算法,以AlexNet为主干网络的R-CNN在VOC2007数据集上的准确率达到了58.5%,但也存在不少问题:
(1)使用Selective Search方法提取建议框耗时严重。
(2)R-CNN对输入图片进行缩放操作,破坏了图片的信息,降低了检测精度。
(3)建议框之间存在的重复区域增加了计算复杂度。
(4)训练步骤繁琐,训练时间长。
2015 年,为了解决 R-CNN 存在的部分问题,He 等人提出了SPP-Net[18]。之前的R-CNN 对所有的建议框分别使用卷积神经网络来提取特征,而SPP-Net在使用卷积神经网络提取特征时,对整张输入图片仅进行一次卷积操作,大大降低了运算量。此外,SPP-Net在网络的最后一个卷积层添加了空间金字塔池化层(SPP层),产生固定长度的特征向量,作为第一个全连接层的输入。空间金字塔池化层结构如图2所示。
图2 空间金字塔池化层结构示意图
以上两点改进使得以ZF-5 为主干网络的SPP-Net在VOC2007数据集上的准确率上升为59.2%,但是其仍然存在缺陷:
(1)需要存储大量特征,空间开销大。
(2)生成候选区域、特征提取、目标分类和位置回归这些步骤依然是分离的。
(3)SPP-Net 依然使用SVM 作为分类器,训练步骤繁琐且训练时间长。
2015年,Girshick等人吸收了SPP-Net的思想,进一步提出了Fast R-CNN[19]。该网络将SPP层简化一层,称为 ROI Pooling 层。另外,Fast R-CNN 用 softmax 函数替代了R-CNN 中采用的SVM,并引入了SVD 分解,将分类问题和回归问题进行了合并。Fast R-CNN进行目标检测的过程如图3所示。
图3 Fast R-CNN网络结构
Fast R-CNN 将特征提取、目标分类和位置回归这些步骤整合到一个模型中,降低了计算复杂度,在提高检测速度的同时提高了检测精度,以VGG-16为主干网络的 Fast R-CNN 在 VOC2007 数据集上的 mAP 上升为70.0%。但是,该网络仍然存在一定缺点:
(1)由于该网络仍使用比较耗时的selective search方法生成候选区域,导致检测速度仍然很慢,使得Fast R-CNN依然不能实时检测。
(2)ROIs区域是在图片输入到CNN网络前获得的,因此Fast R-CNN依然不是真正意义上的端到端网络。
针对Fast R-CNN存在的问题,2015年,Ren等人提出了Faster R-CNN[20]。该网络使用区域生成网络(RPN)来生成候选区域,将生成候选区域、特征提取、目标分类和位置回归这些步骤整合到了一个模型中,真正实现了目标检测网络的端到端训练。同时检测速度的提升,使得Faster R-CNN成为第一个准实时的深度学习目标检测网络。图4为Faster R-CNN的检测过程图。
图4 Faster R-CNN的检测过程图
Faster R-CNN 的检测精度和检测速度在Fast RCNN的基础上进一步得到提升,采用VGG-16为主干网络的Faster R-CNN在VOC2007数据集上达到了73.2%mAP,同时检测速度由Fast R-CNN 的3 f/s 提高到了7 f/s。但是,Faster R-CNN仍然存在不少缺点:
(1)保留了Fast R-CNN 中使用的ROI Pooling 层,这导致之后的网络特征丧失了平移不变形,从而影响了目标定位的准确性[21]。
(2)ROI Pooling层后每个区域经过多个全连接层,存在较多重复计算,降低了检测速度。
(3)Faster R-CNN在特征图上使用锚点框对应原图,而锚点框经过多次下采样操作,对应原图一块较大的区域,导致Faster R-CNN检测小目标的效果并不是很好。
鉴于 Faster R-CNN 存在的问题,2016 年,Dai 等人提出了R-FCN[22]。R-FCN 使用了ResNet 作为特征提取网络,提高了特征提取与分类的效果。同时,在ROI Pooling 层后不再使用全连接层,而改用全卷积神经网络,减少了参数量。另外,该网络还引入了位置敏感得分图,解决了之前Faster R-CNN 中存在的图像分类的平移不变性和目标检测的平移不变性的矛盾。R-FCN的网络结构如图5所示。
图5 R-FCN网络结构
R-FCN在整幅图像上共享几乎所有的计算,实现了在VOC2007 数据集上79.5%的mAP,但是该网络存在一些缺点:
(1)由于该网络引入了位置敏感得分图,降低了网络的检测速度,导致其仍然难以满足目标检测的实时性要求。
(2)模型复杂,训练时间长。
2017 年,He 等人提出的 Mask R-CNN[23]是在 Faster R-CNN 基础上的扩展,即在原有Faster R-CNN 的基于边界框识别的分支上再加入一个用于预测目标掩码的并行分支(Mask 预测分支),以完成实例分割任务。由于ROI Pooling 中的量化操作会显著增大掩码错误率,Mask R-CNN 提出了ROI Align,使用双线性差值的方法,使得为每个ROI取得的特征能够更好地对齐原图上的ROI区域,提高了掩码的精确度。Mask R-CNN的网络结构如图6所示。
图6 Mask R-CNN网络结构
Mask R-CNN将分类损失、边界框损失和掩码损失联合训练,同时提高了检测和分割的精度,采用ResNeXt-101 为主干网络的Mask R-CNN 在COCO 数据集上达到了39.8%的mAP。Mask R-CNN 不仅可以完成目标检测任务,也能完成实例分割任务,实现对物体的细粒度分割,具有很大的灵活性。但是Mask R-CNN存在一些缺陷:
(1)Mask R-CNN 虽然可以实现实例分割,但是分割代价过高。
(2)模型检测速度依然没有得到改善,不能实现实时检测。
Faster R-CNN 中是通过设置固定的IOU 阈值来设定正负样本的,这就使得选取的候选框不太准确,从而给目标检测带来一定的噪声干扰。
针对此问题,2018年,Cai等人提出了一种级联结构的 检测器 Cascade R-CNN[24]。Cascade R-CNN 每个级联的检测器设置不同的IOU阈值进行训练,且越往后的检测器的IOU阈值越高,这样可以逐步过滤掉一些误检框,使得每个检测器输出的准确度提升一点,用作下一个更高精度的检测器的输入,以达到提高最终网络检测框准确度的作用。图7(a)为Faster R-CNN的基本框架,图7(b)为Cascade R-CNN的基本框架,Cascade RCNN可以看作是一种级联的Faster R-CNN结构。
图7 Faster R-CNN和Cascade R-CNN基本框架对比
Cascade R-CNN级联器结构几乎对于任意的R-CNN(Faster R-CNN、FPN、R-FCN 等)结构都可以带来2%~4%的AP提升,且IoU阈值越高提升越明显,其在COCO数据集上的精确度达到了42.8%。使用Cascade结构对于网络精度的提升确实是有帮助的,但是也增大了网络训练时间。
传统的解决多尺度检测的算法,大都依赖于图像金字塔与特征金字塔FPN 这两种方法,但是,前者使得算法的测试时间大幅度提高,对于实际使用并不友好,而后者对于算法的性能提升不如前者。
2019年,Li等人利用空洞卷积构建了一个三分支网络TridentNet[25],相比之前的算法,更好地解决了多尺度检测问题。TridentNet首次验证了不同大小的感受野对于检测结果的影响,即大的感受野更有利于检测大物体,小的感受野更有利于检测小物体。图8为TridentNet的结构图。TridentNet 采用ResNet 作为基础网络,前三个stage沿用原始的结构,在第四个stage,将三种不同的感受野网络并行化,3个分支使用了空洞数不同的空洞卷积,感受野由小到大,分别检测小、中、大的目标,更好地实现了多尺度的目标检测。并且3个分支共享权重,不仅可以使网络学习到更本质的物体检测信息,而且也减少了参数量与过拟合的风险。
图8 TridentNet结构图
TridentNet对于多尺度物体的检测相比之前的算法有了明显的精度提升,其在COCO数据集上的精确度达到了48.4%。但是网络模型规模的增大增加了计算量,导致网络的检测速度较低,难以进行实时检测。
4.1~4.8 节介绍的算法均是基于候选区域的目标检测算法,即均属于两阶段目标检测器。总体而言,这类算法的检测精度在不断提升,但是检测速度普遍较慢。表3总结了这些算法分别在VOC2007测试集、VOC2012测试集、COCO测试集上的性能,“—”表示无相关数据,各种算法在测试集下的mAP 值括号中的表示所使用的训练集,且所使用的GPU 是Geforce GTX Titan X显卡。表4 总结了基于候选区域的目标检测算法的优缺点和适用场景。
从表3 可以看出,随着卷积神经网络的发展,基于候选区域的目标检测算法的检测精度也在不断提升,已经达到了很高的水平,但是算法模型规模的扩大也带来了计算量的增大,使得该类算法的检测精度一直较低,始终难以满足实时检测。从表4可以看出,基于候选区域的目标检测算法在发展过程中,不断解决之前算法的缺陷,不断向着满足更高更多样化需求的方向发展,但同时也带来了新的问题,并且模型规模大、检测速度慢的问题始终没有得到根本性解决。未来该类算法的发展,应在提高检测精度的同时提高检测速度,借鉴基于回归的目标检测算法的优势,降低模型规模,以满足实际应用中对于模型规模限制的要求,使该类模型在一些硬件平台上得到大规模部署和应用。
表3 基于候选区域的目标检测算法性能对比
表4 基于候选区域的目标检测算法的优缺点及适用场景对比
基于回归的目标检测算法之所以被称为单阶段目标检测器,是因为其省略了候选区域生成阶段,可以直接得到目标的分类和位置坐标。单阶段目标检测器的检测速度一般比两阶段目标检测器快,但是检测精度却普遍比两阶段目标检测器差。这类算法的典型代表有YOLO系列、SSD系列、RetinaNet、CornerNet、CenterNet、EfficientDet等。下面将分别进行介绍。
针对两阶段网络普遍存在实时性差的问题,2016年,Redmon 等人提出了首个单阶段网络YOLOv1[26],它将目标检测任务当作一个回归问题来处理,只需要对输入图像进行一次处理,即可同时得到目标的位置和类别。YOLOv1的主要优点是目标检测速度很快,远远超过两阶段目标检测器,由于网络对图片进行全局处理使得背景错误相对比较少,同时其泛化性能较好。
YOLOv1 的网络结构如图9 所示,其进行目标检测的步骤是,首先将图像缩放到448×448 的固定尺寸,然后将图像输入到卷积神经网络中,来预测出边界框的坐标、框中物体的类别和置信度,最后使用NMS算法去除重叠的框,从而得到最后的预测框,实现目标检测。
图9 YOLOv1网络结构
由于YOLOv1没有候选区域生成的步骤,所以它的检测速度非常快,达到了45 f/s,大大超过了基于候选区域的目标检测算法。但是,YOLOv1划分图片网格较为粗糙,每个网格生成的边界框个数较少,使该网络对小尺寸目标和邻近目标的检测效果较差,而且YOLOv1产生了更多的定位误差,导致其整体检测精度较低。
2017 年,Redmon 等人在 YOLOv1 基础上提出了YOLOv2[27],该网络在所有卷积层都应用了批量归一化(BN)操作,舍弃了Dropout 操作,使用Anchor Boxes 来预测边界框,同时采用了更高效的Darknet-19 作为YOLOv2 的骨干网络。这些措施有效提升了YOLOv2的检测精度,其在VOC2007数据集上的准确率为78.6%。
2018 年,Redmon 等人提出了 YOLOv2 的改进版本YOLOv3[28],它使用了效果更好的Darknet-53作为骨干网络,Darknet-53的精度和ResNet-101相当,但速度更快。YOLOv3吸收了FPN的思想,在网络中3个不同位置的3种不同尺度的FeatureMap上进行检测任务,这有效提高了网络对小尺寸目标的检测效果。同时,YOLOv3使用了二元交叉熵作为损失函数进行训练,实现了对同一个边界框进行多个类别的预测。这些改进使得YOLOv3在COCO数据集上的准确率提高到了33.0%。
2019 年 ,Choi 等 人 提 出 了 YOLOv3 的 改 进 网 络Guassian YOLOv3[29],YOLOv3在预测边界框坐标时,只输出4 个维度的坐标信息,而Gaussian YOLOv3 输出了8 个维度的坐标信息,同时改进了网络的损失函数,这些改进使得该网络在KITTI 数据集上的准确率相比YOLOv3提高了3%的mAP。
2020 年,Bochkovskiy 等人提出了 YOLOv4[30],该模型使用了具有更大感受野、更大参数的CSPDarknet53作为主干网络,在CSPDarknet53上添加了SPP模块来增大感受野,同时使用PANet替换YOLOv3中的FPN来进行多通道特征的融合,加上YOLOv3(基于锚的)head,就构成了YOLOv4 的模型框架。YOLOv4 融合了一系列的调优技巧,在目前所有实时目标检测算法中精度最高,在模型精度和检测速度的trade-off方面达到了当前最优,其在COCO数据集上的检测精度达到了43.5%。
SSD[31]是2016 年由Liu 等人提出的,该网络是在YOLOv1基础上进行改进的,SSD的网络结构图如图10所示。SSD 是在6 个不同尺度的FeatureMap 上进行检测任务的,其中低层FeatureMap 预测小尺寸目标,高层FeatureMap预测大尺寸目标;并且在每个FeatureMap的每个像素点处,使用不同大小的default box检测不同大小的目标;同时该网络使用了放大和缩小两种数据增强技术。这些改进提高了网络的检测效果,其在VOC2007数据集上的检测精度提高到了76.8%,同时检测速度也提升到了59 f/s,使得SSD网络得到了广泛的应用。
图10 SSD网络结构
SSD通过利用不同层特征进行目标检测,使其对尺度变化有较好的鲁棒性,检测精度和速度相比YOLOv1都有很大的提高。但由于在SSD网络中,不同层的特征图都是独立作为分类网络的输入,因此容易出现同一个目标被多个不同大小的预测框同时检测出来的情况,另外由于浅层的特征图所含语义信息较少,导致该网络对小尺寸物体的检测效果比较差。
针对SSD 存在的这两个问题,Jeong 等人提出的R-SSD[32]一方面利用分类网络增加不同层特征图之间的联系,以降低重叠框个数;另一方面R-SSD 使用了一种深层和浅层特征融合的方式,增加了特征图的通道数,提升其对小尺寸物体的检测效果。这些改进使得R-SSD在VOC2007数据集上达到了80.8%的准确率。
在SSD的研究基础上,2017年Fu等人提出了DSSD[33],其将ResNet-101作为主干网络,有效提高了特征提取能力;同时,反卷积层的使用使得DSSD 可以更好地检测小尺寸物体,进一步提升了网络的检测精度,其在VOC2007数据集上的准确率提高到了81.5%。
Shen等人借鉴了DenseNet的思想,提出了DSOD[34],由于改造了一些特征层的输入,使得DSOD的参数数量相比SSD 得到了大幅度降低。而且DSOD 在不需要预训练模型的情况下可以从零开始训练数据,其目标检测效果相比SSD依然得到了提升。
2017年,Li等人吸收了FPN的思想提出了FSSD[35]。不过FSSD融合不同层级特征的方式与FPN不同,相比SSD,其在提升目标检测精度的同时,检测速度却没有下降多少。
2017年,Lin等人提出了RetinaNet[36],作者首次指出样本类别的不平衡,是造成单阶段目标检测网络的检测精度普遍低于两阶段目标检测网络的原因。针对此问题,作者使用focal loss 替代标准交叉熵作为损失函数对模型进行训练,focal loss 函数降低了易分类样本的权重,使模型在训练时更专注于难分类的样本。为了证明focal loss 的有效性,作者设计出了RetinaNet。图11为RetinaNet的网络结构图,该网络使用ResNet+FPN的结构作为特征提取网络,来获得表达力更强且包含多尺度目标区域信息的特征图集合,然后在该集合上使用两个结构相同但是不共享参数的FCN 子网络,分别完成目标框类别分类和位置回归任务,实现目标检测。
RetinaNet 作为单阶段目标检测网络,达到了两阶段目标检测网络的准确率,其在COCO数据集上的准确率提高到了40.8%。但是RetinaNet 检测精度的提高是以牺牲检测速度为代价的,其检测速度相比之前的单阶段检测网络下降明显,难以达到实时检测。
在Faster R-CNN 和SSD 等算法中,普遍使用了anchor(锚框)来提高检测效果,但是anchor的使用也带来了正、负样本不平衡和较多的超参数等问题。
针对此问题,2018年,Law等人提出了CornerNet[37],该算法舍弃了传统的anchor与区域建议框的检测思路,利用关键点的检测与匹配,将传统的预测边框思路转化为了预测边框的左上角和右下角两个角点问题,开辟了基于关键点进行目标检测的新思路。图12为CornerNet的网络结构,它使用Hourglass作为骨干网络提取特征,使用角点池化方式将物体的信息整合到左上角点或者右下角点,后接左上角点预测分支和右下角点预测分支两个输出分支模块,每个分支模块包含了角点出现的位置Heatmaps、角点的配对Embeddings、角点位置的偏移Offsets 三个输出。然后再对属于同一个边框的角点进行组合,从而得到最终的预测框,完成物体检测。
图11 RetinaNet网络结构
图12 CornerNet网络结构
CornerNet 使用边框的角点进行物体检测,从而避免了使用锚框带来的问题,在检测精度上相比之前的单阶段检测器有了一定提升,其在COCO数据集上达到了42.1%的检测精度。但是CornerNet 在对两个角点匹配过程中耗时较长,导致模型的检测速度降低了不少,并且该过程容易产生误检样本。
CornerNet 是基于关键点进行物体检测的,它需要经过一个关键点的分组配对阶段,这会降低算法整体速度。
针对此问题,2019年,Duan等人提出了CenterNet[38],它将物体检测问题变成了一个中心点的估计问题,无需对关键点进行分组配对或者是后处理。CenterNet通过预测物体的中心点位置及对应物体的长与宽,来实现物体检测。图13 为CenterNet 的网络结构,它使用Hourglass作为主干网络提取特征,然后分别通过关联角点池化和中心点池化整合信息。通过关联角点池化预测角点出现的位置后,使用角点位置的偏移操作,将角点的位置映射到输入图片的对应位置,然后通过角点的配对操作,判断哪两个角点属于同一个物体,以便组成一个检测框。同时,CenterNet 通过中心点池化来预测目标的中心点,然后通过偏移操作矫正中心点位置,之后将中心点位置映射到输入图片的对应位置,通过判断每个检测框的中心区域是否有预测的中心点,来消除错误的检测框,以提高检测精度。
CenterNet 基于中心点做检测任务,其在COCO 数据集上达到了47.0%的精确度。虽然CenterNet 的检测速度要快于CornerNet,但是由于模型的计算量依然很大,导致检测速度没有明显提升。
在目标检测领域,算法模型的检测精度和检测速度同等重要,基于回归的检测器虽然检测速度较快,但是普遍精度较低。基于此,2019年,Tan等人提出了一种同时兼顾模型精度和检测速度的目标检测器EfficientDet[39]。图14 为EfficientDet 的网络结构图,其采用EfficientNet作为主干网络,将加权双向特征金字塔网络BiFPN作为特征网络,接受来自主干网络的P3至P7层的特征,并重复应用自上而下和自下而上的双向特征融合,然后将融合后的特征输入到类别/边界框预测网络,分别输出目标类别和边界框预测结果。同时,EfficientDet使用了一种混合缩放方法,可以同时对所有主干网络和特征网络以及类别/边界框预测网络的分辨率、深度和宽度进行均匀缩放,这使得EfficientDet模型规模只有之前最优模型的1/4,检测速度是之前最优模型的3.2倍。
EfficientDet 以较低的模型规模达到了当前COCO数据集上最高的检测精度51.0%,是一个轻量级、多尺度且高精度的目标检测网络。在面对广泛的模型规模和资源约束时,例如嵌入式设备、移动终端等实际应用领域,EfficientDet较低的计算成本使得该模型在这些领域的大规模部署成为了可能,必将极大地推动目标检测技术在这些领域的发展。
5.1~5.6 节介绍的算法均是基于回归的目标检测算法,即均属于单阶段检测器。总体而言,这类算法的检测精度在不断提升,同时检测速度快,实时性较好。表5总结了这些算法分别在VOC2007 测试集、VOC2012 测试集、COCO 测试集上的检测准确率,“—”表示无相关数据,各种算法在测试集下的mAP值括号中的表示所使用的训练集,且所使用的GPU是Geforce GTX Titan X显卡。表6 总结了基于回归的目标检测算法的优缺点和适用场景。
图13 CenterNet网络结构
图14 EfficientDet网络结构
从表5可以看出,基于回归的目标检测算法的检测速度要普遍快于基于候选区域的目标检测算法,并且在检测精度上也逐渐超过后者(单阶段的EfficientDet 是当前精度最高的模型),但是检测精度的提升也带来了检测速度的下降,这是需要解决的问题。从表6可以看出,基于回归的目标检测算法在小目标、多目标上的检测效果越来越好,并且逐渐实现了多尺度、高精度检测。未来该类算法的发展,应更多地关注于检测精度和检测速度的trade-off,类似YOLOv4这种,并实现更高的平衡,使得该类模型可以在嵌入式设备、移动终端等硬件平台大规模部署。
在以上基于深度卷积神经网络的目标检测的基础上,近几年,一些学者又提出了一些新的基于深度学习的目标检测算法,如表7 所示。从表中可以看出,这些改进的目标检测算法都是在针对原始算法的缺陷进行的改进,融入了部分其他算法能提高检测精度的结构,同时使用了一些优化技巧,有效提高了改进算法的检测效果。
本文在对目标检测网络广泛研究的基础上,系统总结了基于深度卷积神经网络的目标检测网络的发展情况,详细介绍了目前的两大类目标检测网络,即基于候选区域的目标检测网络和基于回归的目标检测网络。分析了两类目标检测网络的结构和优势缺陷,并对其性能进行了对比。
总体来看,基于候选区域的目标检测网络的检测流程越来越简单,精度也越来越高,但是速度上普遍偏慢,难以满足实际应用的实时性需求,在应用推广上面临困难。而基于回归的目标检测网络虽然在精度上普遍不如前者,但是在检测速度上更有优势,随着近几年的发展,其检测精度也在逐渐提高,在实际应用上更具有潜力。未来的研究方向将更专注于精度和速度的结合,借鉴基于候选区域网络高精度的优势和基于回归的网络高速度的优势,同时提高目标检测网络的精度和速度,实现精度和速度的trade-off,以满足实际需求。
表5 基于回归的目标检测算法性能对比
表6 基于回归的目标检测算法的优缺点和适用场景对比
表7 基于深度学习的目标检测相关文献
深度卷积神经网络的快速发展,以及硬件设施的不断完善,为目标检测领域提供了非常好的发展机遇。虽然现有的基于卷积神经网络的目标检测算法的性能已经远远超越了传统的目标检测算法,但是还有很多改进空间。如何实现在小数据集下对目标检测网络进行训练,如何更好地实现复杂场景下多目标和小目标的检测,如何更好的利用场景信息和语义信息,如何满足智能交通系统、智能视频监控、自动化监测、工业检测等实际应用领域的精确性和实时性的需求等,这些将会是接下来目标检测领域的重要研究方向。