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=.
を実行しないといろいろパスが通らずエラーが出ます。
コメントを残す