如何将 "ignore" class 与 tensorflow 对象检测 API 一起使用?

How to use "ignore" class with tensorflow object detection API?

我在自定义数据集上使用 SSD (mobilenet-v1) 训练了 tensorflow 对象检测模型(针对 num_steps:50000)。我得到 mAP@.50IOU ~0.98 和 loss ~1.17。数据集由 uno 扑克牌图像(跳过、反转和抽四)组成。在所有这些卡片上,模型都表现得很好,因为我只在这 3 张卡片上训练模型(使用移动 phone 收集的大约 278 张图像和 829 个边界框(25% 的边界框用于测试,即验证))。

然而,我没有在任何其他卡片上训练过模型,但它仍然检测到其他卡片(使用网络摄像头推断)。

我该如何解决这个问题?我是否也应该收集其他 class 图像(除了跳过、反转和抽四张牌之外的任何东西)并在操作中忽略此 class?因此该模型在训练期间看到此 class 即 标签:其他 图像并且在推理期间不放置任何标签。

我不确定如何通知 tensorflow 对象检测 API 它应该忽略来自 Other class.

的图像

谁能指点一下吗?

请分享您的观点!

,你需要有另一个Class,这是你不想检测的对象

如果你没有这个其他Class,它包括所有不被检测到的东西。该模型会将其与现有的 class 进行比较,后者与感兴趣的卡片几乎相同。

一些因素是:

  1. 形状的相似度
  2. 颜色的相似度
  3. 符号的相似度

这就是为什么即使它不是感兴趣的牌(跳过、反转和抽 4),它也会以某种方式对这三个 class 具有高 "belongingness"。

有另一个 Class 来转储所有这些可以显着减少 "belongingness" 到三个感兴趣的 classes 并尽可能提供 很多 训练期间的数据。

如果你不想再有一个class。

您可以过拟合跳过、反转并抽取 4 张牌(接近 100%),然后提高您的检测阈值到(70-90%)。

希望对您有所帮助。