#画像が比較したい!
例えば,次の画像があったとします.
ピクセルでバツを表現しています.
バツですね.
では,次の画像はどうでしょうか?
バツと言えないこともありません.まあバツです.では,これをコンピュータにわかってもらうためにはどうしたらいいのでしょうか?
そこで,畳み込みニューラルネットワークの出番です.
#畳み込み演算とは?
ニューラルネットワークの特徴は,人間が指定しなくとも特徴を見つけてくれることです.では,その特徴をどのように使って画像同士を比較したらよいのでしょうか?
例えばバツは次の特徴を持っています.
ここで,このピクセルは白か黒なので,白を-1,黒を1とします.するとバツの画像は
と,表現することができます.
ここで,
この部分を比較計算してみます.
対応するセル同士を計算します.
つまり,
合致すれば
1(黒) × 1(黒) = 1
1(白) × 1(白) = 1
1になり,
合致しなければ
-1(白) × 1(黒) = -1
1(黒) × -1(白) = -1
-1になります.
最終的にそれぞれのセルの値を足したものをピクセルで割ります.つまり,合致すればするほど値が1に近づきます.
この場合,完全合致なので1です.
この一連の演算を「畳み込み演算」といいます.
今回の場合,画像のセルが9×9マス,特徴が4×4マスなので,パーツを1マスずつずらしくいくと,その計算結果は6×6マスになります.(計算結果はでたらめなので信用しないでください)
こうして得られたものを特徴マップといいます.
こうして画像がどれだけ特徴をもっているのかを数値的に測ることができます.
この演算自体はとても単純なものです.しかし,これが9×9の荒い画質ではなく,標準的な画質の画像となったとき,その計算量は膨大なものになります.GPUを使わないと学習にかかる時間が大変なことになるのはこのためです.
#おわりに
今回は畳み込みとはどういったことか書きました.
まだ私も理解が浅いため,間違ったことを書いていたらご指摘ください.
#参考
山下隆義
イラストでわかるディープラーニング 講談社
斎藤康毅
ゼロから作るDeep Learning
畳み込みニューラルネットワークの仕組み
http://postd.cc/how-do-convolutional-neural-networks-work/