1

我目前正在尝试重新训练 Google 的Tensorflow 对象检测

我按照sentdex's 教程中的步骤进行操作(可能和你们中的许多人一样)。

在我生成tf_records并将它们移动到目录中models/research/object_detection之后,应该为培训设置一切。

为了初始化我使用的训练过程:python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config

结果应该是命令行打印当前步骤和达到的精度,但我得到了:

Traceback (most recent call last):
  File "train.py", line 49, in <module>
    from object_detection import trainer
  File "/home/ubuntu/tensorflow/research/object_detection/trainer.py", line 27, in <module>
    from object_detection.builders import preprocessor_builder
  File "/home/ubuntu/tensorflow/research/object_detection/builders/preprocessor_builder.py", line 21, in <module>
    from object_detection.protos import preprocessor_pb2
  File "/home/ubuntu/tensorflow/research/object_detection/protos/preprocessor_pb2.py", line 71, in <module>
    options=None, file=DESCRIPTOR),
TypeError: __new__() got an unexpected keyword argument 'file'

我正在使用Amazon's g2.2xlarge随附的 Ubuntu 16.04tensorflownvidia cuda准备好驱动程序(我想)。

有什么想法为什么会出错?非常感谢!

4

1 回答 1

1

你不知何故有不同版本的谷歌协议缓冲区库在玩。preprocessor_pb2.py 是使用新的(过去 3.5)版本的 protobuf 生成的,该版本将file参数引入了生成的代码(https://github.com/google/protobuf/blob/9f80df026933901883da1d556b38292e14836612/CHANGES.txt#L74)。并且无论它在第 71 行调用什么,都必须使用没有此字段/home/ubuntu/tensorflow/research/object_detection/protos/preprocessor_pb2.py的早期版本编译。protoc

于 2018-02-20T05:55:00.167 回答