基于兴趣区域投票的多任务车辆检测
本文译自:《Multi-Task VehicleDetection With Region-of-Interest Voting》
原作者:Wenqing Chu , Yao Liu,Chen Shen, Deng Cai
原文链接:https://ieeexplore.ieee.org/document/8066331/
摘要:车辆检测是自动驾驶系统中的一个具有挑战性的问题,因为其具有较大的结构和外观变化。在本文中,我们提出了一种基于多任务深度卷积神经网络(CNN)和感兴趣区域(RoI)投票的新型车辆检测方案。在CNN体系结构的设计中,我们以子类别、区域重叠、边界框回归和每个训练ROI的类别作为一个多任务学习框架来丰富监督信息。该设计允许CNN模型同时在不同车辆属性之间共享视觉信息,因此,可以有效地提高检测鲁棒性。此外,大多数现有方法独立考虑每个RoI,忽略了其相邻RoI的线索。在我们的方法中,我们利用CNN模型来预测每个RoI边界朝向相应标注过的数据的偏移方向。然后,每个RoI可以对那些合适的相邻边界框进行投票,这与该附加信息一致。投票结果与每个RoI本身的得分相结合,以从大量候选中找到更准确的位置。KITTI和PASCAL2007车辆数据集的实验结果表明,与其他现有方法相比,我们的方法在车辆检测中实现了卓越的性能。
1 引言
通常,车辆检测可以被视为通用对象检测的特殊主题。在过去几年中,研究人员在提高物体检测性能方面取得了显着进展[3-8]。解决此问题的常见流程包括两个主要步骤:(1)生成建议目标,(2)特定类的评分和边界框回归。对于第一步,有很多精心设计的方法[8-11]用于生成建议目标或仅仅是[5]中使用的滑动窗口方式。然后提取对象边界框的一些特定视觉特征,并利用分类器确定有界区域是否是期望对象,其中代表性方法包括AdaBoost算法[3],DPM模型[5]和深度CNN模型[7]。然而由于车辆的结构和外观变化较大,尤其是普遍存在的遮挡,这进一步增加了类内差异,使得车辆检测仍然具有挑战性,此外,许多车辆检测基准要求联合交叉(IoU)超过0.7以评估正确的定位,这显著提高了对模型的性能要求。
在本文中,我们提出了一种基于多任务深度卷积神经网络(CNN)、感兴趣区域(RoI)投票和多级定位的新型车辆检测方案,由RV-CNN表示。多任务学习旨在实现信息共享,同时解决多个相关任务,提高部分甚至所有任务的性能[12]。在我们的方法中,CNN模型在四个任务上进行训练:类别分类,边界框回归,重叠预测和子类别分类。在这里,我们引入子类别分类任务来使得CNN模型在不同的遮挡,截断和视点下都能学习车辆的良好表示。我们利用[13]中提出的3D体素模式(3DVP)概念进行子类别分类。 3DVP是一种对象表示,它共同捕获关键对象属性,这些属性涉及到在聚类过程中刚性对象的外观、对象姿态、遮挡和截断。然后每个3DVP被认为是一个子类别。
大多数检测方法利用CNN模型的预测分数进行非极大值抑制(NMS),以得到最终的边界框位置。但是,高于某一水平的检测分数与边框提案的可靠性没有很强的相关性[14]。原因之一是训分类器被训练为从背景中对对象进行分类,而不是对联合交叉(IoU)进行排序。因此,我们建议使用邻近的RoI来完善这一评分。首先,我们使用CNN模型同时预测从RoI到每个边界的标注过的数据的偏移方向。有了这些额外的信息,我们设计了一个简单而有效的投票方案来重新分配这些ROI。在所有提案的得分重新计算后,我们可以应用NMS得到最终结果此外,我们观察到,在IOU超过0.7的限制下,区域提案网络[8]的产出不能保证达到100%召回。这将对以下检测网络构成挑战,因为它必须在没有高质量建议的情况下处理一些困难的案例。此外,在更快的R-CNN [8]中,NMS的预测框的检测分数不准确,因为它在回归之前应用了RoI的卷积特征。考虑到这两个缺点,本文提出了一种多级定位方案,进一步提高了检测精度和可靠性。
我们已经在两个常用的车辆检测数据集(KITTI车辆基准[2]和PASCAL VOC2007汽车数据集[1])上评估了我们的方法。我们的方法在KITTI车辆检测基准上实现了91.67%的Ap,显著超越了最近的结果[15-17]。此外,我们还对PASCAL VOC2007汽车数据集进行了实验。实验结果表明,与基线和相关方法相比,我们的RV-CNN模型具有了一致且显着的性能提升。
2 相关工作
在本节中,我们将简要回顾一下最近关于一般物体检测和车辆检测的工作。
通用目标检测是近年来研究的一个活跃领域,有着大量的前期工作。[3]中的级联式检测器是最早实现相对高精度实时检测的方法之一。这种结构已广泛用于实现人脸[3],[18],行人[19]和车辆[20]的滑动窗口探测器。基于部分的模型也是文献中最强大的物体检测方法之一,其中可变形的组件模型(DPM)[5],[21]是一个很好的例子。该方法采用定向梯度直方图(HOG)特征作为输入,并利用由根滤波器和组件滤波器组成的星形结构来表示高度可变的物体,使其能够检测出被严重遮挡的物体。
最近,深度卷积神经网络(CNN)表现出了卓越的性能,在各种视觉任务中占据了最高精度基准[22-26]。这些工作提出了大量的方法[7],[8],[27-36]解决了CNN模型的问题。在这些方法中,具有卷积神经网络(R-CNN)框架[7]的区域已经取得了很好的检测性能,并成为对象检测的常用范例。其基本步骤包括使用选择性搜索的建议目标生成[9],CNN特征提取,基于CNN特征的对象候选分类和回归。
然而R-CNN带来了过多的计算成本,因为它为数千个建议目标重复提取CNN特征。为了加速R-CNN中的特征提取过程,提出了空间金字塔汇集网络(SPPnet)[28]和基于快速区域的卷积网络(Fast R-CNN)[29]。其缺点是仍然采用自下而上的建议目标生成,这是效率的瓶颈。相反,在[8]中提出了一种区域生成网络(RPN),它与检测网络共享全图像卷积特征,从而实现了几乎无成本的区域生成。MS-CNN [15]由提议子网和检测子网组成。在提议子网中,在多个输出层执行检测,以便匹配不同尺度的对象。这种方案也用于SSD [32]和TextBoxes [37]。另一个有趣的工作是YOLO [31],它在7x7网格内输出对象检测。该网络以40fps运行,但检测精度有所降低。
大多数这些深度模型都针对一般物体检测。为了更好地处理被遮挡车辆的检测问题,在[38]中的一个DPM模型提供的根和组件分数配置上使用了第二层条件随机场(CRF)。最近,在[39]和[40]中提出了一个和或结构,以有效地将遮挡配置与经典的DPM进行比较。在[41]中,作者建议将车辆检测和属性注释结合起来。此外,改进模型泛化的一种常见方法是学习对象类[20]中的子类别。子类别已被广泛应用于车辆检测,并提出了几种子类别分类方法[42-45]。在[42]中,使用局部线性嵌入和HOG特征以无监督的方式学习学习对应于车辆方向的视觉子类别。参考文献[43]根据对象的视角执行聚类,以发现子类别。在[45]中研究了区分性子分类,其中聚类步骤考虑了负面实例。最近,[13]提出了一种新的对象表示,即三维体素模式(3DVP),它共同编码对象的关键属性,包括外观、三维形状、视点、遮挡和截断。该方法以数据驱动的方式发现3DVPS,并为3DVPS训练一组专门的检测器。在[46]中,作者利用3DVP子类别信息训练子类别卷积层,输出特定位置和比例下某些子类别存在的热图。在我们的工作中,我们将子类别分类作为改进基于CNN的检测性能的多任务的一部分,并且可以使用在[13]、[42]和[43]中获得的子类别标签来实现该组件。
3 具体检测过程
A.多任务损失函数
最近,多任务学习已经应用于许多计算机视觉问题,特别是在缺乏训练样本的情况下[12]。多任务学习的目的是在同时解决多个相关任务的同时,加强信息共享。这种共享已经被证明可以提高部分或全部任务的性能[12],[47],[48]。对于车辆检测问题,我们通过子类别,区域重叠,边界框回归和每个训练RoI的类别作为多任务学习框架,丰富了监督信息。接下来,我们将详细解释多任务CNN模型的提议方法的细节。图2显示了所提出的多任务学习框架的总体流程。如图2所示,在生成RoI之后,我们将[29]中提出的RoI池化层应用于每个RoI的池卷积特征。然后,汇集的卷积特征用于完成四个任务:类别分类,边界框回归,重叠预测和子类别分类。最后一部分“偏移方向预测”将在下一节中描述。每个被训练的RoI都标有真实类和真实边界框回归目标,类似于[29]中的设置。通常,该监督信息用于设计分类损失L cat和边界框回归损失L loc。
接下来,第三个任务是子类别分类。对于复杂和杂乱的城市场景中的车辆检测,遮挡和视点是关键方面。如在[40]中,处理遮挡需要能够捕获组件层面上遮挡的基本规律(即不同遮挡配置),并且明确地利用与遮挡共同发生的上下文信息,这超出了单车辆检测的范围。此外,不同视图中的2D图像也难以识别。这些显着增加了类内差异。为了表示遮挡和视点变化,我们采用最近在[13]中提出的3D体素模式(3DVP)的概念。 3DVP是一种对象表示,它共同捕获与外观,三维形状和遮挡掩膜相关的关键对象属性。参考文献[13]提出在网络上的存储库中利用3DCAD模型,例如Trimble3D Warehouse,并将这些3D CAD模型与2D图像一起标注以构建3D体素示例。更具体地说,对于训练集中的每个图像,使用从预定义的模型集合中选择的3D CAD模型来标记图像中的对象,选择的模型是有与真实3D长方体最接近的纵横比的模型。然后使用相机参数将所有标注的3D CAD模型投影到图像平面上并获得深度排序掩模。在下文中,深度排序掩模确定投影的3D CAD模型的哪个像素是可见的,被遮挡的或截断的。 3DVP表示一组三维体素示例,这些示例共享在其三维体素模型中编码的类似可见性模式。参考文献[13]通过在统一的三维空间中聚类三维体素样本来发现3DVP。有关详细信息,读者可以参考他们的项目网站。
在[13]之后,我们对刚性物体(即KITTI中的车辆)采用3D体素模式(3DVP)表示,它在聚类过程中共同模拟物体姿态,遮挡和截断。然后每个3DVP被认为是一个子类别。图3显示了Kitti车辆数据集中不同子类别车辆的几个示例。通过这些附加的注释,CNN模型可以捕获更多关键信息进行检测。如图2所示,CNN模型在K + 1个子类别上输出离散概率分布(每个RoI),p =(p 0,...,p K)。与往常一样,p是由一个全连接层的k+1个输出上的softmax计算的。因此,子类别分类的损失公式为Lsub(p,u) = logpu,它是真实分类u类的对数损失。
此外,我们发现预测RoI与相应的标注过的数据之间的重叠对其他任务是有益的。对于重叠回归,我们使用下列方程中的损失。
其中
是一种强大的L1损耗,其对异常值的敏感性低于L2损耗,这需要仔细调整学习速率以防止爆炸梯度。 Op表示由CNN模型预测的重叠,并且根据ROI和标注过的数据计算Og。
总结,整个多任务框架的损失可以表述为:
上式中的超参数λ1,λ2,λ3用于控制四个任务损失之间的平衡。我们在验证数据集上调整了这些超参数。具体地,在实验中将λ1,λ2,λ3设定为1,10,1.2。
B.感兴趣的区域投票
我们观察到检测分数不能很好地表示有界区域的可靠性或置信度。在[14]中,作者还认为,高于某一水平的检测分数与与框提议的最优性没有很大关系。实际上这并不奇怪,因为分类器被训练为从背景中分类对象而不是对IoU进行排序。另外,预测框的分数由RoI的卷积特征计算,其与回归框略有不同,这也是值得怀疑的。为了解决这个问题,我们使用邻近的RoI来优化其得分。首先,我们使用CNN模型同时预测从每个RoI边界到标注过的数据边界的偏移方向。然后我们可以得到四个变量来指示实际的方向。在我们的方法中,我们分别用D l,D t,D r,D d表示这四个变量,分别用于RoI的左边界,顶边界,右边界和下边界。例如,D l的可能预测如下:“向左转”,“向右转”,“在此处停止”和“此RoI周围没有实例”。对于D t,“上升”,“下降”,“在此处停止”和“此RoI周围没有实例”是可能的训练标签。这些标签可以根据ROI的位置和训练前的地面实况来计算。
其他r b(b,b i)函数遵循与r l(b,b j)相同的规则。在所有预测框的得分重新计算后,我们可以应用NMS得到最终的结果。
这种RoI投票方法有几个优点。首先,不同于被训练以从背景中对对象进行分类而不是对IoU进行排名的类别分类器,我们的RoI投票方法预测朝向标注过的数据的偏移方向,这对于位置是合理的。此外,该RoI投票方法利用来自相邻RoI的统计信息,这使得结果更加稳健和可靠。其次,与基于CNN的回归任务解决检测问题的方法相比,我们的方法采用了更加文件的分类模型,既简单又有效。CNN模型在分类任务上通常比回归任务取得更好的性能[49]。由于具有softmax损失的偏移方向的分类使得模型在真实方向上最大限度地激活,而不是在边界框坐标的精确值上激活。此外,预测朝向标注过的数据的方向可以作为多任务框架的一部分来实现,这不会给计算带来额外的负担。
C. 多级定位
在Fast RCNN[29]等常见的目标检测流程中,我们发现了两个缺点。首先,由于许多检测基准要求IOU超过0.7才能评估正确的定位,因此区域生成网络[8]经常无法达到100%的召回率。这将对以下检测网络构成挑战,因为它必须在没有高质量建议的情况下处理一些困难的案例。其次,在快速的R-CNN中,用于进行NMS的提案的分数不准确,因为它们在回归前采用了特征。这两个因素将降低这些检测器在实际车辆检测任务中的性能。因此,我们引入了一个多层次的定位框架,以粗到细的方式解决这两个问题。具体来说,我们的定位方案从区域生成网络[8]开始,通过迭代评分和细化它们的坐标来工作。在这里,我们实施了一个两阶段方案。首先,我们将所有与标注过的数据重叠大于0.5的提案作为培训第一阶段回归网络的正样本。由于我们发现RPN在直接使用0.7时未能召回所有车辆,而在0.5时所有车辆都有正面建议。在测试阶段,该回归网络可以将召回率从97.8%提高到98.9%。在第二阶段,我们使用来自第一阶段的预测边界框来训练第二级目标检测网络,使用与标注过的数据重叠大于0.7的建议作为阳性样本。在这个阶段,大多数车辆都有高质量的建议,这使得回归任务相对容易。此外,我们发现第一级网络的输出提供了强有力的建议,使第二网络产生更准确的定位。另外,由第二网络计算的边界框偏移通常很小,这使得预测框的得分更准确。
(a)原始图像(b)NMS之前的部分车辆检测结果
考虑到速度,我们对所有提案进行一级定位,并选择其中的一部分进行二级定位。选择的规则是:如果一个提案与预测框有很大的重叠,我们将不会进行第二次定位。我们认为,如果重叠度很大,评分是准确的,提案不需要再次回归。在实验部分,我们将此阈值设置为0.9。在多级定位之后,我们获得了一系列检测结果,这些检测结果都具有高召回率和准确定位。我们考虑重用卷积层功能来进行多级定位。但是,性能增益并不令人满意。因此,对于第二阶段,我们训练一个新的回归网络。我们采用这种设计是因为我们希望通过相应边界框的卷积特征尽快准确地计算提案的分类分数。
D.子类别的NMS
在复杂的交通场景中,遮挡使得车辆检测非常具有挑战性。例如,图4中的蓝色圆圈中有两辆汽车彼此靠近,它们的IOU大于0.7。虽然我们之前的管道可以检测到它们的位置并为它们分配高分,但标准的后处理步骤NMS将过滤其中一个分数较低的边界框。如果我们将NMS的阈值设置得更高,则可以保留两个边界框。
但是,检测结果的精度会非常低。为了解决这个难题,我们引入了子类别的NMS(subNMS)方法。在我们的多任务框架中,我们可以获得子类别信息。由于蓝色圆圈中的两辆车属于不同的子类别,我们的subNMS利用级联管道。首先,我们为属于同一子类别的边界框执行标准NMS,其严格阈值为0.5。然后,NMS将处理所有边界框,其阈值为0.75。通过所提出的subNMS,检测结果的精确度和召回率可以达到平衡。
E.实施细节
我们的框架是使用caffe[50]实现的,运行在配置了Nvidia M40 GPU卡的工作站上。我们不从零开始培训我们的RPN和检测CNN,而是应用在ImageNet[22]上预训练的模型来初始化卷积层和前两个全连接层,然后对整个网络进行微调。在KITTI基准测试中,我们对第一级定位的AlexNet [22]和第二级定位的GoogleNet [51]进行了微调。
为了解决尺度的变化,我们使用多尺度方式来训练第一级定位。由于GPU内存限制,我们无法直接培训多尺度GoogleNet检测网络。因此,我们独立裁剪和调整RoI,不在同一输入图像中共享卷积计算。用于多任务学习的全连接层分别由标准差为0.01和0.001的零平均高斯分布初始化。偏差初始化为0。所有层对权重使用1的每层学习率,对偏差使用2的每层学习率,全局学习率为0.001。在对KITTI训练数据集进行训练时,我们运行SGD进行30k小批量迭代,然后将学习率降低到0.0001并训练另外10k次迭代。学习在40,000次迭代后停止,并且在学习期间,将conv1-1到conv2-2的层参数固定,以实现更快的训练。
在对VOC07 trainval car数据集进行训练时,我们运行SGD进行8K小批量迭代,然后将学习率降低到0.0001,再进行2K迭代培训。使用0.9的动量和0.0005的参数衰减(基于权重和偏差)。
4 实验
在本节中,我们在两个公共数据集上评估我们的方法:KITTI车辆检测基准[2]和PASCAL VOC2007汽车数据集[1]。
A.KITTI验证集的实验
KITTI数据集由7481个训练图像和7518个测试图像组成。训练中的物体总数达到51867,其中汽车仅占28742。KITTI汽车检测任务的关键难点在于大量汽车尺寸较小(高度<40像素)并且被遮挡。
由于KITTI测试集的基本真实注释不公开,我们使用[46]的训练/验证分割来对我们的框架进行分析,其中分别包含3682个图像和3799个图像。对于KITTI的验证,我们使用125个子类别(125个3DVP用于汽车),而对于KITTI的测试,我们使用227个子类别(227个3DVP用于汽车)。关于子类别的数量,我们遵循[13]中的配置。 3DVP是一种数据驱动方法,子类别的数量是聚类算法中使用的一个超参数。对于验证数据集,仅使用训练数据集来发现3DVP模式。对于测试数据集,训练数据集和验证数据集的结合更加复杂,所以子类别的数量更多。
确定位,红色框表示错误报警蓝色框表示检测缺失)
我们根据KITTI基准[2]建议,在三个难度级别(简单,适度和难度)上评估我们的识别结果。为了评估物体检测精度,在整个实验中报告平均精度(AP)。
汽车的KITTI基准采用0.7重叠阈值。表I显示了三个类别的检测结果,其中我们证明了各种组分对KITTI的RV-CNN性能的影响。从表I可以看出,多任务学习,RoI投票和多层次本地化的组成部分都是有效的设计。对于那些中等和难度级别的汽车,我们的方法可以通过更多组件实现更好的性能。
表1
为了展示我们方法的稳健性,我们给出了图6中不同IOU阈值下的AP。此外,图5显示了我们在KITTI验证数据集上的检测结果的一些示例。我们可以看到,检测中失败的大多是那些难以看到的被遮挡的汽车。将来,我们需要将CNN模型与一些遮挡推理机制相结合,以更好地处理这些困难案例。
B.KITTI测试集的实验
为了与KITTI检测基准的最新方法进行比较,我们使用所有KITTI训练数据训练我们的RPN和RV-CNN,然后将我们的结果提交到官方网站,在KITTI测试集上测试我们的方法。
表2列出了三类检测结果,我们将我们的方法(RV-CNN)与KITTI评估的不同方法进行了比较。这些结果是在2017年3月提取的。最近,评估脚本已经更改,并提供了原始结果。我们的方法在基于中等难度结果的所有已发布方法中排名第一。实验结果证明了我们的CNN能够处理具有更多遮挡和截断的车辆。图7给出了中等类别的KITTI测试装置的精确召回曲线。
表2
C.VOC Pascal 2007车辆数据集的实验
我们还将我们方法与几个竞争模型:DPM [5],RCNN [7],快速RCNN [29]和更快的RCNN [8]在另一个公共数据集上进行了比较:PASCAL VOC2007汽车数据集[1]。这些方法在一般物体检测方面获得了最先进的性能,并且这些代码是公开可用的。
我们在VOC-RELEASE5[65]中采用训练好的车辆模型用于DPM,而基于CNN的其他模型和我们的方法则基于预训练的VGG16模型。提取PASCAL VOC 2007数据集中的训练集和测试集(总共1434个图像)中包含的所有图像以进行评估。
汽车检测评估标准与PASCAL目标检测相同。联合交叉(IoU)设置为0.7以以确保定位正确。图8显示了PASCAL VOC2007汽车测试集的精确召回曲线。由于3DVP需要标注过的数据3D注释(立方体)和相机参数,我们没有找到PASCAL VOC的这些标签。因此,我们删除了PascalVOC数据集实验中的子类别分类任务。APS分别为63.91%(我们的模型)、38.52%(RCNN)、52.95%(快速RCNN)、59.82%(快速RCNN)和57.14%(DPM)。尽管这个数据非常小,但我们的方法依旧胜过了其他方法。
5 结论
在本文中,我们开发了一种基于多任务深度卷积神经网络(CNN)和感兴趣区域(RoI)投票的新型车辆检测方案。KITTI和PASCAL2007汽车数据集的实验结果表明,我们的方法优于大多数现有的车辆检测框架。在未来,我们将探索一个更有效的投票机制的端到端框架。此外,我们希望将CNN模型与一些遮挡推理方法相结合,以更好地处理这些困难案例。
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
最新资讯
-
生产制造 | 产品加工-EDGECAM 高效自动编程
2024-12-27 17:39
-
设计仿真 | Adams_Controls变拓扑分析
2024-12-27 17:39
-
设计仿真 | Digimat用于碰撞、冲击模拟热塑
2024-12-27 17:38
-
设计仿真 | 海克斯康 MSC Nastran 助力沃尔
2024-12-27 17:37
-
CAERI风洞丨整车环境风洞风雨场探究
2024-12-27 17:16