「Vision Transformer (ViT)」のAttention_Mapと、GradCAMを比べる。


概要

「Vision Transformer (ViT)」のAttention_Mapと、普通のCNNのGradCAMを比べてみました。

(この類の検討には、ワタシは、そもそもの懸念※1があり、
オチが着かないのは、やる前から、わあっているのですが。。。)

※1 末尾の「そもそもの懸念とは」、参照。

GradCAMは、以下の自分の記事を引用しました。
全22行のコードでGradCAM。tf_explainは、使い易いかも、お薦め!

「Vision Transformer (ViT)」のAttention_Mapは、
https://github.com/faustomorales/vit-keras

READMEの
Visualizing Attention Maps
の部分のコードを
使いました。

評価結果

attention_map()

コードのhelpより

>>> help(visualize.attention_map)
Help on function attention_map in module vit_keras.visualize:

attention_map(model, image)
    Get an attention map for an image and model using the technique
    described in Appendix D.7 in the paper (unofficial).

    Args:
        model: A ViT model
        image: An image for which we will compute the attention map.

>>>
>>>

↑は、
https://openreview.net/forum?id=YicbFdNTTy
引用

画像1

Attention_Map

(↓ 表示が見づらいので加工しようと考えましたが、どういう計算で表示しているのかわかりませんでした。)

vit_b16(small model)

vit_l16(large model)

GradCAM

画像2

Attention_Map

vit_b16(small model)

vit_l16(large model)

GradCAM

評価結果に対して

表示方法が違うのでなんともですが、、、
同じような感じですかね。

まとめ

注目点を示しても、、、なんとも、オチがつかないと予想してましたが、
オチが着かないです。

この画素単位に、注目度を示す、ようなシンプルな表現方法以外の
表現方法が必要だと思います。
これでは、情報不足だと思います。

コメントなどあれば、お願いします。

そもそもの懸念とは

以下の自分の記事にあるように、あまり、説明をがんばりすぎないほうがいいという懸念。

畳み込みニューラルネットワーク(CNN)の説明が、頑張りすぎでは?(MathWorksのdeepDreamImageとかも)