目标检测20年综述

本文是一篇综述的阅读笔记:《Object Detection in 20 Years: A Survey》

介绍历史上的里程碑检测器、检测数据集、评价指标、检测系统的基本构件、加速技术,以及最新最先进的检测方法。本文还综述了行人检测、人脸检测、文本检测等重要的检测应用,并对其面临的挑战以及近年来的技术进步进行了深入分析。

1. Introduction

目标检测解决什么问题?

目标检测解决的是计算机视觉任务的基本问题:即What objects are where?图像中有什么目标,在哪里?

目标检测面临哪些挑战?

除了计算机视觉任务都存在的不同视角、不同光照条件以及类内差异等之外,还存在目标旋转和尺度变化(如小目标),如何精确的目标定位,密集和遮挡条件下的目标检测,以及如何加快检测速度等。

2. 目标检测Road Map

以2014年为界,目标检测分为传统目标检测时期和基于深度学习的目标检测时期

2.1 传统目标检测器

基本依靠手工特征

2.1.1 VJ 检测器

Viola Jones检测器首次实现人脸实时监测,VJ检测器使用简单直接的检测方式—滑动窗口,但是当时算力有限,为了达到实时使用了三项技术:

(1)积分图

积分图是一种计算方法,可以加速框过滤或卷积过程。在VJ检测器中使用Haar小波作为图像的特征表示。积分图像使得VJ检测器中每个窗口的计算复杂度与其窗口大小无关。

(2)特征选择

没有使用手动选择的Haar基过滤器,而是使用Adaboost算法从一组巨大的随机特征集合(约180k维)中选择一组对人脸检测最有帮助的特征。

(3)检测级联

VJ 检测器引入了多级检测范式(又称“检测级联”),通过减少对背景窗口的计算,而更多地对人脸目标进行计算,从而减少了计算开销。

2.1.2 HOG检测器

HOG(Histogram of Oriented Gradients),即方向梯度直方图特征描述器,主要用于行人检测,也可以用于检测其他对象。为了平衡特征不变性( feature invariance,包括平移、尺度、光照等)和非线性(区分不同目标类别),将HOG描述符设计为在密集的均匀间隔单元网格上计算,并使用重叠局部对比度归一化(local contrast normalization)来提高精度。为了检测不同大小的对象,HOG检测器在保持检测窗口大小不变的情况下,对输入图像进行多次rescale。

具体参照目标检测的图像特征提取之(一)HOG特征

2.1.3 Deformable Part-based Model (DPM)

传统目标检测方法的巅峰之作,VOC07、08、09检测连续夺冠。

DPM最初是HOG检测器的扩展,随后由Girshick大佬作了一系列改进。

DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习分解对象的恰当方式,推理可以看作是对目标不同部分检测的集合。

一个典型的DPM检测器由一个root-filter和一些part-filters组成。基于DPM的弱监督学习方法不需要手工指定part filters的配置(如尺寸和位置),而是将part-filters的所有配置作为潜变量自动学习。

Girshick将此过程进一步表示为Multi-Instance learning的一个特例,并应用了“hard negative mining”、“bounding box regression”和“context priming”等重要技术来提高检测精度。为了加快检测速度,Girshick开发了一种技术,将检测模型“编译”成一个更快的模型,该模型实现了级联结构,在不牺牲任何精度的情况下实现了超过10倍的加速(什么这么神奇,其实我也想知道,但是暂时没时间看了)。

在深度学习时代,目标检测可以分为两类:two-stage和one-stage,前者是由粗到精的过程,而后者则一步到位。

2.2 基于CNN的Two-stage目标检测器

2.2.1 RCNN

Regions with CNN features

背景

传统方法遭遇瓶颈,AlexNet带来曙光

过程

(1)使用选择性搜索(selective search)获取目标候选框(proposal)

(2)每个proposal rescale到固定尺寸,输入CNN来提取特征

(3)线性SVM分类器用于预测每个区域内目标的存在,并识别其类别

缺点

对大量重叠proposal的冗余特征计算(一张图像超过2000个框)导致检测速度极慢(使用GPU每张图像14秒)。

