今天我与大家分享的是CVPR2016年会议中关于目标检测的部分相关工作,这一篇文章首先在
深度学习大讲堂
发出,这里算是转载吧,在此也给深度学习大讲堂做个广告。文章所提到的内容不涉及具体的实现细节,更多是从整个工作的出发点和解决问题的思路出发进行讨论,下边是具体的内容。

2016年的CVPR会议目标检测(在这里讨论的是2D的目标检测,如图1所示)的方法主要是基于卷积神经网络的框架,代表性的工作有ResNet[1](KaimingHe等)、YOLO[5](JosephRedmon等)、LocNet[7](SpyrosGidaris等)、HyperNet[3](Tao Kong等)、ION[2](SeanBell等)、G-CNN[6](MahyarNajibi等)。在这里之所以把ResNet也放进来,是因为有效的特征对于目标检测领域是极为重要的。

图1:2D目标检测示意图

对话CVPR2016:目标检测新进展

在目标检测中,以下几个指标非常重要:(a)识别精度;(b)识别效率;(c)定位准确性。以上的几个工作或者侧重识别率和效率,或者通过某种方式提高定位的准确性,下面分别展开进行描述。

一、识别精度

说起识别精度,不得不提目标检测中衡量检测精度的指标mAP(mean average precision)。简单来讲就是在多个类别的检测中,每一个类别都可以根据recall和precision绘制一条曲线,那么AP就是该曲线下的面积,而mAP是多个类别AP的平均值,这个值介于0到1之间,且越大越好。具有代表性的工作是ResNet、ION和HyperNet。

ResNet:何凯明的代表作之一,获得了今年的best paper。文章不是针对目标检测来做的,但其解决了一个最根本的问题:更有力的特征。检测时基于FasterR-CNN的目标检测框架,使用ResNet替换VGG16网络可以取得更好的检测结果。(实际上,使用ResNet网络代替ZF, VGG,GoogleNet等网络模型无论在图像分类、目标检测还是图像分割等任务上都可以大大提高识别的准确率)。

图2:ResNet获得CVPR2016的best paper

对话CVPR2016:目标检测新进展

ION(inside-outside-network):这个工作的主要贡献有两个,第一个是如何在FastR-CNN的基础之上增加context信息,所谓context在目标检测领域是指感兴趣的ROI周围的信息,可以是局部的,也可以是全局的。为此,作者提出了IRNN的概念,这也就是outside-network。第二个贡献是所谓skip-connection,通过将deepConvNet的多层ROI特征进行提取和融合,利用该特征进行每一个位置的分类和进一步回归,这也就是inside-network。

依靠这两个改进,ION可以在Pascal VOC 2007数据集上边提高大约5个百分点。同时也获得了COCO2015 detection竞赛的best student entry。

图3:Inside-Outside Net (ION)

对话CVPR2016:目标检测新进展

HyperNet:文章的出发点为一个很重要的观察:神经网络的高层信息体现了更强的语义信息,对于识别问题较为有效;而低层的特征由于分辨率较高,对于目标定位有天然的优势,而检测问题恰恰是识别+定位,因此作者的贡献点在于如何将deepConvNet的高低层特征进行融合,进而利用融合后的特征进行regionproposal提取和进一步目标检测。不同于FasterR-CNN,文章的潜在Anchor是用类似于BING[4]的方法通过扫描窗口的方式生成的,但利用的是CNN的特征,因此取得了更好的性能。

通过以上的改进策略,HyperNet可以在产生大约100个regionproposal的时候保证较高的recall,同时目标检测的mAP相对于FastR-CNN也提高了大约6个百分点。

图4:HyperNet 框架

对话CVPR2016:目标检测新进展

二、识别效率

YOLO:这是今年的oral。这个工作在识别效率方面的优势很明显,可以做到每秒钟45帧图像,处理视频是完全没有问题的。YOLO最大贡献是提出了一种全新的检测框架——直接利用CNN的全局特征预测每个位置可能的目标,相比于R-CNN系列的regionproposal+CNN 这种两阶段的处理办法可以大大提高检测速度。今年新出来的SSD[11]方法虽然在识别率上边有了很大的提升,但YOLO的先驱作用是显而易见的。

