目标检测是很多计算机视觉应用的基础,比如实例分割、人体关键点提取、人脸识别等,它结合了目标分类和定位两个任务。现代目标检测器的框架可分为two-stage和one-stage两种类型,two-stage框架分为两步,精度高,但速度较慢,不能到、达到实时检测:

1) 区分前景物体框与背景并为它们分配适当的类别标签;

2) 回归一组系数使得最大化检测框和目标框之间的交并比或其它指标,最后,使用非极大值抑制算法移除冗余的边界框(对同一目标的重复检测)。

one-stage为一步,在回归和目标分类同时进行,一次给出目标的回归框和类别,速度快能够达到实时,但精度低于two-stage的框架。

基于深度学习的目标检测主要的算法模型如图1所示:




深度学习目标检测获取轮廓 基于深度图的目标检测_卷积

图1 图像目标检测网络模型


R-CNN遵循传统目标检测的思路,同样采用提取框,对每个框提取特征、图像分类、非极大值抑制四个步骤进行目标检测,但是做了部分改进,一是经典目标检测算法使用滑动窗法依次判别所有可能的区域,而R-CNN预先提取一系列较可能是物体的候选区域,之后在这些候选区域上提取特征,进行判断,大大减少了计算量。二是将传统的特征(如SIFT,HOG特征等)换成了深度卷积网络提特征。相比传统目标检测方法,R-CNN在目标检测精度上有了较大提升,在VOC2007数据集上传统的目标检测方法最高map为40%左右,而R-CNN的map达到了58.5%。但R-CNN计算量很大,占用磁盘空间也大。为了解决CNN网络需要固定尺寸的图像输入问题,何恺明等提出了SPP-Net, SPP-Net只对图像进行一次卷积,之后使用SPP-Net在特征图上提取特征。其在VOC 2007数据集上,在达到相同或更好的性能情况下,比R-CNN方法快24-102倍。受SPP-Net启发,Ross Girshick在2015年推出了Fast R-CNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。在保证效果的同时提高了效率,基于VGG 16的Fast R-CNN模型在训练速度上比R-CNN快约9倍,比SPP-Net快约3倍,测试速度比R-CNN快约80倍,比SPP-Net快约4倍,在VOC 2007上的map约在66%-67%之间。为了解决Fast R-CNN选择性搜索的耗时问题,Shaoqing Ren等提出了Faster R-CNN网络,在Fast R-CNN中引入Region Proposal Network替代Selective Search,同时一如anchor box机制,将特征提取、proposal提取、Bounding Box Regression、分类整合到一个网络中,较大的提升了目标检测的速度,相比Fast R-CNN在相同精度下,检测速度提升了10倍。虽然Faster R-CNN在检测速度上有了较大提升,但1s只能处理5帧图像,速度上并不能满足实时的要求,Joseph Redmon等提出了Yolov1模型,其是一个one-stage的目标检测框架,基于回归的思想,利用整张图作为网络的输入,直接在图像的多个位置上回归出目标边框以及目标所属类别。大大提高了检测速度,使得Yolov1每秒可以处理45张图像,map为63.4低于Faster R-CNN。由于缺少了Region Proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,导致Yolov1的检测精度并不是很高,为了解决这个问题,WeiLiu等提出了SSD目标检测框架,采用Yolov1的方法获取目标的位置和类别,相比Yolov1预测某个位置使用的全图特征,SSD预测某个位置使用的是这个位置周围的特征,即使用Faster R-CNN的anchor box机制,不同于Faster R-CNN,SSD的anchor是在多个feature map上的,这样既可以利用多层的特征而且还具有多尺度的效果。SSD 在VOC 2007上的map达到了72.1%,在GPU上速度达到了58帧每秒。为了解决Yolov1在目标定位及召回率低低的问题,Joseph Redmon等对Yolov1网络结构做了调整,提出了Yolov2,相比Yolov1框架,Yolov2将输入图像大小448*448调整到416*416,卷积层调整为19层,网格划分从7*7调整为13*13,加入Batch Norm层,引入anchor机制。Yolov2在VOC 2007上的map达到了76.8%,检测速度达到了67帧每秒。以上目标检测算法都只是采用顶层特征做预测,在检测小目标物体时候效果不是很好,于是,Tsung-Yi Lin 等提出了FPN网络,即顶层特征通过上采样和底层特征融合,每层独立预测。在检测小目标物体上的精度相比Faster R-CNN,有了一定的提升。在2018年Joseph Redmon等对Yolov2做了进一步改进,提出了Yolov3,在小目标物体检测上有了较大提升,相比Yolov2的19层卷积,Yolov3的backbone卷积层加深到了53层,借鉴了深度残差网络以及FPN网络,在牺牲一定的速度的基础上,在小目标物体上的检测精度有了较大提高。在coco test-dev上mAP@0.5达到了55.3%,检测速度达到了34帧每秒。