Models: ImportError: cannot import name 'string_int_label_map_pb2'

Created on 17 Jun 2017  ·  37Comments  ·  Source: tensorflow/models

In step "Object detection imports" I am getting the following error

ImportError Traceback (most recent call last)
in ()
----> 1 from utils import label_map_util
2
3 from utils import visualization_utils as vis_util
D:PersonallearnMLDLTensorflowOfficial-Tutorialmodels-masterobject_detectionutilslabel_map_util.py in ()
20 import tensorflow as tf
21 from google.protobuf import text_format
---> 22 from object_detection.protos import string_int_label_map_pb2
23
24

ImportError: cannot import name 'string_int_label_map_pb2'

To workaround/proceed I commented the following line in "label_map_util.py"
from object_detection.protos import string_int_label_map_pb2

But I am now getting error at step "Loading label map"
NameError: name 'string_int_label_map_pb2' is not defined

So need your help to solve the error in step "Object detection imports"
Appreciate the help to proceed further

Most helpful comment

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

All 37 comments

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

Thanks mat for the quick response.
I am unable to locate the tensorflow/models directory.

Couple of hits got me to these links, but It did not help me find the directory
https://github.com/tensorflow/tensorflow/issues/5953
https://github.com/tensorflow/tensorflow/issues/5953

For windows OS, the steps need to be better?
Please help

@bsrinivas84 tensorflow/models refers to the root of the git checkout.

Thanks Derek, realized first I had to install protoc-3.2.0-windows-x86_64.exe from https://github.com/google/protobuf/releases (pointed environment variables to include the path to installation) and then go to root and run the command. It worked, Many Thanks

Anybody who is getting an import error in Jupyter notebook even after updating the PYTHONPATH make sure you restart the notebook. (i wasted couple of hours trying to chase down this problem)

Mahesh which error are you getting? If its the protof please follow the instructions here to install as pointed above
https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

Also make sure you re-download the latest version of code