2.2.2 SPPNet

Spatial Pyramid Pooling Networks

背景

RCNN速度慢,且需要固定尺寸的输入(比如AlexNet的224x224)

贡献

引入了空间金字塔池层(Spatial Pyramid Pooling),它使CNN能够生成固定长度的表示,而不需要重新调整图像/感兴趣区域的大小。

利用SPPNet进行目标检测时,只需要对整个图像进行一次计算得到特征图,就可以生成任意区域的定长表示来训练检测器,避免了卷积特征的重复计算。

SPPNet的速度是R-CNN的20多倍,并且没有牺牲任何检测精度(VOC07 mAP=59.2%)。

缺点

(1)训练仍然是多阶段的

(2)SPPNet只对其全连接层进行微调,而忽略了之前的所有层。

2.2.3 Fast RCNN

RCNN和SPPNet的结合

缺点

选择性搜索速度较慢,可否替换为CNN

2.2.4 Faster RCNN

贡献

Region Proposal Network (RPN),几乎没有消耗的生成proposal

从R-CNN到Faster RCNN,一个目标检测系统的大部分独立模块,如proposal生成、特征提取、边界框回归等,都逐渐集成到一个统一的端到端学习框架中。

2.2.5 R-FCN&&Light-head RCNN

解决Faster RCNN的计算冗余

2.2.6 Feature Pyramid Networks(FPN)

背景

在FPN之前的大部分检测模型,都是使用单层Top Layer进行检测(当然也有SSD)

虽然CNN较深层的特征有利于分类,但不利于对象的定位。

贡献

为此,在FPN中构建了一种具有横向连接的自顶向下的结构,用于在所有尺度上获取高层语义。由于CNN通过前向传播自然形成了一个特征金字塔,所以FPN在检测具有多种尺度的目标时显示出了很大的进步。

2.3 基于CNN的One-Stage目标检测器

2.3.1 You Only Look Once (YOLO)

深度学习时代第一个One-stage检测器,最大的特点就是速度快

完全摒弃了之前proposal+refine的思路,对整张图片应用单个神经网络

该网络将图像分割成多个区域,同时预测每个区域的边界框和置信度。

缺点

相比two-stage检测器,定位精度差,尤其是对于小目标,随后的v2、v3版本及SSD都在尝试解决这个问题

2.3.2 Single Shot MultiBox Detector (SSD)

贡献

与之前检测器的主要区别在于,SSD在网络的不同层检测不同尺度的对象,而后者仅在其顶层进行检测。

2.3.3 RetinaNet

背景

单阶段检测器效果比两阶段检测器差,本文认为主要问题在于单阶段检测器训练时正负样本的极度不平衡。

贡献

提出Focal Loss,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本,解决正负样本不平衡问题。

3.目标检测数据集

3.1 Pascal VOC

The PASCAL Visual Object Classes (VOC) Challenges (from 2005 to 2012)

20类:

Person: person;

Animal: bird, cat, cow, dog, horse, sheep;

Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train;

Indoor: bottle, chair, dining table, potted plant, sofa, tv monitor

3.2 ILSVRC

The ImageNet Large Scale Visual Recognition Challenge(ILSVRC,2010~2017)

200类

3.3 MS-COCO

2015开始

80类

单图目标数量多,目标密集,且小目标多

包含实例分割标注

3.4 Open Images

2018

Open Im- ages Detection (OID) challenge

600类

包含两个任务:

(1)标准目标检测

(2)视觉关系检测,用于检测特定关系中成对的目标

3.5 其他检测任务数据集

3…5.1 行人检测数据集

3.5.2 人脸检测数据集

3.5.3 文本检测数据集

3.5.4 交通信号灯和交通标志数据集

3.5.5 遥感目标检测数据集

4. 评价指标

4.1 IoU

Detection基础模块之(一)IoU

4.2 mAP

Detection基础模块之(二)mAP

