Tensorflow对象检测:使用新检测到的图像重新训练模型

时间:2019-09-12 08:44:32

标签: python-3.x tensorflow object-detection

我已经在该论坛中搜索了类似的问题,但未得到解答(Updating Tensorflow Object detection model with new images)。我设法创建了自定义火车模型(将其命名为model1)。想知道我是否可以使用由model1处理的新图像来进一步训练model1?会提高模型的准确性吗?

4 个答案:

答案 0 :(得分:2)

准确性将取决于正确分类的图像的数量,而不仅取决于训练图像的总数。 https://developers.google.com/machine-learning/crash-course/classification/accuracy。如果您认为新图像将用于训练(具有正确的标签),则应考虑重新训练模型。看看这篇帖子https://datascience.stackexchange.com/questions/12761/should-a-model-be-re-trained-if-new-observations-are-available

答案 1 :(得分:1)

它可能会改善它,但是很棘手。这会导致过度拟合。改善数据集实际上会有所帮助,但对于其自身模型检测到的图像则无济于事。检测到此类图像是因为模型已经对它们执行了很好的操作,所以没有太大帮助。

您实际上需要的恰恰相反。您需要教模型识别之前无法识别的图像

答案 2 :(得分:1)

您可以通过多种方式使用当前模型(model1):

  • 在新图像上检测不良结果(困难示例)以进行新的训练
  • 在新图像上检测出良好的评估结果
  • 在现有数据集中的图像上检测不良图像(标签错误等)

新图像中的一些不良结果将是非物体(对抗性的),并且不能直接用于训练(但请参见:https://github.com/tensorflow/models/issues/3578#issuecomment-375267920)。

要从现有数据集中删除不良图像,需要从头开始进行重新训练,除非有一些时髦的方法可以从模型中“取消训练”图像。

尽管域可能随着时间而发展,但最终还是会找到一种最能充分利用所选模型体系结构能力的完美数据集。

我认为对此讨论不多的原因是,大多数研究人员必须使用通用数据集,以便他们可以比较他们的方法(精读:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5697567/)。

答案 3 :(得分:0)

机器学习的主要问题(即此处用于对象检测的方法)是泛化的问题。根据您的情况,它可以识别训练期间未使用的图像中与训练图像相同类型的对象。

很显然,如果您能够在训练期间使用所有可能的图像,则您的系统将是完美的(实际上,这将是一个简单的精确图像匹配问题)。在更现实的设置中,您使用的训练图像越多,获得更好的物体检测器的机会就越高。

通常,将困难示例添加到您的训练集中会更有价值。因此,如果您的应用程序允许它(特别是在计算时间方面),您确实可以添加在数据集中被错误检测到的所有图像(带有正确的标签),这可能将有助于获得更好的模型,能够检测新图像上处于较困难状态的物体。

但是,这实际上取决于您在做什么。如果要比较您的系统与另一个系统,则需要使用相同的(训练和)测试图像,这样才能公平。 对于基准测试,不允许在测试数据集中包含测试图像!当您计算准确性(在验证/测试数据集上)以比较多个设置时,请确保在此比较中您是公平的。