1、目标检测算法综述*(*大学 *学院 广州 510006)摘要:从简单的图像分类到三维姿势预测 (3D-poseestimation),计算机视觉 (Computer Vision) 领域一直不缺乏有趣的问题,其中就包括对象/目标检测 (Object Detection)。和许多其他的计算机视觉问题一样,目标检测仍然没有一个显而易见的最优方法,这意味着这个领域还有很多潜力。本文先从对象检测与其他计算机视觉问题开始,继而对经典传统到现在利用深度学习的目标检测算法进行了归纳总结,综述了这些算法是怎么解决目标检测的困难与挑战的,主要是现在用得比较多的性能较好的深度学习目标检测算法,最后介绍了目标检测算
2、法的最新应用和发展趋势。关键词:目标检测;计算机视觉;深度学习;0 引言在本文中,我们将深入了解目标检测的实际应用、作为机器学习的目标检测的主要问题是什么、以及深度学习如何在这几年里解决这个问题。1 对象检测与其他计算机视觉问题1.1 分类 (Classification)分类问题是计算机视觉中最著名的问题,它是识别出图像的类别,比如人、兔子、猫、狗等等。在学术界使用的最流行的数据集之一是 ImageNet,由数百万个分类图像组成,并在 ImageNet 大规模视觉识别 挑战 (ILSVRC) 的年度竞赛中使用。近年来,分类模型的精确度已经超过了人类的肉眼,所以这个问题已算是基本解决了的。1.
3、2 定位 (Localization)定位是在图像中找到某个对象的位置,和分类有些类似。定位有很多实际应用。例如,智能裁剪 (Smart Cropping) 基于对象所在的位置裁剪图像,或者常规的对象提取之后再用其他方法做进一步处理。它可以与分类结合定位对象,然后将其分类为多种可能的类别之一。1.3 目标检测 (Object Detection)定位和分类可以迭代起来,最终在一张图片汇总对多个目标进行检测和分类。目标检测是在图像上发现和分类一个变量的问题。目标检测与定位、分类相比,重要的区别是这个“变量”。目标检测的输出长度是可变的,因为检测到的对象的数量会根据图像的不同而变化。2 目标检测算
4、法与其原理2.1 传统方法尽管有很多不同类型的方法,我们关注两个最流行并且仍然被广泛使用的传统方法。第一个是由 Paul Viola 和 Michael Jones 在 2001 年的 Robust Real-time Object Detection 中提出的 Viola-Jones 框架。这种方法速度快且相对简单,可以进行实时但粗略的人脸检测,是在傻瓜相机中实现的一种算法。我们不会详细讨论它是如何工作的或者其训练过程。总的来说,它使用 Haar 特征和上千个不同的简单二分分类器。这些分类器采用逐级多尺度滑动窗口,并且极快地弃用不适用的分类器 1。另一种类似的传统方法是利用定向梯度 (His
5、togram of Oriented Gradients, HOG) 特征和支持向量机 (Support Vector Machine, SVM) 进行分类。 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog 特征结合 SVM 分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM 进行行人检测的方法是法国研究人员 Dalal 在 2005 的 CVPR 上提出的,而如今虽然有很多行人检测
6、算法不断提出,但基本都是以 HOG+SVM 的思路为主,它仍然采用多尺度滑动窗口,和 Viola-Jones 框架相比,虽然这个方法表现更佳,但速度要慢得多2。2.2 深度学习方法2.2.1 OverFeat2第一个目标检测的深度学习方法是 2013 年纽约大学发表的 OverFeat。他们提出了一种使用卷积神经网络的多尺度滑动窗口算法,用于目标的分类,定位和检测。并且还发明了一种新的基于边缘检测的定位目标位置的算法。2.2.2 R-CNN (Regions with CNN features) 基于卷积神经网络特征的区域方法5加州大学伯克利分校 (UC Berkeley) 提出的 R-CNN
7、 提高了对象检测50%,一个三阶段的方法:不同区域提出不同的提案,然后提取可能的对象(最常用的是选择性搜索算法);用 CNN 从区域提取特征;用 SVM 对区域进行分类。图 1 R-CNN 架构虽然它取得了很大的成绩,但训练 R-CNN 有很多问题。你必须为训练数据生成提案,再将 CNN 的特征提取应用到每一个区域,最后训练 SVM 分类器。2.2.3 快速 R-CNN (Fast R-CNN)6R-CNN 很快就彻底升级成深度学习方法。一年后,Ross Girshick(现在在微软)发表了快速 R-CNN。和 R-CNN 相似,它使用选择性搜索生成对象的提案。但是与 R-CNN 不同的是,R
8、-CNN 独立地提取各区域的所有特征,然后使用SVM 分类器;Fast R-CNN 在整个图片上使用 CNN,然后对特征映射使用“兴趣区域” (Region of Interest, RoI) 池化,最后使用前馈网络进行分类和回归。这种方法不仅速度更快,而且具有 RoI 池化层和全连接层,这使模型具有端到端的可微性并且更容易训练。Fast R-CNN 最大的缺点是,模型仍然依赖于选择性搜索(或其他区域方案算法),这使推断成为了它的瓶颈。图 2 Fast R-CNN 架构2.2.4 更快的 R-CNN (Faster R-CNN)7随后 R-CNN 系列迎来了第三次迭代:更快的 R-CNN。它添
9、加了区域提案网络 (Region Proposal Network, RPN),摆脱了选择性搜索算法,并可以做到端到端的训练。RPNs 的任务是基于 objectness 分数输出对象,然后用 RoI 池化 (RoI Pooling) 和完全连接层分类。具体细节本文就先不涉及了。图 3 Faster R-CNN 架构2.2.5 只看一次:统一实时目标检测 YOLO (You Only Look Once: Unified, Real-Time Object Detection) 8不久之后,Joseph Redmon 发布了统一实时对象检测 (YOLO) 的论文。YOLO 提出了一种简单的卷积
10、神经网络方法,其结果和速度都很好,并且是第一次允许实时的目标检测。图 4 YOLO 架构2.2.6 SSD 和 R-FCN最后,有两篇著名的论文:单镜头探测器 (Single Shot Detector, SSD),它使用了 YOLO 和多尺寸的卷积功能地图,达到了更好的结果和速度;以及基于区域的完全卷积网络(Region-based Fully Convolutional Networks, R-FCN),它采用了 Faster R-CNN 结构中的卷积网络部分。3 目标检测的实际运用3.1 人脸识别 (Face Detection)自 21 世纪初以来,就出现了一些有人脸自动对焦功能的照相
11、机。虽然这是一个较窄的对象检测问题,但它的方法同样适用于其他类型的对象。同时,智能手机的普及,出现人脸识别手机解锁,人脸识别付款等功能,使得能够迁移平台的,快速的目标检测算法越来越重要。3.2 计数 (Counting)计数是一个简单但经常被忽略的对象检测应用。现实中我们需要计算机具有计数人、汽车、花朵甚至是微生物的能力,并应用于不同类型的系统。随着视频监控设备的不断涌现,利用计算机视觉将原始信息转换成结构化数据的机会比以往任何时候都要多。3.3 视觉搜索引擎 (Visual Search Engine)一个很好的例子是 Pinterest 的视觉搜索引擎,它使用对象检测构造数据通道从而对图像
12、不同部分建立索引。比如,当你搜索一个特定的钱包时,你可以找到不同情境下使用这个钱包的图片。这比仅仅找到类似的图像(如谷歌图片的反向搜索引擎)要强大得多。3.4 航拍图像分析 (Aerial Image Analysis)在如今这个有着廉价无人机和(还算)廉价的卫星发射的时代,我们的世界拥有了前所未有之多的数据。现在已经有公司使用 Planets 和 Descartes Labs等公司的卫星图像,应用对象检测来计算汽车、树木和船只的数量。这促使了从前不可能(或者非常昂贵)的高质量数据,现在有了普遍的应用。一些公司使用无人机,自动探测难以到达的地方(BetterView),或者进行通用的目标检测分
13、析(TensorFlight)。还有一些公司在不需要人工干预的情况下,解决了对象检测和定位的问题。4 目标检测的困难与挑战4.1 可变数量的对象 (Variable number of objects)我们之前提到了关于对象数量可变的问题,但我们却没讲它为什么是一个问题。在训练机器学习模型时,通常需要将数据表示为固定大小的向量。但是,由于图片中对象的数量事先不知道,所以我们不知道正确的输出维度。因此需要一些后期处理,这增加了模型的复杂性。一般使用滑动窗口的方法来处理可变数量的对象,通过滑动固定大小的窗口,在所有的地方生成固定大小的特征。在得到这些被过滤后的特征之后,一些被丢弃,另一些被合并以生
14、成最终的结果。4.2 调整对象检测窗口大小 (Resizing)另一个巨大的挑战是各种可能的对象大小,即在进行分类时,既希望占图片大部分的对象进行分类,又想要找到一些可能只有 12 个像素、或者是原始图像一小部分的小对象。使用不同尺寸的滑动窗口可以解决这个问题,但效率很低。4.3 建模第三个挑战是同时解决两个问题如何用一个简单的模型解决两种不同的需求,即定位和分类。参考文献1Paul Viola Michael J. Jones,Robust Real-time Object Detection,CRL ,February 20012 Chandrasekhar et al.,CHoG: Co
15、mpressed Histogram of Gradients - Alow bit rate feature descriptor, CVPR 20093Pierre Sermanet ,David Eigen and Xiang Zhang,OverFeat:Integrated Recognition, Localization and Detection using Convolutional NetworksarXiv:1312.6229v4 cs.CV 24 Feb 204N. Dalal and B. Triggs,Histograms of Oriented Gradients
16、 for HumanDetection,In CVPR, pages 886-893, 20055 R. Girshick, J. Donahue, T. Darrell, and J. Malik. Regionbased convolutional networks for accurate object detection and segmentation, TPAMI, 2015. 5, 7, 86Ross Girshick,Fast R-CNN.7Shaoqing Ren, Kaiming He, Ross Girshick, and Jian S,Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,arXiv:1506.01497v3 cs.CV 6 Jan 2016