ラビットチャレンジ【深層学習day2】~畳み込みニューラルネットワークの概念~

概要

畳み込みニューラルネットワーク(以下、CNN)は顔認識で使用されている

CNNは通常のNNではないような機能をもったレイヤーがある

この章では以下の項目を学んだ

・CNNの構造

・畳み込み層

・パティング

ストライド

・チャンネル

・プーリング層(確認テスト1つ含む)

・ハンズオン

CNN構造

CNNは入力層、畳み込み層、プーリング層、全結合層、出力層からなる

基本的なCNN構造は下図のようになっている

f:id:Maruring:20210716184825p:plain

畳み込み層

畳み込み層では画像の場合の、縦、横、チャンネルの3次元のデータをそのまま学習し、次に伝えることができる

CNNでは入力画僧をフィルタを通すことで画像がもつ特徴を抽出する

畳み込み層のイメージは下図のようになっている

f:id:Maruring:20210716185304p:plain

f:id:Maruring:20210716185316p:plain

パティング

畳み込みを行うと出力画像は入力画像より小さくなる。フィルターに対して入力画像の大きさがイマイチだった場合に計算が面倒になるため画像の端を何らかの数字で埋める

パティングを行うことで以下のようなメリットがある

①端のデータに対する畳み込みの回数が増えるので端の特徴量も考慮される

②畳み込みの回数が増えるのでパラメータの更新が多く実行される

フィルターサイズや層の数を調整できる

パティングのイメージは以下のようになる

f:id:Maruring:20210716190327p:plain

ストライド

フィルターをかける適用間隔

ストライドのイメージは以下のようになる

f:id:Maruring:20210716190548p:plain

畳み込み層後の出力される画像のサイズは以下のように計算できる

入力画像のサイズをH,W

出力画像のサイズをOh,Ow

フィルターのサイズをFn,Fw

パティングをP,ストライドをSとすると


O_{h} = {H+2P-F_{n}\over{S}} + 1

O_{w} = {H+2P-F_{w}\over{S}} + 1
チャンネル

カラー画像だとR,G,B

プーリング層

対象領域の最大値や平均値を取得する

以下のようなメリットがある

情報をなるべく失わず圧縮

並行移動に対するロバスト

パラメータ数の削減

プーリングのイメージは以下のようになる

f:id:Maruring:20210716191704p:plain

<<確認テスト>>

サイズ6×6の入力画像を、サイズ2×2のフィルタで畳み込んだ時の出力画像のサイズを答えよ。なおストライドとパディングは1とする。

f:id:Maruring:20210716192225p:plain

ハンズオン

フィルターサイズ、パティング、ストライドを変更する

各要素を変更することで出力されるshapeが変化しているのを確認できた

f:id:Maruring:20210716193854p:plain

f:id:Maruring:20210716193910p:plain