TensorFlow - 对象检测模块,尝试使用protoc时出现错误

时间:2017-08-16 08:15:22

标签: python tensorflow deep-learning object-detection protoc

protoc出现问题时,该行在Windows中无效。

我得到了errors

使用此行

protoc --proto_path=./object_detection/protos --python_out=c:\testmomo ./object_detection/protos/anchor_generator.proto

我收到此错误

object_detection/protos/grid_anchor_generator.proto: File not found.
object_detection/protos/ssd_anchor_generator.proto: File not found.
anchor_generator.proto: Import "object_detection/protos/grid_anchor_generator.proto" was not found or had errors.
anchor_generator.proto: Import "object_detection/protos/ssd_anchor_generator.proto" was not found or had errors.
anchor_generator.proto:12:5: "GridAnchorGenerator" is not defined.
anchor_generator.proto:13:5: "SsdAnchorGenerator" is not defined.

问题是什么?

5 个答案:

答案 0 :(得分:7)

我正在尝试不同的事情,并找出问题所在。

确保你这样做:

# From models/
protoc object_detection/protos/*.proto --python_out=.

而我试图这样做:

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

这给了我你的错误。

检查您是否在正确的位置(目录)。

答案 1 :(得分:1)

首先请注意protoc缓冲区非常笨,并且没有正确捕获所有文件,您有两个选项可以手动编译所有29个文件或按照以下步骤操作。

  1. 将protoc exe文件复制到所有proto文件所在的文件夹即 "模型主\模型主\研究\ object_detection \ PROTOS" keep protoc.exe and the *.protoc file in same folder

  2. 接下来打开文件夹中的所有文件" models-master \ research \ object_detection \ protos"使用记事本++。

  3. 按ctrl + f并删除" object_detection / protos /"在所有文件中 (如果你手动操作也记得protoc按字母顺序开始,所以从文件" anchor_generator.proto")开始。

  4. 例如替换: -

    import "object_detection/protos/grid_anchor_generator.proto";
    import "object_detection/protos/ssd_anchor_generator.proto";
    import "object_detection/protos/multiscale_anchor_generator.proto";
    

    用这个: -

    import "grid_anchor_generator.proto";
    import "ssd_anchor_generator.proto";
    import "multiscale_anchor_generator.proto";
    

    4.现在在同一目录中打开Cmd即 " \ models master \ research \ object_detection \ protos" 类型:-     protoc * .proto --python_out =。  请注意,您将在文件夹中获取新的.py文件,并且在执行上述文件时没有错误。

    5,输出: - enter image description here

    注意: - 确保打开所有文件并尝试使用步骤4的输出找到丢失的文件。

答案 2 :(得分:0)

似乎没有文件:object_detection / protos / grid_anchor_generator.proto和ssd_ancho_generator.proto

你刚刚克隆模型转发或修改了什么吗?

答案 3 :(得分:0)

在object_detection protos文件夹中,输入行被赋予

import "research/object_detection/protos/grid_anchor_generator.proto";

将其更改为

import json, collections

with open('myfile.json', 'r') as f:
    result = collections.defaultdict(int)
    for d in map(json.loads, f):
        result[str(d['user_id']) +','+ d['ip']] += d['product_price']
    for k,sum in result.items():
        print('user_id: {}, ip: {}, sum: {}'.format(*k.split(','), sum))

答案 4 :(得分:-1)

简单地,为它们每个运行protocbuf。

  

协议object_detection / protos / grid_anchor_generator.proto   --python_out =。