LoginSignup
2
2

More than 5 years have passed since last update.

tensorflow/slimで独自データtrain

Last updated at Posted at 2018-02-25

githubで公開されているtensorflow/models/research/slimを使って、独自データセットをgoogle cloud mlでトレーニング
https://github.com/tensorflow/models.git

データセットをTFRecordへ変更

独自データセットは3クラス(Mont_Saint_Michel、Sagrada_Familia、Taj_Mahal)
1クラス200枚、合計600枚

download_and_convert_data.pyを使用して独自データをTFRecord形式へ変換
ここで画像をシャッフルしてからtrainとtestに分けられる
・train 500枚
・test 100枚

スクリーンショット 2018-02-25 16.31.29.png

訓練済みモデルダウンロード

inception V3で事前に訓練されたモデルを微調整するので、訓練済みモデルをダウンロード

$ CHECKPOINT_DIR=/tmp/checkpoints
$ mkdir ${CHECKPOINT_DIR}
$ wget http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz
$ tar -xvf inception_v3_2016_08_28.tar.gz
$ mv inception_v3.ckpt ${CHECKPOINT_DIR}
$ rm inception_v3_2016_08_28.tar.gz

トレーニング

gcloud ml-engine jobs submit training $JOB_NAME \
--job-dir $OUTPUT_PATH \
--runtime-version 1.4 \
--module-name slim.train_image_classifier \
--package-path slim/ \
--region $REGION \
--scale-tier BASIC_GPU \
-- \
--train_dir=${OUTPUT_PATH} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=flowers \
--dataset_split_name=train \
--model_name=inception_v3 \
--checkpoint_path=${CHECKPOINT_PATH} \
--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits \
--trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits

スクリーンショット 2018-02-25 17.13.17.png

スクリーンショット 2018-02-25 18.51.09.png

スクリーンショット 2018-02-25 18.50.19.png

スクリーンショット 2018-02-25 18.50.36.png

lossが下がらなくなってきたので途中でジョブを停止

テスト

最後のチェックポイントを指定してeval_image_classifier.pyを使ってテスト

gcloud ml-engine jobs submit training $JOB_NAME \
--job-dir $OUTPUT_PATH \
--runtime-version 1.4 \
--module-name slim.eval_image_classifier \
--package-path slim/ \
--region $REGION \
--scale-tier BASIC_GPU \
-- \
--alsologtostderr \
--checkpoint_path=$OUTPUT_PATH/model.ckpt-1450 \
--dataset_dir=${DATASET_DIR} \
--dataset_name=flowers \
--dataset_split_name=validation \
--model_name=inception_v3

スクリーンショット 2018-02-25 19.10.13.png

Test Accuracy 94%

kerasが公開しているInceptionV3 imagenet訓練済みモデルでのトレーニングと比べると、こちらの方が精度が高く出た。
https://qiita.com/Ryota7101/items/f1103ba4969113e65adf

チェックポイントをsavedmodelへ変換

訓練したモデルをGCPへデプロイしたいので、savedmodelへ変換し、デプロイ

こちらを参考
https://stackoverflow.com/questions/44329185/convert-a-graph-proto-pb-pbtxt-to-a-savedmodel-for-use-in-tensorflow-serving-o

スクリーンショット 2018-02-25 19.23.30.png

inputのnode名が間違っていた為、デプロイ出来ず
微調整時のinput nodeの調べ方がわからないので、ここで中止

pbファイルをGCPにデプロイ、予測までを行う簡単な方法があればご教授ください・・・

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2