i am still beginner i am trying to install tensorflow object detection API on windows i followed the instruction like that :
1) I installed protoc
2) protoc object_detection/protos/*.proto --python_out=.
3) set PYTHONPATH=$PYTHONPATH:pwd:pwd/slim
4) but i am getting this error:
C:UsersDigitalNetAppDataLocalProgramsPythonPython35Libsite-packagesten
sorflowmodels>python object_detection/builders/model_builder_test.py
Traceback (most recent call last):
File "object_detection/builders/model_builder_test.py", line 21, in
from object_detection.builders import model_builder
File "C:UsersDigitalNetAppDataLocalProgramsPythonPython35libsite-pack
agesobject_detection-0.1-py3.5.eggobject_detectionbuildersmodel_builder.py",
line 17, in
from object_detection.builders import anchor_generator_builder
File "C:UsersDigitalNetAppDataLocalProgramsPythonPython35libsite-pack
agesobject_detection-0.1-py3.5.eggobject_detectionbuildersanchor_generator_b
uilder.py", line 20, in
from object_detection.protos import anchor_generator_pb2
ImportError: cannot import name 'anchor_generator_pb2'

yes, i got the same error as 4saad mentioned, i checked the builder folder, where i found the anchor_generator-pb2.py which it has already been there, i still got the error like this

I also got the same error as 4saad mentioned that cannot import name 'anchor_generator_pb2' even if i found the file of ' anchor_generator-pb2.py'.
However,when i come into python environment in cmd, from object_detection.protos import anchor_generator_pb2 is correct.

C:UsersswgAnaconda3Libsite-packagestensorflowmodels>python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from object_detection.protos import anchor_generator_pb2
>>>
In this case, It can work.

Hi songwg188, do you found any solution for the issue? I have also faced same problem as you mentioned. import is working from python environment, but I couldn't run the following command:
python object_detection/builders/model_builder_test.py from command prompt. Any help will be appreciable

i had the same error,but i solved it. make sure your protoc version >=2.6,download tensorflow/model to a new folder ,and re-install it.

The application is looking for anchor_generator_pb2 in /usr/local/python3. Include the path in the python environment as mentioned in the installation guide. Or install the object_detection API with models/setup.py. All the libraries will be then installed.

Thanks. I have solved the issue. Actually I have to delete the log before running next time. That creates problem. 

Sujan Chowdhury

From: tj27 notifications@github.com
To: tensorflow/models models@noreply.github.com
Cc: Sujan Chowdhury sujan_cse_04@yahoo.com; Comment comment@noreply.github.com
Sent: Monday, September 11, 2017 12:09 AM
Subject: Re: [tensorflow/models] ImportError: cannot import name 'string_int_label_map_pb2' (#1595)

The application is looking for anchor_generator_pb2 in /usr/local/python3. Include the path in the python environment as mentioned in the installation guide. Or install the object_detection API with models/setup.py. All the libraries will be then installed.—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

hej
okay i fixed it by editing object_detection/utils/label_map_util.py
line 22
#from object_detection.protos import string_int_label_map_pb2
from protos import string_int_label_map_pb2

I guess it's because the jupyter notebook already is in the object_detection directory.

@sujanchy what log to clear?
@tj27-vkr used models/setup.py build followed by models/setup.py install - could not cure it.

I get

object_detection/protos/*.proto: Invalid argument

when I run

C:\Users\Me\Documents\GitHub\tensorflow\models\research> protoc o
bject_detection/protos/*.proto --python_out=.

On my windows 10 machine. What could be the problem?

Okay, I can reproduce that output.
It works, when I specify the exact path to 'protoc.exe'

Make sure you run:

From tensorflow/models/research/

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

From tensorflow/models/research/

export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim

@fera0013 , if you're on windows and running that command it won't work, for some reason it doesn't recognize /* as iterating thru all .proto files, you will have to manually (or create a batch file) do all .proto files one by one:
D:Tensorflow_Object_Detection_APIprotoc-3.5binprotoc object_detection/protos/"filename.proto" --python_out=.

Running this from the folder containing protoc.exe

I am using windows 10 with python 3.6.3
instead of using protoc object_detection/protos/*.proto --python_out=. I use
for %i in (object_detection\protos\*.proto) DO protoc %i --python_out=.
set PYTHONPATH=$PYTHONPATH:pwd:pwd/slim
it create .py file for each .proto file in that folder.

However, I also have the same problem when run
from object_detection.protos import string_int_label_map_pb2
still have error ImportError: cannot import name 'string_int_label_map_pb2
If I run
from protos import string_int_label_map_pb2
another error shows up
ModuleNotFoundError: No module named 'protos'

Is there other way to solve this problem?

On windows 10, assuming that you fixed protoc issues as indicated above,
I also ran commands:
_python setup.py build_ then _python setup.py install_ for in research folder and slim folder (you may also have encountered some import issues with commands like ''from nets import ... )

I then copied copied related egg files into my libray path (related to my _tensorflow_ environment):

_C:UserstestAnaconda3envstensorflowLibsite-packages_

I finally have in this folder following files:

  • slim-0.1-py3.5.egg
  • object_detection-0.1-py3.5.egg

and folders:

  • slim.egg-info
  • object_detection.egg-info

this allowed to run from Anaconda prompt (in_..modelsresearch_) the test command indicated in installation guidelines:
python object_detection/builders/model_builder_test.py

In my case, the proto folder contains no file named 'string_int_label_map_pb2' instead there is a file named string_int_label_map.proto but still i am not able to import that file please help me

My problems was :

  • protos correctly build pb2 files
  • _"from object_detection import anchor_generator_pb2"_ returns no error using the python2.7 console but returned an error with _"python2.7 object_detection/builders/model_builder_test.py"_ command

On Ubuntu17 and with tensorflow 1.6 @gedeon1310 's solution worked for me too.

Thanks

same problom on windows7, download protoc-3.6.1-win32.zip,place protoc.exe to environment path ,then copy protoc.exe to C:Windowssysterm32,then run complie protoc object_detection/protos/*.proto --python_out=.,done

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

I am getting the same error, and the link provided here seems to be broken. Any workaround for this? I am working on ubuntu 16.04

The new protoc version does not allow you to do protoc object_detection/protos/*.proto --python_out=. I hope you understand that *.proto executes the above command for all files with extension .proto in the object_detection/protos/ folder. In the new version, you will need to compile each file in protos folder individually as, for example, protoc object_detection/protos/anchor_generator.proto --python_out=.

I am working on a Windows 10 machine. '...binprotoc.exe' was added to my path, but for some reason the .proto files were not being converted to .py files with the command protoc object_detection/protos/*.proto --python_out=. from the tensorflow/models/research directory. I was trying this command on both cmd and MINGW64 since I was not clear where to be calling the command from previous comments.

The solution that worked for me was to include the root of protoc.exe in the command using MINGW64:
“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

protoc object_detection/protos/*.proto --python_out=.
object_detection/protos/calibration.proto:34:3: Expected "required", "optional", or "repeated".
object_detection/protos/calibration.proto:34:6: Expected field name.
object_detection/protos/calibration.proto:48:3: Expected "required", "optional", or "repeated".
object_detection/protos/calibration.proto:48:6: Expected field name.

getting following response on running command.

The new protoc version does not allow you to do protoc object_detection/protos/*.proto --python_out=. I hope you understand that *.proto executes the above command for all files with extension .proto in the object_detection/protos/ folder. In the new version, you will need to compile each file in protos folder individually as, for example, protoc object_detection/protos/anchor_generator.proto --python_out=.

this,restarting the kernel and "from protos import string_int_label_map_pb" worked for me ..

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

This is not running in my pc is there any there solution i can do

Make sure you run protoc object_detection/protos/*.proto --python_out=. as mentioned in installation instructions: https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md

I am getting the same error, and the link provided here seems to be broken. Any workaround for this? I am working on ubuntu 16.04

Here is the new link
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md

I got a very easy solution
put this python file in object detection/protos folder:- https://github.com/datitran/object_detector_app/blob/master/object_detection/protos/string_int_label_map_pb2.py

It will solve your error

I got a very easy solution
put this python file in object detection/protos folder:- https://github.com/datitran/object_detector_app/blob/master/object_detection/protos/string_int_label_map_pb2.py

It will solve your error

Doing this and switching the import from 'object_detection.protos' to just 'protos' fixed it for me

I got a very easy solution
put this python file in object detection/protos folder:- https://github.com/datitran/object_detector_app/blob/master/object_detection/protos/string_int_label_map_pb2.py
It will solve your error

Doing this and switching the import from 'object_detection.protos' to just 'protos' fixed it for me

I tried all of this but still no luck. Instead I had to also change the importobject_detection.utlis to

from object_detection.utils import ops as utils_ops
from utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
from protos import string_int_label_map_pb2

I downloaded and installed protoc from source, and it worked for me:

# You should be in folder tensorflow/models/research/
$ wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
$ unzip protobuf.zip
$ ./bin/protoc object_detection/protos/*.proto --python_out=.

$ cp object_detection/packages/tf2/setup.py .
$ python -m pip install --use-feature=2020-resolver .

Then, test the installation:

python object_detection/builders/model_builder_test.py

In step "Object detection imports" I am getting the following error

ImportError Traceback (most recent call last)

in ()
----> 1 from utils import label_map_util
2
3 from utils import visualization_utils as vis_util
D:PersonallearnMLDLTensorflowOfficial-Tutorialmodels-masterobject_detectionutilslabel_map_util.py in ()
20 import tensorflow as tf
21 from google.protobuf import text_format
---> 22 from object_detection.protos import string_int_label_map_pb2
23
24
ImportError: cannot import name 'string_int_label_map_pb2'
To workaround/proceed I commented the following line in "label_map_util.py"
from object_detection.protos import string_int_label_map_pb2

But I am now getting error at step "Loading label map"
NameError: name 'string_int_label_map_pb2' is not defined

So need your help to solve the error in step "Object detection imports"
Appreciate the help to proceed further

how to slove this error?

ImportError: cannot import name 'string_int_label_map_pb2'

To workaround/proceed I commented the following line in "label_map_util.py"
from object_detection.protos import string_int_label_map_pb2

This error can be solved by editing object_detection/utils/label_map_util.py
line 22

from object_detection.protos import string_int_label_map_pb2

from protos import string_int_label_map_pb2

Was this page helpful?
0 / 5 - 0 ratings