今更ですがtensorflow objectdetection api のチュートリアルを試してみたのでメモ!
スポンサードリンク
①事前準備
以下URLよりコードをダウンロードできます
ダウンロードしたら、環境変数「PYTHONPATH」に
"~/models-master"
"~/models-master/research"
"~/models-master/research/slim"
までの絶対パスを追加しておきます
また今回学習させる画像データ・アノテーションファイルは以下のURLからダウンロードできます(チュートリアル用のデータです)
http://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
http://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz
データはzip形式でダウンロードされるので、解凍しておきます。
次に、今回使用する学習済モデルをダウンロードしておきます
今回はssd_mobilenet_v1_cocoを使用して転移学習を行っていきます.
②TF-Recordの作成
ObjectDetection apiで学習を行うためにはTF-recordという独自のデータ形式に変換する必要があります。
models-master以下の「research」ディレクトリに移動したうえで、以下のコマンドでTF-Recordを作成します。
python object_detection/dataset_tools/create_pet_tf_record.py / --label_map_path=object_detection/data/pet_label_map.pbtxt / --data_dir=`/` / --output_dir=`/`
-
- label_map_pathは.pbtxt(カテゴリラベルファイル)のディレクトリを指定
- data_dirは先程ダウンロードしてきたimages・annotationsフォルダが置かれているディレクトリ
(images・annotationsフォルダはresearch直下に配置するといいと思います)
-
- output_dir =TF-Recordを生成するディレクトリ
③コンフィグファイルの設定
学習を行う前に、コンフィグファイルの設定を行っていきます.
コンフィグファイルには学習を行うための様々なパラメータが設定してあります.
以下のファイルを編集していきます。
(今回はssd_mobilenet_v1_cocoモデルを使用するので以下のファイルですが、
別のモデルをダウンロードしてきた場合は適宜編集するファイルを変更してください)
research/object_detection/samples/configs/ssd_mobilenet_v1_coco.config
変更するのは以下の4か所です
①num_class
ssd { num_classes: 37 # 分類する数
.pbtxtファイルを確認して、分類する数に変更する
②fine_tune_checkpont
fine_tune_checkpoint: "~/research/ssd_mobilenet_v1_coco_2018_01_28/model.ckpt"
models.ckptまでの絶対パスを指定
③input_path
input_path:"~/research/train_record/*"
先程生成したtrain_recordまでの絶対パスを指定
④label_map_path
label_map_path: "~/research/object_detection/data/pet_label_map.pbtxt"}
.pbtxtまでの絶対パスを指定
④トレーニングの実行
以下コマンドでトレーニングを実行します
python research/object_detection/legacy/train.py --logtostderr /
-
- pipeline_config_path=~\models-master\models-master\research\ssd_mobilenet_v1_coco.config /
- train_dir=~\models-master\models-master\research\result
僕の場合は「research」ディレクトリから実行すると、
「nets」モジュールが読み込めないor「object-detection」モジュールが読み込めない
というエラーが出てしまうので、一つ上のmodels-masterディレクトリから実行しました
それぞれ環境変数に追加しているのになんでだろう...
⑤.pb形式で出力
python research/object_detection/export_inference_graph.py /
-
- input_type=image_tensor /
- pipeline_config_path=~\research\ssd_mobilenet_v1_coco.config /
- trained_checkpoint_prefix=~\research\result\model.ckpt-242 /
- output_directory=~\research\result2