0

我正在尝试评估我的视频对象检测模块,为此我正在使用 InageNet VID 数据集。在某些时候,我面临评估包含零个对象的框架的情况。这意味着这一帧中没有地面实况 bbox(这很好,因为我们正在讨论视频对象检测)。

因为,我使用的模块预计至少存在 1 个 bbox,所以我想知道 ImageNet 对这些案例的官方处理是什么。我发现这个描述显然不是详尽的,它可能会在 ImageNet 站点中提供一些观点,其中指出:

评估指标与对象检测任务相同,这意味着未注释的对象将受到惩罚,重复检测(同一对象实例的两个注释)也会受到惩罚。

(原文如此;错字来自原文)

其中没有提到上述情况。由于这是一个简单的描述,我不确定它是否涵盖了所有边缘情况。通常在单图像对象检测中这不是问题,因为评估样本总是包含一些对象。但在这种情况下,这是否意味着我应该完全忽略这些框架?

此外,检查这个关于对象检测指标的存储库(顺便说一下,这是超级分析的),no gt 案例似乎属于关于False Positive (FP)的一般情况。在这种情况下, Intersection将为 0(因为不存在 gt bbox),并且Union将只是一个等于 FP bbox 的非零数,因此,IoU = 0.

那么,ImageNet 官方是如何处理这些情况的呢?我对这里的合理选择不感兴趣,只是官方版本。

4

2 回答 2

1

我刚刚浏览了 ImageNet VID 2015 评估代码,该代码是从UNC的评估套件中获得的。

评估涉及精度和召回率,因此需要为每个 GT 框/检测对或实例计算 TP、FP 和 FN。IoU 计算纯粹用于确定是否发生了有效检测。

对于没有 GT 框且没有检测的帧:由于我们没有记录真正的负片,因此这些对计算没有影响。

对于没有 GT 框但有一些检测的帧:这些误报是在第 231 行的每个帧中捕获的eval_vid_detections.m

    if kmax > 0
        tp(j) = 1;
        gt_detected(kmax) = 1;
    else
        fp(j) = 1;
    end

对于带有 GT 框但没有检测到的帧:这些 GT 框在第 79 行首次加载 GT 数据时被计算在内num_pos_per_class(c) = num_pos_per_class(c) + 1;:稍后在第 266 行计算召回时使用:recall{c}=(tp/num_pos_per_class(c))';

因此,如果您的框架不包含检测和 GT 框,您可以放心地忽略它。

顺便说一句,请注意,每个实例的检测阈值设置如下:

    thr = (gt_w.*gt_h)./((gt_w+pixelTolerance).*(gt_h+pixelTolerance));
    gt_obj_thr{i} = min(defaultIOUthr,thr);

在哪里pixelTolerance = 10。这对小物体有一点推动作用。

于 2019-06-03T18:58:10.833 回答
0

应该有 GT 注释的对象缺少注释的情况如何?

比如ILSVRC2015_val_00000001/000266.JPEG明明有一个turtle(实际上直到000265.JPEG所有帧都有对应的turtle注解)但是对应的注解文件ILSVRC2015_val_00000001/000266.xml没有任何注解。

在我的分析中,验证数据集中有一些4046176126缺少 GT 注释。尽管包含属于30ImageNetVID 类别之一的对象,但这些帧中的大多数都没有 GT 注释。

于 2020-05-29T08:46:24.940 回答