剑客
关注科技互联网

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

雷锋网 (公众号:雷锋网) 按:作者山世光博士,中科院计算所研究员、博导,主要从事计算机视觉、模式识别、机器学习等相关研究工作。迄今已发表CCF A类论文50余篇,全部论文被Google Scholar引用9000余次。现任IEEE TIP,TIPNeurocomputing和PRL等国际学术刊物的编委(AE)。研究成果曾获2005年度国家科技进步二等奖和2015年度国家自然科学奖二等奖。

本文中,山世光博士主要给我们分享梳理了物体检测技术的近期进展。

 1.  Viola-Jones人脸检测器

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

物体检测在整个计算机领域里,比较成功的一个例子,就是在大概2000年前后出现的Viola-Jones人脸检测器,其使得物体检测相比而言成了一项较为成熟的技术。

这个方法基本的思路就是滑动窗口式的,用一个固定大小的窗口在输入图像进行滑动,窗口框定的区域会被送入到分类器,去判断是人脸窗口还是非人脸窗口。滑动的窗口其大小是固定的,但是人脸的大小则多种多样,为了检测不同大小的人脸,还需要把输入图像缩放到不同大小,使得不同大小的人脸能够在某个尺度上和窗口大小相匹配。这种滑动窗口式的做法有一个很明显的问题,就是有太多的位置要去检查,去判断是人脸还是非人脸。

判断是不是人脸,这是两个分类问题。在2000年的时候,采用的是AdaBoost分类器。进行分类时,分类器的输入用的是Haar特征,这是一种非常简单的特征,在图上可以看到有很多黑色和白色的小块,Haar特征就是把黑色区域所有像素值之和减去白色区域所有像素值之和,以这个差值作为一个特征,黑色块和白色块有不同的大小和相对位置关系,这就形成了很多个不同的Haar特征。AdaBoost分类器是一种由多个弱分类器组合而成的强分类器,Viola-Jones检测器是由多个AdaBoost分类器级联组成,这种级联结构的一个重要作用就是加速。

2000年人脸检测技术开始成熟起来之后,就出现了相关的实际应用,例如数码相机中的人脸对焦的功能,照相的时候,相机会自动检测人脸,然后根据人脸的位置把焦距调整得更好。

 2.  可变形部件模型(DPM)

Viola-Jones人脸检测器之后,在2009年出现了另外一个比较重要的方法: deformable part model(DPM),即可变形部件模型。

就人脸检测而言,人脸可以大致看成是一种刚体,通常情况下不会有非常大的形变,比方说嘴巴变到鼻子的位置上去。但是对于其它物体,例如人体,人可以把胳膊抬起来,可以把腿翘上去,这会使得人体有非常多非常大的非刚性变换,而DPM通过对部件进行建模就能够更好地处理这种变换。

刚开始的时候大家也试图去尝试用类似于Haar特征+AdaBoost分类器这样的做法来检测行人,但是发现效果不是很好,到2009年之后,有了DPM去建模不同的部件,比如说人有头有胳膊有膝盖,然后同时基于局部的部件和整体去做分类,这样效果就好了很多。DPM相对比较复杂,检测速度比较慢,但是其在人脸检测还有行人和车的检测等任务上还是取得了一定的效果。后来出现了一些加速DPM的方法,试图提高其检测速度。DPM引入了对部件的建模,本身是一个很好的方法,但是其被深度学习的光芒给盖过去了,深度学习在检测精度上带来了非常大的提升,所以研究DPM的一些人也快速转到深度学习上去了。

 3. R-CNN 系列 

对于基于深度学习的物体检测方法,这里把最近两三年里面出现的比较有代表性的工作做一个概括性地介绍。一个就是R-CNN系列,另一个是传统方法和深度学习的方法的结合。这些方法出现之后带来检测性能的极大的提升,待会我的博士生会介绍性能提升的具体情况,大家可以看到,检测精度几乎是成倍地增长。当然这里面还是存在一些问题,就是检测速度,我知道很多工业界的朋友都在想办法对基于深度学习的检测方法进行加速。

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

所谓的R-CNN,是基于这样一种非常简单的想法,对于输入图像,通过selective search等方法,先确定出例如2000个最有可能包含物体的窗口,对于这2000个窗口,我们希望它能够对待检测物体达到非常高的召回率。然后对这2000个中的每一个去用CNN进行特征提取和分类。对这2000个区域都要去跑一次CNN,那么它的速度是非常慢的,即使每次只需要0.5秒,2000个窗口的话也是需要1000秒,为了加速2014年的时候何凯明提出了SPP-net,其做法是对整个图跑一次CNN,而不需要每一个窗口单独做, 但是这样有一个小困难 ,就是这2000个候选窗口每一个的大小都不一样,为了解决这个问题,SPP-net设计了spatial pyramid pooling,使得不同大的小窗口具有相同维度的特征。这个方法使得检测时不需要对每一个候选窗口去计算卷积,但是还是不够快,检测一张图像还是需要几秒的时间。

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

