Google TF Object Detection API : SSD (Single Shot MultiBox Detector) - MobileNetV1 (with MS COCO)をローカル環境で動かす方法
1. はじめに
1.1 論文リンク
- SSDの原論文: [Wei Liu, et al. 2016]
- MobileNetV1の原論文: [Andrew G. Howard, et al. 2017]
- MobileNetV2の原論文: [Mark Sandler, et al. 2018]
・SSDについては、リンク先のQuitta記事で原論文の日本語全訳が読めます。ありがたい。
1.2 Githubの公式ページ
・ローカル環境でSSDを動かす方法については、Githubにある公式ページRunning locallyをぜひチェックして下さい。このポストは"Running locally"の内容を噛み砕いたものです。・Google TensorFlow API のブランチをローカルにコピー (git clone) しておくと楽です。
$ git clone https://github.com/tensorflow/models/
2. APIが要求するライブラリをローカル環境にインストールする
Tensorflow Object Detection API は以下のライブラリに依存します。
環境にない場合は随時インストールしてください。
- Protobuf 3.0.0
- Python-tk
- Pillow 1.0
- lxml
- tf Slim (which is included in the "tensorflow/models/research/" checkout)
- Jupyter notebook
- Matplotlib
- Tensorflow (>=1.9.0)
- Cython
- contextlib2
- cocoapi
※ インストール方法については、下記リンクの公式ページで詳しく解説されています。
github.com
3. Githubから必要なファイルをダウンロード
3.1 Configファイル(JSON形式)のダウンロード
下記リンクから、学習済みモデル「ssd_mobilenet_v1_coco」について書かれたJSON形式の設定ファイル(.config)をローカル環境にダウンロードする。
models/ssd_mobilenet_v1_coco.config at master · tensorflow/models · GitHub
3.2 モデルの学習済み特徴量のダウンロード
下記リンク先のページから、MS COCOデータセットで学習済みのモデルの特徴量をダウンロードできる。今回はMobileNetV1の特徴量が欲しいので「COCO-trained models」から「ssd_mobilenet_v1_coco」を選択し、.tar.gz形式のファイル(.ckpt)をローカル環境にダウンロードする。
models/detection_model_zoo.md at master · tensorflow/models · GitHub
ダウンロードしたら、設定ファイル:ssd_moblienet_v1_coco.configを開き、ローカル環境でのパス(.ckptファイルがある場所)を指定する。
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"
3.3 MS COCOデータセットを読み込むためのシェルスクリプトをダウンロード
MS COCOデータセットのインポートを行うシェルスクリプト(.sh)を、下記リンクからローカル環境にダウンロードする。
models/download_and_preprocess_mscoco.sh at master · tensorflow/models · GitHub
ダウンロードしたら、設定ファイル:ssd_moblienet_v1_coco.configを開き、ローカル環境でのパス(.shファイルがある場所)を指定する。
input_path: "PATH_TO_BE_CONFIGURED/mscoco_train.record-?????-of-00100"
download_and_preprocess_mscoco.shは、元データをTensorFlowが読み込めるデータセットに変換してくれるシェルスクリプト。これを実行。(10h~15hかかる)
$ /hogehoge/hoge/download_and_preprocess_mscoco.sh
3.4 ベクトルデータからラベルと名前の紐付け(ex. 0 → "cat")
名前の紐付けを行うファイル(.pbtxt)を、下記リンクからローカル環境にダウンロードする。
models/mscoco_label_map.pbtxt at master · tensorflow/models · GitHub
ダウンロードしたら、設定ファイル:ssd_moblienet_v1_coco.configを開き、ファイルの該当箇所にローカル環境でのパス(.pbtxtファイルがある場所)を指定する。
label_map_path: "PATH_TO_BE_CONFIGURED/mscoco_label_map.pbtxt"