目次
windowsでtesorflow2.0のチュートリアルでエラーになった
tesorflow2.0のチュートリアルをやろうとしました。
すると、手順として、以下のような記述がありました。
!pip install pycocotools
protoc object_detection/protos/*.proto --python_out=
で。
その通り実行すると、エラーになります。
windowsの場合はこの手順ではだめでした。
そこで、pycocotoolsとprotoc.exe(protocolbuffers)の概要を調べて、Windows10環境にインストールしてみた手順をまとめておきます。
環境は、Anacondaで、Python=3.7の仮想環境を作成してます。
tensorflow2.0はインストール済です。
pycocotools
pycocotoolsとはCOCOAPIを、pythonで利用するためのツールです。
COCOAPIは、CoCo(Common Object Context)という物体検出など様々な用途に使えるデータセットのことのようです。
それを各言語で利用するためのAPIが「COCOAPI」・・ということみたいです。
チュートリアルに書いてあるとおり「pip install pycocotools」でインストールできれば楽勝ですが、Windowsではpipでインストールできません。
エラーがでまくります。
Windows10で使うためには、ビルドする必要があります。(;^_^A
pycocotoolsのビルド
ビルドする手順です。
まず。
python側で以下がインストールされている必要があります。
- pip install setuptools
- pip install cython
- pip install matplotlib
そしてコンパイラするために、Visual Studio 2017 build tools もしくは、同等のものが必要です。
さらに。
Gitがインストールされてない場合は、Gitもインストールする必要があります。
で・・。
ここからが本番です。
まず。
適当な作業フォルダをカレントフォルダにして、以下を実行します。
cocoapiフォルダができて、以下のような内容になってます。
この「PythonAPI」フォルダをカレントフォルダにします。
すると、そこにsetup.pyがあります。
そのsetup.pyの中に「ext_modules」というブロックがあり、そこに
extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
とありますが、このコンパイラオプションはエラーになるので、
extra_compile_args=[],
に変更します。
変更後のブロックは
ext_modules = [ Extension( 'pycocotools._mask', sources=['../common/maskApi.c', 'pycocotools/_mask.pyx'], include_dirs = [np.get_include(), '../common'], extra_compile_args=[], ) ]
になります。
これを保存したら、setup.pyのあるフォルダをカレントにして以下を実行します。
python setup.py build_ext install
すると、そのフォルダに「pycocotools」というフォルダができます。
あとでコピーしますが、とりあえず、次にいきます。
protoc.exeのインストール
protoc.exeは Protocol Buffersを扱うコマンドです。
Protocol BuffersはGoogleが開発した「あらゆる種類のフォーマットをシリアライズすることができる」シリアライズフォーマットです。
公式にサポートされた実装ではXMLやJSONと同じくらい容易にシリアライズ機構を整備することができるそうです。
チュートリアルのデモ用モデルは、このフォーマットでシリアライズされているみたいなのですね。
だから、元にもどすにはprotoc.exeというツールを使うというわけです。
まだの場合はインストールします。
インストーラはないので、以下からダウンロードします。
protoc-xxxxx-win64.zipでいいと思います。
ダウンロードしたら解凍して、どこかにおき、protoc.exeにパスを通します。
ウィルスチェックソフトがはいっていると、protoc.exeが削除されるときありますので対応して消されないにはしないとだめです。
さて。
object-detectionのチュートリアルのネタで試しに使ってみる例をします。
デモソースを置くワークフォルダを、そこをカレントフォルダにして、以下を実行します。
git clone --depth 1 https://github.com/tensorflow/models
modelsフォルダができます。
中身はこんな感じ。
models/researchフォルダをカレントフォルダにします。
そこで、protocコマンドを使います。
protoc.exe object_detection/protos/*.proto --python_out=.
成功すると、シリアライズされていたものが展開されて、reaeachフォルダに「object_detection」フォルダができます。
そしたら。
reaearchフォルダがカレントフォルダの状態で、
pip install .
を実行して、researchフォルダのモジュールをすべてインストールする・・。
こんな感じです。
やれやれです。
Linuxでは以下の2行で終わることなのですが(笑)。
!pip install pycocotools
protoc object_detection/protos/*.proto --python_out=
とりあえず。
無理やりWindowsでチュートリアルをするには必要な手順です。
ではでは。