计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶、视频监控、机器人视觉等,而被研究学者广泛关注。

 

几天前,arXiv新出一篇目标检测文献《Object Detection in 20 Years: A Survey》对该领域20年来出现的技术进行了综述,这是一篇投向PAMI的论文,作者们review了400+篇论文,总结了目标检测发展的里程碑算法和state-of-the-art,并且难能可贵的对算法流程各个技术模块的演进也进行了说明,还深入到目标检测的特定领域如人脸检测、行人检测等进行了总结,最后列举了未来可能的发展方向。

 

温故而知新,非常值得参考!

 

作者信息:

 

继往开来!目标检测二十年技术综述_损失函数

 

该文作者来自美国密歇根大学、北京航空航天大学、滴滴出行。

 

下图是作者在谷歌学术检索目标检测相关关键字返回的历年文献数量,可见该领域20年来越来越受到学术界的关注。2018年有将近1200篇相关文献发表。

 

 

继往开来!目标检测二十年技术综述_深度学习_02

 

目标检测路线图

 

作者将目标检测近20年来的里程碑算法画在时间轴上,如下:

 

继往开来!目标检测二十年技术综述_数据集_03

 

可见作者将算法大致分为2012年之前的传统检测方法与2012年之后出现的基于深度学习的检测方法。

 

传统方法比如我们所熟知的V-J检测、HOG检测、DPM算法。

深度学习方法截然不同的分为两条技术路径:单阶段检测算法与两阶段检测算法。

同时作者把目标检测的一些精度提高的方法的出现也列在了时间轴上,比如bounding box regression、multi-resolution detection等。

 

在目前最知名的评估数据集VOC 2007 、VOC 2012、 COCO上不同年份出现的算法精度提高,如下图:

 

继往开来!目标检测二十年技术综述_损失函数_04

可见,深度学习在检测领域的开山之作RCNN取得了大幅度精度提高,开辟了检测的新时代。而今年新出的TridentNet是目前在COCO数据集上取得最高精度的算法。

 

目标检测数据集

 

作者总结了通用目标检测及几个特定目标检测的数据集。

 

通用目标检测领域常用数据集:

 

继往开来!目标检测二十年技术综述_损失函数_05

 

几个常用数据集的示例图片:

 

继往开来!目标检测二十年技术综述_数据集_06

 

行人检测常用数据集:

 

继往开来!目标检测二十年技术综述_目标检测_07

 

人脸检测常用数据集:

 

继往开来!目标检测二十年技术综述_数据集_08

 

文本检测常用数据集:

 

继往开来!目标检测二十年技术综述_目标检测_09

 

交通灯检测与交通标志检测常用数据集:

 

继往开来!目标检测二十年技术综述_损失函数_10

 

遥感目标检测常用数据集:

 

继往开来!目标检测二十年技术综述_损失函数_11

 

目标检测技术演进

 

作者将目标检测中涉及的各种技术的演进铺展开来,让我们能就单一技术看到发展路径。

 

早期目标检测算法代表:

 

继往开来!目标检测二十年技术综述_人脸检测_12

 

多尺度检测技术演进路线图:

 

继往开来!目标检测二十年技术综述_损失函数_13

 

包围框回归技术演进路线图:

 

继往开来!目标检测二十年技术综述_人脸检测_14

 

目标上下文建模技术演进路线图:

 

继往开来!目标检测二十年技术综述_数据集_15

 

包围框非极大抑制(NMS)技术演进路线图:

 

继往开来!目标检测二十年技术综述_人脸检测_16

 

难检测负样本挖掘技术演进路线图:

 

继往开来!目标检测二十年技术综述_目标检测_17

 

目标检测计算加速

 

目标检测天生是计算密集型任务,所以在其发展的各个阶段,目标检测算法的加速就一直是一个重要议题。

 

作者总结的目标检测计算加速方法:

 

继往开来!目标检测二十年技术综述_数据集_18

 

