Tensorflow 对象检测 API Faster-RCNN 收敛但检测不准确

Tensorflow Object Detection API Faster-RCNN converges but detection is innacurate

我正在尝试使用 Tensorflow 对象检测 API 来识别 Guinness 标志。该过程类似于此处显示的过程 - https://towardsdatascience.com/building-a-toy-detector-with-tensorflow-object-detection-api-63c0fdf2ac95.

我准备了 100 张训练图像,我使用增强来达到总共约 5000 张训练图像。 (使用 Imgaug)。在 tensorboard 中训练时,我看到看起来像一个很好的学习曲线,达到 < 0.1 的损失,但是当我导出和测试图表时,我得到很多误报和非常不准确的结果。我正在尝试弄清楚这是为什么。

Tensorboard 性能图

错误检测示例

请注意,为了自动标记我的图像,我在徽标周围整齐地裁剪了原来的 100 张,然后我以编程方式将它们放置在随机背景图像上,并在其周围设置了边界框。示例 -

像这样 -

所有训练图像都是 800x600,但如您所见,实际的边界框和徽标会小得多。

这是同一图像的 xml 注释文件 -

<?xml version="1.0" encoding="utf-8"?>
<annotation>
  <folder>images</folder>
  <filename>57.png</filename>
  <path>model\images.png</path>
  <source>
    <database>Unknown</database>
  </source>
  <size>
    <width>800</width>
    <height>600</height>
    <depth>3</depth>
  </size>
  <segmented>0</segmented>
  <object>
    <name>guinness</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>225</xmin>
      <ymin>329</ymin>
      <xmax>516</xmax>
      <ymax>466</ymax>
    </bndbox>
  </object>
</annotation>

有人知道为什么 tensorflow 会正确分类测试图像,但在我测试真实世界图像时检测不准确吗?欢迎任何建议,并随时询问更多信息。

一些想法

  • 你的测试图也是800*600大小的吗?

  • 您可能想尝试一下配置文件中的 image_resizer 值

最终我放弃了将我的标志图像放在随机背景上的方法,而是我手动标记它们,然后使用图像增强来增加我的训练集大小。这似乎大大改善了我的结果。我认为这与上下文准确的背景在培训中实际上非常重要有关。

希望这对一些人有帮助,感谢您的帮助。