tensorflow/models環境を構築(1.x系)
最終更新日  2019/10/20
使用OS ver Ubuntu18.04、tensorflow 1.15.0, tensorflow/models 1.13.0
Proxy    あり
目次: Ubuntu18.04
はじめに
事前に色々バージョンを検証しました
結果、tensorflow1.15.0とtensorflow/modelsの1.13.0の組み合わせが一番安定しています
前準備@host側
データを準備する
modelを落とす(今回は2.0が最新なので下記)
$ git clone https://github.com/tensorflow/models.git -b v1.13.0
tf1ディレクトリを作成
$ mkdir ~/work/tf1
models1をwork/tf1へ移動
$ mv models ~/work/tf1
以降、objectdetectionのインストール方法を参考に以下設定をしていく
protobufの手動コンパイル(ref:ここ)
移動
$ cd ~/work/tf1/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/tf1/models/research/
Object Detection Test
homeへ移動
$ cd ~/
作成したイメージを起動
$ docker run --gpus all -it --rm -v $(pwd)/work:/tf/work -p 8888:8888 tf-1.15.0:gpu-py3-jupyter-models-cv-0.1 bash
pythonのパスが合っているか動作確認
移動
$ cd work/tf1/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-1.15.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」を開く
一部修正が必要
一番最後の2行の前におまじない
修正前
plt.figure(figsize=IMAGE_SIZE)
plt.imshow(image_np)
修正後
%matplotlib inline
plt.figure(figsize=IMAGE_SIZE)
plt.imshow(image_np)
この修正で動いた
https://gyazo.com/ca4c9b2c83aada67361c23c215e33d5a
参考
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