目标检测20年综述之(一)相关推荐

  1. 2021年小目标检测最新研究综述 很全面值得收藏

    摘要 小目标检测长期以来是计算机视觉中的一个难点和研究热点.在深度学习的驱动下,小目标检测已取得了重大突破,并成功应用于国防安全.智能交通和工业自动化等领域.为了进一步促进小目标检测的发展,本文对小目 ...

  2. 大盘点 | 2020年5篇目标检测算法最佳综述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Cynthia Yawain 编辑丨极市平台 本文为极市平台原创整理,如需转载,请联系极市小编. ...

  3. 检测到目标服务器启用了trace方法_CVPR2019目标检测方法进展综述

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

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

    CVPR2019目标检测方法进展综述 文章目录: 一.二维目标检测的优化方向 1.基于目标检测的backbone和特征提取 2.基于优化的算法 3. 基于优化损失函数的方法 4.基于优化NMS的方法 ...

  5. 睿智的目标检测20——利用mAP计算目标检测精确度

    睿智的目标检测20--利用mAP计算目标检测精确度 学习前言 GITHUB代码下载 知识储备 1.IOU的概念 2.TP TN FP FN的概念 3.precision(精确度)和recall(召回率 ...

  6. 目标检测相关算法综述

    目标检测相关算法综述 1. R-CNN[1] 2. SPP-Net[2] 3.Fast Rcnn[3] 4.Faster Rcnn[4] 5.Cascade Rcnn[5] 6.FPN[6] 7.YO ...

  7. 论文笔记:Object Detection in 20 Years: A Surve(目标检测20年研究综述)

    文章目录 1.介绍 2.目标检测的20年发展历程 2.1.目标检测路线 2.1.1.里程碑:传统检测器 2.1.2.基于CNN的两阶段检测器 2.1.3.基于CNN的单阶段检测器 2.2.目标检测数据 ...

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

    作者 | 周强 来源 | 我爱计算机视觉(id:aicvml) 计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注. 几天前,arXiv新 ...

  9. 目标检测20年(Object Detection in 20 Years)

    Object Detection in 20 Years: A Survey Zhengxia Zou, Zhenwei Shi, Member, IEEE, Yuhong Guo, and Jiep ...

最新文章

  1. fastdfs java client_fastdfs-client-java操作fastdfs5.0.4
  2. 【算法学习笔记】43.动态规划 逆向思维 SJTU OJ 1012 增长率问题
  3. android 自定义listpreference,java-Android,单击ListPreference项时显示对话框
  4. mysql打包成docker_web应用如何打包成docker镜像?
  5. 【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程
  6. 矩阵累积相乘 java_累积:轻松自定义Java收集器
  7. 深入理解C++中的explicit关键字
  8. Wp keyword link 标签自动内链/文章关键词内链 WordPress插件
  9. linux下批量新增数据,linux下批量插入数据到mysql
  10. ROS的学习(十四)用C++写一个简单的接收者
  11. Java分布式ID生成解决方案
  12. XML 用户界面语言(XUL)开发简介
  13. Doris ODBC外表使用
  14. 用完加速器国内的网址打不开了?
  15. linux更新网卡驱动
  16. 微信小程序页面跳转后不显示内容
  17. OK6410A 开发板 (八) 6 linux-5.11 OK6410A 详细解析 从 u-boot 的 theKernel 到 linux的 start_kernel
  18. 【JAVA程序设计】(C00101)基于Servlet的在线鞋店销售管理系统
  19. 2017 阿里巴巴矢量图标库 导入所选图标到jsp页面步骤
  20. python---发送邮件(zmail)

热门文章

  1. 【TA工具】快速结合/叠加多张法线贴图
  2. Windows 11最新版中恢复IE11浏览器的方法2023更新
  3. 飞机订票系统测试用例
  4. 唯晶科技宣布PSVR游戏《揭秘计划》将开源给合作伙伴
  5. ionic开发中的ion-list设置item右侧的向右箭头
  6. 服务器显示屏开机之后显示超频,电脑开机显示超频怎么办
  7. Sea.js简单使用
  8. android 定点定时任务,Android定时任务
  9. 五、SQL–索引/约束④(check约束)
  10. css transition left 不起作用