
2.3.2 卷积神经网络模型
1.RCNN[1]:Regions with CNN Features
在2.3.1节中,我们介绍了通过穷举的方式进行全图窗口滑动式扫描。通过图像的缩放实现不同尺寸的物体的检测。图像缩放一定的尺寸后,再在当前尺寸的图像上进行窗口滑动扫描。每一个尺寸下每次扫描的子窗口都是候选子图像。图2-6中显示的很多子窗口都是无用的,徒增计算量。

图2-6 滑动窗口的方式搜索目标区域
如图2-7所示,我们可以通过分割的方式把图像中可能是一个物体的像素点集合在一起作为一个候选的子图像并进行分类,这样可以大大减少检测子窗口的数量,提升子窗口的检测质量。

图2-7 基于图像分割进行目标检测
Graph-Based Image Segmentation提出了一种基于图表示(Graph-based)的图像分割方法。图像分割(Image Segmentation)的主要目的是将图像(Image)分割成若干个特定的、具有独特性质的区域,然后从中提取出感兴趣的目标。
选择性搜索算法[2](Selective Search,SS)提出根据颜色、纹理、大小、吻合度,计算两区域的相似性,找到最相似的两个区域并合并,得到一个更大分割区域,然后在更大的分割区域上提取目标物。图像分割后提取目标物处理过程如图2-8所示。

图2-8 图像分割后提取目标物
RCNN[3](Regions with CNN Features)采用选择性搜索算法确定候选区域,并提取每个候选区域的CNN特征。即把候选区域所框选的图像缩放为277×277大小的图像,通过5个卷积层和2个全连接层进行前向传播,最终得到一个4096维度的特征向量。最后结合SVM分类器对这个特征向量进行分类。RCNN处理流程如图2-9所示。

图2-9 RCNN处理流程
(1)Fast RCNN[4]
RCNN需要非常多的候选区域以提升准确度,但其实有很多区域是彼此重叠的,因此RCNN的训练和推断速度非常慢。如果我们有2000个候选区域,且每一个候选区域都需要独立地送到CNN中,那么对于不同的ROI,需要重复提取2000次特征。
Fast RCNN最重要的一点就是包含特征提取器、分类器和边界框回归器在内的整个网络能通过多任务损失函数进行端到端的训练。这种多任务损失结合了分类损失和定位损失的方法,大大提升了模型准确度。Fast RCNN的处理流程如图2-10所示。

图2-10 Fast RCNN的处理流程
(2)Faster RCNN[5]
RCNN和Fast RCNN都采用选择性搜索算法提取候选区域,这个也是相对比较耗时的,有没有更有效的方法呢?2015年,Faster RCNN提出了使用Region Proposal Networks来代替选择性搜索算法提取候选区域。该网络通过softmax层判断候选区域是否包含目标物体,并利用回归器修正候选框,获得精确的目标物位置。
RCNN引入了选择性搜索算法,优化了滑动窗口带来的性能问题,同时结合CNN提取候选区域的图像特征,解决了人工定制样本的不通用性。最后,基于SVM对候选区域内的图像特征进行分类,得到目标物的类别信息,并对候选区域进行回归,得到准确的目标物位置。Fast RCNN在RCNN的基础上,先把整张图像输入CNN网络提取特征图,然后每个候选框在特征图上映射特征图块,对特征图块进行分类,并用回归器进一步调整候选框的位置以作为目标物的位置。Faster RCNN在Fast RCNN的基础上,用Region Proposal NetWork代替原来的选择性搜索算法来寻找候选框。随着RCNN网络的进化,物体识别的速度和准确度都有提高。
2.SSD[6]
虽然Faster RCNN在速度和准确性上取得了很大的进步,但是因为工程中有实时性要求,所以应用上还面临着挑战。2016年,SSD(Single Shot MultiBox Detector)网络模型被提出,这种网络模型采用端到端的思想,即目标定位和分类在网络的单个前向传递中完成。SSD多尺度检测如图2-11所示。

图2-11 SSD多尺度检测
SSD模型的最开始部分采用的是VGG16的基础网络结构(使用的是前面的5层),在基础网络结构之后,添加了额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下预测目标物。SSD和Faster RCNN在VOC2007测试集上性能对比如表2-2所示,可以看出,在准确性差不多的情况下,SSD在速度上有很大的提升。
表2-2 SSD和Faster RCNN性能对比

作者SSD的实现是基于caffe框架的,GitHub地址如下:https://github.com/weiliu89/caffe,感兴趣的读者,也可自行下载并运行。
3.YOLO[7]
Redmon在2015年的YOLO(You Only Look Once)论文中,开创性地提出了上文中提到的端到端的网络模型。如图2-12所示,YOLO的中心思想为将一幅图像分成7×7个网格(网络单元),如果某个物体的中心落在其中某个网格中,则此网格就负责预测该物体。作者在2016年年底提出了YOLOv2版本,在2018年对YOLOv2版本又进行了改进,提出了YOLOv3版本。
与目前最好的目标检测系统相比,YOLOv1存在的问题是精确度不够、误检率过高。YOLOv2相对于YOLOv1的改进集中于在保持分类准确率的基础上增强定位精确度。通过Batch Normalization、提高图像分辨率去除YOLO v1全连接层、采用固定框(Anchor Boxes)来预测Bounding Boxes等方法进行改进。在和Faster RCNN准确率持平的情况下,YOLOv2的处理速度可以达到90FPS。在高分辨率情况下,YOLOv2在VOC2007数据集上的mAP值可以达到78.6,如表2-3所示。

图2-12 YOLO端到端网络模型
表2-3 VOC2007+VOC2012数据集上RCNN、SSD、YOLO的性能对比

YOLOv3的主体网络有53层,所以称它为darknet53,主要借鉴了残差和特征金字塔的思想,在速度和准确率上相较于YOLOv2都有一定的提升。所以,目前在工程、游戏中,形变物体检测的基础算法是YOLOv3。
[1] David G.Lowe.Rich Feature Hierarchies for Accurate Object[C].CVPR,2014.
[2] Uijlings J R,Van de Sande K E,Gevers T,et al.Selective Search for Object Recognition[C].IJCV,2013.
[3] David G.Lowe.Rich Feature Hierarchies for Accurate Object[C].CVPR,2014.
[4] Girshick R.Fast R-CNN[C].ICCV,2015.
[5] Ren S,He K,Girshick R,Sun J.Faster R-CNN:Towards Real-time Object Detection with Region Proposal Networks[C].In:NIPS,2015.
[6] Liu W,Anguelov D,Erhan D,Szegedy C,et al.Reed.SSD:Single Shot Multibox Detector[C].CoRR,2015.
[7] Redmon J,Divvala S,Girshick R,et al.You Only Look Once:Unified,Real-time Object Detection[J].arXiv,2015.Redmon J,Farhadi A.YOLO 9000:Better,Faster,Stronger.in Computer Vision and Pattern Recognition[C].CVPR,2017.Redmon J,Farhadi A.YOLO v3:an Incremental Improvement[J].arXiv,2018.