AttributeError:'FasterRcnn'对象没有属性'inplace_batchnorm_update'

时间:2018-04-06 08:28:56

标签: python tensorflow

我正在尝试为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'

2 个答案:

答案 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上重新编译

我从自己的经验中知道,与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

希望这可以帮到你。