万 晓 丹
(南昌师范学院物理系 江西 南昌 330032)
目标检测是一种自动驾驶场景中的视觉模型,便于自动驾驶场景中的车辆对当前驾驶环境中的目标进行识别。通常,目标检测方法需要对真实的驾驶场景有很好的鲁棒性。为了达到这一目标,目前标准的做法是制作大规模的数据集以包含真实场景中的各种情况,通过大量的数据来训练算法以提升算法的鲁棒性。目前COCO数据集[2]中约有10 000个具有不同遮挡程度的汽车样本。然而现实生活中的遮挡情况也遵循长尾理论,即一些很罕见的遮挡情况在数据集中几乎不会出现。图1所示为大规模数据集中的长尾情况,尽管数据集数据量够大,但是也很难突破长尾理论的限制。
图1 数据集中的遮挡情况
近年来,生成式对抗网络(Generative Adversarial Networks,GAN)广泛应用于图像和像素生成领域,并取得一系列成果[3-5],这也让使用生成式对抗网络来生成遮挡图片成为一种可能。但考虑到生成式对抗网络模型的训练和生成依赖于宝贵的遮挡样本,且在前期模型生成阶段的成本太高,因此不得不考虑使用其他方法来解决训练样本不足的问题。一些已经提出来的目标检测方法表明[6-7],使用所有样本进行训练通常不是最佳解决方案,并且选择“难”样本更好。为了在已有数据集的基础上得到不同遮挡程度的样本,而不产生新的样本,本文试图训练这样一个网络:首先使用对抗网络在特征图空间上生成Mask掩码来遮挡特征图的某些部分来得到样本的遮挡特征图;再使用Faster RCNN算法的分类器对经过对抗网络的特征图进行分类,同时在整个算法的损失函数中加入对抗网络的损失。本文直接在卷积特征图的基础上生成Mask掩码,并作用于原特征图得到新的特征图。本文不致力于生成新的像素,因为生成新的像素是一个更难的问题。实验结果表明,与标准的Faster RCNN[1]算法相比,结合对抗网络的Faster RCNN算法的性能有了实质性的提升。
近年来,越来越深的神经网络和种类、数量越来越多的数据集,与ImageNet[8]分类任务中学习的深层特征结合起来推动了目标检测方法的进步。其中RCNN[9]系列算法和OverFeat[10]算法在PASCAL VOC[11]数据集上以其令人印象深刻的结果引领了使用神经网络来做目标检测的潮流。随着Fast RCNN[12]等优化方法的提出,研究者提出了更多目标检测方法,同时也提出了更多高效率的计算方法,能够在更大数据集上高效地训练目标检测算法。例如,Fast RCNN算法在RCNN算法的基础上为所有候选区域共享卷积特征图,将卷积层提取特征次数由2 000次降到1次,大大提高了算法的效率。Faster RCNN和R-FCN[13]在框架中引入候选区域生成网络(Region Proposal Network,RPN),从而实现完全端到端的效果。YOLO[14]、SSD[15]和DenseBox[16]等方法借鉴滑动窗口的思想,直接从特征图上回归候选区域,计算效率更高,速度更快。
对于提升目标检测方法的性能,目前大多数研究者主要从三个方向进行研究:
(1) 重心在网络结构上。通过改变算法的基础网络框架,提升算法的准确性,其主要思想是使用更深或更宽的网络。在这方面的工作主要包括ResNet[17]、Inception ResNet[18]和ResNetXt[19]。
(2) 充分利用上下文特征,主要思想是融合不同卷积层特征。例如,Shrivastava等[20]使用分段作为上下文填充目标检测器,并向初始层提供反馈。Bell等[21]使用跳跃网络架构,并结合上下文信息来使用多层的特征。还有其他的方法使用自上而下的特征来结合上下文和更精细的细节[22],从而提升检测性能。
(3) 从数据集出发,主要包括使用更大、类别更丰富的数据集。经验表明,一个成功的目标检测算法是一个良好的视觉表示框架和大规模可训练数据结合的产物。因此,数据集也是影响目标检测方法不可或缺的因素。目前大部分目标检测算法中针对数据集提高算法性能的方法主要有挑选“难”样本来训练算法。
本文以Faster RCNN算法为基础,从数据集方向出发提高目标检测算法的性能。核心思想是生成让Faster RCNN难以检测和分类的样本,而不是通过筛选数据集来找到不同遮挡程度的样本或生成新的像素。本文的目标是学习一个对抗网络,让对抗网络学习去生成让Faster RCNN分类器难以正确分类的遮挡样本,Faster RCNN分类器则学习如何正确分类遮挡的样本,通过对抗学习来提高算法的性能。本文工作与近期对抗方法中的很多工作有关[23]。Radford等[5]指出对抗学习能够用来训练更好的模型,同时在图像分类任务中对抗学习也表现出了很好的效果。同样地,对抗学习也用于机器人训练中[24]。
本文方法的整个网络框架如图2所示,由两部分组成:对抗网络ASDN网络和Faster RCNN目标检测框架。整个网络的损失函数由这两部分的损失构成。
图2 对抗网络ASDN与Faster RCNN方法的结合
在模型中,将Faster RCNN网络表示为F(X),其中:X表示一个候选区域;F表示Faster RCNN网络。Faster RCNN算法包含两个任务:分类和定位。设X所属的标签类别是C,标签空间位置为L。Faster RCNN检测网络的整体损失可以表示为:
LF=Lsoftmax(prob(X),C)+
Lbbox(box(X),L)C∈fg
(1)
式中:prob(X)表示Faster RCNN网络输出的类别概率;box(X)表示输出的包围框回归参数;Lsoftmax为分类任务损失;Lbbox为定位损失(仅计算前景类);fg表示所有的标签类别。
用A(X)表示对抗网络,根据前面的描述,对抗网络必须学会生成让Faster RCNN的分类器错误分类的特征,因此对抗网络的损失可以表示为:
LA=-Lsoftmax(prob(A(X)),C)
(2)
式中:prob(·)表示Fast RCNN的分类器输出的对抗网络的特征所对应的概率。
由于对抗网络的目的是学会生成让Faster RCNN算法的分类器误检的特征,因此在分类器的损失较低即分类器分类效果好的情况下,对抗网络会获得高损失来“惩罚”对抗网络。
本文中的算法以Faster RCNN算法作为基准框架,Faster RCNN由三部分组成:(1) 用于提取特征的卷积神经网络;(2) 用于生成候选区域的候选区域生成网络(RPN);(3) 具有ROI池化层和几个全连接层的特征分类网络,输出每个候选区域的目标类别概率和包围框坐标回归参数。
对于输入的图像数据,Faster RCNN将整幅图像送入卷积层中提取特征。之后,使用RPN网络在特征图上得到一系列的候选区域并映射到原图,再进行一次粗分类得到300个正负样本比例为1∶1的候选区域。针对不同大小的输入图像会得到不同大小的特征图的问题,Faster RCNN中使用ROI 池化层得到每个候选区域的特征,之后再归一化得到统一尺寸的特征图,这一操作避免了对候选区域再次使用卷积神经网络提取特征。最后将每个候选区域的特征送入分类器中进行分类,分类器包括两个输出:(1) 每个候选区域属于每个目标类的概率;(2) 每个候选区域包围框坐标回归参数。
本文使用对抗网络来生成Mask掩码,然后作用在ROI池化层之后的特征上得到遮挡的特征图。在这里,应用一个对抗空间丢弃网络(Adversarial Spatial Dropout Network,ASDN)来学习如何遮挡给定的目标使得Faster RCNN难以分类。通过ASDN与Faster RCNN的对抗和竞争,Faster RCNN学会以鲁棒的方式来处理检测中遇到的不同程度的遮挡。
ASDN网络的输入特征图是每个候选区域经过ROI池化层之后统一尺寸的特征图。对于每一个候选区域的特征图,ASDN网络生成一个与特征图大小相同的Mask掩码,对于特征图中要丢弃(遮挡)的部分,其对应的Mask掩码位置为零。如图3所示,ASDN网络能够学会遮挡特征图中对最后分类结果产生决定性影响的部分。
图3 ASDN网络生成掩码
(1) 网络架构。本文使用标准的Faster RCNN算法框架,包括RPN网络和ROI池化层。为了减少计算量,ASDN网络与Faster RCNN基础网络共享卷积层和ROI池化层。如图4所示,ASDN网络中包含两个独立于Faster RCNN算法的全连接层,用来生成Mask掩码。
图4 ASDN网络架构
(2) 模型预训练。在将ASDN网络与Faster RCNN网络联合起来训练之前,需要单独对Faster RCNN网络进行预训练,本文中的训练方法采用分步训练法。首先单独对Faster RCNN网络迭代训练10 000次,以此得到一个具有初步认知能力的目标检测网络。之后固定Faster RCNN网络的所有层,将ASDN网络融入进去,单独训练ASDN网络。
(3)
使用上述的损失函数训练ASDN 10 000次,这样能够让ASDN网络学习到哪一部分特征对于分类是重要的。
图5 ASDN掩码投影至原图
(4) 联合训练。在分别对Faster RCNN网络和ASDN网络分开训练10 000次之后,将ASDN网络和Faster RCNN模型联合起来进行训练15 000次,将两个网络的损失函数整合到一起。在每次迭代过程中,将损失函数的误差反向传播到两个网络中共同更新权重。在每次正向传播过程中,ASDN网络针对ROI池化层得到的每个候选区域的特征生成同样尺寸的Mask掩码,之后根据掩码对特征进行遮挡。然后将遮挡后的特征送入分类器进行类别分类和包围框坐标回归。在不增加太多层的情况下,仅仅修改了分类器的输入特征的某一些特征值,而不改变其大小。且通过这种方法,在特征图空间上生成了更多的“难”样本。
我们分别在PASCAL VOC 2007和PASCAL VOC 2012数据集上进行对比实验,结果如表1所示。对于原始的Faster RCNN算法,实验中从RPN网络选择300个候选区域。结果表明,在VOC 2007数据集上,平均精度(mAP)由原来的69.9%提升至72.1%;在VOC 2007和VOC 2012联合数据集上,平均精度由原来的73.2%提升至74.5%。
表1 PASCAL VOC 2007和PASCAL VOC 2012结果
为了对比ASDN网络在各个类别上的性能提升,本文针对VOC数据集的20个类别分别做了实验,结果如表2所示。与表1类似,候选区域的数量以及数据集的选择都是一样的。可以看出,VOC数据集的各个类别上,融合了对抗网络的检测算法都有不同程度的精度提升。
表2 VOC数据集各个类别上检测精度(候选区域:300)%
本文提出一种基于对抗网络和卷积神经网络的目标检测算法,在不改变当前的数据集的情况下,使用对抗网络得到遮挡的特征图,通过对抗网络与分类网络互相对抗学习提高算法的精度。相比在原图上生成新的像素,本文选择遮挡特征图上某些特征值来达到遮挡的效果。实验表明,融合对抗网络的Faster RCNN算法在VOC数据集上的检测性能有显著提升。