Tensorflow使用model_main.py训练目标检测模型报错:缺少hparams参数
TensorFlow model_main.py训练目标检测模型报错解决方法
问题描述
执行命令:
python model_main.py --alsologtostderr --model_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config
时出现如下报错:
Traceback (most recent call last): File "model_main.py", line 110, in <module> tf.app.run() File "C:\Users\dell3\PycharmProjects\Rockartv3\venv\lib\site-packages\tensorflow_core\python\platform\app.py", line 40, in run _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef) File "C:\Users\dell3\PycharmProjects\Rockartv3\venv\lib\site-packages\absl\app.py", line 308, in run _run_main(main, args) File "C:\Users\dell3\PycharmProjects\Rockartv3\venv\lib\site-packages\absl\app.py", line 254, in _run_main sys.exit(main(argv)) File "model_main.py", line 72, in main FLAGS.sample_1_of_n_eval_on_train_examples)) TypeError: create_estimator_and_inputs() missing 1 required positional argument: 'hparams'
使用train.py可正常运行,但需要同时查看评估结果。
解决方法
- 修改model_main.py的调用代码:找到
model_main.py中调用create_estimator_and_inputs的代码段(约第72行附近),在参数列表中添加hparams=None,修改后的代码如下:
estimator, train_input_fn, eval_input_fn, eval_on_train_input_fn = model_lib.create_estimator_and_inputs( run_config=run_config, hparams=None, pipeline_config_path=FLAGS.pipeline_config_path, train_steps=FLAGS.num_train_steps, sample_1_of_n_eval_examples=FLAGS.sample_1_of_n_eval_examples, sample_1_of_n_eval_on_train_examples=FLAGS.sample_1_of_n_eval_on_train_examples)
保存后重新执行原命令即可。
检查版本兼容性:确保TensorFlow版本与TensorFlow Object Detection API版本匹配。如果使用TensorFlow 1.x,需对应API的旧分支;若为TensorFlow 2.x,则使用适配TF2的API分支。可重新克隆或更新Object Detection API代码,保证模块接口一致。
排查自定义修改:如果曾修改过模型配置或相关模块代码,检查
create_estimator_and_inputs函数的定义,确认参数要求,调整model_main.py的调用参数使其匹配。
内容的提问来源于stack exchange,提问作者Seif Bouragaa
相关产品推荐
相关产品推荐

