IT実験のブログ

IT関連のツールの使い方など

Tensorflowのinceptionという画像認識のexampleを試す(step数を減らして再度訓練処理を実行する)

前回までで訓練処理のstep数が大きすぎて、訓練が完全に終了しなかったので、今回はstep数を小さくして再トライしようと思います。

f:id:itlab7:20200215221628p:plain

ソースファイルを眺めていたら、max_steps なるFLAGがあるようなので、これを500にして試してみます。ちなみにデフォルトは10000000です。終わらないわけです。

下のようにして、max_stepsに500を指定します。 これなら、1時間程度で完了するはずです。

bazel-bin/inception/flowers_train \
   --train_dir="/tmp/flowers_train/" \
   --data_dir="/tmp/flowers-data/" \
   --pretrained_model_checkpoint_path="${HOME}/AI/inception-v3-model/inception-v3/model.ckpt-157585" \
   --fine_tune=True \
   --initial_learning_rate=0.001 \
   --input_queue_memory_factor=1 \
   --max_steps=500

f:id:itlab7:20200215231717p:plain

f:id:itlab7:20200215232255p:plain

完了しました。500step訓練されたモデルが生成されています。

では、訓練して生成されたモデルを評価してみます。

評価処理を実行するプログラムをビルドしていない場合は、下のコマンドでビルドします。

bazel build //inception:flowers_eval

下のコマンドで評価処理を実行します。

bazel-bin/inception/flowers_eval \
   --eval_dir="/tmp/flowers_eval/" \
   --data_dir="/tmp/flowers-data/" \
   --subset=validation \
   --num_examples=500 \
   --checkpoint_dir="/tmp/flowers_train/" \
   --input_queue_memory_factor=1 \
   --run_once

f:id:itlab7:20200215232820p:plain

500step訓練されたモデルを使用して、精度は94%となっています。 訓練済みのモデルをベースに使って訓練しているので、500stepでも運が良ければ このくらいの精度は出るようです。

これで、daisy, dandelion, roses, sunflowers, tulips の5種類の花の画像を94%の精度で識別できるDNNモデルが生成できました。

f:id:itlab7:20200215234408p:plain

/tmp ディレクトリにある flowers-data, flowers_eval, flowers_train ディレクトリは、~/AI/inception ディレクトリにコピーしておきました。(/tmp ディレクトリはUbuntu起動時にクリアされるため)

今回は ここまでです。