1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JDLA_E資格の深層学習「CNN」

Last updated at Posted at 2021-06-03

#1. CNN(畳み込みニューラルネットワーク)の活用範囲
Convolutional Neural Network

CNNは、画像判別によく使われるが、画像のみに使う手法ではない。
次元間で繋がりがあるデータなら何でも扱える。音声、や動画など。
次元間の繋がりとは、画像の場合、横のピクセルは似たような色という意味合い。音声なら次の時刻の強度は似たような強度であるなど。

#2. CNNの構造

CNNの基本構造は以下。

CNN構造.PNG

##2.1 LeNetの構造

1998年にヤンルカンが発表した有名なLeNetは、入力画像は、32×32ピクセルとかなり小さいサイズの画像をとる。(LeNetは現在のCNNの原型といわれる。)
そして、出力として、10種類の何かに画像分類を行う。
構造は以下。

LeNet.PNG

####2.1.1 LeNet内での処理

  1. 6人で入力画像を見て、特徴を抽出(Convolution : C1)
  2. 6人で出した特徴をわかりやすく要約(Pooling :S2 sub sampling)
  3. 要約した特徴を16人に見てもらって、さらに特徴を抽出(Convolution : C3)
  4. 16人で出した特徴をさらに分かりやすく要約(Pooling :S4)
  5. すべての情報を120文字で言い表す(dense)
  6. さらに84文字に要約(dense)
  7. さらに10文字に要約(dense)

####2.1.2 畳み込み層の処理(Convolution)

畳み込み層では、入力画像に対してフィルタ処理(赤枠)を行い、結果を特徴画像として出力する。フィルタは、入力画像よりも小さいサイズで、ピクセルを横へずらしながら計算を行っていく。
なお、この際に、バイアスや活性化関数を通す。
このフィルタ処理の際に、周りの次元のデータを合わせて処理を行うことで、次元間の繋がりを特徴量として抽出することができることがCNNの特徴である。

CNNフィルタ.PNG

####2.1.3 全結合層の処理(dense)

全結合層の処理は、NNの基礎となる入力に重みをかけてバイアスを足してを行うだけの処理である。
ここでは次元の繋がりなどは考慮されない。

#3. 畳み込み演算

##3.1 convolution処理
畳み込み層は、画像の場合、縦、横、RGBの入力データに対して学習が出来る。つまり多次元、多チャンネルのデータに対応した演算ができる。
普通の全結合層の処理だと、RGBの関連を含めて学習を行うことが出来ないという問題の解決策となる。
ここで、畳み込みの処理を少し詳細にみる。
基本的に、フィルタという重みをかけてバイアスをかけてやるだけである。

畳み込み.PNG

##3.2 パディング
ただし、これをすると、どんどんサイズが小さくなってくるので、パティングという処理を行う。

パディングとは、入力画像の周囲を固定データ(ふつうは0)ですこし広げる処理をいう。事前にサイズを広げておくことで、どんどん小さくなることを防ぐ。これを行うと、入力画像に対して、同じサイズの出力画像を出すことが出来る。

パディング.PNG

##3.3 ストライド

フィルタ処理は、通常は、1ピクセルずつずらして処理を行う。このずらす量をストライドという。ストライドが2ピクセル、3ピクセルずつの場合もある。

#4. プーリング演算

プーリングには、MaxPoolingや、AveragePoolingという種類がある。畳み込みのように重みはなく、領域内の最大値か、平均値を出力結果として採用する。

#5. プーリング層から全結合層への演算

畳み込みが終わり、プーリング層から全結合層へいくさいに、複数レイヤー(多次元 16層×5×5)のデータを1次元(120)のデータへ落とす処理が必要である。

全結合.PNG

この際によく使われる3種類の処理がある。

  1. Flatten
  2. GlobalMaxPooling
  3. GlobalAveragePooling

##5.1 Flatten

Flattenは単純に複数レイヤーにわたる全データを単純に一次元配列に並べる処理だる。データ数は変わらない。

##5.2 GlobalMaxPooling

GlobalMaxPoolingは、各層の最大値を1次元配列として出力する。データ数が一気に削減され、かつ特徴量をよく抽出する優秀なやつ。

##5.3 GlobalAveragePooling

GlobalAveragePoolingは、各層の平均値を1次元配列として出力する。データ数が一気に削減され、かつ特徴量をよく抽出する優秀なやつ。

1
2
3

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?