AI佳作解读系列(五) - 目标检测二十年技术综述

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

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

作者来自美国密歇根大学、北京航空航天大学、滴滴出行。下图是作者在谷歌学术检索目标检测相关关键字返回的历年文献数量,可见该领域20年来越来越受到学术界的关注。2018年有将近1200篇相关文献发表。

  • 目标检测路线图

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

可见作者将算法大致分为2012年之前的传统检测方法与2012年之后出现的基于深度学习的检测方法。传统方法比如我们所熟知的V-J检测、HOG检测、DPM算法。深度学习方法截然不同的分为两条技术路径:单阶段检测算法与两阶段检测算法。同时作者把目标检测的一些精度提高的方法的出现也列在了时间轴上,比如bounding box regression、multi-resolution detection等。

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

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

  • 目标检测数据集

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

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

行人检测常用数据集:

人脸检测常用数据集:

文本检测常用数据集:

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

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

  • 目标检测技术演进

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

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

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

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

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

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

  • 目标检测计算加速

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

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

  • 数值计算层次(如积分图、矢量量化等)
  • 检测引擎层次(网络剪枝与量化、轻量级网络设计等)
  • 检测流程层次(特征图共享、分类器加速、级连检测等)

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

  • 目标检测进展

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

  1. 更好地引擎(engine):作者将深度学习目标检测网络的骨干网称为其引擎。改进目标检测的一个直接思路就是使用更加先进的骨干网。如下图(相同算法用相同颜色的圆点表示,使用相同引擎的算法结果用一个大括号连接,我们可以轻易看出,使用不同的引擎对最终精度的影响更大):
  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. 弱监督的目标检测:不使用包围框标注,而仅使用图像级的目标标注的算法。减少标注成本。扩大训练集。
  • 目标检测应用

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

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

  • 目标检测的未来方向

作者列举了以下几个未来方向:

  1. 轻量级目标检测算法;
  2. 用AutoML设计目标检测算法,比如:Google CVPR 2019成果!用神经架构搜索实现更好的目标检测
  3. 域适应(domain adaptation)改进目标检测;
  4. 弱监督的目标检测;
  5. 小目标检测;
  6. 视频目标检测
  7. 融合其他传感器信息的目标检测。

最后附上论文地址:https://arxiv.org/abs/1905.05055v1

原文地址:https://www.cnblogs.com/carsonzhu/p/10915489.html

时间: 2024-12-10 11:28:25

AI佳作解读系列(五) - 目标检测二十年技术综述的相关文章

CVPR2019目标检测方法进展综述

CVPR2019目标检测方法进展综述 置顶 2019年03月20日 14:14:04 SIGAI_csdn 阅读数 5869更多 分类专栏: 机器学习 人工智能 AI SIGAI 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/SIGAI_CSDN/article/details/88687747 SIGAI特约作者 陈泰红研究方向:机器学习.图像处理 目标检测是很多计算机视觉应用的基础,

4. 基于深度学习的目标检测算法的综述(转)

4. 基于深度学习的目标检测算法的综述(转) 原文链接:https://www.cnblogs.com/zyly/p/9250195.html 目录 一 相关研究 1.选择性搜索(Selective Search) 2.OverFeat 二.基于区域提名的方法 1.R-CNN 2.SPP-Net 3.Fast R-CNN 4.Faster R-CNN 5.R-FCN 三 端对端的方法 1.YOLO 2.SSD 四 总结 在前面几节中,我们已经介绍了什么是目标检测,以及如何进行目标检测,还提及了滑

第二十八节、基于深度学习的目标检测算法的综述

在前面几节中,我们已经介绍了什么是目标检测,以及如何进行目标检测,还提及了滑动窗口,bounding box.以及IOU,非极大值抑制等概念. 这里将会综述一下当前目标检测的研究成果,并对几个经典的目标检测算法进行概述,本文内容来自基于深度学习的目标检测,在后面几节里,会具体讲解每一种方法. 在深度度学习的目标检测算法兴起之前,传统的目标检测算法是怎样的呢? 传统的目标检测一般使用滑动窗口的框架,主要包括三个步骤: 利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域: 提取候选区域相关的视觉特

目标检测与跟踪的研究热点以及发展趋势

目标检测与跟踪的研究热点以及发展趋势: 1) 场景信息与目标状态的融合 场景信息包含了丰富的环境上下文信息, 对场景信息进行分析及充分利用, 能够有效地获取场景的先验知识, 降低复杂的背景环境以及场景中与目标相似的物体的干扰; 同样地, 对目标的准确描述有助于提升检测与跟踪算法的准确性与鲁棒性. 总之,尝试研究结合背景信息和前景目标信息的分析方法,融合场景信息与目标状态, 将有助于提高算法的实用性能. 2) 多维度. 多层级信息融合 为了提高对运动目标表观描述的准确度与可信性, 现有的检测与跟踪

10 行Python 代码,实现 AI 目标检测技术,真给力!

只需10行Python代码,我们就能实现计算机视觉中目标检测. from imageai.Detection import ObjectDetection import os execution_path = os.getcwd() detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_b

DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测

一.目标定位 这一小节视频主要介绍了我们在实现目标定位时标签该如何定义. 上图左下角给出了损失函数的计算公式(这里使用的是平方差) 如图示,加入我们需要定位出图像中是否有pedestrian,car,motorcycles.注意在这里我们假设图像中只肯呢个存在这三者中的一种或者都不存在,所以共有四种可能. \(P_c=1\)表示有三者中的一种 \(C_1=1\)表示有pedestrian,反之没有 \(C_2=1\)表示有car \(C_3=1\)表示有motorcycles \(b_*\)用于

R-CNN系列目标检测博文汇总

R-CNN [深度学习]R-CNN 论文解读及个人理解 [目标检测]RCNN算法详解 R-CNN论文翻译解读 总之,R-CNN取得成功的两个关键因素:1:在候选区域上自下而上使用大型卷积神经网络(CNNs),用以定位和分割物体.2:当带标签的训练数据不足时,先针对辅助任务进行有监督预训练,再进行特定任务的调优,就可以产生明显的性能提升 简单来说,RCNN使用以下四步实现目标检测: a. 在图像中确定约1000-2000个候选框 b. 对于每个候选框内图像块,使用深度网络提取特征 c. 对候选框中

第二十五节,目标定位、特征点检测依据目标检测

一 目标定位 对象检测,它是计算机视觉领域中一个新兴的应用方向,相比前两年,它的性能越来越好.在构建对象检测之前,我们先了解一下对象定位,首先我们看看它的定义. 图片分类任务我们已经熟悉了,就是算法遍历图片,判断其中的对象是不是汽车,这就是图片分类.这节我们要学习构建神经网络的另一个问题,即定位分类问题.这意味着,我们不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框或红色方框把汽车圈起来, 这就是定位分类问题. 其中"定位"的意思是判断汽车在图片中的具体位置.这

目标检测论文解读5——YOLO v1

背景 之前热门的目标检测方法都是two stage的,即分为region proposal和classification两个阶段,本文是对one stage方法的初次探索. 方法 首先看一下模型的网络结构,输入的原图片,经过24个卷积层提取特征,全连接层输出一个7*7*30的tensor,这个tensor里面就包含我们预测的结果了. 那么这个7*7*30的tensor包含哪些信息呢? 首先,7*7可以映射到448*448的原图片中,得到7*7个64*64的grid cell,对于原图中的每一个目