我正在尝试使用 TensorFlow 对象检测 API 来微调预训练的 Mask R-CNN Inception ResNet V2 1024x1024 模型以执行自定义任务。我已经从这个位置下载了模型。
我为此模型创建了一个管道配置,指定我的训练和评估 TFRecord 数据集以及下载检查点的路径作为fine_tune_checkpoint。
但是,当我运行 model_main_tf2.py 脚本来启动训练时,我遇到错误,指出模型中缺少检查点中的某些变量。错误如下:
Traceback (most recent call last): File "/content/models/research/object_detection/model_main_tf2.py", line 114, in <module> tf.compat.v1.app.run() File "/usr/local/lib/python3.10/dist-packages/tensorflow/python/platform/app.py", line 36, in run _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef) File "/usr/local/lib/python3.10/dist-packages/absl/app.py", line 308, in run _run_main(main, args) File "/usr/local/lib/python3.10/dist-packages/absl/app.py", line 254, in _run_main sys.exit(main(argv)) File "/content/models/research/object_detection/model_main_tf2.py", line 105, in main model_lib_v2.train_loop( File "/usr/local/lib/python3.10/dist-packages/object_detection/model_lib_v2.py", line 605, in train_loop load_fine_tune_checkpoint( File "/usr/local/lib/python3.10/dist-packages/object_detection/model_lib_v2.py", line 398, in load_fine_tune_checkpoint raise ValueError('Checkpoint version should be V2') ValueError: Checkpoint version should be V2
此错误表明我的管道中定义的模型架构与预训练模型的架构之间不匹配。但是,据我所知,我的管道配置已针对 Mask R-CNN Inception ResNet V2 1024x1024 模型正确设置。
此外,我已经使用inspect_checkpoint.py 脚本检查了检查点文件,它似乎包含该模型预期的所有变量。下载的检查点文件包括 ckpt-0.index、ckpt-0.data-00000-of-00001 和 checkpoint。
我正在 Google Colab 上使用 TensorFlow 版本 2.12.0 和 Python 版本 3.10.0 运行此程序。我将非常感谢任何针对此问题的指导或解决方案。
重现该行为的步骤:
我希望模型训练首先从指定的预训练模型加载权重。该错误似乎表明我的管道中定义的模型架构与预训练模型的架构之间不匹配。尽管如此,我的管道配置似乎已针对 Mask R-CNN Inception ResNet V2 1024x1024 模型正确设置。
使用inspect_checkpoint.py 检查检查点文件后,它似乎包含 Mask R-CNN Inception ResNet V2 1024x1024 模型的所有预期变量。我还确认下载的文件包括ckpt-0.index、ckpt-0.data-00000-of-00001和checkpoint。然而,这个问题仍然存在。任何对此问题的指导或解决方案将不胜感激。
我已在下面附上我的 pipeline.config 文件: 管道.txt
将以下标志添加到fine_tune_checkpoint: 条目下面的 train_config: 部分
fine_tune_checkpoint_version:V2 fine_tune_checkpoint_type:“检测”
另请注意,该模型似乎存在一个未解决的问题 -