原論文
FcaNet: Frequency Channel Attention Networks
https://openaccess.thecvf.com/content/ICCV2021/papers/Qin_FcaNet_Frequency_Channel_Attention_Networks_ICCV_2021_paper.pdf
関連研究
チャンネルの重要度を計算するCNN【SENet】
https://qiita.com/wakayama_90b/items/96527dfbbeb1e2ee06c5
結論
SENetで使用されるGAPは,情報をうまく捉えられないかもだから,離散コサイン変換(DCT)を用いて改善した.
概要
画像認識モデルのCNNは,静的なパラメータ(どんな画像が来ても同じ重み)を効率的に学習することで,精度向上している.しかし,未知な画像を認識する際にうまく認識できない可能性がある.そこで,入力された画像によって重みが変化する構造を導入することによって,未知な画像でも認識できるようにしよう.
例えば,犬の画像でも,画像に小さく写った犬の画像と大きく写った犬の画像がある.画像の重要と思う箇所は画像によって異なるので,その画像にあった重要度を決める必要があるよね.
この,画像にあった重要度(重み)を動的なパラメータと呼び,SENetはその先駆けとして提案された.しかし,SENetは,計算効率の観点から,空間情報をGAPによって圧縮しているため空間情報がうまく取り出せていない可能性がある.そこで,GAPではなく,離散コサイン変換(DCT)を用いて圧縮することで,空間情報をうまく取り出せるようにした.これを,Multi-spectral channel attention(MSCA)と呼ぶ.
GAPの改善なので,GAPを使用するモデルは,これに置き換えてもいいと思うよ.
モデル構造
下図の(a)にSENetの構造を示し,入力($H \times W \times C$)をGAPで圧縮して($1 \times 1 \times C$)にしてFC→softmaxして,入力にかけて各チャンネルの重要度付けを行う.
(b)に示す,MSCAは,まず,入力をチャンネル方向にn個分割する.分割された各特徴量には,2次元DCT周波数フィルタが割り当てられて,DCT周波数フィルタを通す.そのフィルタによって生き残った値を合計する.
それによって,できた($1 \times 1 \times C$)をFC→softmaxして,入力にかけて各チャンネルの重要度付けを行う.
実験
DCT周波数フィルタには,入力特徴量の高周波成分を通すフィルタや低周波成分を通すフィルタなど様々ある.どんなフィルタを用意するといいのか?
実験的に,CNNでは,低周波成分を残すフィルタを使用した場合に精度が良い傾向にある.そのため,低周波成分の情報を好む傾向にある.
↑
【自分の考察】CNNは畳み込み処理によって,画像のエッジなど(高周波成分)の特徴を捉えやすい構造であり,特徴量が持ってるのは,高周波成分の情報ばっかりになっているのかも,だから,MSCAでは,貴重な低周波成分の情報を消さないように,低周波成分の情報の重要度を上げているのかなと思った.
まとめ
より効率の良いGAPでチャンネル重要度を計算するCNN【MSCA】について解説した.GAPは空間情報を1つの値に集約するから,必要な情報を捉えきれないかもだったね.これで少しは改善できるかな?って.