Python
DeepLearning
データ分析
FineTuning
転移学習

AKB2017総選挙ランキング上位者のFine-Tuning

前回の記事

「乃木坂と欅坂メンバーをVGG16,VGG19,InceptionV3で転移学習してみた」
https://qiita.com/MuAuan/items/6c0e95ac7538ddc6c19a
から、少ないデータでも、転移学習すれば画像をフィッティングできることが分かった。
そこで、今回はAKB総選挙の上位者についてFine-Tuningしてみた。

【参考】

【速報】AKB48総選挙2017の順位・結果・票数まとめ【1位:指原莉乃|2位:渡辺麻友】
http://aikru.com/archives/2562/

コードは以下に置いてある

https://github.com/MuAuan/DL-FineTuning

手順

前回の教訓を生かしつつ以下の手順で実施した。
①AKB総選挙上位者の画像データをYahooから「名前」でそれぞれ60個取得、画像にコンタミネーションがあるので、併せて「名前 顔写真」でさらに60個取得、一般女性と男性のデータもそれぞれ取得
②ResNet50「90層固定」で各カテゴリ60個のデータに対して、フィッティング実施
③フィッティング実施後のモデルを使って、各カテゴリごとに一致率の悪い画像をデータから削除し、「名前 顔写真」で取得したデータから追加して、各カテゴリ60個ずつにする
④ReNet50「174層固定」パラメーター②で、転移学習
⑤④のフィッティング実施後もカテゴリに属さないデータが存在したので、再度③⇒④のプロセスを実施
⑥ちなみに、③のあとResNet50「90層固定」で実施した場合、Val_accのフィッティング率は上がらなかった※ここが実は謎

結果

以下のとおり、
②の結果は以下のとおり、Trainデータの精度が出ているが、Testデータについて、全体で54%であり、コンタミネーションの結果である。
score_akb1.png
val_acc.png
③の結果は、特にないが、②のパラメータでセレクト出来て、カテゴリ毎にはエラーはなくなる
④の結果は以下のとおり、今度はTrainデータ、Testデータ両者にエラーが発生したが、②に比べると大幅に減少して、フィッティング率は95%程度まで上昇した
score_akb2.png
val_acc.png
⑤の結果は、さらに精度は99%台に上昇、エラーは全体で2件まで減少した。この2件は人の目だとそこにあるべきデータであるので、このデータ数では本来のエラーだと思う。
score_akb3.png
val_acc.png

まとめと課題

①Fine-Tuningと転移学習を利用すると、60個/カテゴリで18分類程度のカテゴリが多い場合も、フィッティング精度はデータ精査することにより、あげることができる。
②今回の成果は、データをあまり理解していなくても、自己組織的にフィッティングとデータスクリーニングを繰り返せば、一定の精度の識別器を作れることを意味している。
③【課題】Fine-Tuningだけだと、データ入れ替えしてエラーが消えても、Tuning後Testデータに対するエラーが75%まで低下してしまった。
  ⇒ここはもう少し、追及して理解しておきたい

今後の予定

①課題解決
②入力として、画像を送れば、ランキングや似顔絵を返信するサービスなどにする
※今回は、入力の元画像サイズは特に指定はないが、データサイズは(224、224)である