大佬教程收集整理的这篇文章主要介绍了TF 对象检测 - 从检查点重新加载后模型性能丢失,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[当前行为]
Tensorflow 对象检测模型经过训练并且表现良好。然后将其保存到检查点并从该检查点重新加载。重新加载保存的检查点后,模型不再检测到任何东西。
[期望的行为]
从检查点重新加载的模型应该产生与用于生成检查点的模型相同或非常相似的输出。
[重现错误的最少代码]
可以在此处找到重现问题的 Google Colab 笔记本:
Minimal code example
[更详细的问题描述和最少代码的作用]
我正在使用 Tensorflow 的对象检测模型来训练一个模型来检测显微镜图像中的各种事物。
当从检查点/保存的模型格式重新加载时,训练良好的模型性能不佳。我正在使用改编自他们的 example code 的热切模式训练循环进行训练。
使用刚刚训练好的没有留下内存的模型进行推理时,性能相当不错。然而,当我在推理模式下创建一个新模型并加载保存的检查点时 - 模型不再检测到任何东西。
当我使用 TF 对象检测 model_main_tf2.py 命令行方法而不是我的自定义 Eager 循环进行训练时,我遇到了相同的结果。模型似乎训练得很好,损失非常低,但是当从生成的检查点加载模型时,性能很糟糕。
我在 Colab 上创建了一个最小的示例(链接如上),其中我对它们的 example code 进行了最小的更改。
它过拟合到 tensorflow 的小鸭子数据集,并对与训练相同的数据进行推理。
运行时,此笔记本将通过过拟合小鸭数据集来训练 SSD 模型。然后对与训练相同的数据进行推理。
训练后,笔记本会绘制两组图像:
前者具有非常高的性能,通常,所有内容都以非常高的置信度被检测到。后者要么根本没有检测到(注意:在极少数情况下,后者实际上工作得很好。如果工作正常重置笔记本并再次运行。似乎有一些变化,在某些情况下它可能“意外”表现良好)
batchnorm 可训练时效果尤其糟糕。使用 batchnorm 训练的模型非常迅速地收敛,在未重新加载的模型上表现惊人,但重新加载的模型表现极差。在没有批规范的情况下训练时也有影响,但程度较轻。
目前我怀疑批处理规范是一个问题 - 但我在互联网上找不到任何关于其他人遇到此类问题的信息?
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的TF 对象检测 - 从检查点重新加载后模型性能丢失全部内容,希望文章能够帮你解决TF 对象检测 - 从检查点重新加载后模型性能丢失所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。