训练有素的模型经过长时间的训练后几乎可以检测到所有类别

时间:2018-01-07 03:56:40

标签: python tensorflow machine-learning object-detection

我使用Tensorflow和Inception的预训练模型训练了一个自定义人员探测器,然后经过几千步并且平均损失了2-1,我停止了训练并用实时视频进行了测试。结果非常好,只有很少的误报。它可以检测到一些人,但不是每个人,所以我决定继续训练模型,直到我得到平均损失低于1然后再次测试它。即使没有物体存在,它现在几乎可以检测到所有人甚至视频的整个帧。这些模型似乎在图片上很好用,但在视频上却没有。这是否过度拟合?

抱歉,我忘记了它的步数。我不小心删除了包含ckpt和tfevents的培训文件夹。

编辑:我忘记了我也在使用相同的数据集训练相同的模型,但在云上作为备份更高的批量大小,现在处于更高的步骤。稍后我会编辑帖子,一旦我从云端下载并测试模型,就会从tensorboard提供信息。

edit2:我从云上下载了200k步的训练模型并且它正在工作,它可以检测到人,但有时在移动摄像机时将整个帧识别为“人”不到一秒钟。我想这可以通过继续训练模型来改善。 Total Loss on tensorboard

现在,我将继续对云进行培训,并尝试记录测试的每个结果。我还将尝试在我的数据集上调整一些图像的大小,并使用mobilenet在我的本地计算机上训练它,并比较两个模型的结果。

1 个答案:

答案 0 :(得分:0)

正如您所说,当训练迭代次数较少时,模型表现良好,我猜测预训练模型已经可以检测到人物对象,而您的训练集使检测结果更差。

  

这些模特似乎在图片上效果很好,但在视频上效果不佳

如果检测到您的单张照片正常,那么视频也应该有效。唯一的区别可能是视频图像分辨率和质量。因此,请比较图像分辨率和视频。

  

这是否过度拟合?

您正在谈论的图像和视频如果图像用于培训,则不应使用它们来评估模型。如果模型过度拟合,它将检测训练图像,但不会检测任何其他图像。

正如您所说,模型检测到太多检测,我认为这不是因为过度拟合,而是可能与您的数据集有关。我想

  1. 你训练的数据量太少了。

  2. 网络模型对于数据量来说太大而且复杂。尝试像VGG,inception_v1(ssd mobile net)等小型网络。

  3. 训练集中使用的图像分辨率与评估图像非常不同。
  4. 学习率很重要,但我觉得在你的情况下很好。
  5. 我认为您可以仔细检查用于培训的数据集,并尽可能多地使用培训数据。这些是我经常遇到的事情和浪费时间。