图5:YOLO识别框架

对话CVPR2016:目标检测新进展

G-CNN:不管是Fast R-CNN[9],还是Faster R-CNN,或者像HyperNet这样的变种,都需要考虑数以万计的潜在框来进行目标位置的搜索,这种方式的一个潜在问题是负样本空间非常大,因此需要一定的策略来进行抑制(不管是OHEM[8]还是regionproposal方法,其本质上还是一种抑制负样本的工作)。G-CNN从另一个角度来克服这个问题。G-CNN在在初始化的时候不需要那么多框,而是通过对图像进行划分(有交叠),产生少量的框(大约180个),通过一次回归之后得到更接近物体的位置。然后以回归之后的框作为原始窗口,不断进行迭代回归调整,得到最终的检测结果。

经过五次调整之后,G-CNN可以达到跟Fast R-CNN相当的识别性能,但速度是FastR-CNN的5倍(3fps)。

图6:G-CNN示意图

对话CVPR2016:目标检测新进展

图7:G-CNN训练过程

对话CVPR2016:目标检测新进展

三、准确性

LocNet:以上提到的工作都是在做整个目标检测的框架,而LocNet在做另一件事情—如何产生更准确的boundingbox?

图8:LocNet 示意图

对话CVPR2016:目标检测新进展

在目标检测的评价体系中,有一个参数叫做IoU,简单来讲就是模型产生的目标窗口和原来标记窗口的交叠率。在PascalVOC中,这个值为0.5。而2014年以来出现的MSCOCO竞赛规则把这个IoU变成了0.5-1.0之间的综合评价值,也就是说,定位越准确,其得分越高,这也侧面反映了目标检测在评价指标方面的不断进步。

回到这个话题,如何产生更准确的目标位置呢?LocNet的解决方案是:针对每一个给定的初始框进行适当的放大,然后用一个CNN的网络回归出这个放大后的框包含的那个正确框的位置。为了达到这个目标,需要定义回归方式,网络以及模型,具体的细节参见[7]。

经过把原始的框(比如selective search生成的)进行再一次回归之后,再放入FastR-CNN进行检测,在IoU=0.5的情况下,在PascalVOC 数据集上mAP可以提升大约5个百分点,而IoU=0.7时可以达到13个百分点的提升,效果还是挺惊人的。

结语

目标检测是计算机视觉中基础而且热门的领域,最近两年的由于深度学习的影响产生了巨大的进步,相信在未来的一两年时间有更优秀的工作出现。

注:以上提到的内容仅代表作者自己的观点,如有错误之处欢迎批评指正。

[1] He K, Zhang X, Ren S, etal. Deep residual learning for image recognition. In CVPR 2016

[2] Bell S, Zitnick C L,Bala K, et al. Inside-outside net: Detecting objects in context with skippooling and recurrent neural networks. In CVPR 2016

[3] Kong T, Yao A, Chen Y,et al. HyperNet: Towards Accurate Region Proposal Generation and Joint ObjectDetection. In CVPR 2016

[4] Cheng M M, Zhang Z, LinW Y, et al. BING: Binarized normed gradients for objectness estimation at300fps. In CVPR 2014

[5] Redmon J, Divvala S,Girshick R, et al. You only look once: Unified, real-time object detection. InCVPR 2016

[6] Najibi M, Rastegari M,Davis L S. G-CNN: an Iterative Grid Based Object Detector. In CVPR 2016

[7] Gidaris S, Komodakis N.LocNet: Improving Localization Accuracy for Object Detection. In CVPR 2016

[8] Shrivastava A, Gupta A,Girshick R. Training region-based object detectors with online hard examplemining. In CVPR 2016

[9] Girshick R. Fast R-CNN.In ICCV 2015

[10] Ren S, He K, Girshick R, et al. Faster R-CNN: Towardsreal-time object detection with region proposal networks. In NIPS 2015

[11] Liu W, Anguelov D, Erhan D, et al. SSD: Single ShotMultiBox Detector[J]. arXiv preprint arXiv:1512.02325, 2015.