可见主要是在三个层次加速:

  • 数值计算层次(如积分图、矢量量化等)、

  • 检测引擎层次(网络剪枝与量化、轻量级网络设计等)、

  • 检测流程层次(特征图共享、分类器加速、级连检测等)。

 

因为目前CNN检测方法是主流,作者列出了近年出现的卷积计算的一些加速方法及其时间复杂度:

 

继往开来!目标检测二十年技术综述_目标检测_19

 

目标检测进展

 

作者在这部分描述了近三年来state-of-the-art目标检测技术的研究进展。

 

1. 更好地引擎(engine)

作者将深度学习目标检测网络的骨干网称为其引擎。

改进目标检测的一个直接思路就是使用更加先进的骨干网。

 

如下图:

 

继往开来!目标检测二十年技术综述_目标检测_20

 

相同算法用相同颜色的圆点表示,使用相同引擎的算法结果用一个大括号连接,我们可以轻易看出,使用不同的引擎对最终精度的影响更大。

 

说到这,欢迎大家关注52CV最新的相关文章:

精度高、模型小、速度快!梯形DenseNets结构实现语义分割新高度!

重磅!MobileNetV3 来了!

 

2. 使用更好的特征

作者主要指:

1)特征融合;

2)学习大感受野的高分辨率特征

 

3. 超越滑动窗口

不再是局限于候选区域再分类的模式。

作者提到两种新模式:

1)子区域搜索 sub-region search。

将目标检测看为从初始网格到最终ground truth box的路径规划过程。

2)关键点定位。

将目标检测看为特定语义点定位的过程。比如:

ECCV18 Oral | CornerNet目标检测开启预测“边界框”到预测“点对”的新思路

Grid R-CNN解读:商汤最新目标检测算法

 

4. 目标定位改进

1)包围框提精。

2)改进loss函数用于精确定位。比如:

CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准

 

5. 检测与分割一起进行

分割可以帮助目标检测提高类别识别的精度、获得更好地目标定位、嵌入更加丰富的上下文。

分割的网络可以作为目标检测的提取网络,也可以作为多任务学习的损失函数,用以改进目标检测。

52CV曾经报道过一篇文章,甚至分割可以用来替换检测:

目标检测:Segmentation is All You Need ?

 

6. 旋转和尺度变化鲁棒的目标检测

针对旋转变化鲁棒改进方向:

1)旋转不变损失函数;

2)旋转校正;

3)Rotation RoI Pooling。

针对尺度变化鲁棒的改进:

1)尺度自适应训练;

2)尺度自适应检测。

 

7. Training from Scratch

不使用预训练模型,从头开始训练目标检测网络。

比如:

CVPR 2019 | 京东AI研究院提出ScratchDet,加强对小目标的检测,代码将开源

 

8. 对抗训练

比如有研究表明,GAN可以用来改进小目标的检测。

 

9. 弱监督的目标检测

不使用包围框标注,而仅使用图像级的目标标注的算法。

减少标注成本,扩大训练集。

 

目标检测应用

 

作者列举了目标检测的几个特殊应用,包括行人检测、人脸检测、文本检测、交通灯及标志检测、遥感目标检测。

 

继往开来!目标检测二十年技术综述_目标检测_21

 

继往开来!目标检测二十年技术综述_深度学习_22

 

继往开来!目标检测二十年技术综述_数据集_23

 

继往开来!目标检测二十年技术综述_目标检测_24

 

继往开来!目标检测二十年技术综述_数据集_25

 

指出每种检测任务面临的困难和挑战,并简述了目前应对这些问题的方法。

 

目标检测的未来方向

 

作者列举的未来方向包括:

1. 轻量级目标检测算法;

2. 用AutoML设计目标检测算法,比如:

Google CVPR 2019最新成果!用神经架构搜索实现更好的目标检测

3. 域适应(domain adaptation)改进目标检测;

4. 弱监督的目标检测;

5. 小目标检测;

6. 视频目标检测

7. 融合其他传感器信息的目标检测。

 

论文地址:

https://arxiv.org/abs/1905.05055v1