tensorflow/models環境を構築(2.x系)
最終更新日  2019/10/22
使用OS ver Ubuntu18.04、tensorflow 2.0.0、tensorflow/models 2.0
Proxy    あり
目次: Ubuntu18.04
前準備@host側
データを準備する
modelを落とす(今回は2.0が最新なので下記)
$ git clone https://github.com/tensorflow/models.git
tf2ディレクトリを作成
$ mkdir ~/work/tf2
modelsをwork/tf2へ移動
$ mv models ~/work/tf2
以降、objectdetectionのインストール方法を参考に以下設定をしていく
protobufの手動コンパイル(ref:ここ)
移動
$ cd ~/work/tf2/models/research/
protobufを落とす
$ wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
解凍
$ unzip protobuf.zip
実行
$ ./bin/protoc object_detection/protos/*.proto --python_out=.
何も表示されないけど気にしない
COCO APIのインストール
移動
$ cd ~/
Host側でCOCO APIを落とす
$ git clone https://github.com/cocodataset/cocoapi.git
移動
$ cd ~/cocoapi/PythonAPI
コンテナでmakeする
$ make
------------------------------下記、このmakeではまったときのメモ----------------------------------
エラーの原因は?
makeで叩かれるsetup.pyがpythonコマンドで叩かれていること
Python3前提で環境構築していたので、python-pipがなかったこと
当然、pipにはsetuotoolsやnumpyがないこと
よって下記を実施した
$ sudo apt install python-pip
$ pip install setuptools
$ pip install numpy
これでもエラー。_mask.cが読めないらしい。cythonを入れる
$ pip install cython
cythonを入れたら解決する
しかし、先日これでもエラーが出たので下記をトライ。ただ、 やり直したら不要だった。要検討。
とりあえず、setup.pyの中身を見る
$ cd ~/cocoapi/PythonAPI
$ sudo vim setup.py
maskApi.cの階層がおかしくない?cocoapi/PythonAPI/にいるからcommonは2階層上じゃない?
修正前(これだとcommonまでいかない気がする)
sources='../common/maskApi.c', 'pycocotools/_mask.pyx'
include_dirs = np.get_include(), '../common',
修正後
sources='../../common/maskApi.c', 'pycocotools/_mask.pyx'
include_dirs = np.get_include(), '../../common',
--------------------------------makeではまったときのメモここまで----------------------------------
生成したpycocotoolsを移動
$ cp -r pycocotools ~/work/tf2/models/research/
Object Detection Test
!!!まだこれ 試してないので動かないです!!!
homeへ移動
$ cd ~/
作成したイメージを起動
$ docker run --gpus all -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tf-2.0.0:gpu-py3-jupyter-models-cv-0.1 bash
pythonのパスが合っているか動作確認
移動
$ cd work/tf2/models/research
テスト実行
$ python object_detection/builders/model_builder_test.py
OKが出れば実行環境準備できているはず
Object Detection Tutorial
イメージを起動
$ docker run --gpus all -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tf-2.0.0:gpu-py3-jupyter-models-cv-0.1
jupyter notebookへアクセス
http://127.0.0.1:8888/
"work/models/research/object_detection" にある「object_detection_tutorial.ipynb」を開く
一部修正が必要(protocをunzipしたのでbin/protocにしないといけない)
修正前
%%bash
cd models/research/
protoc object_detection/protos/*.proto --python_out=.
修正後
%%bash
cd models/research/
./bin/protoc object_detection/protos/*.proto --python_out=.
この修正で動いた。
https://gyazo.com/c95892c8472f4c4118f710523fd01c1e https://gyazo.com/501a7b486497a9d5fb80c75f799faf09
参考
https://datatechnologylab.readthedocs.io/ja/latest/MLWorkflow/training/index.html
https://qiita.com/sanoyo/items/1a5c4e8671203d190fca
https://qiita.com/hirokikmr/items/f89d5405aa7e385dff7e
https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9