Fast R-CNN借鉴了SPP-net的做法,在全图上进行卷积,然后采用ROI-pooling得到定长的特征向量。 例如不管窗口大小是多少,转换成7×7这么大。

Fast R-CNN还引入了一个重要的策略,在对窗口进行分类的同时,还会对物体的边框进行回归,使得检测框更加准确。前面我们说候选窗口会有非常高的召回率,但是可能框的位置不是很准,例如一个人体框可能是缺胳膊缺腿,那么通过回归就能够对检测框进行校准,在初始的位置上求精。Fast R-CNN把分类和回归放在一起来做,采用了多任务协同学习的方式。

Faster R-CNN相比于Fast R-CNN又带来了一个比较大的变化,其将产生候选窗口这一步也用深度网络来做,并且让这个网络和Fast R-CNN的分类网络共享了卷积层,这个产生候选窗口的网络叫做RPN,是Faster R-CNN的核心。

RPN替代了之前非常慢的Selective Search,而且通常所用的候选窗口的数目也比较少,只需要300个就够了,这使得后面分类的速度会更快。为了检测各种各样的物体,RPN引入了所谓anchor box的设计,具体来说,RPN在最后一个卷积层输出的特征图上,先用3×3的卷积得到每个位置的特征向量,然后基于这个特征向量去回归9个不同大小和长宽比的窗口,如果特征图的大小是40×60,那么总共就会有大约2万多个窗口,把这些窗口按照信度进行排序,然后取前300个作为候选窗口,送去做最终的分类。通过用RPN替换Selective Search,并采用共享卷积层的方式,同时降低了候选窗口的数量,Faster R-CNN在速度上有了明显提高,其在GPU上可以达到5fps的速度。

4. 回归位置——YOLO&SSD

2015年出现了一个名为YOLO的方法,其最终发表在CVPR 2016上。这是一个蛮奇怪的方法,对于给定的输入图像,YOLO不管三七二十一最终都划分出7×7的网格,也就是得到49个窗口,然后在每个窗口中去预测两个矩形框。这个预测是通过全连接层来完成的,YOLO会预测每个矩形框的4个参数和其包含物体的信度,以及其属于每个物体类别的概率。YOLO的速度很快,在GPU上可以达到45fps。

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

在YOLO之后,在2015年Liu Wei提出了名为SSD的方法。前面提到的YOLO有一个明显的缺点,就是最多只能检测7×7=49个物体,如果图像中有超过49个物体,那么肯定会有检测不到的,YOLO在每个网格里面只会检测一个物体,如果一个网格里面同时放入两个物体,那么其中一个就会被漏检。

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

相比之下,SSD采用了类似于RPN中anchor box的机制,YOLO基于整个特征图用全局信息一起去回归所有位置的检测框,而SSD是用卷积基于局部特征去回归各个位置的检测框,并且SSD还用到了不同层的特征,之前YOLO只用了最后一个卷积层上的特征,这样做的 缺点就是难以检测小尺度的物体 ,最后一个卷积层上的神经元其感受野会非常大,小尺度的物体在这上面的特征就非常不明显 。从速度上来看,在一些情况下, SSD甚至会比YOLO更快,在GPU上达到58fps的速度

5. Cascade CNN

在物体检测领域,过去有这样一种现象,就是对每一个物体我们都需要去设计和学习单独的检测器,例如做人脸检测和车辆检测,两个检测器特征会不一样,分类器也不一样,对于每一类物体,需要去尝试不同的特征和分类器的组合。但是到了现在,不管是R-CNN那一系列方法,还是YOLO和SDD,都没有在物体类别上有任何限制,可以检测人脸,也可以同时检测其他类别的物体,这是一个非常重要的优势。但是在特定类别物体的检测上,现在也还是有一些专门的方法,比方说做人脸检测的Cascade CNN,其用CNN替换了AdaBoost分类器,为了保证速度足够快,其采用非常简单的CNN,比方说把卷积核的数量控制得非常少。在cascade的前面级上,需要非常快速地处理滑动窗口,因此用的CNN会非常简单,到后面级上窗口变少,分类难度变大,会需要稍微复杂一点的CNN。目前Cascade CNN在公开的人脸检测评测集FDDB上,在产生100个误检的的时候,召回率能够达到85%。

  6. 总结

上面介绍了一些代表性的基于深度学习的物体检测方法,简单总结一下:

  • 首先深度学习给检测精度确实带来了非常大的提升。

以ImageNet上的物体检测任务为例,mAP从2013年的0.23提升到了2015年的0.62,这个变化是非常显著的。

  • 其次,物体检测方法中发生了的一个重要的变化,就是bounding box regression的引入。 回归的方式开始兴起,这不仅有利于定位,还有助于得到更为准确的检测框。

  • 最后,产生窗口的方式有很大的变化,从原来遍历式的滑动窗口,转变成了去寻找最有可能出现物体的窗口,只对少量的窗口去进行分类。

雷锋网注:本文由大牛讲堂授权发布,如需转载请联系原作者,并注明作者和出处,不得删减内容。有兴趣可以关注公号【地平线机器人技术】,了解最新消息。

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址