训练目标检测模型太长导致模型破解

Training object detection model too long causes model to crack

我正在使用来自 tensorflow 的对象检测。

关于这个问题的一些背景信息
我面临着一个挑战,因为我有兴趣训练一个模型,该模型除其他外还可以检测武器。我的常规视角来自无人机,但我无法从这个视角找到任何包含武器的公开可用数据集。所以,我收集了带有武器的图像,并试图尽可能地模仿无人机的视角。

我用海滩上的人的图像进行了实验,并试图模仿实际问题:

实际问题
在我的一个 实验 中,我训练我的模型的时间比平时长,并注意到它真的搞砸了。更具体地说:

我还使用了用原始调整大小的图像训练的比较模型来检查差异。

意外结果

所以,我的问题是这怎么可能?训练时间过长也会导致无法检测到训练样本?对此有任何理论解释吗? (除了实施中的错误等,我认为这不太可能,但在任何情况下都不能排除)。

P.S.1
我调整大小后的图像版本遵循与 Faster R-CNN 相同的调整大小条件,最小值。暗淡。是 600 像素和最大值。一个 1024 像素。所以,这应该不是任何调整大小的问题。

P.S.2
我正在使用 tensorflow,但我认为这不是 tensorflow 的特定问题。所以,我没有将它包含在标签中。

经过一些研究(和大量实验)后,我得出了一些结论,这些结论可能会帮助其他面临同样问题的人。

  1. 未能检测到任何对象可能意味着模型在训练的某些部分已经崩溃。在我的案例中,一个可能的迹象是训练时损失值的一些极高值。虽然我有模型表明这种情况发生了并且似乎不会对模型产生太大影响(至少不会太大而使它变得无用),但这些值的数量增加是一个好兆头,表明出现了致命错误。请注意,这些值的出现频率不一定一直在增加。
  2. 越class越多越好: 第一节课后,我只用 1 class[=27 进行实验=].虽然这是合法的,并且(据我所知)没有任何关于避免它的提及(我什至阅读了使用 1 class 对象检测的教程),但这也加剧了破解率。使用 2 classes 似乎可以部分缓解该问题。当我用 11 classes 训练我的模型时,问题似乎消失了。
  3. bbox 尺寸的微小变化有助于: 对尺寸变化很大的边界框进行试验,我得出的结论是,基本上均匀的 bbox 尺寸也有助于缓解这个问题。
  4. 更多 classes 可能会提高性能: 我还注意到虽然 11 classes 问题似乎比 1 class 由于使用 1 class 性能训练模型的局限性,某些情况下前一种情况更高。

我的最终结论是,由于某种原因,我的模型在某些时候遇到了一些权重溢出,导致它无法再次恢复正常。事实上,我已经扩充了我的数据(例如,相似的图像可能一个接一个地输入并加强了某些权重)可能会增加问题发生的频率,但问题仍然存在于非扩充数据集中。