4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TensorFlow Lite Model Maker による転移学習の過程で accuracy・loss を可視化(グラフ化)する

Last updated at Posted at 2021-04-03

はじめに

この記事は、カスタムデータセットを使用した転移学習で TensorFlow Lite のモデルを得る過程を簡素化してくれる「TensorFlow Lite Model Maker」に関するものです。
 ●TensorFlow Lite Model Maker
  https://www.tensorflow.org/lite/guide/model_maker?hl=ja

その TensorFlow Lite Model Maker による転移学習に関し、画像分類用の機械学習モデルを作る下記のチュートリアルがあるのですが、このチュートリアル中の accuracy・loss を可視化してみた際の話を自分用メモも兼ねて書いていきます。
 ●TensorFlow Liteモデルメーカーによる画像分類 | TensorFlow Lite
  https://www.tensorflow.org/lite/tutorials/model_maker_image_classification

TensorFlow Lite Model Maker で対応可能なタスク

冒頭で少し触れた転移学習ですが、対象とできるタスクは以下となるようです。
TensorFlow_Lite_Model_Makerがサポート可能なタスク.jpg
この記事で扱っているのは、この中の画像分類です。

TensorFlow Lite Model Maker の画像分類チュートリアルについて

公式の画像分類のチュートリアルは、Webサイトを開くとコードや説明が書かれていますが、ページトップにある「Google Colabで実行」と書かれたボタンを押すことで、ページ内の内容を Google Colab(以下、Colab と記載) で開いて実行ができる状態にできる、とても便利なものです。
画像分類のチュートリアル.jpg
チュートリアル通りの内容を進めていくだけなら、Colab上で説明を読みながらプログラムが書かれた部分をポチポチ押していくだけで、最後には機械学習モデルができあがります(カスタムデータセットは、サンプルとして用意された 5種類の花の画像を転移学習に用いる形になります)。

そのチュートリアルを進める過程で、以下のように学習が行われる部分があり、途中段階の loss や accuracy の値がテキストで表示されます。この途中経過を、グラフで見たいというのが今回のゴールです。
学習の経過.jpg

可視化のためのプログラム

前提となること

ここからの話は、上記のチュートリアルで「 model = image_classifier.create(・・・) 」までは終えていることと、手順の中のデータの割り当てでバリデーション用データを分けているという前提の作りになっています。

バリデーション用データを分けているというのは、チュートリアルのデータセットの分割で、以下の処理を行った状態です。

data = ImageClassifierDataLoader.from_folder(image_path)
train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)

また、その場合の学習の処理は以下のようになっているはずです。

model = image_classifier.create(train_data, validation_data=validation_data)

ちなみに、この後にグラフを出している例では、自分は以下の処理にして epochs がデフォルトより多く 10 になるようにしています(※グラフ化の際、この部分は必須ではないです)。

model = image_classifier.create(train_data, validation_data=validation_data, epochs=10)

学習の過程の情報を保持しているところを探す

グラフ化についてポイントになるのは、上で書いた学習の途中経過のデータがどのようにして取得できるかです。
それについては、 model の後にピリオドをうって、自動補完で出てくる内容を見て探してみました。
補完の表示.jpg
history というものがあり、これだと思われます。

そしてさらに、もう一段階ありました。
補完の表示2.jpg
この model.history.history の中を見てみると、必要とするデータが入っていそうです。
経過情報の値の確認.jpg

どうやら Keras のモデルと同じもののようなので、分かってしまえば、あとは以下の Keras の公式ドキュメントにある情報などを使って進められます。
 ●可視化 - Keras Documentation
  https://keras.io/ja/visualization/
可視化_-_Keras_Documentation.jpg

グラフ化

上記の Keras の公式ドキュメントの例に少しだけ変更を加えます。具体的には以下の内容です。
 history.historymodel.history.history
 accaccuracy
 val_accval_accuracy

書きかえ後の内容は以下のとおりです。

# Plot training & validation accuracy values
plt.plot(model.history.history['accuracy'])
plt.plot(model.history.history['val_accuracy'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

# Plot training & validation loss values
plt.plot(model.history.history['loss'])
plt.plot(model.history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

そして、以下のような出力が得られます。
グラフ.jpg

おわりに

今回の記事では、Google Colab上で TensorFlow Lite Model Maker の画像分類のチュートリアルを進める話に関して、その際に得られる学習過程の accuracy・loss の値をグラフ化してみました。

今回、TensorFlow Lite Model Maker を初めて使ったのですが、いろいろ手を加えられるところがあるので、また引き続き利用していこうと思います。

転移学習で作成した機械学習モデルのアプリでの利用

今回の記事で作った機械学習モデルは、公式で提供されている iOS用アプリサンプルに組み込んで、iPhone上で使ってみました。以下の動画は、それを実行してみた時の様子です。

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?