前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测1: 目标检测20年综述之(一)

目标检测1: 目标检测20年综述之(一)

作者头像
枫桦
发布2022-08-02 13:56:01
7100
发布2022-08-02 13:56:01
举报
文章被收录于专栏:AI算法札记

本文是目标检测方向的第一篇,目标检测是当前个人最熟悉的任务之一,这是很久之前在知乎专栏写的文章,曾经被多个公众号转载,但是因为一些客观原因,无意中注销了知乎。在分享目标检测相关的总结之前,先介绍一下目标检测任务很有必要,而了解一个任务最简单的方式就是通过综述,所以重新展示一下该篇。

这是一篇综述的阅读笔记:《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。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Introduction
  • 2. 目标检测Road Map
    • 2.1 传统目标检测器
      • 2.1.1 VJ 检测器
      • 2.1.2 HOG检测器
      • 2.1.3 Deformable Part-based Model (DPM)
    • 2.2 基于CNN的Two-stage目标检测器
      • 2.2.1 RCNN
      • 2.2.2 SPPNet
      • 2.2.3 Fast RCNN
      • 2.2.4 Faster RCNN
      • 2.2.5 R-FCN&&Light-head RCNN
      • 2.2.6 Feature Pyramid Networks(FPN)
    • 2.3 基于CNN的One-Stage目标检测器
      • 2.3.1 You Only Look Once (YOLO)
      • 2.3.2 Single Shot MultiBox Detector (SSD)
      • 2.3.3 RetinaNet
  • 3.目标检测数据集
    • 3.1 Pascal VOC
      • 3.2 ILSVRC
        • 3.3 MS-COCO
          • 3.4 Open Images
            • 3.5 其他检测任务数据集
              • 3..5.1 行人检测数据集
              • 3.5.2 人脸检测数据集
              • 3.5.3 文本检测数据集
              • 3.5.4 交通信号灯和交通标志数据集
              • 3.5.5 遥感目标检测数据集
          • 4. 评价指标
            • 4.1 IoU
              • 4.2 mAP
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档