CAM和Grad-CAM

CAM:類激活圖,class activation map

CAM算法就是探索卷積神經網絡關注圖像的哪一部分而得到最後的輸出。

如上圖的網絡,最終把圖片分成了“Australian terrier”,這是一個澳大利亞的犬種。我們的網絡在圖像中看到了什麼所以分成了這一類呢?這裏就可以用CAM算法進行可視化。

CAM會對網絡最後的特徵圖進行加權求和,就可以得到一個注意力的機制(就是卷積神經網絡更關注圖片的什麼地方)。具體操作爲上圖下半部分,把網絡最後一層的每一個特徵圖乘上相應的權值,結果相加,就能得到右下角的最終的CAM(越紅權重越大,越藍就是越不關注的地方)可以看到卷積神經網絡關注了小狗所在的位置,並且更關注狗的身體部分。整個算法的關鍵就是如何確定權值W:首先對特徵圖進行一個global average pooling(全局平均池化),一張圖對應一個神經元,

將得到的神經元層直接接一個全連接層,就可以得到我們的網絡輸出

這就對網絡進行了修改,在最後一層特徵圖後接的全局平均池化,可將特徵圖轉換成向量的形式(以一列神經元代替整張圖),最後經過全連接層輸出的類與上一層神經元之間的權重就是特徵圖的權重。

缺點:網絡最後必須要有一個global average pooling操作,才能得到權值。所以只能改動網絡,重新訓練,不太適用。

 

改進

grad-CAM:利用梯度作爲特徵圖的權重。

CAM最重要的是兩部分,一是特徵圖,一是特徵圖所對應的權重。grad-CAM就是利用梯度的方法找權重。

 

 

特徵圖經過全連接層,輸出一個向量(如圖,y向量應該是0000000010, tiger cat類的位置爲1),需要利用這個向量backward求特徵圖的梯度。然後得到關於梯度的feature map,對這些梯度的feature map進行平均操作,得到權重(每一個梯度的feature map對應一個權重)

得到權重之後,與原始的feature map進行加權平均,類似上面的CAM。加權平均後再經過relu,最後得到grad-cam可視化的圖。這樣就更具有普適性,因爲不需要更改網絡模型,只要網絡模型能輸出分類,利用這個分類向量進行反向傳播求梯度就可以了。有了類激活圖,就知道了網絡的分類依據。

【1】Learning Deep Features for Discriminative Localization

【2】Grad-CAM: Visual Explanations from Deep Network via Gradient-based Localization

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章