使用win10 64位
当我尝试通过E:\projectx\model-master\models-master>python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config
训练模型时
此错误出现
文件“ train.py”,第49行,在 从object_detection.builders导入dataset_builder 文件“ C:\ Users \ DELL \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ object_detection-0.1-py3.6.egg \ object_detection \ builders \ dataset_builder.py”, 第27行,在 从object_detection.data_decoders导入tf_example_decoder 文件“ C:\ Users \ DELL \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ object_detection-0.1-py3.6.egg \ object_detection \ data_decoders \ tf_example_decoder.py”, 第27行,在 从object_detection.protos导入input_reader_pb2 ImportError:无法导入名称“ input_reader_pb2”
我确实运行了协议3.4 protoc object_detection/protos/*.proto --python_out=.
但是错误仍然存在
我检查了所有东西,应该一切正常,这让我发疯了!
请帮助...。 谢谢
答案 0 :(得分:0)
您已经在 object_detection / protos / 中编译了所有 .proto 文件。您应该看到带有 _pb2 的python文件,例如 eval_pb2 。如果可以看到这些代码,请转到 models / research 目录并逐一运行这些代码:
python setup.py build
python setup.py install
答案 1 :(得分:0)
从fourcc = cv2.VideoWriter_fourcc(*'X264')
video_writer = cv2.VideoWriter('outeringe.mp4', fourcc, 20, (640, 480))
文件夹内部:
object_detection
此命令将为protoc ../object_detection/protos/*.proto --python_out=.
文件夹中的每个*_pb2.py
文件生成一个.proto
。
注意:在object_detection/protos/
上方指定路径很重要,否则很可能会发生错误:
object_detection / protos / ssd_anchor_generator.proto:找不到文件。
protos / anchor_generator.proto:8:1:找不到导入“ object_detection / protos / ssd_anchor_generator.proto”或有错误。
protos / anchor_generator.proto:17:5:未定义“ FlexibleGridAnchorGenerator”。
如果错误仍然存在,则可能是您位于错误的文件夹中,请查看输出消息,以查看错误消息从何处尝试导入文件并在正确的目录中执行命令。
不得已:从https://github.com/tensorflow/models/tree/master/research下载object_detection
模块
将其放置在您的工作目录中,输入并重新执行上面的命令。
由于本地模块的导入优先级高于object_detection
。
如果不是,则错误消息可能与所报告的错误消息有所不同,问题出在 tensorflow 安装或 protobuf编译器;为here,其中问题是由 protoc 版本引起的。
答案 2 :(得分:0)
也许您没有在PYTHONPATH中添加slim模块,可以通过在models / research目录中的以下代码运行来完成。
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
答案 3 :(得分:-1)
似乎您没有编译protobuf。 解决方法:
在模型/通过控制台进行的研究中,启动:
protoc/bin/protoc object_detection/protos/*.proto --python_out=.
我不确定该命令是否可以在Windows上运行,但是您必须确保使用的是下载的协议编译器(v.3.6),而不是环境中的协议。