目标检测算法:RCNN、YOLO vs DPM

以下内容节选自我的研究报告。

1. 背景

目标检测(object detection)简单说就是框选出目标,并预测出类别的一个任务。它是一种基于目标几何和统计特征的图像分割,将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要[1]。

随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、智能监控系统、军事目标检测及医学导航手术中手术器械定位等方面具有广泛的应用价值。

2. 人工特征

一般方法的步骤:滑窗提取特征->分类器分类

图2.2.1 DPM模型可视化

文献[2,3]提出的DPM模型应该是在目标检测这块最好的人工特征方法。它对HOG特征进行改进,并提出了全局和局部两个模型(如图2.2.1所示),大幅提高人工特征在目标检测上的精度。DPM的方法存在的缺点是特征相对复杂,计算速度慢,对于旋转、拉伸的物体检测效果不好。因为无人机视频普遍分辨率比较大,且视角不固定,所以如果将DPM直接用来解决无人机视频的目标检测问题,很可能无法保证实时性和模型的泛化性能。

在2013年以前,利用深度学习进行目标检测还未成为主流,大多数目标检测的方法还是借鉴DPM方法的思路进行改进,并没有发生本质变化的新方法提出,因而目标检测的研究工作遭遇了瓶颈。

3. 深度学习

在DPM方法遭遇瓶颈的时候,也有一部分人在研究如何利用深度学习进行目标检测。

文献[4]提出了可以利用深度学习来处理目标检测的问题,作者将检测当作一个回归boundingbox的问题来处理,优点是相比于用滑动窗口来提取特征的方式,这样的方法更高效,但是检测精度非常差,远远落后于人工特征的方法。

既然回归的方法效果不好,那么当作分类问题来处理会怎么样呢?Girshick在文献[5-8]中做了这样的一系列研究,形成了RCNN->SPPNet->fastRCNN->fasterRCNN的一条研究线。这类方法的一般步骤:候选区域生成->深度网络提取特征->分类器分类,回归修正。

为了解决“将目标检测当作分类问题处理会怎样?”这个问题,RCNN出现了。

RCNN:使用过分割[9]生成候选区域,再使用CNN提取特征,特征分别送入多个SVM分类,回归修正boundingbox,最后使用NMS和边缘检测再次修正,整个过程如图2.3.1所示。它的贡献是检测效果大幅提升,提出了用深度学习进行目标检测的新框架,但是缺点也很明显,各候选区域重复提取特征导致速度很慢。

图2.3.1 RCNN目标检测流程

SPPNet:在最后一个卷积层后设计了空间金字塔池化层,这样网络输入可以不是一个固定的尺寸,能最大程度避免拉伸、裁剪造成图像的信息损失。建立原始图像部分区域与提取特征的映射关系,对于给定区域,可以直接计算特征,避免重复卷积。

为了解决RCNN多个候选区域重复计算的问题,在借鉴SPPNet思想的基础上,fast-RCNN出现了。

fast-RCNN:整个过程如图2.3.2所示,与RCNN的不同在于有三个方面,加入了RoI pooling layer,这层与SPPNet的池化层作用相同;在充分实验的基础上,将SVM换成softmax;把分类和boundingbox回归放在同一个网络的后面进行,大幅减少了计算开销。它的优点在于避免重复卷积,同时整合了多个任务,计算效率进一步提升。现在整个网络的架构和优化已基本完成,制约速度的关键在于候选区域的生成。

图2.3.2 fast-RCNN目标检测流程

为了解决Region proposal速度慢的问题,faster-RCNN出现了。

faster-RCNN:它的核心思想是将候选区域生成也交给网络来做。因为在下一个目标检测的fast-RCNN中还需要修正目标位置,所以候选区域生成并不需要过于精确的方法。候选区域生成网络本质上也是一个fast-RCNN,它的输入是预先设置好的图像中的一个区域,输出是该区域属于前景还是背景和修正后的区域。这样的方法只指定了少数几个可能为目标的区域,无论是比起滑窗,还是比起过分割,都快上了很多。

通过这一系列工作,网络的作用由单纯提取特征演化为完成目标检测整个流程的一种深度架构,目标检测的精度和速度也一再提高。现在,关于Faster-RCNN系列的工作也遇到了问题,以分类问题对待目标检测暂时没有什么突破点,所以大家都在考虑以最开始的将目标检测单纯作为回归问题的思路进行研究。

