随机YOLO|你用的YOLO在Dataset Shift时是否依旧鲁棒?这个策略可能是你想要的!!!

简介: 随机YOLO|你用的YOLO在Dataset Shift时是否依旧鲁棒?这个策略可能是你想要的!!!

1、简介


在OD任务中,对于一个单一的图像,在没有预测到一个或者多个边框的情况下,不确定性语义的意义就更广泛了。在图像分类和OD任务中,我们可以测量模型对于标签的确定程度,而在OD情况下,我们还需要知道模型对于对象(即边框)的位置的确定程度。这两种不确定性度量与标签和空间信息相关(这里可以使用最近引入的度量——基于概率的检测质量(PDQ))进行评估。

本文引入Stochastic-YOLO这种新的结构,这种结构是基于YOLO V3进行的改进,与此同时还加入了MC-Drop抽样,以引入预测中的随机性,从而进行不确定性的估计。虽然本文使用YOLOv3作为基础,但该结构可以在许多其他OD模型中应用,只需进行最小的修改,从而使它们对数据集转移的情况下具有更好的鲁棒性。

尽管也可以引入其他的随机性备选方案,但MC-Drop在计算量和推理时间上有明显的优势。理想情况下,贝叶斯神经网络将带来一个具有更精确的不确定性度量的完全概率性框架,但这也将带来非常大的内存占用。同样,文献中已知的模型集合可以产生更好的不确定性预测,但它也会带来明显的内存占用和昂贵的训练时间。文章认为在OD任务中使用MC-Drop是在概率框架下代价和对数据转移的鲁棒性之间的最佳权衡。

本文的主要贡献

  • 1、YOLOv3架构的改进,有效引入MC-Drop和对重要超参数的灵敏度分析;
  • 2、利用基于概率的度量(例如,PDQ)系统地评估模型对不同不确定性水平(例如空间和标签质量)的稳健性,同时表明MC-Drop是改善PDQ的可靠方法;
  • 3、引入了一种高效的缓存机制MCL-Drop,有效地减少了推理时的采样负担,可直接适用于其他OD模型。

这项关于概率OD的工作可以直接用于自动驾驶应用程序,但它也适用于许多其他场景。医学成像领域,机器人领域等,不确定性度量可以提高模型的鲁棒性。


2、本文方法


2.1、Stochastic-YOLO

本文介绍了一种基于YOLOv3的新型OD架构——Stochastic-YOLO。这里在YOLO的3个Detector Head中添加了dropout蒙特卡洛(MC-Drop)抽样方法;具体位置就是在最后一层CNN和倒数第二层CNN之前,每个head都有一个dropout层。MC-Drop在引入随机性后,在复杂性和推理效率方面做到了很好的权衡(主要是只在last layer引入了MC-Dropout,而不是每一层都引入了这种操作机制)。

当从OD模型中采样N次时,可以将一个正向传递的中间结果特征张量缓存到第一个Dropout层。缓存的Tensor是确定的(假设数值误差不显著),因此只允许对模型的最后几层进行采样。

一个MC-Drop通过缓存确定性组件从某个输入中采样N次带来时间复杂度为O(N),同时这个时间复杂度与确定性模型非常接近,如果N足够小,时间复杂度为O(1)——几乎相当于一次前向传递。

这里由于一阶段的检测器都会产生很多重叠的检测框,因此使用MC-Dropout前需要先进行NMS通过设定阈值来筛选一下最优的检测框;

image.png

在上图中,对于顶部的非随机的Bseline模型,其输出是一个集合,其中为预测C个可能标签的bounding box,为特定模型(如YOLOv3)最初产生的bounding box的数量。每个bounding box都有5个真实的值与之对应(4个坐标值+一个类别得分),这里可以表示为:

image.png

然后该值通过具有表征抑制的Filtering Block后产生更小的bounding boxes集合,其中是最终要评估的bounding boxes的数量;对于随机模型,原始产生的bounding boxes为,其中N为MC-Drop样本数。与非随机模型相比,随机模型输出中的这种区别将使滤波块有额外的输出:对于每个未滤波的Averaged bounding box ,需要该bounding box对应的N个样本,表示为。

这里需要进一步的Format Conversion block将这些集合转换为可在计算块中从概率角度进行计算的形式。实际上就是一个bounding box vector:

image.png

其中左上角表示为;右下角表示为;其中分类的得分表示为;协方差矩阵可以表示为:

image.png

对于确定性模型,这些协方差值都是零,而对于随机模型,每个协方差矩阵都是根据每个坐标中N个采样点的分布计算得到的。当协方差矩阵不是正半定时,通过计算特征分解对其进行变换,并在原特征值为负的地方用零重新构造矩阵。

