Python TF对象检测-从检查点重新加载后,模型性能丢失

Python TF对象检测-从检查点重新加载后,模型性能丢失,python,tensorflow,tensorflow2.0,object-detection-api,Python,Tensorflow,Tensorflow2.0,Object Detection Api,[当前行为] Tensorflow目标检测模型经过训练,性能良好。然后将其保存到检查点并从该检查点重新加载。重新加载保存的检查点后,模型不再检测任何内容 [期望的行为] 从检查点重新加载的模型应生成与用于生成检查点的模型相同或非常相似的输出 [复制错误的最小代码] 谷歌Colab笔记本准备复制的问题可以在这里找到: [问题的更详细描述以及最小代码的作用] 我正在使用Tensorflow的目标检测模型来训练一个模型来检测显微镜图像中的各种东西 训练良好的模型在从检查点/保存的模型格式重新加载时性

[当前行为]

Tensorflow目标检测模型经过训练,性能良好。然后将其保存到检查点并从该检查点重新加载。重新加载保存的检查点后,模型不再检测任何内容

[期望的行为]

从检查点重新加载的模型应生成与用于生成检查点的模型相同或非常相似的输出

[复制错误的最小代码]

谷歌Colab笔记本准备复制的问题可以在这里找到:

[问题的更详细描述以及最小代码的作用]

我正在使用Tensorflow的目标检测模型来训练一个模型来检测显微镜图像中的各种东西

训练良好的模型在从检查点/保存的模型格式重新加载时性能不佳。我正在使用一个根据他们的经验改编的渴望模式训练循环进行训练

当使用刚刚训练过且没有留下记忆的模型进行推理时,性能非常好。然而,当我在推理模式下创建一个新模型并加载保存的检查点时,模型不再检测任何东西

当我使用TF Object Detection model_main_tf2.py命令行方法(而不是自定义的eager循环)进行训练时,我也经历了同样的结果。模型似乎训练得很好,损失很小,但是当从生成的检查点加载模型时,性能很差

我已经在Colab上创建了一个最小的示例(链接在上面),在这里我对其进行了最小的更改

它适用于tensorflow的small duck数据集,并在与训练相同的数据上执行推理

运行时,此笔记本将通过过度拟合small duck数据集来训练SSD模型。然后对与训练相同的数据进行推理

培训后,笔记本将绘制两组图像:

  • Duck数据集图像,带有内存中模型的叠加结果
  • Duck数据集图像,其中包含从最近的训练检查点(训练完成后生成的检查点)创建和加载的模型的叠加结果
前者具有非常高的性能,通常,所有检测都具有非常高的可信度。后者要么根本检测不到任何东西(