畳み込みニューラルネットワーク(Convolution Neural Network)とは、AIが画像分析を行うための学習手法の1つで、略してCNNとよばれることもある。
CNNは、「畳み込み層」と「プーリング層」という2種類の層を繰り返して構成される。
【畳み込みニューラルネットワークを利用した画像処理の流れ】
①入力画像の全体に対して畳み込み層でフィルター処理を行う。
②処理した画像をプーリング層に流し込む。
③プーリング層で画像の解像度を下げる処理を行う。
④出力層で、1次元の列データにフラット化し、全結合のニューラルネットワークにより、10個のノードに集約する。
⑤SoftMax関数により、それぞれのノードを確率に変換する(全て足すと1になる)。
※非線形な要素を入れるため、畳み込み層の後に「活性化関数」が挿入される。 (参考:AI人工知能テクノロジー 「やっぱりよく分からない活性化関数とは」)
①入力画像の全体に対して畳み込み層でフィルター処理を行う。
②処理した画像をプーリング層に流し込む。
③プーリング層で画像の解像度を下げる処理を行う。
④出力層で、1次元の列データにフラット化し、全結合のニューラルネットワークにより、10個のノードに集約する。
⑤SoftMax関数により、それぞれのノードを確率に変換する(全て足すと1になる)。
※非線形な要素を入れるため、畳み込み層の後に「活性化関数」が挿入される。 (参考:AI人工知能テクノロジー 「やっぱりよく分からない活性化関数とは」)
【畳み込み(Convolution)】
「畳み込み(Convolution)」処理では、画像の特徴を見つけるためにフィルターをかける。すなわち、素性(Feature)マップを生成する。画像をインプットとしてフィルターをかけ、フィルターの枚数分の画像を出力する。コンボリューション(Convolution)は数学用語で、日本語では「畳み込み」。掛け算の結果を足し集める演算からなり、コンボリューションを画像処理に使うと、画像を滑らかにしたり、シャープにしたりできる。掛け算の係数は、3×3などのサイズのマトリックスで指定。これをオペレーター、フィルター、マスク、カーネルなどと呼ぶ。
【フィルター】
参考ページ:画像処理フィルタ一覧、比較
[具体的な処理]
◆入力画像例
◆ゼロパディング
入力画像と出力画像のTensor(テンソル)を同一にするために、周囲をゼロで埋める処理を「ゼロパディング」という。
◆フィルター例
◆掛け算と足し算
あとは、ひとつずつずらして計算を繰り返す。
【プーリング(Pooling)】
素性マップの局所的なパッチに対して、そのパッチに含まれる素性の「プール」(かたまり)を作り、その中で最も値の大きいものだけを取り出し、特徴を粗く整理する。
素性マップの局所的なパッチに対して、そのパッチに含まれる素性の「プール」(かたまり)を作り、その中で最も値の大きいものだけを取り出し、特徴を粗く整理する。
[具体的な処理]
◆画像例(プーリング処理前の畳み込み)
◆画像例(プーリング処理前の畳み込み)
◆プーリング
参考
Qiita:【入門者向け解説】畳み込み処理入門(TensorFlowで説明)
https://qiita.com/FukuharaYohei/items/702eb2430ee9dfbe763a
Qiita:【入門者向け解説】プーリング処理入門(TensorFlowで説明)
https://qiita.com/FukuharaYohei/items/73cce8f5707a353e3c3a
https://qiita.com/FukuharaYohei/items/73cce8f5707a353e3c3a
Udemy:畳み込みニューラルネットワークとは?手順も丁寧に解説
https://udemy.benesse.co.jp/ai/convolution-neural-network.html
https://udemy.benesse.co.jp/ai/convolution-neural-network.html
CodeZine:コンボリューションを用いた画像の平滑化、鮮鋭化とエッジ検出
https://codezine.jp/article/detail/129
https://codezine.jp/article/detail/129