畳み込みニューラルネットワーク
CNNとは
ニューラルネットワークの一種です。
ニューラルネットワークは人間の脳のしくみから着想を得たものでしたが、CNNは動物の視覚野の配置から着想を得たネットワーク構造となっています。そのため、画像分類等のタスクで優れた性能を発揮します。
特徴としては、ニューラルネットワークの構造に畳み込み層とプーリング層という2つの層を加えたネットワーク構造をしています。
2012年に行われたImageNet Large Scale Visual Recognition Competition(ILSVRC)において、CNNを用いたAlexNetと呼ばれるモデルが他のモデルに対して大差をつけて優勝したことを機に一層注目されるようになりました。
畳み込み層
畳み込み層では画像から特徴を抽出する処理を行います。特徴抽出にはフィルタと呼ばれる検出器を使います。
フィルタには特徴を検出するための仕組みが備わっており、画像よりもサイズの小さいものを使用して、画像の端から順にスライドしていくとこで特徴を抽出していきます。
プーリング層
プーリング層は畳み込み層とセットで使用します。プーリング層では畳み込み層で抽出した特徴を集約し、それを圧縮する処理を行います。
圧縮することで特徴の位置感度を低下することができ、画像内の違う位置にあるものも同一のものとして判断できるようになります。
CNNの流れ
画像分類を例にCNNの流れを紹介していきます。
- 入力層から画像データをネットワークに投入していきます。入力層は画像のピクセルの数だけ存在します。
- 畳み込み層を通し、特徴を抽出していきます。
- プーリング層を通し、特徴の集約・圧縮をしていきます。
- ②と③を繰り返します。
畳み込み層とプーリング層を通して抽出した特徴を次の畳み込み層に投入していきます。投入された畳み込み層では前の層で抽出された特徴から更に特徴を抽出していきますので層が深くなるとより複雑な特徴を見つけることができるようになります。
逆に浅い層では明るさエッジといった特徴が抽出されます。 - これまでに抽出した特徴データを全結合層に投入します。
- 特徴から投入された画像が何なのか出力層から出力します。出力層は分類したい種類の数だけ存在します。
CNNの応用例
CNNは画像分類以外にも物体検知や音声認識にも応用されています。
また、CNNのモデルは汎用性が高く学習済の画像分類モデルを使用して別の画像セット分類も行うことが可能です。
一般的に浅い層では汎用性の高い特徴を抽出しているので学習済モデルの浅い層は凍結し、出力層に近い層だけ再学習させることで低コストで高い精度を得ることができます。この手法はファインチューニングとも呼ばれています。
さいごに
今回はCNNについて紹介しました。
TensorflowやKerasといったフレームワークを使えばCNNも簡単に組むことができるので、実際にやってみようと思います。
- 当ページの人物画像はNIGAOE MAKERで作成しました。