今日は論文を読む気になったので午前中もいろいろポストしたけど、今度はGradCAM(Grad-CAM)の論文を備忘録としてまとめておく。(簡易説明のみ:Grad-CAMについて)
GradCAMの正式名称はGradient-weighted Class Activation Mapping. 勾配重み付けクラス活性化マップ?ってところでしょうか?
GradCAMは、DeepLearningではブラックボックスになっている部分が多く、どのように認識が行われているのか知りたい!というときに必要になる技術です.GradCAMを用いればConvolutionNeuralNetworkで何を根拠にその識別をしたのかなどの情報を目に見える形で表現することが可能です.
GradCAM(Grad-CAM)ポイント
- 入力画像を受け取るCNNの入っているネットワーク全てに対応(そのあとにどのようなネットワークが繋がっていても良い。VQA や 多クラス分類等)
- 可視化時は入力画像と反応をみたいクラスの選択が必要
- 構造を特に変えることなく可視化ができるのもポイント
- CNNの最終層の勾配から可視化をする
- Grad-CAMだけでは細かい反応部分がわからないので、ついでにGuidedBackpropと掛け合わせることで、より詳細な反応部分の可視化もできた
- VQAやResNetの可視化も行えた。しかし、深い層から浅い層に行くにつれて特に出力サイズが異なるときに精度が悪くなることがわかった。
- ネットワーク構造は以下

・また結果は以下のようになる。

Grad-CAM論文斜め読み
既存のピクセルごとのGuided Back propagationやDeconvolutionでは確かに高解像度の詳細な情報が得られるが、クラスごとの可視化にはなっておらず全てのものが混ざってしまっている。
一方で先行研究のCAMや提案手法ではクラスごとの影響度を可視化することができている。
また、CAMと比較した際には、ネットワークの制限及び変更がいらないことが提案手法の特徴である。
具体的には、
- CAMはネットワークの全結合層がCNNとGlobal Average Pooling層に置き換わってなくてはならず。conv->global average->softmaxにつながるべき
- 上記のため画像処理タスクによっては元のFNNの時よりも精度が悪くなることも多い
- 提案手法はまずネットワークを変更する必要ない。
- 提案手法はCNNベースのネットワークなら基本的に適用可能
アプローチ
全結合層では画像の位置に関連した情報を完全に失ってしまい、また入力に近いところでは抽象度の低い認識しか行われないので、CNNの部分の最終そして全結合層の入力に当たる部分に双方を満たす情報があると考えている。
Grad-CAMではConvolutionの最終層での勾配情報を利用して、可視化を行っている。
手順としては以下
- まずConvolution最終層でGlobalAveragePoolingを行い、指定されたクラスにおける最終層の各チャンネルの重要度を決定する。
- その重要度に応じて各チャンネルをかけて全てを足し合わせる。
- その足し合わせたものにReluを行ったものがGrad-CAM
クラスに影響を与えているのは正の勾配を持つものなので、Reluで負の値は他の要素に影響を与えていると考えられる。そのため、Reluで負の値を無視しても構わないと考えている。
以上が大まかなGrad-CAMの模様。
あとはGuided Backpropagationと組み合わせることでより良いものを得た等。他は評価実験の話だったので飛ばした。(大事かもだけど)
おわりに
やりたいこともやっていることもシンプルなので、論文は比較的読みやすい。評価を後半頑張っているので実質読むページも少なくすらすら読めた。(小並感)
他の可視化論文も読んでみたいけど、メジャーどころはSmoothGradとかかな?
また次回にしましょう。
Comments