3

在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 import input_reader_pb2 ImportError: cannot import name 'input_reader_pb2'

我确实运行了 protoc 3.4 protoc object_detection/protos/*.proto --python_out=. ,但错误仍然存​​在我检查了所有东西,它应该很好并且可以工作,这让我发疯了!

请帮忙....谢谢

4

4 回答 4

0

因为您已经在object_detection/protos/中编译了所有.proto文件。您应该会看到像eval_pb2这样具有“ _pb2 ”的 python 文件。如果您可以看到这些,请转到模型/研究目录并一一运行这些代码:

python setup.py build
python setup.py install
于 2020-02-19T12:39:03.840 回答
0

也许您还没有将模块 slim 添加到 PYTHONPATH。这可以通过在模型/研究目录中运行以下代码来完成。

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
于 2020-11-02T14:20:37.727 回答
0

object_detection文件夹内部:

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

*_pb2.py此命令将为文件夹中的每个.proto文件生成一个object_detection/protos/


注意:在上面指定路径很重要object_detection,否则会发生错误,很可能是:

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模块, 将其放在您的工作目录中,输入并重新执行上面的命令。它肯定会起作用,因为本地模块的导入优先级高于.sys.path

如果不是,则错误消息可能与报告的错误消息不同,问题出在tensorflow安装或protobuf 编译器上;就像这里的问题是由protoc版本引起的一样。

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

于 2020-03-19T12:54:55.140 回答
-1

似乎您没有编译protobuf。为了解决它:

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

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

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

于 2018-08-01T07:37:51.383 回答