深度學習論文筆記(可解釋性)——CAM與Grad-CAM

主要工作

CAM與Grad-CAM用於解釋CNN模型,這兩個算法均可得出class activation mappingclass\ activation\ mapping(類似於熱力圖),可用於定位圖像中與類別相關的區域(類似於目標檢測),如下圖所示:

在這裏插入圖片描述
五顏六色的區域即爲類別相關的區域,表明了CNN爲什麼如此分類,比如CNN注意到了圖中存在牙齒,因此將該圖分爲Brushing teeth。

閱讀了三篇論文,總體來說收穫有:

  1. 明白全局池化(Global Average Pooling)爲什麼有效
  2. 明白CAM與Grad-CAM可視化的原理

需注意,CAM與Grad-CAM的可視化只可以解釋爲什麼CNN如此分類,但是不能解釋CNN爲什麼可以定位到類別相關的區域


Global Average Pooling的工作機制

在這裏插入圖片描述

設類別數爲nn,最後一層含有nn個特徵圖,求每張特徵圖所有像素的平均值,後接入一個有nn個神經元的全連接層,這裏有兩個疑問

爲什麼要有nn個特徵圖
論文的解釋爲“the feature maps can be easily interpreted as categories confidence maps.”。
這麼做效果好是前提,對此的解釋便是,每個特徵圖主要提取了某一類別相關的某些特徵,例如第ii張特徵圖主要提取圖中與飛機相關的部分,第i+1i+1張特徵圖主要提取圖中與汽車相關的部分。
論文在CIFAR10上訓練完模型後,最後一層特徵圖可視化的結果如下:
在這裏插入圖片描述
從圖來看,基本滿足論文的解釋

求完平均後接入全連接,這麼做的理由亦或是好處是什麼
下一節的“爲什麼如此計算可以得出類別相關區域”部分解釋


CAM

CNN一般有特徵提取器與分類器組成,特徵提取器負責提取圖像特徵,分類器依據特徵提取器提取的特徵進行分類,目前常用的分類器爲MLP,目前主流的做法是特徵提取器後接一個GAP+類別數目大小的全連階層。

CNN最後一層特徵圖富含有最爲豐富類別語意信息(可以理解爲高度抽象的類別特徵),因此,CAM基於最後一層特徵圖進行可視化。

CAM將CNN的分類器替換爲GAP+類別數目大小的全連接層(以下稱爲分類層)後重新訓練模型,設最後一層有nn張特徵圖,記爲A1,A2,...AnA^1,A^2,...A^n,分類層中一個神經元有nn個權重,一個神經元對應一類,設第ii個神經元的權重爲w1i,w2i,...,wniw_1^i,w_2^i,...,w_n^i,則第cc類的class activation mappingclass\ activation\ mapping(記爲LCAMcL_{CAM}^c)的生成方式爲:

LCAMc=i=1nwicAi(式1.0)L_{CAM}^c=\sum_{i=1}^{n}w_i^cA^i\tag{式1.0}

圖示如下:
在這裏插入圖片描述
生成的Class Activation Mapping大小與最後一層特徵圖的大小一致,接着進行上採樣即可得到與原圖大小一致的Class Activation Mapping


爲什麼如此計算可以得出類別相關區域

用GAP表示全局平均池化函數,沿用上述符號,第cc類的分類得分爲ScS_c,GAP的權重爲wicw_{i}^c,特徵圖大小爲c1c2c_1*c_2Z=c1c2Z=c_1*c_2,第ii個特徵圖第kk行第jj列的像素值爲AkjiA^i_{kj},則有
Sc=i=1nwicGAP(Ai)=i=1nwic1Zk=1c1j=1c2Akji=1Zi=1nk=1c1j=1c2wicAkji \begin{aligned} S_c&=\sum_{i=1}^{n}w_i^cGAP(A_i)\\ &=\sum_{i=1}^nw_i^c\frac{1}{Z}\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}A_{kj}^i\\ &=\frac{1}{Z}\sum_{i=1}^n\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}w_i^cA_{kj}^i \end{aligned}

特徵圖中的一個像素對應原圖中的一個區域,而像素值表示該區域提取到的特徵,由上式可知ScS_c的大小由特徵圖中像素值與權重決定,特徵圖中像素值與權重的乘積大於0,有利於將樣本分到該類,即CNN認爲原圖中的該區域具有類別相關特徵。式1.0就是計算特徵圖中的每個像素值是否具有類別相關特徵,如果有,我們可以通過上採樣,康康這個這個像素對應的是原圖中的哪一部分

GAP的出發點也是如此,即在訓練過程中讓網絡學會判斷原圖中哪個區域具有類別相關特徵,由於GAP去除了多餘的全連接層,並且沒有引入參數,因此GAP可以降低過擬合的風險

可視化的結果也表明,CNN正確分類的確是因爲注意到了原圖中正確的類別相關特徵


Grad-CAM

CAM的缺點很明顯,爲了得出GAP中的權重,需要替換最後的分類器後重新訓練模型,Grad-CAM克服了上述缺點。

設第cc類的分類得分爲ScS_c,GAP的權重爲wicw_{i}^c,特徵圖大小爲c1c2c_1*c_2Z=c1c2Z=c_1*c_2,第ii個特徵圖第kk行第jj列的像素值爲AkjiA^i_{kj}

計算αic=1Zk=1c1j=1c2ScAkji\alpha_i^c=\frac{1}{Z}\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}\frac{\partial S_c}{\partial A^i_{kj}}

Grad-CAM的Class Activation Mapping計算方式如下:
LGradCAMc=ReLU(iαicAi)L_{Grad-CAM}^c=ReLU(\sum_{i}\alpha_i^cA^i)

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

Grad-CAM爲什麼這麼做呢?具體的推導位於快點我,我等不及了,推導比較簡單,這裏就不敲了,直接貼圖
在這裏插入圖片描述
在這裏插入圖片描述

最後三個式子漏了符號\partial,總的來說還是非常驚喜的,如果CAM在可視化的過程中,將特徵圖進行了歸一化,則有
LCAMc=1Zi=1nwicAi=1Zi=1nk=1c1j=1c2ScAkjiAi L_{CAM}^c=\frac{1}{Z}\sum_{i=1}^{n}w_i^cA^i=\frac{1}{Z}\sum_{i=1}^n\sum_{k=1}^{c_1}\sum_{j=1}^{c_2}\frac{\partial S_c}{\partial A^i_{kj}}A^i

Grad-CAM是CAM的一般化。

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