Tensorflow 对象检测 API - 验证损失行为

Tensorflow object detection API - validation loss behaviour

我正在尝试使用 TensorFlow 对象检测 API 来识别图片和视频中的特定对象(吉他)。

至于数据,我从OpenImage数据集中下载了图像,并导出了.tfrecord文件。我正在用不同的数字进行测试,但现在假设我在训练集中有 200 张图像,在评估集中有 100 张图像。

我正在使用 "ssd_mobilenet_v1_coco" 作为起点和 "model_main.py" 脚本来训练模型,以便我可以获得训练和验证结果。

当我在 TensorBoard 中可视化训练进度时,我得到以下训练结果:

和验证损失:

分别

我通常是计算机视觉的新手并且正在尝试学习,所以我试图弄清楚这些图的含义。 训练损失按预期进行,随时间减少。 在我(可能过于简单)的观点中,我期望验证损失从高值开始,随着训练的进行而减少,然后如果训练持续时间过长并且模型开始过度拟合,则再次开始增加。

但就我而言,我没有看到验证曲线的这种行为,它似乎基本上一直呈上升趋势(不包括波动)。

我训练模型的时间是否太短,以至于看不到我期望的行为?我的期望一开始就错了吗?我是否误解了曲线?

好的,我通过将 initial_learning_rate 从 0.004 减少到 0.0001 来修复它。
考虑到验证损失的剧烈波动,这是显而易见的解决方案,但起初我认为它行不通,因为配置文件中似乎已经有一个学习率调度程序。
但是,紧接着(在配置文件中)有一个 num_steps 选项,它表示

  # Note: The below line limits the training process to 200K steps, which we
  # empirically found to be sufficient enough to train the pets dataset. This
  # effectively bypasses the learning rate schedule (the learning rate will
  # never decay). Remove the below line to train indefinitely.

老实说,我不记得我是否注释掉了 num_steps 选项...如果我没有注释掉,我的学习率似乎保持在初始值为 0.004,事实证明它太高了。
如果我做了注释掉它(这样学习调度程序就被激活了),我想,它不是减少,而是从一个太高的值开始。
无论如何,它现在工作好多了,我希望这对遇到同样问题的人有用。