【深度学习】框架演变-基于CNN的经典目标检测框架

基于卷积神经网络的目标检测方法,依照检测速度流行地分为 两阶段目标检测算法单阶段目标检测算法。两阶段目标检测基于区域建议,通常先做建议框粗修与背景剔除,然后执行建议框分类和边界框回归,如R-CNN、Fast R-CNN、Faster-R-CNN。单阶段目标检测基于回归,将这两个过程融合在一起,采用了“锚点+分类精修”的实现框架,如YOLO、SSD。此外,还有基于搜索的目标检测与识别算法,如基于视觉注意的AttentionNet、基于强化学习的算法等。


本文主要介绍经典两阶段目标检测算法和单阶段目标检测算法,梳理其框架演变和核心思想,内容主要摘自《深度学习与目标检测》。


两阶段目标算法


在基于区域卷积神经网络的目标检测模型(regions with CNN features,R-CNN)问世之前的十多年里,大部分视觉识别任务都在使用尺寸不变特征变换(scale invariant feature transform,SIFT)算法或方向梯度直方图(histogram of oriented gradient,HOG)来提取特征。当CNN在2012年的ILSVRC分类项目中大放异彩时(AlexNet),研究人员认识到CNN能够学习到鲁棒性非常强且具有极强表达能力的特征。于是,Girshick等人提出了R-CNN,而它也成为了基于CNN的目标检测模型的开山之作。


2014年 R-CNN

Ross Girshick 原文链接 Rich feature hierarchies for accurate object detection and semantic segmentation

在一幅图像上进行目标检测时,R-CNN首先使用 selective search 建议框提取方法,在图像中选取大约2000个建议框。接着,把每个建议框都调整为同一尺寸(227×227)并送入AlexNet中提取特征,得到特征图。然后,对每个类别,使用该类别的SVM分类器对得到的所有特征向量进行打分,得到这幅图像中的所有建议框对应每个类别的打分。随后,在每个类别上独立地对建议框使用贪心的非极大值抑制的方法进行筛选,过滤掉IoU大于一个特定阈值的分类较低的建议框,并使用边界框回归的方法对建议框的位置与大小进行微调,使之对目标的包围更精确。


在这里插入图片描述

注意R-CNN使用SVM分类而不使用CNN最后一层的softmax函数进行分类,原因是微调CNN和训练SVM时采用的正负样本的阈值不同。在使用SVM作为分类器时,mAP为54.2%。在使用softmax作为分类器时,mAP为50.9%。R-CNN的重要贡献在于将深度学习引入目标检测


2014年 SPP-Net

Kaiming He 原文链接 Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

卷积神经网络通常由卷积部分和全连接部分构成。在卷积部分,对任意的图像大小和卷积尺寸都能进行卷积操作,得到特征图;而在全连接部分,需要固定尺寸的输入。因此,固定尺寸的问题全来自全连接层。然而,由于建议框的尺寸各不相同,在将其调整到同一尺寸时使用的缩放、拉伸、裁剪等方法,都会导致原图像出现不同程度的失真,即使进行一些预处理调整,也无法完全消除调整尺寸带来的不良影响。
在这里插入图片描述


为解决上述尺寸调整带来的问题,提出了空间金字塔池化方法。空间金字塔池化(spatial pyramid pooling,SPP)层用以消除网络固定尺寸的限制,SPP层放在最后一个卷积层之后,用于对特征图进行池化,产生固定长度的输出,并将这个输出作为全连接层的输入。如下所示:第1层对整个FeatureMap进行池化,得到1个特征;第2层将整个FeatureMap切分为4块,得到4个特征;第3层将FeatureMap切分为16块,得到16个特征。最后将1+4+16=21个特征输入到全连接层,进行权重计算,其中256为最后一层卷积层的滤波器数量。于是整个SPP层的输出就是一个k×M维的向量,这里M=21,k=256。

在这里插入图片描述

SPP-Net 的另一个创新点是只对原图进行一次卷积操作。由于R-CNN先获取proposal,再进行resize,最后输入CNN卷积,这样做效率很低。SPP-Net只对原图像进行一次特征图采集,得到FeatureMap后,再找到每个proposal在特征图上对应的patch,将这个patch作为每个proposal的卷积特征输入到SPP-Net中,提升检测速度为R-CNN的24~120倍。


2015年 Fast R-CNN

Ross Girshick 原文链接 Fast R-CNN

Fast R-CNN吸收了SPP-Net的思想,使用了与SPP层类似的感兴趣区域池化层(RoI pooling layer),同时将提取特征后的分类步骤和边界框回归步骤添加到深度网络中进行同步训练,使得Fast R-CNN的训练与R-CNN的多阶段训练相比更简洁且节省时间和空间。Fast R-CNN的训练速度是R-CNN的9倍,检测速度是R-CNN的200倍。

在这里插入图片描述
Fast R-CNN提取建议框的方法与R-CNN一样,也可以使用selective search等外部方法。图像特征提取部分使用的是VGG16等图像分类网络中的卷积部分,将整幅待检测图像输入其中进行特征提取,得到最终的特征图。 所有建议框都被送入RoI池化层,在特征图上找到对应的映射区域并固定尺寸。 随后是两个全连接层,用于得到固定尺寸的RoI特征向量(feature vector)。至此,每个RoI都提取了一个固定维度的特征,将RoI特征向量作为目标分类和边界框回归两个任务的输入,就能得到目标检测结果了。

注意,在Fast R-CNN上进行的实验表明,使用softmax函数的分类效果要比使用SVM的分类效果好,这是两者的结构不同造成的。在R-CNN中,softmax函数是基础网络AlexNet中最后的结构,参数的训练是通过迁移学习的方式进行微调的,训练的样本数据是随机的,因此其效果不如使用难负样本训练的SVM好。而在Fast R-CNN中,基础网络VGG16后面的结构已经被去掉了,softmax是Fast R-CNN中独立的全新结构,由于函数本身引入了类间竞争的特性,因此可以取得比SVM更好的效果。


2015年 Faster R-CNN

Shaoqing Ren 原文链接 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks


Faster R-CNN将提取目标候选框的步骤整合到深度网络中 ,成为第一个真正意义上的准实时的端到端的深度学习目标检测算法。作为Fast R-CNN的升级版本,我们可以将Faster R-CNN简单地看成 RPN+Fast R-CNN,且 RPN+Fast R-CNN共享一部分卷积层。如下图所示,将一幅图像送入Faster R-CNN进行检测,conv layers 代表基础网络(如VGG16、ZF)的卷积层,这部分就是 RPN与Fast R-CNN共享的结构;图像进过conv layers,得到特征图;将特征图送入RPN,得到建议框;将建议框和特征图一起送入从RoI池化层开始的剩余网络(Fast R-CNN),得到目标检测结果。

在这里插入图片描述


RPN是用于提取region proposal的神经网络,RPN网络的特点在于通过滑动窗口的方式实现候选框的提取。滑动窗口的中心会通过特征图上的每一个点,而特征图上的每一个点都有以该点为中心的一组k个预设的anchor。这k个anchor有不同的纵横比和尺寸,k的值通常取9。RPN的输出包含两个类别(前景与背景,以IoU判定)的预测值和边界框回归的4个参数(x,y,w,h)。

在这里插入图片描述


单阶段目标检测方法


为了让目标检测满足实时性要求,研究人员提出了单阶段目标检测方法。在单阶段目标检测方法中,不再使用建议框进行“粗检测+精修”,而采用一步到位的方式得到结果。单阶段目标检测方法只进行一次前馈网络计算,因此在速度上有了很大提升。


2015年 YOLO

Joseph Redmon 原文链接 You Only Look Once:Unified, Real-Time Object Detection

YOLO是最早出现的单阶段目标检测方法,也是第一个实现了实时目标检测的方法。YOLO能达到45帧每秒的检测速度,其mAP也到了其他实时检测系统的2倍甚至更高。YOLO v1将检测视为回归问题,因此处理图像的过程非常简单直接。输入图像的尺寸首先被调整为448像素×448像素,然后在图像上运行卷积网络,最后由全连接层进行检测。YOLO将输入图像分成S×S的网格。如果一个目标的中心点落入一个网格单元,则该目标由该网格单元负责检测。每个网格单元预测n个边界框及这些边界框的置信度分数。这些置信度分数反映了YOLO对边界框中是否包含目标的信心,以及其预测的边界框的准确程度。

在这里插入图片描述

YOLO的局限也非常明显。与两阶段目标检测系统相比,YOLO产生了更多的定位误差且在精度上落后(对小目标的检测效果尤其差)。同时,YOLO对边界框预测施加了空间约束(因为每个网格单元只预测两个边界框,并且只能有一个类别)。这个空间约束限制了YOLO可以预测的邻近目标的数量,因此,使用YOLO对鸟群、人群和车队进行预测的效果并不理想。

值得说明的是,为实现实时的高精度检测,YOLO系列框架演进得一直如火如荼,至今已经迭代到v7版本,且变体众多。


2015年 SSD

Wei Liu 原文链接 SSD: Single Shot MultiBox Detector


