我正在尝试运行object_detection.ipynb
类型程序,但它是一个普通的python程序(.py)。它运行得很好,但在..models/research/object_detection
文件夹中运行时,但主要问题是当我尝试在另一个具有正确sys.append
的目录中运行此代码时,我最终得到以下错误:
追踪(最近一次呼叫最后一次):
文件“obj_detect.py”,第20行,
from utils import label_map_util
ImportError:没有名为utils的模块
如果我尝试将文件从..models/research/object_detection
文件夹导入到另一个目录中的python程序中,那么我最终会遇到更多错误,如下所示:
追踪(最近一次呼叫最后一次):
文件“classify_image.py”,第10行,
import object_dt
文件“/home/saikishor/Tensorflow_Models/models/research/object_detection/object_dt.py”,第18行,
from utils import label_map_util
文件“/home/saikishor/Tensorflow_Models/models/research/object_detection/utils/label_map_util.py”,第22行,
from object_detection.protos import string_int_label_map_pb2
ImportError:没有名为object_detection.protos的模块
如何解决这个问题?
答案 0 :(得分:7)
可能是你的object_detection文件夹不在你的路径上,所以python不知道在哪里查找文件。
你可以在python中用
检查这个import sys
sys.path
如果这是问题,可以通过
解决sys.path.insert(0, 'path/to/your/object_detection')
答案 1 :(得分:2)
我见过同样的问题。这是因为string_int_label_map_pb2.py
文件不存在。
1.您需要安装protobuf
。
https://github.com/google/protobuf/releases
cd
您前往object_detection
protoc object_detection / protos / string_int_label_map.proto --python_out =。
您会在string_int_label_map_pb2.py
'object_detection\protos'
个文件
PYTHONPATH
。答案 2 :(得分:0)
在python *。 / site-packages文件夹中,您可以看到utils文件夹。 默认情况下,当我们运行"来自utils import label_map_util"它将尝试在python 。* / site-packages / utils文件夹中搜索label_map_util。
此错误可以通过更改目录来解决 要么 将文件从tensorflow / models / utils复制到python *。* / site-packages / utils
答案 3 :(得分:0)
您需要下载protoc版本3.3(已编译)。在bin目录中使用protoc来运行此命令,如下所示:
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=.
这有望工作!!