TensorFlowの画像認識ライブラリを試す

提供: omotenashi-mind
移動先: 案内検索


TensorFlowが提供する画像認識ライブラリの特徴

画像認識には、正しい分類に必要な大量の画像サンプル、さらにそれを処理するための(GPU時間などの)膨大な処理コストを払う必要があります。
この膨大なコストを削減するための方法として、TensorFlowでは0から学習を始めるのではなく、ある程度学習が完了したモデルをベースに、追加で必要な学習を行う手順を取ることで結果を得る「再学習」の方法を提供しています。
ここでは、その「再学習」による効果を検証していきます。

前提

  • TensorFlowはすでに導入済み。version 1.2以上が必要です。


準備

まずはサンプルコードをダウンロードします。

git clone https://github.com/googlecodelabs/tensorflow-for-poets-2

ダウンロードが終わったら、プロジェクトフォルダに移動し、

cd tensorflow-for-poets-2/

続けてトレーニング用のファイルをダウンロード・展開します。

curl "http://download.tensorflow.org/example_images/flower_photos.tgz" -o ./tf_files/flower_photos.tgz
cd tf_files/
tar xvzf flower_photos.tgz

展開後のフォルダ配下には、以下のような花の種類ごとの画像フォルダが確認できます。

daisy/
dandelion/
roses/
sunflowers/
tulip/


ネットワークの再学習

MobileNetの設定

これから利用する再トレーニング用スクリプトは「Inception V3 model」と「MobileNet」の両モデルに対応していますが、ここでは軽量な「MobileNet」をベースに検証を進めます。

何はともあれ、まずは実行してみます。以下の再トレーニングスクリプトの実行に必要な環境変数を設定します・

IMAGE_SIZE=224
ARCHITECTURE="mobilenet_0.50_${IMAGE_SIZE}"


モニタリングの実行

続いて、モニタリング用にtensorboardを実行します。

tensorboard --logdir tf_files/training_summaries &


再トレーニングの実行

そして、最後に再トレーニング用スクリプトを実行します。

python -m scripts.retrain --bottleneck_dir=tf_files/bottlenecks --how_many_training_steps=500 \
 --model_dir=tf_files/models/ --summaries_dir=tf_files/training_summaries/"${ARCHITECTURE}" \
 --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt \
 --architecture="${ARCHITECTURE}" --image_dir=tf_files/flower_photos


トレーニング結果チェック

トレーニングを終えたら、実際の結果の確認です。

python -m scripts.label_image --graph=tf_files/retrained_graph.pb  /
 --image=tf_files/flower_photos/daisy/21652746_cc379e0eea_m.jpg

次のような結果が得られたら成功です。

daisy 0.99280155
dandelion 0.005197901
sunflowers 0.0019738143
roses 2.5869644e-05
tulips 8.872491e-07


トレーニング結果のチェック

トレーニング前に実行したtensorboardに接続すれば、トレーニング結果を可視化して確認することもできます。
結果を確認するためは、「 http://0.0.0.0:6006/ 」をブラウザで開きます。

結果はこんな形で見られます。
TensorFlow001.png



参考URL