我正在关注找到here的示例。 但每当我输入命令“C:/ Program Files / protoc / bin / protoc”object_detection / protos / .proto --python_out =。 我收到一个错误,上面写着object_detection / protos / .proto:没有这样的文件或目录。 我无法创建名为* .proto的目录。所以我遗漏了一些关于如何做到这一点的基本信息。由于我找不到任何人抱怨这个问题,它必须非常简单。 我正在使用Windows操作系统。
答案 0 :(得分:8)
适用于Windows,位于“ 研究”中,并在路径中包含“ 协议”,那么它将起作用:
for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.
祝你好运!
答案 1 :(得分:4)
我要发布这些我能找到的所有问题,以便人们知道。不管怎样,我必须为自己和其他人写下这些指示。
以下是有效的,但不起作用:
protoc object_detection/protos/*.proto --python_out=.
指定所有文件的* .proto对编译器不起作用。如果您使用 版本3.5 ,则必须指定每个单独的文件。
所以这就是它的样子:
将您的目录更改为您下载的研究文件夹(可能会有所不同):
cd /d C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research
获取您下载的protroc.exe文件的位置
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc
转到protos文件夹,以便您知道需要单独执行的文件
C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research\object_detection\protos
现在开始向该文件夹中的每个.proto项目发送垃圾邮件 CMD:
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/anchor_generator.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/argmax_matcher.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/bipartite_matcher.proto --python_out=.
....and so on until you finish all items in the protos folder
或者你可以称它为一天,然后运行3.4并运行:
C:\Users\yourusername\Projects\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/*.proto --python_out=.
如果我能澄清一些,请告诉我。我试着非常清楚,所以像我这样的白痴能理解。
答案 2 :(得分:3)
将目录更改为tensorflow的模型或模型主文件 然后你必须使用以下逐个运行的命令编译protobuff的.proto文件
protoc --python_out=. .\object_detection\protos\anchor_generator.proto
protoc --python_out=. .\object_detection\protos\argmax_matcher.proto
protoc --python_out=. .\object_detection\protos\bipartite_matcher.proto
protoc --python_out=. .\object_detection\protos\box_coder.proto
protoc --python_out=. .\object_detection\protos\box_predictor.proto
protoc --python_out=. .\object_detection\protos\eval.proto
protoc --python_out=. .\object_detection\protos\faster_rcnn.proto
protoc --python_out=. .\object_detection\protos\faster_rcnn_box_coder.proto
protoc --python_out=. .\object_detection\protos\grid_anchor_generator.proto
protoc --python_out=. .\object_detection\protos\hyperparams.proto
protoc --python_out=. .\object_detection\protos\image_resizer.proto
protoc --python_out=. .\object_detection\protos\input_reader.proto
protoc --python_out=. .\object_detection\protos\losses.proto
protoc --python_out=. .\object_detection\protos\matcher.proto
protoc --python_out=. .\object_detection\protos\mean_stddev_box_coder.proto
protoc --python_out=. .\object_detection\protos\model.proto
protoc --python_out=. .\object_detection\protos\optimizer.proto
protoc --python_out=. .\object_detection\protos\pipeline.proto
protoc --python_out=. .\object_detection\protos\post_processing.proto
protoc --python_out=. .\object_detection\protos\preprocessor.proto
protoc --python_out=. .\object_detection\protos\region_similarity_calculator.proto
protoc --python_out=. .\object_detection\protos\square_box_coder.proto
protoc --python_out=. .\object_detection\protos\ssd.proto
protoc --python_out=. .\object_detection\protos\ssd_anchor_generator.proto
protoc --python_out=. .\object_detection\protos\string_int_label_map.proto
protoc --python_out=. .\object_detection\protos\train.proto
protoc --python_out=. .\object_detection\protos\keypoint_box_coder.proto
protoc --python_out=. .\object_detection\protos\multiscale_anchor_generator.proto
答案 3 :(得分:2)
答案 4 :(得分:1)
如果结果发现你错过了像我这样的整个models/research/object_detection/protos
子树,你可以从https://github.com/tensorflow/models单独下载。没有这些文件会产生相同的错误,即No such file or directory
。
答案 5 :(得分:1)
大家好,这是我在学习使用Tensorflow进行对象检测时能够解决此错误的方法:
STEPS:
1-要下载适用于Windows 10 64位系统的Google Protobuf,请转至此链接。 https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0并安装“ protoc-3.4.0-win32.zip”。(建议-不要安装protoc-3.6.0)
2-从此链接下载模型文件。 https://github.com/tensorflow/models
3。现在,您需要借助研究目录在命令提示符下执行protobuf编译:
4-首先进入研究目录: cd C:\ Users \ Ankit \ tensorflow \ models \ research,然后按Enter //只是一个例子
5-然后在完成上述步骤后立即执行此步骤:
“ C:\ Users \ Ankit \ Desktop \ Tensorflow \ protbuf \ bin \ protoc.exe” object_detection / protos / *。proto --python_out =。然后按Enter(对象和“符号之间有空格,并且将其写成一行)
6-注意:转到object_detection / protos文件夹,如果有.py文件,则说明您已成功完成.proto文件的编译
谢谢
答案 6 :(得分:0)
.proto
文件应位于tensorflow-models/research/object_detection/protos/
。
所以你应该先
cd C:\path\to\tensorflow-models\research
为per the installation instructions。以上是一个虚构的路径并使用Windows路径结构。您应该将其替换为计算机上的实际路径。当你在那个目录中时,你可以运行你的命令:
C:\Program Files\protoc-<version>\bin\protoc object_detection/protos/.proto --python_out=.
同样,上面只是一个一般的例子。您必须使用<version>
版本替换protoc
。
不复制粘贴以上内容,因为它无法直接在您的计算机上运行。相反,您必须在计算机上找到protoc
二进制文件的路径并在object_detection/protos/.proto --python_out=.
答案 7 :(得分:0)
有时候Windows Cmd不接受通配符&#39; *&#39;。这就是它显示错误的原因。你可以用循环来解决这个问题。 在Cmd中创建循环结帐此链接。 https://ss64.com/nt/for.html 参考: protoc cannot find files in windows 7
答案 8 :(得分:0)
我遇到了missing output directive
的问题。
为我解决的解决方案是我尝试了完整的文件名,因为*.proto
无效。
答案 9 :(得分:0)
我在ubuntu 16.04上遇到同样的问题。将目录更改为研究,现在此文件缺失问题已解决。
答案 10 :(得分:0)
转到protoc releases page并下载 protoc-3.4.0-win32.zip ,解压缩后,您会在bin目录中找到protoc.exe。那么需要将其添加到系统路径。
将其移至models / research文件夹tensorflow模型项目
接下来,您可以使用protoc命令。
protoc object_detection / protos / *。proto --python_out =。
答案 11 :(得分:0)
一些python代码可以帮助您更快地编译协议
import os
#folder where protos are located
os.chdir('C:\\Users\\ ~ \\models-master\\research\\object_detection\\protos')
#list protos
fs=os.listdir()
#back to where your protoc.exe is located
os.chdir('C:\\Users\\ ~ \\models-master\\research')
for f in fs:
if f.find(".proto")>-1:
print(f)
s='protoc object_detection/protos/'+f+' --python_out=.'
print(s)
os.system(s)
答案 12 :(得分:0)
这就是我所做的,我可以在Windows 7 Professional上使用3.4和3.6版本进行编译
C:\tensorflow1\models\research>for /F %i in
('dir /b
.\object_detection\protos\*
.proto') do ( c:\tensorflow1\models\research\bin/protoc
.\object_detection\protos\%i --python_out=.)
答案 13 :(得分:0)
我有相同的错误Object_detection/protos/.proto: No such file or directory.
当我使用Protocol Buffers v3.4.0时,此问题就解决了。
确保您在models-master\research
内,然后将命令用作:
FullPathToProtoc/protoc-3.4.0-win32/bin/protoc object_detection/protos/*.proto --python_out=.
答案 14 :(得分:0)
我正在使用protoc-3.6.1-win32.zip。在Windows上
创建了一个批处理文件,该文件将编译所有.proto文件。
针对object_detection \ protos * .proto中的%% v(D:\ bin \ protoc %% v --python_out =。)
从models \ research文件夹运行此批处理文件。请更改协议路径。 希望这对其他人有帮助,我们不需要安装较旧版本的protoc。 谢谢