基于深度学习的目标检测方法综述
引言
现有的深度学习的目标检测方法,可以大致分为两类:一、基于候选区域的目标检测方法;二、基于回归的目标检测方法。依据方法的提出时间,可以构建出如下时间线:
- 2014 CVPR R-CNN[1]
- 2015 arXiv DenseBox[14]
- 2015 ICCV Fast R-CNN[2]
- 2015 NIPS Faster R-CNN[3]
- 2016 CVPR YOLO[5]
- 2016 ACMMM UnitBox[15]
- 2016 ECCV SSD[8]
- 2017 CVPR Mask R-CNN[4]
- 2017 CVPR YOLOv2[6]
- 2017 arXiv DSSD[9]
- 2017 ICCV DSOD[10]
- 2017 arXiv FSSD[11]
- 2017 arXiv R-SSD[12]
- 2018 arXiv YOLOv3[7]
- 2018 CVPR RefineDet[13]
- 2018 ECCV CornerNet[16]
- 2019 CVPR ExtremeNet[17]
- 2019 CVPR FSAF[18]
- 2019 ICCV FCOS[19]
- 2020 TIP FoveaBox[20]
- 2020 ECCV DETR[21]
下面,对上述提到的方法按照其所属类别,依次进行介绍。
基于候选区域的目标检测方法
基于候选区域的目标检测方法由于其处理过程分为两个阶段,也常常被称为两阶段方法。这类方法首先进行候选区域的提取,再基于候选区域得到检测结果。
图 1 R-CNN模型结构Girshick等人在2014年提出第一个基于深度学习的两阶段目标检测方法R-CNN[1],它的整体框架如图1所示。它首先使用Selective Search在输入图像上提取候选区域,然后将不同大小的候选区域调整至相同尺寸,再使用CNN提取提取它们的特征,最后使用SVM进行分类、使用线性回归进行位置修正。但是,在R-CNN中,调整候选区域的尺度会造成信息丢失,且不同的候选区域之间存在重叠,单独使用CNN对每个候选区域进行特征提取存在大量的冗余计算,限制了R-CNN的检测速度。
Girshick等人在2015年对R-CNN进行了改进,提出了Fast R-CNN[2]。主要贡献在于:1. 在输入图片上进行一次特征提取,基于坐标信息直接在特征图上进行裁剪,得到每个候选区域的特征,这极大的提高了模型速度;2. 提出RoI Pooling层,使用该层可以将不同大小的候选区域特征处理为相同尺度,降低了信息丢失;3. 使用softmax进行分类,实现了基本的端到端。
Ren等人在2015年对Fast R-CNN进行了进一步的改进,提出了Faster R-CNN[3]。它使用区域建议网络(RPN)代替原有的Selective Search提取候选区域,极大地降低了提取候选区域的时间。区域建议网络的处理过程为:1. 在特征图上进行滑动窗口,得到一系列的锚框(anchor boxes);2. 使用softmax提取前景锚框,回归它们的偏移和缩放;3. 使用非极大值抑制(NMS)对锚框进行后处理,再取TopK个作为候选区域。Faster R-CNN是第一个真正意义上的端到端的深度目标检测方法,在目标检测领域具有重要意义。
He等人在2017年提出Mask R-CNN[4],在Faster R-CNN的基础上,通过增加不同分支,可以应对目标检测、语义分割、实例分割、关键点检测、人体姿势识别等多个任务,且在多个任务上的结果可以超过当时的SOTA,具有很强的灵活性和适用性。
基于回归的目标检测方法
基于回归的深度目标检测方法也被称为一阶段方法,这类方法不提取候选区域,直接回归出目标检测结果。目前主要分为三个系列:YOLO系列、SSD系列和Anchor Free系列。
图 2 YOLO模型结构Redmon等人在2016年提出了第一个基于深度学习的一阶段目标检测方法——YOLO[5],其核心思想如图2所示。它将输入图片分割为固定数目的网格,每个网格负责检测中心落入该网格的目标,直接回归出边界框和类别概率。2017年,Redmon等人对YOLO进行了改进,提出了YOLOv2[6]方法。在YOLO的基础上,引入了锚框、高分辨率分类网络、尺寸聚类等机制,保证速度的同时提高了检测准确率。2018年,Redmon等人在YOLOv2的基础上提出了YOLOv3[7]方法,将YOLOv2中的softmax损失函数修改为独立的交叉熵损失,并提出了多级预测策略,同时加深了网络结构,进一步提升了检测精度。
图3 SSD模型结构在YOLO提出的同一年,Liu等人提出了SSD[8]方法,它的模型结构如图3所示。SSD继承了YOLO中的回归思路,引入了与Faster R-CNN类似的锚框机制,并加入了特征金字塔检测方式,达到了与YOLO相近的检测速度,同时在准确率上比Faster R-CNN更高。Fu等人在2017年对SSD进行了改进,提出了DSSD[9]方法,使用Resnet-101替换了SSD中的VGG网络,并添加了反卷积层形成了“宽-窄-宽”的沙漏结构,提升了检测小目标的准确性。Shen等人在2017年提出了四个网络设计原则,并基于这些原则设计了DSOD[10]模型,不需要预训练也可达到较高的检测准确率。Li等人在2017年提出了FSSD[11]方法,通过在SSD中添加特征融合机制,在速度与SSD相差无几的前提下,准确率有较大提升。与FSSD类似地,Jeong等人在2017年提出在SSD中添加rainbow特征融合方法[12],一定程度上解决了SSD方法中存在的重复框问题,且提高了检测小目标时的准确性。Zhang等人在2018年提出RefineDet[13]方法,在SSD的基础上,融合了RPN和FPN,在速度上和一阶段方法相近,在准确性上可以和两阶段方法媲美。
图4 DenseBox模型结构 图5 CornerNet模型结构和两阶段方法相比,YOLO系列和SSD系列方法没有提取候选区域的阶段,但除了YOLO方法,YOLOv2、YOLOv3、SSD及其变体方法都使用了锚框机制,这限制了方法的灵活性。Huang等人在2015年提出了第一个Anchor Free(不使用锚框)的深度目标检测方法——DenseBox[14],它的检测流程如图4所示。此方法使用全卷积结构,直接预测目标的边框和类别,并且可以结合landmark定位进一步提高目标检测的准确性。Yu等人在2016年提出了UnitBox[15]方法,在DenseBox的基础上提出并使用了IoU损失,具有更高的准确性和鲁棒性。Redmon等人在2016年提出的YOLO也属于Anchor Free模型,由于前文介绍过,这里就不多做介绍了。Law等人在2018年提出了CornerNet[16]方法,其模型结构如图5所示。CornerNet通过预测目标的左上角和右下角完成目标检测,避免了使用锚框带来的正负样本不均衡的问题,同时提出了Corner Pooling层,可以更精确的定位目标的左上角和右下角。2019年,Zhou等人在CornerNet的基础上进行改进,提出了ExtremeNet[17]方法,将检测两个角点变为检测四个边界点(最上、最下、最左、最右),并预测一个中心点用于判断边界点是否为同一组,取得了比CornerNet更高的检测准确率。与ExtremeNet同一年,Zhu等人提出了FSAF[18]方法,让每个实例自动地选择最适合它的特征层,避免了锚框的使用。同年,Tian等人提出了FCOS[19]方法,使用全卷积网络预测每个像素点相较于对应目标框在上、下、左、右四个方向上的距离,并通过centerness找到目标的中心点,取得了非常优秀的检测结果。2020年Kong等人提出FoveaBox[20],模仿人眼的中央凹(视觉中心具有最高的视力),先提取每个目标的“凹区域”,再进行后续的分类和回归。2020年,Carion等人提出了DETR[21]方法,将Transformer融入了目标检测框架,简化了模型结构,并在实验结果上超过了精调的Faster R-CNN。
结论
可以看出,在深度目标检测领域,最初是R-CNN系列、YOLO系列和SSD系列“三足鼎立”,近些年,各种各样的Anchor Free方法如“井喷”一样层出不穷。我认为,目标检测在未来的研究重点包括但不限于:
- 实时视频目标检测
- 小目标、微小目标检测
- 易于部署到移动端的目标检测
- 半监督、弱监督、无监督目标检测
相信目标检测技术一定会发展的越来越好,并为人类的生活带来越来越多的便利。
参考文献
总结
以上是生活随笔为你收集整理的基于深度学习的目标检测方法综述的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: <文本,场景图>解析实践
- 下一篇: 视频中的目标检测与跟踪综述