web-dev-qa-db-ja.com

protoc object_detection / protos / *。proto:そのようなファイルまたはディレクトリはありません

私は here の例に従っています。しかし、コマンド「C:/ Program Files/protoc/bin/protoc」object_detection/protos /。proto --python_out =を入力するたびに。 object_detection/protos /。proto:そのようなファイルまたはディレクトリはありませんというエラーが表示されます。 * .protoというディレクトリを作成できません。そのため、これを行う方法に関する基本的な情報が不足しています。この問題について文句を言う他の人を見つけることができないので、それはかなり単純でなければなりません。 Windows OSを使用しています。

12
twofair

Windows用に解決され、「research」にあり、パスに「protoc」がある場合、これは機能します:

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

がんばろう !

11
flowgrad

必ずディレクトリを「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=.
6
underfloor

私が見つけることができるすべてのこれらの質問にこれを投稿するので、人々は知っています。とにかく、私自身と他の人のためにこれらの指示を書かなければなりません。

次の方法は機能しますが、機能しません。

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

すべてのファイルを指定する* .protoは、コンパイラでは機能しません。 version 3.5を使用している場合、個々のファイルごとにを指定する必要があります

だからここでそれがどのように見えるか:

  1. Cmdを実行する
  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. または、1日呼び出して3.4を取得して実行することもできます。

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

もっと明確にできるかどうか教えてください。私のような馬鹿が理解できるように、私は非常に明確にしようとします。

4
Noctsol

ディレクトリをtensorflowのモデルまたはモデルマスターに変更し、次のコマンドを1つずつ実行して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
Aadhar Bhatt

私の場合は長い間頭を痛めていました...問題はprotocバージョン3.5にありました... WINDOWSでこの引数を受け入れません...使用できる3.4.0バージョンをダウンロードすると完全に機能しますあなたの正確な引数で:! protoc object_detection/protos/*。proto --python_out =。

2
Kamornik Cola

判明した場合は、models/research/object_detection/protos私のようなサブツリーは、 https://github.com/tensorflow/models から個別にダウンロードできます。これらのファイルがないと、同じエラーが発生します。つまり、No such file or directory

1
craq

同じエラーがありますObject_detection/protos/.proto: No such file or directory.

これは Protocol Buffers v3.4. を使用すると解決します。

あなたが中にいることを確認してくださいmodels-master\researchそして、コマンドを次のように使用します。

FullPathToProtoc/protoc-3.4.0-win32/bin/protoc object_detection/protos/*.proto --python_out=.

1
susan097

protocリリースページ に移動して、protoc-3.4.0-win32.Zipをダウンロードし、展開すると、 binディレクトリでprotoc.exeを見つけます。次に、システムパスへのパスを追加する必要があります。

これをmodels/researchフォルダーtensorflowモデルプロジェクトに移動します

次に、protocコマンドを使用できます。

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

0

少しpython protocをより速くコンパイルするのに役立つコード

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)
0

missing output directiveの問題に直面しました。解決策は、*.protoが機能していなかったため、完全なファイル名を試してみることでした。

0
dls

Ubuntu 16.04でも同じ問題があります。ディレクトリを調査に変更し、このファイルが見つからない問題を解決しました。

0
Amresh

.protoファイルはtensorflow-models/research/object_detection/protos/にある必要があります。

だから最初に

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

as インストール手順に従って 。上記は架空のパスであり、Windowsパス構造を使用しています。これをコンピューターの実際のパスに置き換える必要があります。そして、そのディレクトリにいるとき、コマンドを実行できます:

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

繰り返しますが、上記は単なる一般的な例です。 <version>protocバージョンに置き換える必要があります。

[〜#〜] not [〜#〜]上記をコピーして貼り付けてください。マシン上で直接動作しないためです。代わりに、コンピューター上のprotocバイナリのパスを見つけて、そのパスをobject_detection/protos/.proto --python_out=.の前のコマンドとして使用する必要があります。

0

windows Cmdはワイルドカード「*」を受け入れない場合があります。それがエラーを示す理由です。ループを使用してこの問題を解決できます。このリンクをCmdチェックアウトでループを作成します。 https://ss64.com/nt/for.html ref: protocはWindows 7でファイルを見つけることができません

0
Prashant Shukla

これは私がやったことであり、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=.)
0
Ram Ramesh

Protoc-3.6.1-win32.Zipを使用しています。

すべての.protoファイルをコンパイルするバッチファイルを作成しました。

object_detection\protos * .proto doの%% vの場合(D:\ bin\protoc %% v --python_out =。)

Models\researchフォルダーからこのバッチファイルを実行します。プロトコルパスを変更してください。これが他の人を助け、protocの古いバージョンをインストールする必要がないことを願っています。ありがとう

0
Shishir Vikrant