LoginSignup
5
4

More than 3 years have passed since last update.

図で理解!畳み込み処理?Convolution層?畳み込みニューラルネットワーク(CNN)の基礎

Last updated at Posted at 2019-05-18

畳み込みニューラルネットワークとは?

前回の記事(https://qiita.com/NagisaOniki/items/a5ba48af2c42a5fd3439)
で軽く話しましたが、復習すると以下図です。

Qiita-convolution.png

Convolution層を入れ込んだニューラルネットワークの事でしたよね。
この記事ではConvolution層について解説します。

Convolution層とは?

「Convolution層ではどんな処理を行っているか?」の答えは簡単で、「畳み込み処理」をしています。
では実際に、畳み込み処理について解説します。
が、その前に前提知識をお話します。

前提知識

CNNでよく使われるデータに画像があります。
が、画像をどうやって計算に使うの?と言う方に解説を入れておきます。

画像はこう出来ている!

「画像のデータ?」「画像を計算する?」となりますよね。
画像はこのように構成されています。
RGB.png

↓↓↓↓↓詳しく↓↓↓↓↓

RGB2.png

↓↓↓↓↓詳しく↓↓↓↓↓

RGB3.png

何となく、画像はどうやって、私達が見ている画像になるのか分かりましたか?
画像は”色の集まり”で、その色は”数字の集まり”なんです。

もっと専門的に言うと、
画像は”RGBそれぞれのチャネルを重ねたもの”で、
各チャネルは”ピクセルの集まり”で、
各ピクセルには”0~256の値”が入ります。

逆から言うと、
各ピクセルでどれだけ赤いのか表現

そのピクセルの集合体が1枚のRのチャネルになる

他G,B分の3チャネルが重なる事で色のある画像を作る。

参考までに、以下表を乗せておきます。
スクリーンショット 2019-05-18 21.22.25.png

これで、画像が数字で表せられることから、
なんだかネットワーク層の入力に出来そうですね。

畳み込み処理

畳み込み演算.png

畳み込み処理.png

(*:畳み込み)

この図を「V*K=Z」と数式化することにします。
V:入力
K:カーネル
Z:出力
となります。
この図は、「3x3x1(縦のサイズx横のサイズxチャネル数)の入力を、2x2x1のカーネルで畳み込む処理」です。

簡単ですよね。

チャネルが増えればこうなります。
畳み込みカーネル複数.png

それぞれ同じように畳み込み処理をするだけです。

なんだか、
「3x3x3(縦x横xRGB分のチャネル数)の画像にカーネルを掛け合わせて出力を得ている」ように見えますね?
その通りです。
画像を入力とした時、Convolution層ではこのような畳み込み処理が行われるのです。

まとめ:Convolution層とは?

畳み込み処理をしているだけでしたね。
次回は実際に”畳み込みニューラルネットワーク”を実装する解説をしようと思います。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4