#畳み込みニューラルネットワークとは?
前回の記事(https://qiita.com/NagisaOniki/items/a5ba48af2c42a5fd3439)
で軽く話しましたが、復習すると以下図です。
Convolution層を入れ込んだニューラルネットワークの事でしたよね。
この記事ではConvolution層について解説します。
#Convolution層とは?
「Convolution層ではどんな処理を行っているか?」の答えは簡単で、「畳み込み処理」をしています。
では実際に、畳み込み処理について解説します。
が、その前に前提知識をお話します。
###前提知識
CNNでよく使われるデータに画像があります。
が、画像をどうやって計算に使うの?と言う方に解説を入れておきます。
###画像はこう出来ている!
「画像のデータ?」「画像を計算する?」となりますよね。
画像はこのように構成されています。
↓↓↓↓↓詳しく↓↓↓↓↓
↓↓↓↓↓詳しく↓↓↓↓↓
何となく、画像はどうやって、私達が見ている画像になるのか分かりましたか?
画像は”色の集まり”で、その色は”数字の集まり”なんです。
もっと専門的に言うと、
画像は”RGBそれぞれのチャネルを重ねたもの”で、
各チャネルは”ピクセルの集まり”で、
各ピクセルには”0~256の値”が入ります。
逆から言うと、
各ピクセルでどれだけ赤いのか表現
↓
そのピクセルの集合体が1枚のRのチャネルになる
↓
他G,B分の3チャネルが重なる事で色のある画像を作る。
これで、画像が数字で表せられることから、
なんだかネットワーク層の入力に出来そうですね。
(*:畳み込み)
この図を「V*K=Z」と数式化することにします。
V:入力
K:カーネル
Z:出力
となります。
この図は、「3x3x1(縦のサイズx横のサイズxチャネル数)の入力を、2x2x1のカーネルで畳み込む処理」です。
簡単ですよね。
それぞれ同じように畳み込み処理をするだけです。
なんだか、
「3x3x3(縦x横xRGB分のチャネル数)の画像にカーネルを掛け合わせて出力を得ている」ように見えますね?
その通りです。
画像を入力とした時、Convolution層ではこのような畳み込み処理が行われるのです。
#まとめ:Convolution層とは?
畳み込み処理をしているだけでしたね。
次回は実際に”畳み込みニューラルネットワーク”を実装する解説をしようと思います。