基于深度集成的概率目标检测
立即解锁
发布时间: 2025-09-02 01:00:56 阅读量: 7 订阅数: 28 AIGC 

### 基于深度集成的概率目标检测
#### 1. 引言
目标检测是计算机视觉中的基础任务,也是许多现实世界机器人应用的必备能力。这些应用能让机器人在其运行的环境中定位和识别物体,相关模型在ImageNet、PASCAL视觉对象类和微软上下文常见对象(COCO)等数据集上取得了较高的平均精度均值(mAP)。然而,这些模型在现实场景中可能会失效,mAP指标虽鼓励检测器为每张图像输出多个检测结果,但除了较高的分数表明系统更有信心外,它并不能提供一致的置信度衡量标准。机器人视觉系统必须能够应对各种操作条件,如光照变化和周围环境中的遮挡。
ACRV机器人视觉概率目标检测挑战(PrOD)对传统目标检测任务进行了改进,要求估计检测的空间和语义不确定性,通过一种新的评估指标——基于概率的检测质量(PDQ)来实现。与mAP相比,PDQ联合评估空间和标签不确定性的质量、前景和背景分离情况,以及真阳性(正确)、假阳性(虚假)和假阴性(漏检)检测的数量。此外,PrOD挑战提供了由高保真模拟生成的各种场景的视频数据。
在这项工作中,我们探索使用深度集成来解决不确定性估计问题。我们将该技术联合应用于多个检测模型,包括Cascade R - CNN、RetinaNet、Grid R - CNN和混合任务级联(HTC),以生成概率边界框。我们的系统在ECCV 2020 PrOD挑战中获得了15.959的PDQ分数。
#### 2. 方法描述
##### 2.1 数据预处理
PrOD挑战的测试集是COCO数据集的一个子集,COCO包含80个不同类别的物体,我们将其用作训练数据。首先,我们过滤掉COCO中未包含在挑战中的50个类别。挑战的测试集和验证集来自模拟捕获的视频序列,这些视频涵盖了白天和夜晚等多种环境以及不同的相机高度。由于亮度水平的变化,尤其是夜间捕获的图像,这些视频中的目标检测存在问题。
为了缓解这个问题,我们应用了几种数据增强技术,包括随机伽马调整、改变亮度和对比度值以及通道洗牌。我们还在测试期间应用了增强技术,以评估自适应伽马校正(AGC)的有效性。这个预处理步骤可以从启发式角度修正过暗或过亮的图像,但我们发现这会增加假阳性的数量,降低平均标签质量,从而导致PDQ分数降低。
##### 2.2 检测模型
对于第一阶段的检测任务,我们使用了近年来提出的四个在目标检测任务中表现良好的检测模型:
- **Cascade R - CNN**:一种多级检测架构,由一系列使用不断增加的交并比(IoU)阈值训练的检测器组成。这些检测器是逐步训练的,利用了一个检测器的输出是训练下一个更高质量检测器的良好分布这一观察结果。
- **RetinaNet**:一种全卷积单阶段检测器,使用焦点损失。焦点损失通过对交叉熵损失应用一个调制项,将学习重点放在难负样本上。
- **Grid R - CNN**:用网格引导机制取代了目标检测中传统的边界框偏移回归策略,以实现高质量的定位。
- **Hybrid Task Cascade (HTC)**:一种用于实例分割和目标检测的新级联架构。
##### 2.3 深度集成
传统上,贝叶斯神经网络(BNNs)为测量模型不确定性提供了数学基础,但BNNs的计算成本过高。Lakshminarayanan等人提出了一种非贝叶斯解决方案,通过独立训练多个具有随机参数初始化的网络来作为BNNs的替代方案。这些网络在给定输入时表现不同,从而表达出不确定性。从这个意义上说,Dropout可以被解释为一种集成模型组合,其中样本(预测)是在一组神经网络上进行平均的。
我们对目标检测器集成的预测进行平均的方法是使用类似于非极大值抑制(NMS)的方法合并边界框。这种方法受到了Miller等人提出的Dropout采样的启发,在该采样中,图像检测结果被分组为观察值。为了对预测进行平均,我们将NMS应用于从集成中获得的所有边界框列表。
这个过程如下:
1. 将IoU高于某个阈值的边界框分组在一起,并按置信度分数对每个组进行排序。
2. 为每个组分配得分最高的标签。
3. 通过简单平均将每个组的边界框减少为单个边界框,以获得边界框和标签列表。
4. 对于集成合并检测列表中的每个边界框和标签,计算边界框左上角和右下角的协方差矩阵,就好像这些边界框和标签是由单个神经网络产生的一样。
合并深度集成的过程如下所示:
```plaintext
Algorithm 1. Merging of Deep Ensembles
1: procedure merge detections
2:
I = Input image
3:
Matches = Bounding box clusters
4:
D = d1, d2, . . . , dk
▷di: ith detector
5:
IoUThreshold = [0, 1]
6:
BBoxes = empty list()
7:
Labels = empty list()
8:
for each detector in D do
9:
detectio
```
0
0
复制全文
相关推荐









