"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

windows10にpycocotoolsとprotoc.exe(protocolbuffers)をインストールする

Tensorflow2.0のチュートリアルの環境設定で必要になる「pycocotools」と「protoc.exe(protocolbuffers)」は、Windows10にインストールしようとすると結構面倒でした。

備忘を兼ねて書いておきます。

f:id:arakan_no_boku:20191221000914p:plain

 

はじめに

 

Anacondaで、Python=3.7の仮想環境を作成し、Activateしている前提です。

かつ。

tensorflow2.0もインストール済です。

www.tensorflow.org

もともとは。

tesorflow2.0のチュートリアルをやろうとしたわけです。

すると、手順として、以下のような記述がさらっと現れます。

 !pip install pycocotools

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

で。

pipをつかってpycocotoolsをインストールしようとすると・・エラーになります。

windowsの場合はこの手順ではだめで、別の手順が必要でした。

でも、そこまでは書いてないので、それらの概要と、Windows10にインストールしてみた手順をまとめておきます。 

 

pycocotools

 

まず。

 pycocotoolsとはCOCOAPIを、pythonで利用するためのツールです。

COCOAPIは、CoCo(Common Object Context)という物体検出など様々な用途に使えるデータセットのことのようです。

それを各言語で利用するためのAPIが「COCOAPI」・・ということみたいです。

cocodataset.org

チュートリアルに書いてあるとおり「pip install pycocotools」でインストールできれば楽勝ですが、Windowsでは以下のようにエラーがでまくります。

f:id:arakan_no_boku:20200104161000p:plain

Windows10では、pipではインストールできません。

どうも。

Windows10で使うためには、ビルドする必要があるみたいです。(;^_^A

と・・いうことで、以下、ビルドする手順です。

まず。

python側で以下がインストールされている必要があります。

  • pip install setuptools
  • pip install cython
  • pip install matplotlib

そしてコンパイラするために、Visual Studio 2017 build tools もしくは、同等のものが必要です。

visualstudio.microsoft.com

さらに。

Gitがインストールされてない場合は、Gitもインストールする必要があります。

arakan-pgm-ai.hatenablog.com

で・・。

ここからが本番です。

まず。

適当な作業フォルダをカレントフォルダにして、以下を実行します。

git clone https://github.com/cocodataset/cocoapi.git

cocoapiフォルダができて、以下のような内容になってます。

f:id:arakan_no_boku:20200104163434p:plain

この「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が開発した「あらゆる種類のフォーマットをシリアライズすることができる」シリアライズフォーマットです。

公式にサポートされた実装ではXMLJSONと同じくらい容易にシリアライズ機構を整備することができるそうです。

チュートリアルのデモ用モデルは、このフォーマットでシリアライズされているみたいなのですね。

だから、元にもどすにはprotoc.exeというツールを使うというわけです。

まだの場合はインストールします。

インストーラはないので、以下からダウンロードします。

github.com

protoc-xxxxx-win64.zipでいいと思います。

ダウンロードしたら解凍して、どこかにおき、protoc.exeにパスを通します。

ウィルスチェックソフトがはいっていると、protoc.exeが削除されるときありますので対応して消されないにはしないとだめです。

さて。

object-detectionのチュートリアルのネタで試しに使ってみる例をします。 

デモソースを置くワークフォルダを、そこをカレントフォルダにして、以下を実行します。

git clone --depth 1 https://github.com/tensorflow/models

modelsフォルダができます。

中身はこんな感じ。

f:id:arakan_no_boku:20200104170351p:plain

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チュートリアルをするには必要な手順です。 

ではでは。