如何为对象检测添加负样本?

人工智能 深度学习 物体检测 数据标签
2021-11-03 04:02:59

我的问题是:如何将某些负样本添加到训练数据集中以抑制那些被识别为对象的样本。

例如,如果我想训练汽车检测器。我所有的训练图像都是至少有一辆车的户外图像。但是,当我在室内图像上使用经过训练的检测器时,有时会检测到错误的对象(误报)。如何将更多的室内图像(负样本)添加到训练数据集中以提高准确性?我可以不加任何标签就添加它们吗?

1个回答

快速回答:是的,您可以,只需添加没有标签的图像,只需确保在负样本中没有汽车,否则您会使 AI 变得疯狂(即收敛和不稳定问题)。

然而,这可能不是更好的方法。为什么?因为你的数据集已经有足够的反例了。著名论文Focal Loss for Dense Object Detection指出了这一点该论文基本上提出认为数据集图像的每个像素都是一个训练信号。然后对于每张图像,有很多像素带有负信号(里面什么都没有:天空、地面、树木……),只有少数带有正信号的像素(实际的汽车)。

因此,如果数据集的每个图像的负信号(像素)多于正信号,那么问题可能不在负样本中。所以这给你留下了两种方法:

  • 使用更关注正信号(汽车像素)而不是负样本(不是汽车像素)的损失函数,例如焦点损失或导数
  • 在数据集中添加更多正例

我可以在我的日常实验中证实这篇论文所说的内容。我们现在有一组实验,与没有焦点损失和负样本的其他实验相比,在有焦点损失和没有负样本的情况下表现最好。

仅供参考,当有很多负面例子时会发生这种情况:

在此处输入图像描述

AI 花了一段时间才发现负样本在这个实验中没有用(1M 步)。从他们开始,它只关注正样本,这种训练开始收敛(推理开始显示一些有意义的东西)