这是地平线机器人在CVPR 2020 Waymo Open Dataset Challenge比赛中的在2D目标检测项目中的刷榜文章,里面有很多技巧可以参考学习,例如将单阶段目标检测和两阶段目标检测结果自动融合方法。
论文地址:https://arxiv.org/pdf/2006.15507.pdf
在自动驾驶系统中,通常需要对车辆和行人进行可靠、准确的检测。在本报告中,介绍了用于自动驾驶场景的最新2D目标检测系统。具体来说,首先,将流行的两阶段检测器和一阶段检测器以Anchor free的方式集成在一起,以产生可靠的检测结果。此外,训练了多个专家模型并设计了自动Ensemble方案的Greedy版本,该方案会自动合并来自不同模型的检测结果。值得注意的是,整体检测系统在Waymo开放数据集v1.2上达到了70.28 L2 mAP,在Waymo开放数据集挑战赛的2D检测赛道中排名第二。
简介
Waymo开放数据集挑战吸引了计算机视觉和自动驾驶领域的许多参与者。比赛中使用的Waymo Open Dataset提供了在真实自动驾驶场景中由多个LiDAR和摄像头传感器收集的高质量数据。在2D检测赛道中,在摄像机图像中采用2D边界框对车辆,行人和骑自行车者三类目标进行标注。在自动驾驶应用中准确而可靠地检测车辆、骑自行车的人和行人至关重要。为了实现这一目标,本文在这一挑战中开发了最先进的2D目标检测系统。
本文方法
1. Base Detectors
为了充分利用不同的检测框架,本文采用了最先进的两阶段检测器Cascade R-CNN 和一阶段Anchor-free检测器CenterNet 。Cascade R-CNN采用级联结构对候选目标进行分类和框回归,这有利于精确定位目标实例。与Cascade R-CNN相比,CenterNet是Anchor-free的,将目标视为具有属性的点,可能更适合于检测小对象和拥挤场景中的目标。本文认为这两种不同的机制在检测上具有同等的多样性,因此结果可以互补,于是,分别使用这两个框架进行检测,然后将其融合为最终检测结果。
1.1 Cascade R-CNN
Cascade是一种经典的体系结构,被证明可以有效地完成各种任务。在目标检测中,Cascade R-CNN基于Faster R-CNN 建立了一个级联头,以逐步完善检测。由于候选框由多个box regression head优化,因此Cascade R-CNN擅长精确定位目标实例。在本文中,将Cascade R-CNN用作两阶段检测器。
在得到一个RoI后,Faster RCNN通过RoI与标签的IoU值来判断该RoI是正样本还是负样本,默认的IoU阈值为0.5,这个阈值是一个超参数,对于检测的精度有较大影响。如何选择合适的阈值是一个矛盾的问题。一方面,阈值越高,选出的RoI会更接近真实物体,检测器的定位会更加准确,但此时符合条件的RoI会变少,正、负样本会更加不均衡,容易导致训练过拟合;另一方面,阈值越低,正样本会更多,有利于模型训练,但这时误检也会增多,从而增大了分类的误差。
对于阈值的问题,通过实验可以发现两个现象:1、一个检测器如果采用某个阈值界定正负样本时,那么当输入Proposal的IoU在这个阈值附近时,检测效果要比基于其他阈值时好,也就是很难让一个在指定阈值界定正、负样本的检测模型对所有IoU的输入Proposal检测效果都最佳。2、经过回归之后的候选框与标签之间的IoU会有所提升。、
基于以上结果,2018年CVPR上的Cascade RCNN算法通过级联多个检测器来不断优化结果,每个检测器都基于不同的IoU阈值来界定正负样本,前一个检测器的输出作为后一个检测器的输入,并且检测器越靠后,IoU的阈值越高。
Cascade R-CNN的每一个检测器的边框输出作为下一个检测器的输入,并且检测器的IoU阈值是逐渐提升的,因此这种方法可以逐步过滤掉一些误检框,并且提升边框的定位精度。
1.2 CenterNet
CenterNet通过预测物体的中心点位置及对应物体的长与宽(检测中心点 边框回归)来检测目标对象。由于CenterNet不需要NMS作为后处理步骤,因此它可能更适合于拥挤的场景,因为如果阈值设置不当,NMS可能会错误地抑制正框。在本文的方案中,采用CenterNet作为一阶段检测器,其框架如图2所示。与原始的CenterNet相比,本方案使用了《Training-time-friendly network for real-time object detection》(https://arxiv.org/pdf/1909.00700.pdf)文中所提出的高斯核,充分考虑了CenterNet的长宽比,并且通过边界框对训练样本进行编码。
CenterNet的特点是:1、没有使用Anchor作为先验框,而是预测物体的中心点出现位置,因此也就不会存在先验框与标签的匹配,正、负样本的筛选过程。2、每个物体标签仅仅选择一个中心点作为正样本,具体实现是在关键点热图上提取局部的峰值点,因此也就不会存在NMS的过程。3、由于CenterNet专注在关键点的检测,因此其可以使用更大的特征图,而无须使用多个不同大小的特征图。在CenterNet的论文中其使用的网络下采样率为4。
CenterNet尝试了串联Hourglass、ResNet等多种网络用来提取特征,生成了特征点的热图。实验结果表明,Hourglass的网络能够提供更精确的检测精度,而更轻量的ResNet的检测速度会更快。
另外,CenterNet网络中没有center pooling操作, 而是把CenterPoint当做关键点来处理, 中心处响应值最高, 让其上下左右四个位置低些, 其余位置为0。
为了提高中心点的定位精度, 同样也会在每个位置上预测两个offset。 box的宽高通过直接回归得到(h, w)。在将点回归到框的过程中, 会选择这个位置上的置信度比其他8个邻域位置置信度都要高的点。
CenterNet参考了CornerNet的思想,网络输出了以下3个预测值:
- 关键点热图:这里的关键点热图与CornerNet类似,只是这里只预测一个中心点的位置。对于标签的处理,CenterNet将标签进行下采样,然后通过下式的高斯核函数分散到热图上。
- 中心点偏差:CenterNet对每个中心点增加了一个偏移的预测,并且所有类别共享同一个偏移预测值。
- 宽与高的预测:CenterNet不需要预测Embeddings来处理配对,而是预测了物体的宽与高,这里的预测是原图像素坐标的尺度。
总体上,对于特征图上的一个点,CenterNet会预测C 4个值,其中包括C个类别的中心点得分、中心点(x, y)的偏差以及该物体的宽高(w, h)。
2、Greedy Auto Ensemble
设计了一个贪婪的自动融合方案,它会根据其检测精度自动合并多组检测结果,如图3所示。注意到一组检测代表了从唯一检测器框架或特定检测器生成的检测结果。借鉴了《1st Place Solutions for OpenImage2019 - Object Detection and Instance Segmentation》文章,将每组检测结果视为二叉树的节点。迭代将每对子节点对合并到二叉树的每个层中的一个父节点,直到到达根节点为止,其中根节点用作最终检测结果。不同的是,本方案方法动态并贪心地确定了二叉树的层次关系,从而减少了很多搜索空间。
Adj-NMS
考虑到NMS和soft-NMS的不足,先利用0.5的IOU阈值做了一次NMS,将靠得比较近的候选框过滤掉了,然后再用基于高斯核的soft-NMS做二次过滤。
根据这个公式来看看,假设分类置信度阈值为0.5,候选框分类置信度为1,那么Soft-NMS阶段要想留下,IOU必须小于0.59,而第一次的NMS已经将IOU>0.5的候选框过滤掉了,所以这个理论上可行,但是特别密集拥挤的场景下可能不适用。
3、Expert Model 专家模型
WaymoOpen数据集中的数据分配高度不平衡。例如,在训练集中,车辆和行人类别数量分别有170M和6M,而骑自行车的数量中只有50M。结果,骑自行车的人在训练中可能会被行人或车辆样本所淹没,从而导致骑自行车的人表现不佳。为了解决这个问题,本方案分别针对骑自行车者,行人和车辆类别训练了多个专家模型。由于Waymo Open Dataset还提供了每个图像帧的上下文信息,例如一天中的时间(例如白天和晚上)。因此,本方案还分别仅使用白天和夜间训练图像来训练其他白天和夜间专家模型。
4、Anchor Selection
在Cascade R-CNN中,anchor是手动预定义的。默认情况下,长宽比设置为0.5、1和2。由于观察到某些形状非常细长的车辆,因此为车辆专家模型添加了两个固定长宽比的anchor,分别为0.25和0.75。CenterNet没有anchor选择问题。
5、Label Smoothing
如图4所示,在数据集中存在一些困难的示例标注不正确或缺失,这可能会导致训练出现问题。因此,本方案在训练过程中采用标签平滑处理此问题。
实验与结果
数据集:Waymo Open Dataset v1.2
评价指标:Level 2 Average Precision (AP) 、分别将车辆,骑自行车的人和行人的positive IoU阈值设置为0.7、0.5和0.5
实验细节
1、Cascade R-CNN Detector.对于级联R-CNN检测器,在mmdetection中采用HTC的实现,具有禁用的语义分割和实例分割分支,因为在此挑战中无法使用逐像素标注。使用具有可变形卷积的ResNeXt-101-64×4d作为主干网络。我们分别在微型火车上针对所有三个班级训练一个主要模型,针对车辆,行人和骑自行车的班级分别训练三个专家模型。还使用了多尺度训练,其中长尺寸被调整为1600像素,而短尺寸则是从[600,1000]像素中随机选择的,而不会更改原始宽高比。标签平滑和随机水平翻转也应用于训练中,所有模型的batch大小设置为8。
在推理过程中,将每个图像的长尺寸调整为2400像素,并保持其原始长宽比。除了仅使用水平翻转的车辆专家模型外,所有模型均使用0.8、1.0、1.2的3个比例因子的多尺度测试以及水平翻转。对于每个模型,首先使用具有类感知能力的soft-NMS过滤出重叠的盒子。为了合并由不同模型生成的检测结果,分别对行人和骑自行车的人类别使用Greedy Auto Ensemble,对车辆的类别使用Adj-NMS。
2、CenterNet Detector.对于CenterNet检测器,在训练期间将图像大小设置为768×1152像素,将学习速率设置为1.25e-4。为了节省计算资源,首先在微型训练集上使用COCO预训练权重训练CenterNet检测器,持续25个epoch,并将其用作基础模型。然后,基于以下基础模型微调3个专家模型:夜间专家模型,白天专家模型,pedestrian cyclist专家模型。推断时,使用水平翻转和比例因子为0.5、0.75、1、1.25、1.5的多比例测试。综上所述,总共训练了8个CenterNet模型,并使用加权框融合(WBF:《 ensembling boxes for object detection models》)将它们的检测结果合并为一组检测结果
3、一阶段检测器和二阶段检测器各自产生一组独立的检测。为了将两组检测结果合并为最终结果,分别将Adj-NMS用于车辆和步行者类别,将WBF用于自行车者类别。