protoc object_detection/protos/* エラーの解決方法

TnsorFlow protoc 設定エラーの解決方法

TensorFlow object_detectionを利用するときにprotocの設定をする必要があります。

protoc object_detection/protos/*.proto --python_out=.というコマンドを実行するのですが、ここでエラーが出ます…(;´Д`)

↓こんな感じのエラーが出ます。

protoc object_detection/protos/*.proto --python_out=.",
The output:
object_detection/protos/anchor_generator.proto:11:3: Expected "required", "optio nal", or "repeated".
object_detection/protos/anchor_generator.proto:11:32: Missing field number.


原因はprotocのバージョンがaptでインストールしたときに古いバージョンが入ってしまうのが原因らしくaptでインストールやアップデートを行っても新しくならないとか…

その問題を解決する用のシェルスクリプトを用意しました。

※ ソースコードの画面の右下にあるview rowを開いて「⌘+S」でソースコードをダウンロードできます。
※ ターミナルで sh ファイル名.sh で実行できます。

protocアップデート用スクリプトの解説

やっていることは凄くシンプルです。

https://github.com/google/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip

からファイルをダウンロードしてきて、解凍したファイルの中に入っているbin(バイナリーファイル)をusr/local/binに保存しているだけです。

これで、protocコマンドが正常に動作するようになっているはずです。

protoc object_detection/protos/*.proto --python_out=.を実行するといい感じに動いてくれるはずです。

Dockerfileで利用する方法も…

直接自分のPCにインストールする方も多いと思いますが、Dockerで利用したいという人もいると思うので念の為、紹介しておくと。

ダウンロードしたシェルスクリプトをコンテナにコピーしてシェルを実行するだけです。

Dockerコマンドは下記のとおりです。

COPY ./install_proto.sh install_proto.sh
RUN sh install_proto.sh
WORKDIR /path/to/models/research
RUN protoc object_detection/protos/*.proto --python_out=.


3行目でTensawflow/modelのresearchディレクトリに移動するのを忘れないようにしましょう。

researchディレクトリでprotoc object_detection/protos/*.proto --python_out=.を実行しないといろいろパスが通らずエラーが出ます。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください