Class Activation Mapとは
Class activation mapsまたはgrad-CAMは、入力の注目領域を可視化するもう1つの方法です。
モデルの出力(saliencyを参照)に関する勾配を使う代わりに、grad-CAMは後ろから2番目(全結合
層の前)の畳み込み
層の出力を使います。
直感的には、全結合
層で完全に失われる空間情報を利用するために、最も出力に近い畳み込み
層を使うことです。
keras-visでは、Class Activation mapsよりも汎用的で熟考されたgrad-CAMを使います。
使い方
grad-CAMで可視化するための2つのAPIがあり、それらはsaliencyの使い方とほとんど同じです。
- visualize_cam: grad-CAMで可視化するための汎用APIです。
- visualize_cam_with_losses: いくつかのカスタムな重み付き付き損失を扱うような研究利用向けです。
注目するべき追加はpenultimate_layer_idx
パラメータだけです。
これにより特定のpre-layerの出力の勾配が使われるようにできます。
デフォルトでは、keras-visは最も近いレイヤをフィルタで探します。
シナリオ
saliencyのシナリオを参照して下さい。すべては、追加されたpenultimate_layer_idx
パラメータに期待して下さい。
了解
grad-CAMは可視化されるレイヤが後ろから2番目のレイヤに近い場合のみ、上手く機能します。
これは畳み込み
フィルタの可視化にも言えます。
あなたのモデルがこのケースに該当しない場合はsaliencyを使うほうが良いでしょう。