【CNN】畳み込みニューラルネットワークを理解する①

AI基礎

画像認識ディープラーニングの代表的な手法として広く使われている「畳み込みニューラルネットワーク」(Convolutional Neural Network、通称:CNN)について、基本的な仕組みをわかりやすく説明していきます。

CNNは様々なディープラーニングの基本構造として用いられています。例えば別の記事で実装したYOLOについてもR-CNNというCNNベースの技術が用いられています。つまりCNNを理解しておくと多くのディープラーニングモデルを理解することも容易になるので、是非最後までお付き合いください。

こんな人におすすめ
  • AI・機械学習を勉強したいけど、何からやればよいか分からない
  • 書籍が難しすぎて挫折した
  • これからデータサイエンティストを目指したい
  • 画像認識をやってみたい

CNNはディープラーニング手法の1つなのでニューラルネットワークの考え方がたくさんでてきます。ニューラルネットワークが分からんという人は↓の記事を読んでからCNNを学習いただけると良いと思います。

画像認識について

CNNを説明する前に、まずは画像認識とは?について説明していきます。

例えばこの画像を見て何と認識しますか?恐らく「イチゴ」と答えると思います。しかし、この画像の中にはイチゴだけではなく、白い花、葉っぱなど、いろいろなモノが表示されています。このような画像の中からイチゴの特徴をくみ取ってイチゴであるか否かを判断するタスクが画像認識ということになります。ニューラルネットワークへイチゴの特徴をたくさん学習させることで画像認識能力は向上します。

画像の”畳み込み”について

畳み込みニューラルネットワークというくらいなので、画像を畳み込むというのが基本構造となっています。畳み込みとは何か?を説明していきます。

まずは↓を見てください。

イチゴの画像に対し画像編集ソフトで”ガウシアンぼかし”や”輪郭抽出”を入れたモノです。この処理が畳み込みによるモノです。畳み込みは基本的な動きは一緒ですが、畳み込む際のカーネル(フィルター)を変えることで出力にかなり差がでてきます。畳み込みニューラルネットワークは様々なカーネルを設定することにより画像の特徴をとらえ学習しています。畳み込みの動きとカーネルの働きについてもう少し詳しく見てみましょう。

  • 畳み込みの動き

まずは畳み込み処理の動きを見てみましょう。イメージが↓が分かりやすいです。

same_padding_no_strides.gif
出典:https://github.com/vdumoulin/conv_arithmetic

図の青い四角が入力画像、青い画像の上を動く影がカーネル、緑の四角が出力画像です。上のイメージのよう入力画像の上をカーネルがスライドし、カーネルで計算した特徴量を出力へ転写しています。

  • カーネル(フィルター)を介したときの計算

次に、カーネル→出力する際にどんな計算が行われているか?です。そもそもPCやスマホで見ることができる画像とは、0~255の数字を持つRGB(レッド/グリーン/ブルー)のピクセルが並んでいる状態となっています。その数値にカーネルを通す計算になるので複雑です。ここでは簡単にイメージするため↓のような行列で説明します。

入力が5×5行列、カーネルが3×3行列とします。画像の左上から順に入力から3×3のパッチを切り出し、カーネルと入力の積を取り、合計を求めたものを出力しています。そしてカーネルをスライドさせていき計算を進め出力を生成します。畳み込みではカーネルを介しこのような計算をして出力しています。カーネルを変えることで様々な出力が得られる=角度を変えて画像の特徴を捉えることができることが直感的にわかるかと思います。

畳み込みカーネルをニューラルネットワークで解く

CNNはカーネルの値を変えることで様々な特徴を得られる性質を利用し画像認識しています。つまりCNNが学習しているのはこのカーネルの値であり、ニューラルネットワークを使ってカーネルの値を最適化しているということになります。例えば、犬と猫の画像を認識するCNNの場合、犬の特徴をよく表すカーネルを通したときに高い値が得られると犬と認識(出力)するといった具合です。

実際のCNNにおいてカーネルがどんなもので、何を基準に判断しているか?といったことは人には理解することができず、ブラックボックスとなっています。ここが畳み込みニューラルネットワークのデメリットではあるのですが、一方で特徴量を人間が決めなくても勝手に判断してくれるという大きなメリットがあります。つまり「この耳の形は犬、こっちは猫」など人間がルールをいちいち決める必要がないため、うまく学習させると人の判断を凌駕することも可能となります。

次回は畳み込みで得られた特徴量をどうやってニューラルネットワークで学習していくか。その方法を説明します。

まとめ

  • 畳み込みニューラルネットワーク(CNN)は多くのディープラーニングの基盤となる重要な技術。
  • 畳み込みの段階でカーネルの値を変えることで様々な角度から画像の特徴を捉えることが可能になる。
  • 畳み込みニューラルネットワーク(CNN)はカーネルの値を変えることで様々な特徴を得られる性質を利用しカーネルの値を学習することで画像認識をするモデルである。

コメント

タイトルとURLをコピーしました