1. 平均プーリング(Average Pooling) とは
平均プーリング(Average Pooling) とは,CNN(畳み込みニューラルネットワーク)で用いられる,中間層むけの局所プーリング層である.スライディングウィンドウ処理を行い,各位置のカーネル窓内で,平均値のみを残すダウンサンプリングを行う.
平均プーリングは,最大値プーリング(Max Pooling)とともに,CNNの最も基本的な「隠れ層向けのプーリング層」として用いられる(1.1節).
また,グローバル平均プーリング(Global Average Pooling)は,物体画像認識CNNの終盤層に用いられる,平均プーリングである(1.2節).
1.1 平均プーリングの定義
図1は,大きさ[2 x 2]のカーネルで,ストライド幅=2画素の,平均プーリングの例である(1.1.2節).(局所)平均プーリング層では,入力の特徴マップ上の各チャンネルk(の画像)において(図1-左),チャンネルごとに独立に,カーネル窓のスライディングウィンドウにより,局所ごとに平均値を出力する(図1-右).出力のチャンネルkの画像の位置(i,j)に対応する,カーネル$ \mathcal{R}_{(i,j)}$(=図1の黄,緑,赤,青の範囲)の中において,それぞれ平均値を出力する .
1.1.1 数式による定義
平均プーリングの演算を,数式でも定義しておく.
CNNにおいて,$l$層目の特徴マップのチャンネル画像(活性化出力)$Z(x,y)_k^{(l)}$ を,プーリング層によって,空間方向にダウンサンプリングされた$Z(i,j)_k^{(l+1)}$へと変換する.
平均プーリングの操作は,各カーネル位置(x,y)における「カーネル内平均の計算」として,以下のように表すことができる:
\[
Z(i,j)_k^{(l+1)} =\frac{1}{W_f,H_f}\sum_{(x,y) \in \mathcal{R}_{(i,j)}} Z(x,y)_k^{(l)} \tag{1.1}
\]
ここで,$(W_f,H_f)$は,それぞれプーリング層のカーネルサイズの幅と高さである.
1.1.2 標準的に使われるカーネルサイズとストライド
多くのCNNバックボーンでは,縦・横のストライド幅をともに2画素とし,カーネルサイズを [2 × 2]にして「重なり無しプーリング」を行うのが典型的である(図1).この場合,カーネルサイズは$(W_f,H_f )= (2,2)$であり,元の特徴マップを,1/2の空間サイズへダウンサンプリングできる.
1.2 グローバル平均プーリング(終盤層向け)
グローバル平均プーリング(Global Average Pooling,全体平均プーリング)は,1.1節で紹介した(局所)平均プーリングの全体版である.CNNの特徴マップ上で,全空間範囲において一括の全体平均を計算し,空間サイズを [1 x 1]に集約する.具体的には,終盤で空間サイズが [7 x 7] になった時点の層で,その次にグローバル平均プーリングを用いて,出力特徴マップの空間サイズを [1 x 1] に集約する.
Inception v3において,全結合層の代替の役割の層として用いられて以降,CNNバックボーンの終盤層に広く使用されるようになった.
また,DeepLabシリーズやPSPNetの提案以降,セマンティックセグメンテーションにおいても,空間ピラミッドプーリング型のグローバル平均プーリングがよく用いられる.
参考書籍
- Pythonで学ぶ画像認識 (機械学習実践シリーズ), 田村 雅人, 中村 克行, インプレス, 2023.
- 第4章 画像分類(物体認識) p98 ~
- 最大値プーリングと平均プーリング (p114~)
- 第4章 画像分類(物体認識) p98 ~
- 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之,講談社,
- 2022. 5.4.2節 いろいろなプーリング (p87)
- 画像認識(機械学習プロフェッショナルシリーズ),原田達也,講談社,2017.
- 6.3.3節 プーリング層 (p176)