しぷぜん

しぷぜん

素人プログラマなおいがStep Zero to Oneしていくブログ

畳み込みニューラルネットワークでウォーリーを探そうと思う(その1)

にほんブログ村 IT技術ブログ Pythonへ

こんにちは、なおいです。

あるきっかけがあり画像認識に関する機械学習の勉強を始めたので、折角だから楽しいことしようと今回は私が子供頃に熱中した絵本の「ウォーリーを探せ」の鬼畜なページを攻略することを目標に畳み込みニューラルネットワーク(CNN)を組んでいこうかと思います。

 

 

 

 

ウォーリーを探せ

1987年にイギリスで出版されて、同じ年に日本にも入ってきた本で見開き1ページの中から赤白のボーダーの服に帽子と眼鏡をつけ、杖をついたおっさ・・・もとい、お兄さんを探す遊び絵本です。

 

 

そもそもこの本を知ってる人はどれぐらいいるのかなと思ってたら、昨日(2017/10/24)しぶちかの広告にウォーリーいたからある程度の知名度はあるのかな?

 

どういうアプローチで行くか

画像を識別してウォーリーを探すだけなので、恐らく以下の二つの方法で探し出すことになると思う。

1.OpenCVを活用した物体検出でのウォーリーそのものの捜索

機械学習を使わずに行くなら、画像解析用のオープンソースライブラリのOpenCVの画像解析機能を使う方法がある。

ウォーリー専用のカスケードファイルを作るだけで見つけることができるはず。

2.CNNで全体画像を走査的に判定していき正しいものを検出

今回は、CNNの練習のためにこの題材を考えたのでこっちでやっていこうと思います。

まずは教師データを使って学習済みモデルの作成を行い、画像を走査しながら検出できるまで繰り返す。といったプログラムを組んでいこうと考えてます。

 

ちなみに余裕があれば、1にも手を出してどっちが楽だったかを書きます。

 

まずは教師データ集め

CNNは、教師あり学習なので正解がないと何も始まらない。ネットで適当にウォーリーの顔画像集めます。

 

f:id:ct-innovation01:20171026090418p:plain  f:id:ct-innovation01:20171026090433p:plain  f:id:ct-innovation01:20171026090425p:plain  ・・・・・・

 

思ったより少ない。画像自体は出てくるけど、画質落ちすぎてて認識ができるレベルとは言えないものばっかりだった。とりあえずこの三つは使うとしても教師用データがまず圧倒的に少ないし、実際に捜索する時の画像もネットでは拾えそうにない。

 

ということで、TSUTAYAさんに行って本購入してきました。この中から、自分でまずはウォーリーを探して写真を撮って教師用の画像を増やすことにします。

 

f:id:ct-innovation01:20171026201932j:plain

 

そういえば少し前に、「おそ松さん」の6つ子をNNでクラスタリングする記事を書いている人がいましたが、教師あり学習のAIを組み込む時はAIが完成するころには、技術者もその道のプロになるという結論を出していて笑いました。

が、よもや自分もウォーリー探しのプロにならなければいけない日が来るとは、、、題材をミスったかなとおもいつつ、もう本買っちゃったのでやり切ります。

 

次回の更新は早めにします。