關於類激活圖(CAM)運行機制的解讀

CAM:https://arxiv.org/abs/1512.04150

Grad-CAM:https://arxiv.org/pdf/1610.02391v1.pdf

Grad-CAM++:https://arxiv.org/abs/1710.11063

最近看了網上很多關於這三篇解讀的文章,但是對於一個“CAM新人“來說,還是遇到了很多疑惑。

下面總結幾點:

1.CAM能讓我們對CNN網絡有很好的解釋作用,利用特徵圖權重疊加的原理,獲得熱圖,主要公式如下:

在說明上述公式前,先來了解一下GAP(注意GAP是沒有權重可言的):GAP就是對特徵圖的均值化,例如輸入一個維度爲 5*5*10特徵圖,其中10代表通道,那麼經過GAP輸出後,維度大小則爲1*1*10,也就是把每一張特徵圖全局做了一個均值,得到一個值。GAP相比與原有FC層大大減少了參數,但是缺點是網絡收斂比較慢。在CAM中主要是就是利用GAP+“小的FC層”,代替了原有的分類層。但是其實在維度上看起來就是相當於一個FC層。

上述公式中A表示網絡最後的卷積層輸出大小爲w*h*n,其中w則爲最後那個“小的FC”層的權重,C爲類別數。現在來重新推導一下這個過程:

最後一層的卷積輸出:w*h*n,然後經過一個GAP得到:1*n,然後經過一個權重爲n*c的小fc層,得到大小爲1*c的分類向量。

整個過程如下圖:

那麼這時候我會想,引用GAP究竟是爲了什麼,我可不可以不用GAP算出熱圖,從維度關係上分析:對一般網絡而言最後一層卷積層假如輸出大小爲5*5*256這種形式,那麼FC層權重維度肯定是[256*5*5,C],但是這時候注意 也就是對於一個類別來說有256*5*5個權重,這時候這個權重大小是無法和256想對應的,也就是W和A是對應不上的,故不能得到熱圖。。。                        

2.爲了解決CAM必須插入GAP,修改原始網絡,需要重新訓練模型的問題,Grad-CAM其基本思路是對應於某個分類的特徵映射的權重可以轉換爲 利用反傳梯度來表達這個權重。

概述圖:

然後列出兩個關鍵公式: 從公式1可以看出直接把GAP當做了一次均值計算,並沒有直接在網絡中引入GAP層,Z表示每張特徵圖的像素點總數。

(1)

(2)之所以使用ReLU激活函數,是因爲我們只關注對於類別有關的區域,即特徵圖取值大於0的部分

3 ,grad_cam++:

相比grad_cam,定位更準確,能夠適用於一張圖片中的同類多目標的情況

主要公式:主要的變動是在對應於某個分類的特徵映射的權重表示中加入了ReLU和權重梯度。

以上三種方法的概述圖:

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