原論文
Squeeze-and-Excitation Networks
https://arxiv.org/pdf/1709.01507.pdf
結論
CNNにチャンネルの重要度をつける.その重要度は,画像によって異なる,動的なパラメータを使用する.
概要
画像認識モデルにCNNモデルがあるが,CNNモデルは入力画像が変化しても同じ値の重みを使用したカーネルを使用して計算する(静的なパラメータ).これは,入力画像に対して,柔軟に適応できない状態である.
例えば,ある画像では,色が重要であったり,形状,テクスチャなど重要な要素が異なる.そのため,その入力画像にあった重みが大切である.入力画像によって異なる重みを持つことが動的なパラメータである.この動的なパラメータをCNNに付与する.
モデル構造
SENetは,特徴量のチャンネルの重要度を決定する役割を持つ(色は重要度).
チャンネルの重要度は,空間情報にGlobal Average Pooling(GAP)($H \times W$の平均値)をすることで($H \times W \times C$)の特徴量を($1 \times 1 \times C$)に圧縮する.
圧縮後にF(ちょっとした計算)をしてチャンネルの重要度を決定する.各チャンネルの重要度を入力特徴量にかけて,入力特徴量のチャンネルの重要度を決定する.(上ルートの茶色の値が0の場合,そのチャンネルは重要でないので,入力特徴量の茶色の値は0になる.)
F()の中身
以下の図2の右の図の右ルートがF()の構造であり,最初にGAP(Global pooling)し,FC層,,,,,sigmoidで右ルートの値を0~1に変換して,その値を入力特徴量の各チャンネルの重要度として計算している.つまり,F()は2層のFC層の後にsigmoidで0~1に値を変換している.
図2と図3は,論文で提案されているモデル構造例で,図2はSENet.図3は,SE-ResNetであり,ResNetのスキップ接続を付与している.この2つのモデルは,よく使用される.
実験
他にも色々なブロックの形状を試してみたよ.
結局シンプルな方がいいのかも.わかりやすいし.
まとめ
今回は,チャンネルの重要度を計算するCNN【SENet】について解説した.CNNの構造に動的なパラメータを持つ機能を付けることで,入力画像に異なる柔軟な重みつけが可能になる.その機能を使用して,各チャンネルの重要度を求める.