【问题标题】:ValueError: Protocol message SsdFeatureExtractor has no field replace_preprocessor_with_placeholderValueError:协议消息 SsdFeatureExtractor 没有字段 replace_preprocessor_with_placeholder
【发布时间】:2019-04-13 20:43:12
【问题描述】:

我正在使用对象检测 API 来训练我自己的模型,但在使用以下命令运行训练时:

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_coco.config

我收到此错误:

WARNING:tensorflow:From C:\Users\MHD\Anaconda3\envs\tf15\lib\site-packages\tensorflow\python\platform\app.py:124: main (from __main__) is deprecated and will be removed in a future version. Instructions for updating: Use object_detection/model_main.py. Traceback (most recent call last): File "train.py", line 179, in <module> tf.app.run() File "C:\Users\MHD\Anaconda3\envs\tf15\lib\site-packages\tensorflow\python\platform\app.py", line 124, in run _sys.exit(main(argv)) File "C:\Users\MHD\Anaconda3\envs\tf15\lib\site-packages\tensorflow\python\util\deprecation.py", line 136, in new_func return func(*args, **kwargs) File "train.py", line 175, in main graph_hook_fn=graph_rewriter_fn) File "C:\tensorflow1\models\research\object_detection\legacy\trainer.py", line 249, in train detection_model = create_model_fn() File "C:\tensorflow1\models\research\object_detection\builders\model_builder.py", line 119, in build return _build_ssd_model(model_config.ssd, is_training, add_summaries) File "C:\tensorflow1\models\research\object_detection\builders\model_builder.py", line 237, in _build_ssd_model is_training=is_training) File "C:\tensorflow1\models\research\object_detection\builders\model_builder.py", line 187, in _build_ssd_feature_extractor if feature_extractor_config.HasField('replace_preprocessor_with_placeholder'): ValueError: Protocol message SsdFeatureExtractor has no field replace_preprocessor_with_placeholder

请帮帮我

【问题讨论】:

    标签: python-3.x tensorflow object-detection-api


    【解决方案1】:

    追查这个错误的原因,我发现最近添加了选项replace_preprocessor_with_placeholder。这是提交 record.(在该页面上,如果您搜索 replace_preprocessor_with_placeholder,您会发现它是最近在 2019 年 3 月 7 日添加的)。

    所以错误的原因很明显是你的proto文件版本和代码版本不一致。如果你比较本地机器上的object_detection/protos/ssd.proto 和github repo,你可能会发现你本地机器的文件中不存在这个line(因为这个文件也是最近添加的!)。

    修复此错误的最简单方法是在此 guide 之后重新安装 object detection api

    既然你已经安装了所有的包,基本上你需要做两个步骤,安装 coco api 和编译 protobuff。新的 protobuff 编译将修复您的错误。

    另外我建议你遵循最新的 api 教程,我在你的电话中看到你正在使用train.py,这个文件现在已经放在 legacy 文件夹中,不建议运行,因为它们可能不是最新的-日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多