簡體   English   中英

protoc object_detection/protos/*.proto: 沒有那個文件或目錄

[英]protoc object_detection/protos/*.proto: No such file or directory

我正在按照此處找到的示例進行操作。 但是每當我輸入命令“C:/Program Files/protoc/bin/protoc”object_detection/protos/ .proto --python_out=。 我收到一條錯誤消息,指出 object_detection/protos/ .proto: No such file or directory。 我無法創建名為 *.proto 的目錄。 所以我缺少一些關於如何做到這一點的基本信息。 因為我找不到其他人抱怨這個問題,所以它一定很簡單。 我正在使用 Windows 操作系統。

解決了 Windows,在“研究”中並在路徑中包含“ protoc ”,然后這將起作用:

for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.

祝你好運!

確保將目錄更改為“models\\research\\”,並嘗試使用 protoc 版本 3.4.0 執行教程中的步驟,就像教程一樣。 我只使用 3.4.0 為我工作。

我的 cmd 行有效:

C:\Users\...\protoc-3.4.0-win32\bin\protoc object_detection/protos/*.proto --python_out=.

我將把這個貼在我能找到的所有這些問題上,以便人們知道。 無論如何,我必須為自己和其他人寫下這些指示。

以下在某種程度上起作用和不起作用:

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

指定所有文件的 *.proto 不適用於編譯器。 如果您使用的是3.5 版,則必須指定每個單獨的文件

所以這里是它的樣子:

  1. 運行命令
  2. 將您的目錄更改為您下載的研究文件夾(可能不同):

     cd /d C:\\Users\\yourusername\\Desktop\\TensorFlow\\models-master\\models-master\\research
  3. 獲取您下載的 protroc.exe 文件的位置

    C:\\Users\\yourusername\\Desktop\\TensorFlow\\protoc-3.5.1-win32\\bin\\protoc
  4. 轉到 protos 文件夾,以便您知道需要單獨執行哪些文件

    C:\\Users\\yourusername\\Desktop\\TensorFlow\\models-master\\models-master\\research\\object_detection\\protos
  5. 現在開始在 cmd 中向該文件夾中的每個單獨的 .proto 項目發送垃圾郵件:

     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
  6. 或者你可以收工並獲得 3.4 並運行:

     C:\\Users\\yourusername\\Projects\\TensorFlow\\protoc-3.5.1-win32\\bin\\protoc object_detection/protos/*.proto --python_out=.

如果我能澄清一些,請告訴我。 我盡量說得很清楚,所以像我這樣的白痴可以理解。

將目錄更改為tensorflow的models或model master,然后你必須使用以下命令一一編譯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
protoc --python_out=. .\object_detection\protos\graph_rewriter.proto

我有同樣的錯誤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=.

好吧,在我的情況下,很長一段時間打破了頭……問題出在 protoc 版本 3.5 中……它在 WINDOWS 上不接受此參數……如果您下載可以使用的 3.4.0 版本,它將完全正常工作與您的確切論點:! protoc object_detection/protos/*.proto --python_out=.

如果事實證明您像我一樣缺少整個models/research/object_detection/protos子樹,您可以從https://github.com/tensorflow/models單獨下載它。 沒有這些文件會出現同樣的錯誤,即No such file or directory

大家好,這就是我在學習使用 tensorflow 進行對象檢測的同時解決這個錯誤的方法:

步驟:

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 然后按回車//只是一個例子

5-然后在上述步驟之后立即執行此步驟:

"C:\\Users\\Ankit\\Desktop\\Tensorflow\\protbuf\\bin\\protoc.exe" object_detection/protos/*.proto --python_out=。 然后按 Enter(對象和“符號之間有空格,這是寫在一行中的)

6-注意:進入object_detection/protos文件夾,如果有.py文件,說明你的.proto文件編譯成功

謝謝

.proto文件應該在tensorflow-models/research/object_detection/protos/

所以你應該先

cd C:\path\to\tensorflow-models\research 

按照安裝說明 以上是假想路徑,使用Windows路徑結構。 您應該將其替換為計算機上的實際路徑。 當你在那個目錄中時,你可以運行你的命令:

C:\Program Files\protoc-<version>\bin\protoc object_detection/protos/.proto --python_out=.

同樣,以上只是一個一般性的例子。 您必須將<version>替換為您的protoc版本。

不要復制粘貼上面的,因為它不會在機器上直接工作。 相反,您必須在計算機上找到protoc二進制文件的路徑,並將其用作object_detection/protos/.proto --python_out=.之前的命令object_detection/protos/.proto --python_out=.

有時 windows Cmd 不接受通配符“*”。 這就是它顯示錯誤的原因。 您可以使用循環來解決這個問題。 要在 Cmd 中創建循環,請查看此鏈接。 https://ss64.com/nt/for.html ref: protoc 在 windows 7 中找不到文件

我遇到了missing output directive的問題。 對我*.proto的解決方案是我嘗試了完整的文件名,因為*.proto不起作用。

我在 ubuntu 16.04 上有同樣的問題。 將目錄更改為研究,現在此文件丟失問題已解決。

進入protoc發布頁面,下載protoc-3.4.0-win32.zip ,解壓,在bin目錄下會找到protoc.exe。 然后需要將路徑添加到系統路徑。

將此移動到模型/研究文件夾張量流模型項目

接下來,您可以使用 protoc 命令。

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

一些可以幫助您更快地編譯 protoc 的 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)

這就是我所做的,我可以在 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=.)

我正在使用 protoc-3.6.1-win32.zip .. 在 Windows 上

創建了一個批處理文件,它將編譯所有 .proto 文件。

對於 object_detection\\protos*.proto 中的 %%v 做( D:\\bin\\protoc %%v --python_out=. )

從模型\\研究文件夾運行此批處理文件。 更改協議路徑。 希望這對其他人有幫助,我們不需要安裝舊版本的 protoc。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM