はじめに
この記事は2017年6月に公開されたTensorflow Object Detection APIのクイックスタートガイドです。
ドキュメント読んだり、環境設定に時間を掛けずにペットデータセットを使ったサンプルをDockerを使ってローカル環境で簡単に試せるようにしました。
僕自身もそうですが、普段PythonやDeepLearningをやっていない人の助けになれれば幸いです。
環境
必要な環境はDockerだけです。
メモリが足りないとプロセスが止まってしまうので12GB程度割り当てて下さい。
- Docker
- CPUs: 2, Memory: 12GB
Mac以外でも動くと思いますが、自分のマシンのスペックを記載しておきます。
- MacBook Pro (13-inch, 2016)
- CPU: 3.3 GHz Intel Core i7
- Memory: 16 GB
- OS: macOS Sierra 10.12.6
ステップ
Clone repository
まずはこのクイックスタートのために用意したレポジトリをクローンします。
git clone https://github.com/Jwata/tensorflow-pet-detector-quickstart
cd tensorflow-pet-detector-quickstart
TF Recordの作成
ペットデータをダウンロードして、Object Detection APIのレポジトリのスクリプトを使ってTFRecordを作成します。
ダウンロードに結構時間かかります。
pushd data
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
wget http://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz
tar -xvf images.tar.gz
tar -xvf annotations.tar.gz
popd
docker run -it -v `pwd`/data:/data jwata/tensorflow-object-detection \
python object_detection/create_pet_tf_record.py \
--label_map_path=/data/pet_label_map.pbtxt \
--data_dir=/data \
--output_dir=/data
data
ディレクトリ内を確認して2つのファイルが出来ていればOKです。
pet_train.record
はトレーニング用、pet_val.record
は評価用に使います。
ls data/pet_*.record
data/pet_train.record data/pet_val.record
学習済みモデルのダウンロード
COCOデータセットの学習済みモデルをダウンロードします。
モデルはチュートリアルで使われているFasterRcnn + Resnet101というものを使っていますが、Googleは他の種類の学習済みも公開しているので、Configファイルを変更すれば別のモデルを選択することも可能です。
モデルの違いについては現在勉強中です。
pushd data
wget http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz
tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz
cp faster_rcnn_resnet101_coco_11_06_2017/* .
popd
トレーニング
Dockerを使ってトレーニングのプロセスを開始します。
docker run -d -v `pwd`/data:/data --name pet_detector_train jwata/tensorflow-object-detection \
python object_detection/train.py \
--logtostderr \
--pipeline_config_path=/data/faster_rcnn_resnet101_pets.config \
--train_dir=/data/train
評価
トレーニングを開始したら評価のプロセスも開始できます。
docker run -d -v `pwd`/data:/data --name pet_detector_eval jwata/tensorflow-object-detection \
python object_detection/eval.py \
--logtostderr \
--pipeline_config_path=/data/faster_rcnn_resnet101_pets.config \
--checkpoint_dir=/data/train \
--eval_dir=/data/eval
Tensorboard
トレーニングと評価の進捗をTensorboardで確認します。
docker run -d -v `pwd`/data:/data -p 6006:6006 --name tensorboard \
jwata/tensorflow-object-detection \
tensorboard --logdir=/data
open http://localhost:6006
10分ほど待つと評価プロセスの結果の画像が表示されると思います!
2,3日夜通し計算して5000~7000ステップほど学習したら結構良い結果が出ていました。
最後に
DeepLearningは勉強していてわくわくしますね。
次は下記のことを進めてていきます。
- 違うモデルで学習する
- 自分のデータセットで学習する
- 寿司の画像で学習中です。近日中に進捗を共有します。
参考リンク
Object Detection API のドキュメント(英語)
-
Quick Start: Distributed Training on the Oxford-IIIT Pets Dataset on Google Cloud
- 本記事で解説しているペットデータセットを用いたObjectDetectionAPIチュートリアル、GoogleCloud ML Engineでトレーニングしています。
-
Running Locally
- ObjectDetectionAPIをローカルマシンで使うための解説
-
Configuring the Object Detection Training Pipeline
- トレーニングのConfigについて
他の解説記事
-
TensorFlow Object Detectionチュートリアルのデータセットを変えて学習させたい
- チュートリアルの内容をより詳しく解説されています。
- macOS Sierraでtensorflowの新しいObject Detection APIを試してみた