我正在尝试为tensorflow对象检测API训练一个预训练的"faster_rcnn_resnet101_kitti"
模型。
但每次我尝试运行
python3 train.py --logtostderr --train_dir='/training/' --pipeline_config_path='/training/faster_rcnn_resnet101_kitti.config'
我收到以下错误
Traceback (most recent call last):
File "train.py", line 167, in <module>
tf.app.run()
File "/usr/local/lib/python3.5/dist- packages/tensorflow/python/platform/app.py", line 126, in run
_sys.exit(main(argv))
File "train.py", line 163, in main
worker_job_name, is_chief, FLAGS.train_dir)
File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/trainer.py", line 211, in train
detection_model = create_model_fn()
File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/builders/model_builder.py", line 96, in build
add_summaries)
File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/builders/model_builder.py", line 272, in _build_faster_rcnn_model
frcnn_config.inplace_batchnorm_update)
AttributeError: 'FasterRcnn' object has no attribute 'inplace_batchnorm_update'
答案 0 :(得分:5)
我也遇到了这个错误,对我来说这是因为我从TF模型库中提取了最后一次更新后我没有re-compiled my .proto-files。
重新编译(在Linux上):
# From tensorflow/models/research/ folder
protoc object_detection/protos/*.proto --python_out=.
我假设失败的代码尝试从更快的rcnn配置读取属性/字段inplace_batchnorm_update
,在旧版本中不存在(假设)。我希望这对你也有帮助。
我的版本是:tensorflow-gpu 1.7.0并且TF模型提交哈希77d3bbefeb33e89bfa1eee707151e5d794d1222b,并带有消息“合并拉取请求#3888来自hsm207 / patch-3修复拼写错误”。
我从自己的经验中知道,与Windows相比,如上所述编译许多文件在Linux中很容易作为单行程序。对于Windows,可以使这个过程变得不那么麻烦:
在this issue中,davemers0160已共享 用于在Windows上编译的脚本。
只需将this file保存为.bat
- 文件:
@echo off
setlocal
echo Searching for new .proto files...
for %%F in (object_detection\protos\*.proto) do (
echo %%F
protoc %%F --python_out=.
)
echo Complete!
从上面提到的同一文件夹中运行该文件。问题是在Linux中,我刚刚将其添加到底部,以防Windows用户也开始阅读。
答案 1 :(得分:0)
更新模型库后,我遇到了同样的错误。
我重新编译了.proto
个文件,但它仍然有错误。
根据日志:
File "/home/duane/anaconda3/lib/python3.6/site-packages/object_detection-0.1-py3.6.egg/object_detection/builders/model_builder.py", line 164, in _build_ssd_model
inplace_batchnorm_update=ssd_config.inplace_batchnorm_update)
我想也许是因为object_detection-0.1-py3.6.egg的版本太旧了,所以我重新安装models/research/setup.py
:
# Form /models/research/
python setup.py build
python setup.py install
然后它没有错误。
注意:在重新安装setup.py之前,我确实重新编译了.proto
个文件。
您可以查看更多详细信息#3968
希望这可以帮到你。