AttributeError: el objeto 'FasterRcnn' no tiene el atributo 'inplace_b

AttributeError: el objeto 'FasterRcnn' no tiene el atributo 'inplace_batchnorm_update'

Estoy tratando de entrenar un modelo "faster_rcnn_resnet101_kitti" previamente entrenado para la API de detección de objetos de tensorflow.

Pero cada vez que trato de ejecutar

 python3 train.py --logtostderr --train_dir='/training/' --pipeline_config_path='/training/faster_rcnn_resnet101_kitti.config' 

Recibo el siguiente error

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'
Mostrar la mejor respuesta

También tuve este error, y para mí fue porque no tenía recompilé mis .proto-files después de extraer las últimas actualizaciones del repositorio de modelos TF.

Para recompilar (en Linux):

# From tensorflow/models/research/ folder
protoc object_detection/protos/*.proto --python_out=.

Supongo que el código fallido intenta leer el atributo/campo inplace_batchnorm_update de la configuración rcnn más rápida, que (asumible) no existe en las versiones anteriores. Espero que esto también te ayude.

Mis versiones son: tensorflow-gpu 1.7.0 y los modelos TF tienen el hash 77d3bbefeb33e89bfa1eee707151e5d794d1222b con el mensaje "Fusionar solicitud de extracción n.º 3888 de hsm207/parche-3 Corregir error tipográfico".

Recompilación en Windows

Sé por experiencia propia que, en comparación con Windows, compilar muchos archivos como los anteriores es fácil en Linux como una sola línea. Para Windows, aquí hay algo para que el proceso sea menos engorroso:

En este problema, davemers0160 ha compartido un script para compilar en Windows.

Simplemente guarde este archivo como .bat-archivo:

@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!

Ejecute ese archivo desde la misma carpeta que se mencionó anteriormente. Como la pregunta estaba en Linux, acabo de agregar esto al final en caso de que un usuario de Windows venga a leer esto también.

¡Muchas gracias! la recompilación de los archivos proto resolvió el problema.

Tuve el mismo error después de actualizar el repositorio de modelos. Volví a compilar los archivos .proto, pero todavía tiene el error.

Según el registro:

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)

Creo que tal vez se deba a que la versión de object_detection-0.1-py3.6.egg es demasiado antigua, así que reinstalé models/research/setup.py:

# Form /models/research/ 
python setup.py build
python setup.py install

Entonces no tiene ningún error.

NOTA: volví a compilar los archivos .proto antes de volver a instalar setup.py. Cuantos más detalles puedas ver #3968

Espero que esto pueda ayudarte.