HOME > 画像分類(初級)-2(MNIST) > CNN画像分類とは何か

04.03 CNN画像分類とは何か

次に行うのは「CNN画像分類」という項目となります。題目も「CNN」というTV三大ネットワークのような名称が付いているだけでほぼ同じ名称。実は操作もまるで同じで、この章の画像は1つを除いてすべて使いまわしとなります。
っで! 問題になるのは当然ながら「CNN」とは一体何かというお話になるわけです。
CNN:Convolutional Neural Network 畳み込みニューラルネットワークの意味です。順番に説明していきましょう(学んだばかりで間違った解釈している可能性があるので専門的に学ぶ方は一番下の専門書を見てくださいね)

画像というのはVisualC++でやったようにディスプレイに写される最後はビットマップという構造になっています。今回は色なしの白黒=2値化構造になっています。今回例題としているMNISTの手書き数字は28X28ピクセルですから、下記のような表の中に配置されているということになります。前回までの画像認識は、どのように行われたかというと下記のマス目1つ1つが入力層へ入るデータとなっていました。従って入力データは28x28=784個あったわけです。そこから以前お話ししたようにニューラルネットワークを通って特徴値と呼ばれる値を見つけ出し学習してきました。



CNNは畳み込み層(Convolution Layer)プーリング層(Pouling Layer)から構成されるニューラルネットワークのことを指します。


★ 畳み込み層とは何をやっているのか

ここで言う「畳み込み」というのを実際、ビットマップ中のR層における4X4ピクセル値を取り出し実演します。一番左がR層の入力値で、次にある3X3は「フィルター」と呼ばれっているパラメータで以前の「重み」に相当します。

1)入力データ中の左上を基準にしてフィルターと同じだけが抜き出されます(太線黄色背景の部分)。

2)その内容とフィルター内データを掛け合わせ結果を一番右の黄色背景ますに書きます。
     1*2 + 2*0 + 3*1 + 0*0 + 1*1 + 2*2 + 3*1 + 0*0 + 1*2 = 15
    注意点は行列の掛け算とはことなり、「積和演算」といいます。

3)次に1つずつずらして同じことをします。

すると、最終的には4x4が2x2のデータ群が出来上がります。
これを「特徴マップ」と呼ばれています。


★ プーリング層
ここでは「MAXプーリング」というものを紹介します。
名前は仰々しいのですが、やっていることは簡単で左側4x4のうちの黄色背景部の中から最大値をとって右んも2x2へコピーしているだけです。ですので最大値をとる場合は「MAX プーリング」、平均値の場合は「AVERAGEプーリング」と呼ばれています。要するに入力値が大きな場合、小さくしましょうというものでパラメータとかはありません。




★なぜCNNは必要なのか
MNISTの”5”をみるといろいろなのがありますが、人間は下のような画像であれば判別ができます、なぜか?
”上に棒、縦棒、半円”らしきものが、この縦順にならんでいれば世界中どこへいっても”5”だからです。
でも前述のように1ドットずつ見ている以前のようなニューラルネットワーク方式では、横棒・縦棒・半円すらわからないはずです。でも細かく見るのではなく、ちょっと広めの領域を「ザックリ」見た方が、高い判定ができるのではないかと考えた方がいました。


要するに”5”の例だと28x28マスの中に全く同じ5でも左寄りの場合と右寄りの場合や上の横棒と縦棒の間の空白だったり長さだったりも認識に関係してしまいます。しかし、下のように5x5に圧縮した場合、文字の長さや空白領域がなくなり、逆に特徴となる部分のみが抽出できるのではないかというのがCNNということです。
         
         
         
         
         

先ほど畳み込み解説にあった「フィルター」は「重み」と同じだといいましたが、「フィルター」を増やし階層を深くすることで、より深く認識できるということになるのです。


どうでしたでしょうか? 理解できましたでしょうか?
CNNは「細かい点々をおおざっぱな点々に置き換えて特徴をつかむようにした」ということじゃないでしょうか。

さらにおおざっぱ且つ部分的にも見られるようになったため3次元でもOK!みたいなメリットも出てきたわけです。
とはいえ、これをプログラムする場合今までのも踏まえてやると「おおざっぱ」ではできませんし、結構難しいのです。


いよいよNNCの出番ということになるわけです。



【参考文献】
リックテレコム 足立悠著
ソニー開発のNeural Network Console入門

オライリー・ジャパン 斎藤 康毅著
ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装

HOME > 画像分類(初級)-2(MNIST) > CNN画像分類とは何か