原論文
ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
https://arxiv.org/pdf/1910.03151.pdf
関連研究
SENet
https://qiita.com/wakayama_90b/items/96527dfbbeb1e2ee06c5
接続数の関しての説明
https://qiita.com/wakayama_90b/items/dc1b8969da0fd6999b1d
結論
SENetのFC層をカーネル畳み込みに変更した.FC層のチャンネル数は圧縮せずに,接続数を減らして,計算量削減すると良い.
概要
画像認識分野で,CNNに動的なパラメータを導入したSENetがある.しかし,SENetで空間情報を集約してFC層を通す際に計算量削減のため,チャンネル数を1/8や1/4に圧縮する.しかし,このチャンネル数を削減することは有効でない.そこで,チャンネルを削減せずに,局所的なカーネルサイズの範囲を集約することにより,計算量を削減しながらも有効な方法を提案する.
SENetは,空間情報も考慮して計算する派生手法があるが,計算量が重い.この論文は軽量で計算できる.
モデル構造
主にSENetと同じ構造である.
入力特徴量($H \times W \times C$)の空間情報($H \times W$)をGAPにより圧縮して($1 \times 1 \times C$).チャンネル方向のカーネル(下図ではk=5)範囲の情報を集約して,FC層の出力する.カーネルはストライドする($1 \times 1 \times C$).いわゆる,適応的なカーネルサイズを持つ1次元畳み込み?.σはsigmoid関数で値を(0~1)に制限して,入力特徴量に要素積する.これで,重要なチャンネルが強調される.
SENet
ちなみにSENetは($1 \times 1 \times C$)からFC層で($1 \times 1 \times C/r$)チャンネル数を削減している.これが良くない.あと,全てのチャンネルにまたがって計算することは不要.
実験
-
SE-Var
- 1 GAP→シグモイド
- 2 各チャンネルの重みを独立に学習.(接続が各1)
- 3 1層のFC層(全てのチャンネルに接続)
3は2と比較して,少し精度向上しているが,3のパラメータが大きすぎる.2は,ほとんど接続されていないが,チャンネルを圧縮した通常のSEnetと比較して,精度向上している.圧縮するのではなく,接続数を減らすことが有効であることがわかる.
-
SE-GC
SE-GCは,チャンネルをG個のグループに分割して,それぞれでFC層をする.いい感じ. -
ECA
ECAは,今回提案する手法で,近傍k個の情報を集約してFC層する手法が有効である.
チャネル重要度の可視化
各クラスに対するチャンネルの重要度を可視化する.最初の層では,どのクラスも同じような感じだけど,最後の方は各クラスで重要なチャンネルがバラバラになる.
最初の方は,局所的な境界や角を認識するから,どのクラスでも同じような感じであり,中層になると,意味情報の学習を好み,チャンネルの重要度が各クラスで変化していく.
上記の結果は、ECAによって重要なチャンネルを選択できていることを示す.
まとめ
今回は,SENetのFC層をカーネル畳み込みに変更【ECA-Net】について解説した.チャンネル数は圧縮せずに接続数を減らして,計算量削減すると良い.



