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 值
最终我放弃了将我的标志图像放在随机背景上的方法,而是我手动标记它们,然后使用图像增强来增加我的训练集大小。这似乎大大改善了我的结果。我认为这与上下文准确的背景在培训中实际上非常重要有关。
希望这对一些人有帮助,感谢您的帮助。
我正在尝试使用 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 值
最终我放弃了将我的标志图像放在随机背景上的方法,而是我手动标记它们,然后使用图像增强来增加我的训练集大小。这似乎大大改善了我的结果。我认为这与上下文准确的背景在培训中实际上非常重要有关。
希望这对一些人有帮助,感谢您的帮助。