Fine-tuningを使って少ない画像データから効率よく学習モデルを作成する方法

Fine-tuningを使って少ない画像データから効率よく学習モデルを作成する方法

VGG16モデルを使ったFine-tuning

こんにちは。

AI coordinatorの清水秀樹です。

近々、人を認識させる学習モデルを真面目に開発する機会が発生したため、以前からチャレンジしてみたかったFine-tuningに挑戦してみました。

筆者のように趣味でDeepLearningをやっている人にとって、大量の学習データを集めることは非常に困難です。

そんな時に使えるのが、Fine-tuningと言う学習方法です。

Fine-tuningとは既存の学習モデルを流用する学習方法で、少ない画像データからでも精度が高い学習モデルを作成することができるようになります。

大量の学習データを集められない時に重宝する手法ですね。

 

今回は1000クラス学習されているVGG16モデルを流用します。

VGG16モデルは2014年のILSVRCで提案された畳み込み層13層とフル結合層3層から成るCNNモデルです。

 

しかも、このVGG16モデルはKerasのモジュールにも対応しているため、簡単に流用して学習することができます。

これにより、1から学習モデルを作成させる必要がなくなり、今まで以上に効率よく学習モデルを作成することが可能となります。

 

今回はこのVGG16を流用したFine-tuningについて紹介したいと思います。

 

参考にさせて頂いたサイトの紹介

情報提供ありがとうございます。

 

開発環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

python 3.5.2

opencv3 3.1.0

tensorflow 1.1.0

 

まずはVGG16を試してみる

まずは、高機能学習モデルVGG16を試してみました。

冒頭でも説明しましたがVGG16はKerasのモジュールとしても対応しているため、事前に学習モデルをダウンロードせずとも、ソースを実行するだけでダウンロードが始まります。

初回実行時はダウンロードに時間がかかりますが、2回目以降は瞬時に動きます。

 

以下、ソースコードです。

以下、使用した画像です。

実行結果は・・・

素晴らしいです。

チワワと犬の種類まで判別してくれました。

噂通りの性能ですね。

 

このモデルそのままでも色々なことに使えそうですね。

 

VGG16を流用したFine-tuningに挑戦

それでは本題です。

VGG16の性能の高さを知ったところで、早速このVGG16を流用したFine-tuningにチャレンジしたいと思います。

参考元サイトのソースコードをほとんど流用させて頂きました。

 

今回は人物画像を学習させたいと考えています。

ただし、悲しいことにVGG16は人物を学習させたモデルではありません。

Fine-tuningの注意点として元々学習で使われた画像データと、今回新たに分類しようとしている画像が似ていない場合は、その特徴モデルがそのまま使えない可能性があります。

これメッチャ重要です。

Fine-tuningは似たような画像を準備しなければ、あまり精度が出ないと言うことですね。

そのため人物画像の場合、VGG16を使ったFine-tuningでどこまで精度が出るかわかりませんが、今回はFine-tuningのやり方を学ぶことを目的としているので精度が低くても良しとします。

 

以下ソースコードです。

画像を水増しするImageDataGeneratorも組み込んであります。

今回は、子供、成人男性、成人女性、の3クラスでFine-tuningしています。

それぞれの画像枚数は約1000枚です。

以下のように学習データとテストデータの枚数を指定する必要があります。

頑張ってデータを集めましょう。

 

畳み込み層は15層目まではそのまま固定し、以降の畳み込み層を学習するように設定します。

 

以下、学習結果です。

epoch = 20で止めました。

それ以上はval_lossが上昇し過学習となるので・・・

それでもVal_loss = 0.3060は1から学習モデルを作成することを考えると、中々の精度かと思います。

 

Fine-tuningの結果は

以下の画像でテストしてみました。

 

 

 

う〜ん、微妙。

 

やはりVGG16モデルで、人物画像のFine-tuningは精度が高くならない感じですね。

それともやり方が悪いのか。

とはいえ、Fine-tuningがどんなものなのか知ることができたので良しとします。

 

次回は別の画像でチャレンジしてみたいと思います。

 

GPU欲しいっす。

 

それではまた。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

LEAVE A REPLY

*
*
* (公開されません)