ImportError:无法导入名称“ input_reader_pb2”

时间:2018-07-30 22:55:37

标签: python tensorflow protoc

使用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=. 但是错误仍然存​​在 我检查了所有东西,应该一切正常,这让我发疯了!

请帮助...。 谢谢

4 个答案:

答案 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 版本引起的。

其他有用的链接:https://github.com/tensorflow/models/issues/5264

答案 2 :(得分:0)

也许您没有在PYTHONPATH中添加slim模块,可以通过在models / research目录中的以下代码运行来完成。

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

答案 3 :(得分:-1)

似乎您没有编译protobuf。 解决方法:

  1. 在此处下载最新的协议exe:https://github.com/google/protobuf/releases(在您的情况下应为win32)
  2. 将该文件夹重命名为“ protoc”
  3. 将该文件夹放入模型/研究中
  4. 在模型/通过控制台进行的研究中,启动:

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

我不确定该命令是否可以在Windows上运行,但是您必须确保使用的是下载的协议编译器(v.3.6),而不是环境中的协议。