目标检测综述

原创:悬鱼铭


目标检测(Object Detection)任务是计算机视觉中非常重要的基础问题,也是解决图像分割、目标跟踪、图像描述等问题的基础。目标检测是检测输入图像是否存在给定类别的物体,如果存在,输出物体在图像中的位置信息(矩形框的坐标值表示,Xmin、Ymin、Xmax、Ymax)。


早期,传统目标检测算法还没有使用深度学习,一般分为三个阶段:区域选取、特征提取、特征分类。

区域选取:采用滑动窗口(Sliding Windows)算法,选取图像中可能出现物体的位置,这种算法会存在大量冗余框,并且计算复杂度高。

特征提取:通过手工设计的特征提取器(如SIFT和HOG等)进行特征提取。

特征分类:使用分类器(如SVM)对上一步提取的特征进行分类。


传统算法HOG+SVM的作用如下:



2014年的R-CNN(Regions with CNN features)使用深度学习实现目标检测,从此拉开了深度学习做目标检测的序幕。目标检测大致可以分为一阶段(One Stage)模型和二阶段(Two Stage)模型。目标检测的一阶段模型是指没有独立地提取候选区域(Region Proposal),直接输入图像得到图中存在的物体类别和相应的位置信息。典型的一阶段模型有SSD(Single Shot multibox-Detector)、YOLO(You Only Look Once)系列模型等。二阶段模型是有独立地候选区域选取,要先对输入图像筛选出可能存在物体的候选区域,然后判断候选区域中是否存在目标,如果存在输出目标类别和位置信息。经典的二阶段模型有R-CNN、SPPNet、Fast R-CNN、Faster R-CNN


下图总结了目标检测中一些经典模型的发展历程:



一般来说,一阶段模型在计算效率上有优势,两阶段在检测精度上有优势。对于一阶段和二阶段模型在速度上和精度上的差异,一般有以下原因:

1. 多数一阶段模型是利用预设的锚框(Anchor Box)来捕捉图像可能存在物体的区域,图像中包含物体的框远少于总共的锚框,因而在训练分类器时正负样本数目极不平衡,这会导致分类器训练的效果不好。

2. 二阶段模型在会修正候选框的位置,带来更高的定位精度,同时也增加了模型复杂度。


接下来,简单介绍二阶段模型的发展过程。


R-CNN

首先使用无监督的选择性搜索(Selective Search, SS)方法将输入图像中颜色、纹理相近的区域合并,产生2000个候选区域;

然后截取这些候选区域相应的图像,裁剪缩放至固定的尺寸,依次送入CNN特征提取网络提取特征;

特征送入每一类的SVM分类器,判断是否属于此类;

使用线性分类器修正框位置和大小,最后对检测结果进行非极大值抑制(Non-Maximum Suppression,NMS)。


 

SPPNet

在RCNN中,要对候选区域裁剪缩放至固定的尺寸,会破坏截取图像的长宽比,损失一些信息。针对以上问题,SPPNet 提出了空间金字塔池化(Spatial Pyramid Pooling)层,该层置于 CNN的末端,输入不需要缩放至指定的大小。下图第一行是 R-CNN,第二行是 SPPNet,对比可以发现它们的区别。



SPPNet 的思路是对于任意大小的 feature map 首先分成 16、4、1 个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。



Fast R-CNN

Fast R-CNN 的思路与 SPPNet 一致,区别在于 Fast R-CNN 使用感兴趣区域池化( Region-of-Interest Pooling )而非空间金字塔池化。Fast R-CNN 相比 R-CNN 使用全连接网络代替之前的 SVM 分类器和线性回归器进行物体分类和检测框的修正。Fast R-CNN 有两个输出,一个是通过 softmax 层进行类别预测,另一个输出物体的检测框。


Faster R-CNN

Faster R-CNN 在 Fast R-CNN 的基础上,将其最耗时的候选区域提取用一个区域候选网络(Region Proposal Network,RPN)进行替代。在 faster R-CNN 中,一幅输入图像先由 RPN 提取候选区域,再取出各个候选区域对应的特征图,送入 Fast R-CNN (独立于 RPN 的后半部分)进行物体分类和位置回归。



