Tensorflow对象检测API无法检测到大小与训练集不同的图像中的对象

时间:2019-08-06 13:09:10

标签: python tensorflow object-detection object-detection-api

我正在使用Tensorflow对象检测API进行项目。我已经在多个test images上训练了我的模型,并且已经训练了rfcn_resnet101_coco模型来检测这些图像中的字母 o

我认为该模型运行良好,因为它可以在传递给我的图像中检测出 o (准确度很高)。有关示例,请参见herehere

但是,当我传入另外两张尺寸与前两张相差很大的图像时,该模型无法检测到任何东西!例如,当我向模型传递full pagesingle world时,输出与输入相同。

我相信这是因为我传递的最后两个图像比我训练模型时所用的original training set大或小,而前两个或大约相同。

我想知道是否有某种方法可以训练我的模型,以便它可以检测大小不同的图像中的字母 o ,而不仅仅是与训练输入相似的图像。我曾想过调整pipeline.config(找到的here),但不确定从哪里开始。

1 个答案:

答案 0 :(得分:0)

首先,以特定的方式对图像进行训练,然后在明显不同的场景(尤其是输入大小)上进行测试永远不是一个好习惯。 也就是说,除非您的模型/训练方案以某种方式解决了这种差异。

此外,许多对象检测器都使用锚点作为参考框,这意味着模型可以训练然后针对它们预测对象。这些具有相对于输入分辨率的特定大小。如果您正在训练以使地面真相对象的大小与锚点大小相对应,然后进行测试以确保没有锚点适合您要检测的对象(太小或太大),则它将无法检测到它们

这意味着您需要:

  1. 具有与要检测的对象的大小(和长宽比)相对应的锚点。
  2. 确保您拥有与训练集中的这些锚点相对应的地面真相对象,以便您的模型可以从此类情况中实际学习。
相关问题