機械学習の世界に足を踏み入れると、その広がりと可能性に驚かされます。特に、畳み込みニューラルネットワーク(CNN)は、画像分析の分野で優れた成果を上げています。今回は、CNNの基本的な概念から始め、実践的なプロジェクトとして「ウォーリーを探せ」の絵本に挑戦する構想を紹介します。
畳み込みニューラルネットワークの基礎
畳み込みニューラルネットワーク(Convolution Neural Network)は、画像分析を行うための機械学習手法の一つです。画像内のパターンを学習し、物体や顔などを認識することが可能です。また、最近では自然言語処理にも応用されています。
CNNは主に「畳み込み」と「ニューラルネットワーク」の処理から成り立っています。畳み込みは画像の特徴を抽出し、ニューラルネットワークはその特徴を分析します。
https://world4jason.gitbooks.io/research-log/content/deepLearning/CNN/Model%20&%20ImgNet/lenet.html
畳み込みとプーリング
畳み込み処理は、画像から特徴を抽出する重要な工程です。この処理をさらに分割すると、「畳み込み」と「プーリング」という手法があります。畳み込みでは、画像全体を適当なサイズのフィルタで走査し、特徴を抽出します。プーリングは、画像サイズを縮小しつつ特徴を保持する処理です。
もう一度この図に戻ると、C1とC3と書いているところが畳み込みでS2とS4と書いているところがプーリングです。
畳み込み
畳み込みは、元の画像から適当なサイズのフィルタを用いて特徴点を抽出する処理です。以下のようなことを行っています。
- 元の画像の左上端にフィルタをかけて特徴を抽出する
- 画像全体を走査的にフィルタがスライドしながら繰り返す
- 走査後に特徴のみを抽出した新たな画像を作り上げる
- フィルタの数だけ新たな画像が出力される
画像で示していてわかりやすいサイトがあったのでこちらからお借りしました。しっかりビジュアライズされているので、中身まで理解したい方はぜひこちら見てください。
プーリング
前章の畳み込みで、フィルタの数によって画像の枚数が増えます。最終的には『ニューラルネットワーク』を行い、分析をするのですがその際に入力するデータの数がどんどん増えてしまいます。これを防ぐためにプーリングでは特徴を残しつつ画像サイズを小さくする処理を行っています。
先ほどと同じサイトから参照させていただきました。
題材を探せ
CNNの優れた特性を活かし、楽しい題材を選びました。「ウォーリーを探せ」の絵本は、赤白のボーダーの服に帽子と眼鏡をつけたキャラクターを探す遊び絵本です。この楽しいテーマにCNNを適用し、「ウォーリー vs. AI」という無謀な挑戦を始めることにしました。
ウォーリーを探せ
1987年に発表されたこの絵本は、幅広い世代に親しまれています。ウォーリーを探す喜びは、誰もが体験したことがあるでしょう。
そもそもこの本を知ってる人はどれぐらいいるのかなと思ってたら、少し前は(2017/10/24)しぶちかの広告にウォーリーいたし、テレビCMで物件探しのCMにも出ていたのである程度の知名度はあるようですね。
アプローチ方法
ウォーリーを探すためのアプローチとして、以下の二つの方法を検討しました。
- CNNを用いた学習モデルの構築と画像の走査による検出
- OpenCVを活用した物体検出によるウォーリーの捜索
今回は、CNNの勉強のために一つ目のアプローチを採用することにしました。
教師データの収集
CNNの学習には正解の画像が必要ですが、インターネット上で適切な教師データを見つけることが難しいことがわかりました。そのため、TSUTAYAで絵本を購入し、自らウォーリーを探して写真を撮ることで教師用の画像を収集することにしました。
まとめ
機械学習の世界は、私たちに新たな挑戦を促します。CNNを使って「ウォーリーを探せ」のプロジェクトに取り組むことで、機械学習の基礎を学びながら楽しい時間を過ごすことができます。これからの記事で、プロジェクトの進捗や結果を共有していきます。
コメント