yiskw713 / paper_summary

Write summaries of papers I've read in Japanese
10 stars 1 forks source link

Score-CAM:Improved Visual Explanations Via Score-Weighted Class Activation Mapping #98

Open yiskw713 opened 4 years ago

yiskw713 commented 4 years ago

INFO

author

Haofan Wang, Mengnan Du, Fan Yang, Zijian Zhang

affiliation

conference or year

2019

link

pdf 解説 & keras実装

概要

CNNの判断根拠を可視化する新しい手法(Score CAM)を提案している. 勾配ベースの可視化の手法は,ノイズが多かったり質が低かったりする.また,入力画像のわずかな変化に影響を受けやすい. 一方,Grad-CAM や Grad-CAM++ などの CAMベースの手法は,比較的綺麗な可視化が可能だが,対象の物体に無関係なノイズが乗りやすい.また特徴マップのチャネルごとの重みを算出し,これを重要度と見立ててヒートマップを作成するが,この重要度の正負とヒートマップの位置に相関がない事が問題である.

本研究では,勾配計算に依存しないCAMベースの可視化の手法である Score CAMを新たに提案している. これにより,ノイズの少ないより綺麗な可視化が可能になっている.

提案手法

Screen Shot 2020-01-06 at 23 26 38

Phase 1

画像を入力し,最後の畳み込み層から得られるチャネル数Kの特徴マップ(K個のActivation Map)を保存する. この Activation Map を画像と同じサイズにアップサンプリングする. K個の Activation Map を,Activation Mapごとの最大値と最小値を用いて正規化する.

Phase 2

この正規化したK個の Activation Map を元の入力画像に掛け合わせ,K枚の画像を作成する.
これらをそれぞれCNNに入力し,ターゲットのクラスの確率(スコアではなくソフトマックスを通した確率)を算出する.

Phase 3

K個の確率値を,それぞれK個の Activation Map の重要度とみなし, 重要度とActivation Map を乗算したのちに,足しあわせを行い Score CAM とする.

スコアではなく確率を用いる理由

ネットワークの出力はそれぞれ独立なため,スケールが揃っていない. 確率値に直すことでスケールを揃えることができる. また,softmax を通すことで,ターゲットクラスではない物体に反応することを防げるらしい.

Screen Shot 2020-01-07 at 10 20 14

検証

可視化の比較

Screen Shot 2020-01-06 at 23 26 08

同一クラスの物体が複数ある場合の可視化

Screen Shot 2020-01-07 at 9 53 37

Grad-CAM++でも複数物体に反応しているが,Score CAMの方がよりノイズが少ない.

定量評価

既存研究では,1) weakly-supervised localization での評価(bounding box の IoUでの評価),2) pointing accuracy による評価(saliency map の最大値がbounding box 内に存在するかどうか) の二つの方法で定量評価を行っていた. 前者の方法では,見た目と実際の性能が一致しない場合があり, 後者の方法では,saliency map全体を考慮していない(例えば,saliency map の最大値をとる点が画像内に均一に点在していた場合,saliency map の質は低いにもかかわらず,bounding box内に最大値は存在し正例となってしまう) ことが問題となっている.

そこで本研究では,pointing accuracy を energy based pointing game というエネルギーベースの評価指標に改良した. 具体的には,入力画像の,bounding box 内のsaliency mapの値の総和を,画像全体の saliency map の値の総和で割っている.

Screen Shot 2020-01-07 at 10 14 19 Screen Shot 2020-01-07 at 10 15 36

新規性

Comment

date

Jan 6th, 2020

yiskw713 commented 4 years ago

pytorchで実装してみた https://github.com/yiskw713/ScoreCAM