Figure 1所示的推理几乎可以应用于任何输出边界框的OD模型;同时研究者也可以并根据实际的任务需求合并这一块的内容。

2.2、数据集Shift场景的系统评估

作者这里使用了Michaelis等人提出的Python包来系统地评估模型对不断增加的数据集Shift的鲁棒性;Michaelis等人也提出了一种评估指标,名为Corruption状况下的相对性能(rPC):

image.png

其中是模型在Corruption上的严重程度(s)的性能,是应用的Corruption数量,是严重程度级别的数量。对应于数据集中没有任何损坏的模型性能。

2.3、概率检测质量(PDQ)

在很多研究论文和竞赛中,OD模型主要使用平均精度(AP)的一些变量进行评估。这种类型的度量不能系统地评估OD任务中普遍存在的不确定性度量;因此作者使用了概率检测质量(PDQ)来进行模型的评估,其主要是度量Ground Truths G和detections D集合间的性能,这个度量建立在两个概念之上:标签质量空间质量

Label quality

标签质量被定义为在第i个Ground-truth对象和第j个检测之间的第f个图像上标注质量QL:

image.png

式中,为第j个探测对象在所有类上的概率分布,为Ground-truth类。注意,这忽略了这个类是否在概率分布中的排名最高,从而有效地评估被预测的对象的质量。

Spatial quality

被定义为第i个Ground-truth对象与第j个检测之间的第f个图像上的空间质量:

image.png

其中和分别是该图像前景和背景的两个损失项。当检测器给中所有的Ground-truth分配1概率值而不给其他像素(如背景)分配任何概率时,将等于1(即最大值)。

通过计算这两项的几何平均值,可以得到成对的:

image.png

注:只有当两项都更高时,几何平均值才会给出更高的值。

最后,将第f幅图像的所有非零赋值的pPDQs存储在一个矢量,如果是真实阳性的数量,我们可以将最终的PDQ得分定义为所有这些pPDQ得分的总和,即所有真实阳性、假阴性和假阳性的平均值:

image.png

其中,是被评估图像的数量。

该度量可以有效地评价OD模型的Label quality和Spatial quality。此外,该度量的另一个优点是可以为评估带来灵活性:从单一的PDQ值,到关于Spatial和Label不确定性的更细粒度的洞察力。


3、实验结果


Table 1总结了不同模型的度量标准及其在破坏(rPC)下的相对性能:

image.png

同时,作者还测试了三个有代表性的dropout rates (25%,50%和75%)和spatial and label qualities在数据集Shift平均的结果。Figure 2和Figure 3描述了label和spatial quality的结果,置信阈值为0.5:

image.png

Model Efficiency

更为详细内容可以参见论文中的描述。

相关文章
|
3月前
|
PyTorch 算法框架/工具
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
37 0
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
|
3月前
|
机器学习/深度学习 存储 计算机视觉
YOLOv8改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
YOLOv8改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
73 0
|
3月前
|
机器学习/深度学习 存储 计算机视觉
YOLOv5改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
YOLOv5改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
53 0
|
5月前
|
存储 数据可视化 计算机视觉
基于YOLOv8的自定义数据姿势估计
基于YOLOv8的自定义数据姿势估计
|
9月前
|
机器学习/深度学习 数据可视化 数据挖掘
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(2)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
180 0
|
9月前
|
机器学习/深度学习 数据可视化 计算机视觉
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(1)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
|
12月前
|
测试技术 PyTorch TensorFlow
Yolov5-6.2 正式发布 | Yolov5 也可以训练分类模型啦,语义分割+实例分割很快到来
Yolov5-6.2 正式发布 | Yolov5 也可以训练分类模型啦,语义分割+实例分割很快到来
381 0
|
12月前
|
机器学习/深度学习 编解码 自动驾驶
YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程
YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程
212 0
|
12月前
|
机器学习/深度学习 编解码 算法
YOLOv4 改进 | 记录如何一步一步改进YOLOv4到自己的数据集(性能、速度炸裂)(一)
YOLOv4 改进 | 记录如何一步一步改进YOLOv4到自己的数据集(性能、速度炸裂)(一)
119 0
|
12月前
|
机器学习/深度学习 算法框架/工具 计算机视觉
又改ResNet | 重新思考ResNet:采用高阶方案的改进堆叠策略(附论文下载)(一)
又改ResNet | 重新思考ResNet:采用高阶方案的改进堆叠策略(附论文下载)(一)
144 0