接下来,简单介绍一阶段模型的发展过程。


R-CNN 系列将目标检测问题归结为分类问题,即先寻找目标可能存在的区域(Bounding box),然后对这些Box分类,从而确定目标。YoLo 则将目标检测问题转换为一个回归问题(Regreesion problem),直接预测出 boudning box 和相关的类别信息。YoLo 是一个可以端到端训练的单个网络(single network),它不需要单独的搜索 Region Proposals,也不需要单独的 Classifier,因此其检测速度特别快,YoLo 可以达到 45 FPS,而 Fast YoLo 可以达到 155FPS。YoLo 对背景的识别效果较好,且有一定的迁移性,但是 YoLo 最大的问题是对小目标的检测不准确。


YOLO v1

1. 将输入图像(m\times n)划分为S\times S个网格,如果一个物体的中心落在某个网格,则这个网格负责这个物体的检测。

2. 每个网格预测B 个 Bounding Box 的位置,这个 Box 的置信度得分,以及 Box 中是否存物体的概率。

Bounding Box 包含五个参数(中心x 坐标,中心 y 坐标,宽度,高度,置信度)

置信度得分表示该网格包含一个对象的可能性:Pr(containing an object) x IoU(pred, truth); 其中Pr=概率。

如果网格包含一个对象,则它将预测该对象属于每个类别的概率 

3. 将输入图像划分为S\times S个网格,每个网格预测B 个Bounding Box以及置信度,则最终的预测编码为S \times S \times (B\times 5 + C)


YOLO v2

YOLO v2 在 YOLO v1 的基础上做出了改进,大体可以分为网络结构的改善、先验框的设计及训练技巧。

1. 网络结构的改善,提出了一个全新的网络结构,称之为DarkNet。



BN层:在卷积层后面添加了批归一化(BN)层。

用连续3×3 卷积替代了 v1 版本中的 7×7 卷积,这样既减少了计算量,又增加了网络深度。此外,DarkNet 去掉了全连接层与 Dropout 层。

Passthrough 层:DarkNet 还进行了深浅层特征的融合。

2. 先验框的设计,YOLO v2 首先使用了聚类的算法来确定先验框的尺度。

3. 训练技巧,YOLO v2 采取了多种尺度的图片作为训练的输入。模型在训练过程中,每隔 10 个批次就改变输入图片的大小。


YOLO v3

YOLO v3 在 YOLO v2 的基础上做出了一些改动。

1. YOLO v3 是使用了Logistic 函数代 Softmax函数。原因在于,Softmax函数输出的多个类别预测之间会相互抑制,只能预测出一个类别,而Logistic分类器相互独立,可以实现多类别的预测。

2. YOLO v3 采用了更深的网络作为特征提取器(DarkNet-53),包含53个卷积层。为了避免深层网络带来的梯度消失问题,DarkNet-53借鉴了ResNet的残差思想,在基础网络中大量使用了残差连接。


最后,简单总结目标检测的论文下载链接。


目标检测英文综述

1. Object Detection in 20 Years: A Survey

2. A Survey of Deep Learning-based Object Detection

3. Recent Advances in Deep Learning for Object Detection

4. Imbalance Problems in Object Detection: A Review

5. Deep Domain Adaptive Object Detection: a Survey

6. Foreground-Background Imbalance Problem in Deep Object Detectors: A Review


目标检测论文

1. Selective Search for Object Recognition

2. R-CNN

3. Fast R-CNN

4. Faster R-CNN

5. YOLO v1-You Only Look Once: Unified, Real-Time Object Detection

6. YOLO v2-YOLO9000: Better, Faster, Stronger

7. YOLO v3: An Incremental Improvement


参考文献:

1. 深度学习之PyTorch物体检测实战,董洪义

2. 百面深度学习,葫芦娃

3. 目标检测(3)-SPPNet

4 .YOLO系列模型总结

5 .Object Detection Part 4: Fast Detection Models

6. RCNN、Fast RCNN、Faster RCNN对比

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容