先生
ねえ。

管理人
はい?

先生
このブログのタイトル何?

管理人
趣味で始める機械学習ですが。。。

先生
機械学習に関する記事なくね?

管理人
いや、あの。。。

先生
言い訳はいいからサッサと書け

管理人
はい

ということで、機械学習に関するブログと銘打ったはずが、ほとんど機械学習に関する記事がない事を感じましたので、まずは前のブログで書いたCNNについてもうちょっと記事らしくリライトしていくことでお茶を濁そうと思います。

題材を探せ

勉強が嫌いなので、楽しみながらやることで最後まで頑張れるのではないかと思い、楽しい題材を選びたいなと思いました。そのためにまずは畳み込みニューラルネットワーク(CNN)とはなにかについて調べました。

畳み込みニューラルネットワーク

畳み込みニューラルネットワーク(Convolution Neural Network)とは、画像分析を行うための機械学習の1つです。画像にあるパターンを学習して物体や顔などを認識することができるようになります。現在は、自然言語の処理にも応用されています。

このCNNは『畳み込み』の処理と『ニューラルネットワーク』の処理に分けることができます。この二つをものすごく単純に言ってしまうと『畳み込み』で画像の特徴のある部分を抽出して、『ニューラルネットワーク』でそれが何かなどの分析をしているといった具合です。

以下の青枠が『畳み込み』で赤枠が『ニューラルネットワーク』です。
ここから画像をお借りしています。

『畳み込み』

畳み込みは前章でも書いた通り、画像の特徴を抽出する処理を行っています。
ここで行われている処理を説明しようと思うと『畳み込み』をさらに分割して考えなければいけません。

それは【畳み込み】と【プーリング】というものです。

管理人
プーリングの名前がアルゴリズム名からなかったものにされてるの可哀そう…あと畳み込みって単語被ったので色と括弧で分けました。


もう一度この図に戻ると、C1C3と書いているところが【畳み込み】でS2S4と書いているところが【プーリング】です。

畳み込み

畳み込み】は、元の画像から適当なサイズのフィルタを用いて特徴点を抽出する処理です。以下のようなことを行っています。

  • 元の画像の左上端にフィルタをかけて特徴を抽出する
  • 画像全体を走査的にフィルタがスライドしながら繰り返す
  • 走査後に特徴のみを抽出した新たな画像を作り上げる
  • フィルタの数だけ新たな画像が出力される

上記のフローを繰り返したものを図にするとこういった感じです。



画像で示していてわかりやすいサイトがあったのでこちらからお借りしました。しっかりビジュアライズされているので、中身まで理解したい方はぜひこちら見てください。

【プーリング】


前章の【畳み込み】で、フィルタの数によって画像の枚数が増えます。最終的には『ニューラルネットワーク』を行い、分析をするのですがその際に入力するデータの数がどんどん増えてしまいます。これを防ぐために【プーリング】では特徴を残しつつ画像サイズを小さくする処理を行っています。

先ほどと同じサイトから参照させていただきました。


題材を決める

最近は自然言語にも使われてはいるが、画像分析に特化していてその画像が何なのかなどを分析することに長けているということはとてもよく分かった。特徴を抽出する処理を行うことで汎用性も持っているということ。

そこで自分の頭をよぎったのが、子供頃に熱中してた絵本の「ウォーリーを探せ」のウォーリーしかいないページ。

これを攻略することはできないか?ということでした。『ウォーリー vs. AI』をやってみたいと思ってしまったことからこの無謀な挑戦を始めることになりました。

ウォーリーを探せ

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

そもそもこの本を知ってる人はどれぐらいいるのかなと思ってたら、少し前は(2017/10/24)しぶちかの広告にウォーリーいたし、テレビCMで物件探しのCMにも出ていたのである程度の知名度はあるようですね。

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

画像を識別してウォーリーを探す。今自分に思いつくのは以下の二つの方法。

  1. CNNで全体画像を走査的しながら検出教師データを使って学習済みモデルの作成を行い、画像を走査しながら検出できるまで繰り返す。といったプログラムを組む。
  2. OpenCVを活用した物体検出でのウォーリーそのものの捜索画像解析用のオープンソースライブラリのOpenCVの画像解析機能を使う方法。ウォーリー専用のカスケードファイルを作るだけで見つけることができるのでは?

今回は、とりあえず一つ目の案を採用します。CNNの勉強のためだし。

まずは教師データ集め

CNNは、教師あり学習に分類される機械学習なので正解の画像がないと何も始まりません。よって、ネットで適当にウォーリーの顔画像を集めることにしました。

 ・・・・・・

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

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

 

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

1件のコメント

  1. ピンバック: CNNでウォーリーを探してみた【その2】 | 趣味で始める機械学習

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です