from utils import label_map_util Import Error: No

2019-02-17 12:45发布

问题:

I am trying to run the object_detection.ipynb type program but it is a normal python program(.py). It is working very well but when running inside the ..models/research/object_detection folder, but the main issue is when I am trying to run this code in another directory with proper sys.append, I am ending up with the following error:

Traceback (most recent call last):

File "obj_detect.py", line 20, in

from utils import label_map_util

ImportError: No module named utils

If I trying to import the file from ..models/research/object_detection folder into a python program in a different directory, then I end up with more errors as follows:

Traceback (most recent call last):

File "classify_image.py", line 10, in

import object_dt

File "/home/saikishor/Tensorflow_Models/models/research/object_detection/object_dt.py", line 18, in

from utils import label_map_util

File "/home/saikishor/Tensorflow_Models/models/research/object_detection/utils/label_map_util.py", line 22, in

from object_detection.protos import string_int_label_map_pb2

ImportError: No module named object_detection.protos

How to solve this issue?

回答1:

It could be that your object_detection folder is not on your path, so python does not know where to look for the files.

you can check this from within python with

import sys

sys.path

if this is the problem, you can solve it by

sys.path.insert(0, 'path/to/your/object_detection')


回答2:

I have seen the same problem. that's because string_int_label_map_pb2.py file doesn't exist.

1.you need to install protobuf.

https://github.com/google/protobuf/releases
  1. cd your path to object_detection

    protoc object_detection/protos/string_int_label_map.proto --python_out=.

you will find string_int_label_map_pb2.py file in 'object_detection\protos'

  1. that will be ok, if there is still a problem, you can add your object_detection folder to PYTHONPATH.


回答3:

in python*./site-packages folder , you can see the utils folder . by default , when we run "from utils import label_map_util" it will try search label_map_util in python.*/site-packages/utils folder.

this error can solve by changing the directory or copying a file from tensorflow/models/utils to python*.*/site-packages/utils



回答4:

You need to download protoc version 3.3 (already compiled). Used protoc inside bin directory to run this command like this:

tensorflow$ mkdir protoc_3.3
tensorflow$ cd protoc_3.3
tensorflow/protoc_3.3$ wget wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ chmod 775 protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ unzip protoc-3.3.0-linux-x86_64.zip
tensorflow/protoc_3.3$ cd ../models/research/
tensorflow/protoc_3.3$ /home/saikishor/tensorflow/protoc_3.3/bin/protoc object_detection/protos/*.proto --python_out=.

This will hopefully work!!