モノクロタイム

I'm from the future!

六つ子をDeepLearningで見分ける〜俺があいつで俺たちは俺〜

こんにちは,れいじです.

DeepLearningを使ってごちうさやラ!のキャラクターを見分けるといった記事が話題になりましたね.

kivantium.hateblo.jp

christina.hatenablog.com

DeepLearningを勉強する上でとても参考になりました.

さて,秋から引き続きおそ松さんが2クール目に突入したわけですが,アニメを見ていてふと思ったことがあります.

DeepLearningで六つ子って見分けられるのかな・・・と.

DeepLearningとは?

現在注目されている機械学習の技法で,日本語では深層学習とも訳されます.DeepLearningの基本的な概念は1980年代から考案されていましたが,ILSVRC2012で他のチームと比べ圧倒的な差をつけ優勝したことをきっかけに大きく話題となりました.現在は多くの研究者がDeepLearningを様々な分野へ応用しようと考え日々研究を行っています.

DeepLearningに関する詳しい解説に関しては,@kazoo04さんの2015年度のアドベントカレンダーがとても丁寧にまとめられています.DeepLearning=人工知能ではありませんが,DeepLearningのアルゴリズムやその考え方がわかってくると思います.

qiita.com

超絶便利なWebサービス「Labellio」

https://www.labell.io/models/

DeepLearningによる画像認識モデルを作ってくれるWebサービスです.普段研究で画像認識モデルを作るときはCaffeやChainerなどを使っているのですが,Labellio自体どういったものなのか試してみたかったため,今回はこちらを使っていきます.

1.Bingで集めた画像でモデルを作る

Labellioは自分で用意した学習用画像はもちろん,何もデータを持たないゼロの状態からでもモデルを作成してくれます.

認識したい物体の名前をラベルとして用意すると,Bing・Flickrでラベルに基づいた画像を探してきてくれます.

今回は認識したい物体のラベルとして「おそ松」「カラ松」「チョロ松」「一松」「十四松」「トド松」を指定しました.

Flickrではアニメ画像はもってこれないだろうと判断し,Bingで画像検索をかけて学習用画像を5000枚ほど集めました.

名前検索で集めているので,当然ラベルに関係無い画像も入ります.

f:id:yomoyamareiji:20160108130146p:plain

これは「おそ松」で集めた画像群です.アニメタイトルにもなっているので,兄弟が集合した絵が多く見られました.一松もいます.

f:id:yomoyamareiji:20160108130522p:plain

上手く集まっている例です.一松,カラ松は人気(?)なのか知らないけど,単体絵が多く集まりました.私ですか?十四松が好きです.

これらの画像で学習を行います.以下は精度諸々のグラフです.

f:id:yomoyamareiji:20160108130933p:plain

Accuracyは63.875%に落ち着きました.ノイズに値する画像が含まれているので,まあ当然といっちゃ当然かもしれません.

判定結果も乗せておきます.

・おそ松

f:id:yomoyamareiji:20160108133316p:plain

一松と誤認していますね.

クソ松カラ松

f:id:yomoyamareiji:20160108133350p:plain

正解です.

・チョロ松

f:id:yomoyamareiji:20160108133426p:plain

やだ〜また一松??

・一松

f:id:yomoyamareiji:20160108133708p:plain

正解です.

・十四松

f:id:yomoyamareiji:20160108133737p:plain

はいはい一松一松

・トド松

f:id:yomoyamareiji:20160108133756p:plain

一松好きすぎかよ

とまぁ,こんな感じでガバガバです.集めた画像の中に,パーカーの色に起因する各キャラクターの色情報がかなり含まれているため,顔の作りでの認識は難しいのかもしれません.以下のように,パーカーの色を含めた画像を分類にかけると上手く分類できていることがわかります.

f:id:yomoyamareiji:20160108134357p:plain

f:id:yomoyamareiji:20160108134549p:plain

2.自分で学習用画像を集めてLabellioにアップロードしモデルを作る

Bingで集めた画像を使ってモデルを作るとかなりガバガバだということがわかったので,自分で画像を集めて学習用セットを作ることにします.

学習用画像は,アニメ「おそ松さん」のキャプチャ画像からキャラクターを切り出したものです.ごちうさラブライブ!と違い,使えそうな顔画像が格段に少なかったです.そのため使用した画像はたったの568枚です.終わった・・・

まず精度諸々のグラフをどうぞ.

f:id:yomoyamareiji:20160108135314p:plain

bingで集めたモデルよりは高精度の結果が出ています.精度は76.5%で落ち着きました.

モデルのテストも行ってみます

・おそ松

f:id:yomoyamareiji:20160108135940p:plain

正解です.やったねカリスマレジェンド

・カラ松

f:id:yomoyamareiji:20160108140019p:plain

おそ松と間違えられています.

・チョロ松

f:id:yomoyamareiji:20160108140106p:plain

正解です.やったねドルヲタ

・一松

f:id:yomoyamareiji:20160108140145p:plain

正解です.やったね闇松兄さん

・十四松

f:id:yomoyamareiji:20160108140215p:plain

正解です.やったねドブ川バタフライ

・トド松

f:id:yomoyamareiji:20160108140244p:plain

正解です.やったねトッティ

自分できちんと画像を集めたところ,クソ松以外全員正解できることがわかりました.他にも画像を入力してみます.

f:id:yomoyamareiji:20160108142935p:plain

びっくり顔でも認識出来ています.

f:id:yomoyamareiji:20160108143011p:plain

f:id:yomoyamareiji:20160108143609p:plain

f:id:yomoyamareiji:20160108143024p:plain

イタいときは認識出来ないのに,ボコボコになった途端カラ松と判定される.オカルトだよ〜!

f:id:yomoyamareiji:20160108143123p:plain

ビ,ビ,ビンゴォ〜〜〜〜!!!

f:id:yomoyamareiji:20160108143409p:plain

(威圧)

こんな感じで簡単に(そこそこの精度で)六つ子を分類するモデルを作ることが出来ました.というか500枚でもこのくらい分類できるという事実に驚きました.もっと増やせば精度が上がりそうですね.余裕があれば作ったモデルとSelectivesearchを使ってR-CNNっぽいこともやりたいです.

需要があればモデルとデータセットの公開を行います.ではでは〜

2016/01/13追記

六つ子判定モデル(精度が良いほう)を公開しました.

以下のURLからCaffe用のモデルをダウンロードできます.ファイル名がガバガバな件に関しては突っ込んではだめだぞ!

http://1drv.ms/1SNAOJ4