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

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

  1. AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3

    1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...

  2. AI佳作解读系列(六) - 生成对抗网络(GAN)综述精华

    注:本文来自机器之心的PaperWeekly系列:万字综述之生成对抗网络(GAN),如有侵权,请联系删除,谢谢! 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian G ...

  3. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法

    1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...

  4. AI佳作解读系列(四)——数据增强篇

    前言 在深度学习的应用过程中,数据的重要性不言而喻.继上篇介绍了数据合成(个人认为其在某种程度上可被看成一种数据增强方法)这个主题后,本篇聚焦于数据增强来介绍几篇杰作! (1)NanoNets : H ...

  5. AI佳作解读系列(三)——深度学习中的合成数据研究

    Below are some investigation resources for synthetic datasets: 1. Synthetic datasets vs. real images ...

  6. CVPR2019目标检测方法进展综述

    CVPR2019目标检测方法进展综述 置顶 2019年03月20日 14:14:04 SIGAI_csdn 阅读数 5869更多 分类专栏: 机器学习 人工智能 AI SIGAI   版权声明:本文为 ...

  7. Google AI推出新的大规模目标检测挑战赛

    来源 | Towards Data Science 整理 | 磐石 就在几天前,Google AI在Kaggle上推出了一项名为Open Images Challenge的大规模目标检测竞赛.当今计算 ...

  8. Alamofire源码解读系列(五)之结果封装(Result)

    本篇讲解Result的封装 前言 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解.在Alamofire中,使用Response来描述请求后的结果.我们都知道Alamof ...

  9. deeplearning.ai 卷积神经网络 Week 3 目标检测 听课笔记

    本周的主题是对象检测(object detection):不但需要检测出物体(image classification),还要能定位出在图片的具体位置(classification with loca ...

随机推荐

  1. vue的组件名称问题

    如果组件名称中带有大写字母,那么会报错

  2. Codeforces Round #604 (Div. 2) A. Beautiful String

    链接: https://codeforces.com/contest/1265/problem/A 题意: A string is called beautiful if no two consecu ...

  3. Linux LVM--三种Logic Volume

    本文链接:https://blog.csdn.net/u012299594/article/details/84551722 概述 为了满足在性能和冗余等方面的需求,LVM支持了下面三种Logic V ...

  4. Linux 一款免费的shell工具 MobaXterm_Personal

    一款免费的shell工具 MobaXterm_Personal

  5. linux的计划任务操作

    1.cron服务来设置 计划任务查看与设置命令:crontab 包括条目: 分钟m:0-59 小时h:0-23 月日dom:1-31 月份mon:1-12 星期dow:0-7 例子: 每隔2小时处理一 ...

  6. PKUSC2019 改题记录

    PKUSC2019 改题记录 我真的是个sb... 警告:不一定是对的... D1T1 有一个国家由\(n\)个村庄组成,每个村庄有一个人.对每个\(i\in[1,n-1],\)第\(i\)个村庄到第 ...

  7. flutter踩坑小记:The number of method references in a .dex file cannot exceed 64K.

    The number of method references in a .dex file cannot exceed 64K. 这句话的意思翻译出来是:.dex文件中的方法引用数不能超过64K. ...

  8. GoCN每日新闻(2019-09-29)

    1. 干货满满的Go Modules和goproxy.cn https://juejin.im/post/5d8ee2db6fb9a04e0b0d9c8b 2. gnet: 一个轻量级且高性能的 Go ...

  9. JS中注入eval, Function等系统函数截获动态代码

    正文 现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行. 动态执行js代码无非两种方法,即eval和 ...

  10. mapreduce入门程序之---wordcount

    mapreduce是hadoop生态中非常重要的一部分,顾名思义,主要分为两部分,map和reduce,他们各司其职,map的主要功能是用来对待处理的文档进行处理,主要是对数据进行按行读取,分割,然后 ...