RCNN系列的缺点在于将检测问题转化成了对图片局部区域的分类问题后,不能充分利用图片局部目标在整个图片中的上下文信息,于是文献[10]又提出了一种将目标检测作为回归问题的方法YOLO,整个过程如图2.3.3所示。

图2.3.3 YOLO目标检测流程

YOLO:将图像分成多个网格,分别回归boundingbox和信任值,最后以NMS过滤掉低分box。YOLO缺点在于对靠得很近的物体检测效果不好,泛化能力弱,由于损失函数的问题,定位误差是影响检测效果的主要原因。即使YOLO目前还不完善,即使它比不上已经非常完善的faster-RCNN,但它的速度和精度都要好于人工特征的方法,一旦解决了这些问题,性能将具有非常大的上升空间。

现在最新的目标检测方法为SSD,先占个坑,以后有时间再来写一下SSD。完全针对定位精度的研究工作LocNet等。

References:

   [1]    https://en.wikipedia.org/wiki/Object_detection

   [2]    Felzenszwalb P, McAllester D,Ramanan D. A discriminatively trained, multiscale, deformable partmodel[C]//CVPR, 2008: 1-8.

   [3]    Felzenszwalb P F, Girshick R B,McAllester D, et al. Object detection with discriminatively trained part-basedmodels[J]. PAMI, 2010, 32(9): 1627-1645.

   [4]    Szegedy C, Toshev A, Erhan D.Deep neural networks for object detection[C]//NIPS. 2013: 2553-2561.

   [5]    Girshick R, Donahue J, DarrellT, et al. Rich feature hierarchies for accurate object detection and semanticsegmentation[C]//CVPR. 2014: 580-587.

   [6]    Girshick R. Fast r-cnn[C]//ICCV.2015: 1440-1448.

   [7]    Ren S, He K, Girshick R, et al.Faster R-CNN: Towards real-time object detection with region proposalnetworks[C]//NIPS. 2015: 91-99.

   [8]    He K, Zhang X, Ren S, et al.Spatial pyramid pooling in deep convolutional networks for visualrecognition[C]//ECCV, 2014: 346-361.

   [9]    Uijlings J R R, van de Sande KE A, Gevers T, et al. Selective search for object recognition[J]. IJCV, 2013,104(2): 154-171.

 [10]    Redmon J, Divvala S, GirshickR, et al. You only look once: Unified, real-time object detection. CVPR, 2016.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

Effective Deep Memory Networks for Relation Extraction

Citation:Zeng, D., Liu, K., Chen, Y., & Zhao, J. (2015). Distant Supervision for...

22850
来自专栏机器之心

何恺明等研究者:真的需要减少ImageNet预训练吗?

ImageNet 图像预训练在各种视觉任务中一直都极为常见,我们会假定预训练模型的前面层级能抽取到足够的一般图像信息。因此保留预训练模型前面层级的权重就相当于迁...

7920
来自专栏机器之心

入门 | 机器学习新手必看10大算法

356110
来自专栏大数据挖掘DT机器学习

一种面向高维数据的集成聚类算法

一种面向高维数据的集成聚类算法 聚类集成已经成为机器学习的研究热点,它对原始数据集的多个聚类结果进行学习和集成,得到一个能较好地反映数据集内在结构的数据划分。...

54170
来自专栏架构师之路

3分钟懂线性回归预测算法瞅一眼,懂个概念也值得

线性回归(linear-regression)预测算法C++实现 上一期,和大家分享了K-means聚类算法的基本概念和实现要点(漏了的同学欢迎加公众号回顾),...

40470
来自专栏机器学习算法与Python学习

Machine Learning -- Boosting

本来想写随机森林的但是由于其中用到了太多提升的思想,所以就先整理整理提升的相关概念。 Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造...

34260
来自专栏CDA数据分析师

机器学习新手必看十大算法

编译 机器之心 原文链接:https://towardsdatascience.com/a-tour-of-the-top-10-algorithms-for...

44960
来自专栏目标检测和深度学习

深度学习最新方法:Snapshot Ensembling以及OUT!随机加权平均才是未来!!!

47320
来自专栏Android相关

机器学习介绍

设计和分析一些让计算机可以自动“学习“的算法。机器学习算法是一类从庞大的数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。

17910
来自专栏null的专栏

可扩展机器学习——概述

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图...

34660

扫码关注云+社区

领取腾讯云代金券