API de detección de objetos de Tensorflow en Windows – error “ModuleNotFoundError: No hay un módulo llamado ‘utils'”

Estoy intentando obtener la API de detección de objetos TensorFlow

https://github.com/tensorflow/models/tree/master/research/object_detection

trabajando en Windows siguiendo las instrucciones de instalación

https://github.com/tensorflow/models/tree/master/research/object_detection

Que parecen ser para Linux / Mac. Solo puedo hacer que esto funcione si pongo un script en el directorio en el que cloné el repository anterior. Si pongo el script en cualquier otro directorio, obtengo este error:

ModuleNotFoundError: No module named 'utils' 

Sospecho que la causa no está haciendo correctamente el equivalente de Windows de este comando que se encuentra en las instrucciones de instalación anteriores:

 # From tensorflow/models/research/ export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim 

Estoy usando Windows 10, Python 3.6 y TensorFlow 1.4.0 si eso importa. Por supuesto, he buscado en Google sobre esta preocupación y he encontrado varios enlaces, por ejemplo, este:

https://github.com/tensorflow/models/issues/1747

Pero esto no ha resuelto la preocupación. ¿Algunas sugerencias para resolver esto?

Aquí están los pasos que he hecho hasta ahora específicamente:


EDIT: estos pasos funcionan ahora después de la actualización para incorporar la respuesta de RecencyEffect

1) Instale TensorFlow y las herramientas relacionadas a través de pip3

2) Desde un indicador de comando administrativo, ejecute lo siguiente:

 pip3 install pillow pip3 install lxml pip3 install jupyter pip3 install matplotlib 

3) Clone el repository de “modelos” de TensorFlow en la carpeta Documentos, en mi caso

 C:\Users\cdahms\Documents\models 

4) Descargué Google Protobuf https://github.com/google/protobuf versión v3.4.0 de Windows “protoc-3.4.0-win32.zip” (probé la versión más reciente 3.5.1 y obtuve errores en los pasos posteriores, por lo que Probé 3.4.0 por este video https://www.youtube.com/watch?v=COlbP62-BU&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1 y la comstackción de protobuf funcionó)

5) Extraiga la descarga de Protobuf a los archivos de progtwig, específicamente

 "C:\Program Files\protoc-3.4.0-win32" 

6) CD en el directorio de modelos / investigación, específicamente

 cd C:\Users\cdahms\Documents\models\research 

7) Ejecutado la comstackción de protobuf, específicamente

 “C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=. 

Navegar a:

 C:\Users\cdahms\Documents\models\research\object_detection\protos 

y verifique que los archivos .py se crearon exitosamente como resultado de la comstackción (solo los archivos .proto estaban allí para comenzar)

8) cd al directorio object_detection, ej:

 cd C:\Users\cdahms\Documents\models\research\object_detection 

luego ingrese lo siguiente en el símbolo del sistema para iniciar object_detection_tutorial.ipynb Jupyter Notebook

 jupyter notebook 

9) En el cuaderno de Jupyter, elija “object_detection_tutorial.ipynb” -> Celda -> Ejecutar todo, el ejemplo debería ejecutarse dentro del cuaderno

10) En el cuaderno de Jupyter, seleccione “Archivo” -> “Descargar como” -> “Python”, y guarde la versión .py del cuaderno en el mismo directorio, es decir,

 C:\Users\cdahms\Documents\models\research\object_detection\object_detection_tutorial.py 

Ahora puede abrir el script en su editor de Python elegido (por ejemplo, PyCharm) y ejecutarlo.


EDITAR según la respuesta de RecencyEffect a continuación, si sigue estos pasos adicionales, podrá ejecutar el script object_detection_tutorial.py desde cualquier directorio

11) Mueva el script a cualquier otro directorio, luego intente ejecutarlo y encontrará que obtendrá el error:

 ModuleNotFoundError: No module named 'utils' 

porque aún no hemos informado a Python cómo encontrar el directorio de utils que usan estas líneas:

 from utils import label_map_util from utils import visualization_utils as vis_util 

Para resolver esto. . .

12) Vaya a Sistema -> Configuración avanzada del sistema -> Variables de entorno. . . -> Nuevo, y agregue una variable con el nombre PYTHONPATH y estos valores:

introduzca la descripción de la imagen aquí

13) También en Variables de entorno, edite PATH y agregue% PYTHONPATH% así:

introduzca la descripción de la imagen aquí

14) Reinicie para asegurarse de que estos cambios de ruta tengan efecto.

15) Abra un símbolo del sistema y ejecute el comando “set”, verifique que PYTHONPATH esté allí y PYTHONPATH y PATH contengan los valores de los pasos anteriores.

16) Ahora puede copiar “object_detection_tutorial.py” a cualquier otro directorio y se ejecutará

Como se mencionó en el comentario, utils es un submódulo por lo que realmente necesita agregar object_detection a PYTHONPATH , no object_detection/utils .

Me alegra que te haya funcionado.

cd Research / Object_Detection

discos compactos ..

Investigación

  1. export PATH = ~ / anaconda3 / bin: $ PATH

INVESTIGACIÓN

  1. git clone https://github.com/tensorflow/models.git

INVESTIGACIÓN

3.exportación PYTHONPATH = $ PYTHONPATH: pwd : pwd / slim

4.protoc object_detection / protos / string_int_label_map.proto –python_out =.

CD OBJECT_DETECTION

  1. protoc protos / string_int_label_map.proto –python_out =.

Cuaderno 6.jupyter

El siguiente comando no funciona en Windows:

 export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim 

En su lugar, seguí las instrucciones de este tutorial , que recomienda configurar las variables de ruta para tres directorios diferentes manualmente. Simplemente agregué una ruta para el directorio utils también. Hasta ahora ha funcionado sin error.

¡Asegúrese de tener un archivo __init__.py en su carpeta research / object_detection / protos! El archivo __init__.py está vacío pero debe existir para que el módulo protos se cree correctamente.