查看原文
其他

讲堂干货No.1|山世光-基于深度学习的目标检测技术进展与展望

2016-08-25 HorizonRobotics

为技术干货而生的地平线《大牛讲堂》第一期-“自动驾驶系统中的目标检测技术”,已经圆满结束。本期大牛云集,我们很荣幸邀请到中科院研究员、博士生导师山世光博士;中科院博士邬书哲;地平线联合创始人&算法副总裁黄畅博士来到了现场,给现场观众奉献了两个小时的干货盛宴。
想听技术干货,就来大牛讲堂。我们会持续输出技术干货,并给大家提供一个跟技术大牛交流的平台。这个平台从产业到科研,跨越不同层面。
小编也特此整理了现场的技术干货,与大家一起回顾这场技术洪流。



山世光

博士


中科院计算所研究员、博导主要从事计算机视觉、模式识别、机器学习等相关研究工作。迄今已发表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得到定长的特征向量,例如不管窗口大小是多少,转换成7x7这么大。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在最后一个卷积层输出的特征图上,先用3x3的卷积得到每个位置的特征向量,然后基于这个特征向量去回归9个不同大小和长宽比的窗口,如果特征图的大小是40x60,那么总共就会有大约2万多个窗口,把这些窗口按照信度进行排序,然后取前300个作为候选窗口,送去做最终的分类。通过用RPN替换Selective Search,并采用共享卷积层的方式,同时降低了候选窗口的数量,Faster R-CNN在速度上有了明显提高,其在GPU上可以达到5fps的速度。


4. 回归位置——YOLO&SSD

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



在YOLO之后,在2015年Liu Wei提出了名为SSD的方法。前面提到的YOLO有一个明显的缺点,就是最多只能检测7x7=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的引入,回归的方式开始兴起,这不仅有利于定位,还有助于得到更为准确的检测框;最后,产生窗口的方式有很大的变化,从原来遍历式的滑动窗口,转变成了去寻找最有可能出现物体的窗口,只对少量的窗口去进行分类。




“万物智能”的地平线机器人正在招聘中

岗位包括但不限于

算法、硬件、软件工程方向


如果你对这个未来团队感兴趣

请点击阅读原文

进入地平线招聘页面查看信息

并投递简历至

dream@hobot.cc


开启未来之门的钥匙

就在这里!









您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存