tensorflow 无法导入名称'string_int_label_map_pb2'

1hdlvixo  于 2023-01-31  发布在  其他
关注(0)|答案(4)|浏览(199)

我的目标是运行tensorflow对象检测API,并按照安装步骤进行操作。
我安装了tensorflow对象检测API和protobuf。我还添加了protobuf的路径。但是出现了以下错误:

ImportError: cannot import name 'string_int_label_map_pb2'

安装的protobuf:

%%bash
cd models/research
protoc object_detection/protos/*.proto --python_out=.

包含error import语句的代码块:

from object_detection.utils import ops as utils_ops
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
q5iwbnjs

q5iwbnjs1#

https://github.com/google/protobuf/releases安装方案-3.11.4
并按照installation instructions中所述运行protoc object_detection/protos/*.proto --python_out=.。并将this文件放入对象检测/protos中

q1qsirdb

q1qsirdb2#

你可以按同样的顺序试试这个建议
参见型号/问题/1962#或

git clone https://github.com/tensorflow/models.git
cd models/research

protoc -I=./ --python_out=./ ./object_detection/protos/*.proto
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

import sys
sys.path.append('/content/models/research/object_detection') # ~/tensorflow/models/research/object_detection

#try import now..
from utils import label_map_util
yeotifhr

yeotifhr3#

这是这个包中的一个简单路径问题,因此,我们需要在utils/label_map_util. py中添加protos/string_int_label_map_pb2.py的路径
而不是从objective_detection. protos导入字符串_int_标签_Map_pb2
应该是
导入系统
系统路径从协议中添加("..")导入字符串_整数_标签_Map_pb2
另外,如果你已经完成了object_detection的pip安装,那么从site-packages/objective_detection/utils打开这些文件。否则,你可以在git文件的model-master/research/objective_detection/utils下替换它。

ubbxdtey

ubbxdtey4#

对我有效的解决方案如下:
如果您正在创建虚拟环境
创建环境后运行命令,将Google文件.protp更改为.py
protoc object_detection/protos/*.proto --python_out=.
但是,如果你仍然面临错误,你可以简单地在谷歌colab笔记本上运行代码:

    • Protos转换为Python**

%%cd /content/drive/MyDrive/TFOD1.x/models/research
!protoc object_detection/protos/*.proto --python_out=.
获取protoc文件夹中的文件,然后将其复制到〉models〉research〉protoc和(导入步骤):将文件夹复制到您的环境路径:
例如:
C:\用户\x04xx18\Python3\环境\tfod1.x\libs\protos
这应该可以为您修复错误!

相关问题