TensorFlow - 对象检测模块,尝试使用 protoc 时出现错误
Posted
技术标签:
【中文标题】TensorFlow - 对象检测模块,尝试使用 protoc 时出现错误【英文标题】:TensorFlow - object detection module, error appear when trying to use protoc 【发布时间】:2018-01-24 07:04:27 【问题描述】: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.
有什么问题??
【问题讨论】:
我也有同样的问题 错误继续。问题出在官方仓库github.com/tensorflow/models 和/或与python 导入相关 【参考方案1】:我尝试了不同的方法,并找出了问题所在。
确保你这样做:
# From models/
protoc object_detection/protos/*.proto --python_out=.
而我试图这样做:
# from object_detection/
protoc protos/*.proto --python_out=.
这给了我和你一样的错误。
检查您是否在正确的位置(目录)。
【讨论】:
谢谢。这行得通。但是,我认为它来自更新后的 repo 中的 tensorflow/models/research/。【参考方案2】:首先请注意 protoc 缓冲区非常笨拙,无法正确捕获所有文件,您有两个选项可以手动编译所有 29 个文件或按照以下步骤操作。
将protoc exe文件复制到所有proto文件所在的文件夹,即 "models-master\models-master\research\object_detection\protos"
接下来使用 notepad++ 打开文件夹“models-master\research\object_detection\protos”中的所有文件。
按 ctrl+f 并删除所有文件中的“object_detection/protos/” (如果您是手动操作,请记住 protoc 按字母顺序开始,所以从文件“anchor_generator.proto”开始)。
例如替换:-
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.输出:-
注意:- 确保打开所有文件并尝试使用第 4 步的输出找到丢失的文件。
【讨论】:
【参考方案3】:好像没有文件:object_detection/protos/grid_anchor_generator.proto 和 ssd_ancho_generator.proto
您是否只是克隆了模型存储库或修改了某些内容?
【讨论】:
【参考方案4】:在 object_detection protos 文件夹中给出了导入行
import "object_detection/protos/grid_anchor_generator.proto";
改成
import "research/object_detection/protos/grid_anchor_generator.proto";
【讨论】:
你没有提到你说的是哪个文件?【参考方案5】:简单地说,为它们中的每一个运行 protocbuf。
protoc object_detection/protos/grid_anchor_generator.proto --python_out=。
【讨论】:
这实际上是解决方案。不知道为什么你运行protoc research/object_detection/protos/*.proto --python_out=.
的时候会漏掉这3个文件,但是你可以一一编译没有问题。以上是关于TensorFlow - 对象检测模块,尝试使用 protoc 时出现错误的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块“tensorflow”没有属性“app”
如何在 Tensorflow 对象检测 api 中评估预训练模型
Tensorflow 对象检测 API - 当我尝试运行 model_builder_test.py 时出现 ImportError