Wei Liu等人在YOLO诞生的同年提出了SSD方法。SSD吸收了YOLO快速检测的思想,同时结合Faster R-CNN中的RPN的优点,并改善了多尺度目标的处理方式(不再只使用顶层特征图进行预测)。由于不同卷积层所包含特征的尺寸不同,SSD使用了特征金字塔预测的方式,综合多个卷积层的检测结果来实现对不同尺寸目标的检测。在Faster R-CNN中使用的是单层特征图预测,即只在基础网络顶层的特征图上进行预测。SSD则在多层特征图上进行预测,并在不同尺寸的特征图上实现对不同尺寸目标的检测。

SSD作为单阶段目标检测方法,不像Faster R-CNN一样对建议框进行预测,而直接对目标的边界框进行预测。在预测目标的边界框时,SSD引入了default box的概念(其作用相当于 Faster R-CNN中的anchor)。SSD在不同尺寸的特征图上检测不同尺寸的目标,因此,不同尺寸的default box会由不同尺寸的特征图来表示,越靠近顶层的特征图上的default box的尺寸越大,而越靠近底层的特征图上的default box的尺寸越小。如下所示:在8×8的特征图上的default box的尺寸较小,会检测出尺寸较小的猫;而在4×4的特征图上的default box的尺寸较大,会检测出尺寸较大的狗。对每个特征图上的每个点,同样可以使用不同比例的default box来对应不同的形状。
在这里插入图片描述
Faster R-CNN根据anchor与SSD根据default box进行预测的过程类似,但SSD则在 default box上一步到位——直接进行目标的多分类判断和边界框预测。值得说明,YOLO、SSD这些经典网络正是后续网络演化的基础,也正因此,开山之作会被人津津乐道。


2017年 RetinaNet

Tsung-Yi Lin 原文链接 Focal Loss for Dense Object Detection


RetinaNet模型 采用ResNet+FPN(feature pyramid net,FPN)作为基本框架。经过FPN后,得到多个不同尺寸的特征图,每个层级的特征图都连接了两个子网络,分别是box subnet(边界框回归子网络)和class subnet(目标分类子网络)。对于class subnet中出现的样本数量不平衡的问题,该方法使用focal loss函数计算损失。

在这里插入图片描述

在图像金字塔中,高层的低分辨率高级特征拥有丰富的语义信息,目标识别能力强;底层的高分辨率低级特征包含的语义信息不丰富,目标识别能力差。FPN针对SSD不使用底层特征的问题提出了新的特征金字塔结构,将底层特征与高层特征融合,增加了低层特征的语义信息,从而能够在底层特征上进行目标识别,提高了对小目标的识别效果。

此外,新提出的聚焦损失(focal loss)函数相当于给各样本分别加上了与模型预测概率有关的权重,降低简单样本的损失权重,最大限度保留难样本的损失,解决了简单样本与难样本间的平衡问题。


2017年 RefineDet

Shifeng Zhang 原文链接 Single-Shot Refinement Neural Network for Object Detection


RefineDet可以看成SSD、RPN、FPN的结合,其融合了单阶段目标检测方法与两阶段目标检测方法的优点。RefineDet是一个使用了两个互联模块结构的单阶段目标检测方法,它的两步串联模块分别ARM(anchor refinement module,锚框改进模块)和DOM(object detection module,目标检测模块)。RefineDet中的TCB(transfer connection block,转换连接模块),用于转换ARM中得到特征并将其传递给ODM,具有特征融合的功效。

在这里插入图片描述
ARM用于辨别及过滤背景区域(即negative anchor),并对anchor的尺寸和位置进行粗略的调整,以便后续对边界框进行精确的定位。这类似于在Faster R-CNN中RPN的角色,不过RPN是在一个特征图上操作,而ARM需要处理多个不同尺寸的特征图将由ARM微调后的anchor输入后续的ODM,就可以进行边界框回归和目标分类了。ODM和SSD一样,也是在多个不同尺度的特征图上进行检测的,但是,SSD在检测时使用的是固定的anchor(即default box),而ODM在检测时使用的是经过筛选并进行了粗略修正的anchor,因此会得到更好的检测效果。两个互联模块模拟了两阶段目标检测的结构,由此使模型能在保持高效的同时提升检测的精度。

TCB部分进行的是特征的转换操作,也就是将ARM部分的输出特征图转换为ODM部分的输入。TCB与FPN的特征融合类似,也采用了对特征图进行上采样后与高层特征融合的思路,使得RefineDet对小目标的检测效果比SSD好了很好。


《深度学习与目标检测》杜鹏等 电子工业出版社 第4章和第5章
《移动平台深度神经网络实战 原理、架构与优化》第8章 卢誉声 机械工业出版社

猜你喜欢

转载自blog.csdn.net/weixin_47305073/article/details/128226605