https://github.com/haofanwang/Score-CAM
Score-CAM:
Score-Weighted Visual Explanations for Convolutional Neural Networks
Abstract
近年來,卷積神經網絡的內部機制以及網絡做出特定決策的原因越來越受到人們的關注。在本文中,我們開發了一種新的基於類激活映射的post-hoc視覺解釋方法,成為Score-CAM。與以往基於類激活映射的方法不同,Score-CAM通過每個激活映射在目標類上的前向傳遞分數來獲得每個激活映射的權重,從而擺脫了對梯度的依賴,最終結果由權重和激活映射的線性組合得到。研究結果表明,Score-CAM在解釋決策過程方面具有更好的視覺效果和公平性。我們的方法在識別和定位任務上都優於以前的方法,它也通過了完整性檢查。
1. Introduction
深層神經網絡(DNNs)的解釋的目的是增加模型對人類的透明度,以便推理背后的邏輯可以以人類理解的方式進行解釋。在提供解釋的過程中,可視化一些感興趣的東西,例如輸入特性或學習權重的重要性,成為獲得用戶信任的最直接的方法。在DNNs中各種成分中,空間卷積一直是圖像和語言處理特征提取的首選。為了更好地解釋卷積運算和卷積神經網絡(CNNs),目前被廣泛采用的方法有梯度可視化[15]、Perturbation[10]、類激活映射(CAM)[21]。
基於梯度的方法將目標類的梯度反向傳播到輸入層,以突出對預測影響較大的圖像區域。[15]利用目標類分數對輸入圖像的導數來生成顯著map(saliency map)。其他作品[1,8,17,18,20]對原始的梯度進行了額外的處理,並在視覺上使顯著map更清晰。這些maps通常是低質量的,且仍然有噪聲[8]。基於Perturbation的方法[3,5,6,9,10,19]通過擾動原始輸入,觀察模型預測的變化。為了找到最小區域,這些方法通常需要額外的正則化[6]和時間成本。
基於CAM的解釋[4,12,21]通過卷積層激活映射的線性加權組合,為單個輸入提供了可視化的解釋。CAM[21]創建局部的可視化解釋,但它對體系結構是敏感的,需要一個全局池化層[7]來跟隨感興趣的卷積層。Grad-CAM[12]及其變體,如Grad-CAM++[4],打算將CAM推廣到沒有全局池化層的模型,並最終在社區中得到廣泛采用。在這項工作中,我們回顧了梯度CAM中梯度信息的使用,並討論了為什么梯度可能不是泛化CAM的最佳解決方案。此外,為了解決CAM基於梯度的變化的局限性,我們提出了一種新的post-hoc可視化解釋方法,名為Score-CAM,其中激活maps的重要性由相應輸入特征的全局貢獻編碼,而不是局部靈敏度測量——即梯度信息編碼。我們的工作總結如下:
(1)我們引入了一種新的無梯度可視化解釋方法——Score-CAM,它彌補了基於Perturbation和基於CAM的方法之間的差距,並以直觀易懂的方式表示激活maps的權重。
(2)定量評價了Score-CAM生成的顯著maps在識別任務上的公平性,具體為Average Drop / Average Increase and Deletion curve / Insertion curve 指標,表明Score-CAM能夠更好地找到目標類的證據。
(3)定性地評估了可視化和定位性能,在這兩個任務上都取得了較好的效果。最后,我們介紹了它作為一個調試工具在分析模型錯誤行為中的有效性。
2. Background
類激活映射(CAM)[21]是一種通過在全局池化層之前的最后一個卷積層的激活映射的線性加權組合來識別區分區域的技術。為了在多個通道上進行聚合,CAM將每個通道的重要性與下面全連接層的相應權重合並,生成一個分數作為類置信度。CAM最大的限制是,並不是每個模型都設計了一個全局池化層,甚至還存在一個全局池化層,有時在softmax函數之前會有更多的全連接層,例如VGG[15]。作為CAM的一個泛化,Grad-CAM[12]可以適用於更廣泛的CNN架構,而不需要特定的架構。在深入分析CAM及其變體之前,我們首先介紹本文中使用的符號。
Notation 考慮一個輸入為,輸出為一個概率分布Y的CNN神經網絡 Y = f(x),使用Yc表示被分類為類c的概率。對於給定的層
,
表示層
的激活。尤其是,如果
表示一個卷積層,則
表示第k個channel的激活map。將表示用於連接兩個層
和
層
中的第k個神經元的權重為
(其實就是第
層的輸出,第
層的輸入)
Definition 1 (Class Activation Map) 使用Sec 2中的標注,考慮一個包含全局池化層的模型 f ,使用最后一個卷積層
的輸出,並將其輸入池化層,然后將池化后的激活輸入用於分類的全連接層
。對於一個感興趣的類c,CAM
被定義為:
其中是層
的全局池化層后的第k個神經元的權重
CAM的動力是每個激活map 都包含不同的輸入X的空間信息,每個channel的重要性是 全局池化層后的全連接層的線形結合的權重。但是,如果模型中沒有全局池化層,或沒有(或者有多個)全連接層,CAM將會失敗,因為不存在
。為了解決這個問題,Grad-CAM擴展了
的定義,變為了類置信度Yc關於激活map
的梯度。最后,我們得到了下面關於Grad-CAM的定義
Definition 2 (Grad-CAM) 使用Sec 2的標注,考慮一個模型 f 中的一個卷積層,給定一個感興趣的類c,Grad-CAM
定義為:
(在原始的Grad-CAM論文中,作者使用了全局平均池化並對歸一化,去保證
)
Grad-CAM的變體,如Grad-CAM++,僅微分用於表示的梯度結合。因此,我們沒有顯式討論其定義,但是在下面的內容中,使用了它來比較。
使用梯度來整合每個通道對類置信度的重要性是一種自然選擇,而且它也保證了在所選層之后只有一個完全連接的層時,Grad -CAM會減少為CAM。重新思考激活圖中每個通道的“重要性”概念,我們發現,與梯度信息相比,增強信心(定義見第3節)是量化通道重要性的更好方法。首先討論了利用梯度測量重要度的一些問題,然后在第3節提出了新的信道重要度測量方法。
使用梯度來整合每個通道對類置信度的重要性是一種自然選擇,而且它也保證了在所選層之后只有一個全連接的層時,Grad-CAM會變為CAM。重新思考激活map中每個channel的“重要性”概念,我們發現,與梯度信息相比,Increase of Confidence(定義見第3節)是量化channel重要性的更好方法。首先討論了利用梯度測量重要度的一些問題,然后在第3節提出了新的channel重要度測量方法。
2.1. Gradient Issue
Saturation 由於Sigmoid函數的飽和問題或ReLU函數的零梯度區域,深度神經網絡的梯度可能會有噪聲,並且容易消失。結果之一是輸出關於輸入的梯度或內部層激活可能在視覺上是有噪音的,這也是顯著map(Saliency Map )方法[14]的問題之一,它將輸入特征的重要性歸功於輸出。一個梯度在視覺上帶有噪聲的例子顯示在了圖4中。
False Confidence 是每個激活map的一個線性組合。因此,給定兩個激活map
,如果對應的權重
,我們認為對於目標類'c'來說,生成
的輸入區域至少是和生成
的另一個區域同樣重要的。然而,在Grad -CAM中很容易找到錯誤置信度的反例:與零基線相比,具有更高權重的激活map對網絡輸出的貢獻更低。我們隨機選擇激活map並將它們向上采樣到輸入大小中,然后記錄如果我們只在激活map中保持高亮顯示的區域,目標分數將是多少。圖2給出了一個示例。與“head”部分對應的激活map獲得最高的權重,但在目標分數上增加的最低。這種現象可能是由於梯度頂部的全局池化操作和網絡中的梯度消失問題造成的。
3. Score-CAM: Proposed Approach
在本節中,我們首先介紹提出的用於解釋基於CNN的預測的Score-CAM機制。該框架的pipeline如圖3所示。我們首先在第3.1節介紹我們的方法。實現細節在3.2節。
其實過程就是:
1)將輸入代入模型,得到對應的分數S,以及得到對應選擇的卷積層的輸出激活map
2)將channel數為N的N個激活map作為mask,乘以輸入,作為新的輸入,代入模型,得到N個新的輸出分數S'
3)然后用N個新的輸出分數S'分別與原始的分數S相減,這就得到N個S_minus結果
4)N個S_minus使用softmax函數計算得到的結果就作為了選擇的卷積層的輸出激活map的權重
5)N個權重分別和對應的N個輸出激活map相乘,然后求和,在輸入ReLU(),就能夠得到對應的saliency map了
3.1. Methodology
與之前的方法[4,12]不同,之前的方法使用流入最后一個卷積層的梯度信息來表示每個激活map的重要性,這里我們將重要性作為 Increase of Confidence來考慮。
Definition 3 (Increase of Confidence) 給定一個通用函數Y=f(x),使用輸入向量X = ,然后輸出一個標量Y。對於已知的基線輸入Xb,xi
對於Y的貢獻ci 是通過用xi替換Xb第i個entry導致的輸出的變化。公式為:
其中Hi是與Xb有着相同形狀的向量,但是在Hi中的每個entry hj,,
表示Hadamard Product。
一些相關的工作已經建立了類似於definition 3的概念。DeepLIFT[13]使用給定輸入的輸出與基線的差異來量化通過層傳播的信號的重要性。為了評價定位性能,GradCAM++[4]提出了兩個相似的概念:Average Drop %和Increase in Confidence。為了衡量每個激活map的重要性,我們為Channel-wise Increase of Confidence生成了Def.3。
Definition 4 給定一個CNN模型Y=f(x),輸入X,輸出一個標量Y。我們選擇f中的一個內部卷積層和對應的激活
。表示
的第k個channel為
。對於一個已知的基線輸入Xb,
對Y的貢獻定義為:
Up(.)表示將上采樣到輸入大小的操作,s(.)是正則化函數,用來將輸入矩陣中的元素映射到[0,1]范圍中
Use of Upsampling CIC首先對一個對應於原始輸入空間中特定區域的激活map進行上采樣,然后用上采樣的激活map對輸入進行擾動。該激活map的重要性是通過masked輸入的目標分數得到的。與[9]不同的是,通過蒙特卡羅采樣生成N個小於圖像大小的masks,然后將每個masks向上采樣到輸入大小,CIC不需要生成masks的過程。相反,每個上采樣的激活map不僅顯示了與內部激活map最相關的空間位置,而且可以直接作為mask對輸入圖像進行擾動。
Smoothing with Normalization Increase in Confidence基本上就是在輸入上添加了一個二進制mask Hi,只保留了輸入中感興趣的部分。但是,當我們對輸入圖像中的一個特定區域而不是一個像素感興趣時,二進制mask可能不是一個合理的選擇。為了生成更平滑的mask ,我們不用將所有元素設置為二進制,只用歸一化每個激活map中的原始激活值到[0,1]范圍即可。我們在Score-CAM的等式1中使用了如下的歸一化函數:
最后,我們在def 5中描述了我們提出的可視化解釋方法Score-CAM。在算法1中描述了實現的完整細節。
Definition 5 (Score-CAM) 使用了Sec 2中的標注,考慮模型f中的一個卷積層,給定一個感興趣的類c,Score-CAM被定義為:
其中C(.)表示激活map 的CIC分數
與[4,12]類似,我們也對maps的線性組合應用ReLU函數,因為我們只對對感興趣的類別有正影響的特征感興趣。由於權重來自與目標類上的激活maps對應的CIC得分,因此Score-CAM擺脫了對梯度的依賴。雖然最后一個卷積層因為是特征提取[12]的終點,是一個更好的選擇,但是在我們的框架中可以選擇任何的中間卷積層。
3.2. Normalization on Score
神經網絡中每一個前向傳播都是獨立的,每一個前向傳播的分數幅度是不可預測且不是固定的。歸一化后的相對輸出值(post-softmax,softmax之后的結果)比絕對輸出值(softmax之前的結果)更適合用來衡量相關性。因此,在Score-CAM中,我們將權重表示為post-softmax值,以便分數可以被重新標定為一個固定的范圍。
由於每次預測的范圍不同,使用softmax與否會產生差異。圖5顯示了一個有趣的發現。該模型預測輸入圖像為“狗”,無論采用哪種分數類型,都可以正確地高亮對應位置。但對於目標類“貓”,如果使用pre-softmax logit作為權重,Score-CAM高亮了“狗”和“貓”兩個區域。相反,使用softmax的Score-CAM可以很好地區分兩個不同的類別,盡管預測“貓”的概率低於預測“狗”的概率。歸一化操作使Score-CAM具有良好的類辨別能力。
4. Experiments
在本節中,我們通過實驗來評估所提出的解釋方法的有效性。首先,在第4.1節中,我們通過ImageNet上的可視化來定性地評估我們的方法。第二,在第4.2節中,我們評估了圖像識別中解釋的公平性(突出區域對模型決策的重要性)。在章節4.3中,我們展示了在給定圖像中對象的類條件定位的有效性。完整性檢查在第4.4節中進行。最后,我們使用Score-CAM作為調試工具來分析4.5章節中的模型不當行為。
在接下來的實驗中,除非另有說明,我們使用Pytorch model zoo中預先訓練好的VGG16 network作為基礎模型,在附錄中提供了其他網絡架構的更多可視化結果。我們的實驗使用的是公開的對象分類數據集ILSVRC2012 val[11]。對於輸入圖像,我們將其大小調整為(224×224×3),將其變換到范圍[0,1],然后使用均值向量[0.485,0.456,0.406]和標准差向量[0.229,0.224,0.225]進行歸一化。不執行進一步的預處理。
4.1. Qualitative Evaluation via Visualization
4.1.1 Class Discriminative Visualization
我們定性地比較了8種最先進的方法,即基於梯度、基於擾動和基於CAM的方法產生的顯著maps。我們的方法以較少的隨機噪聲產生更多視覺上可解釋的顯著maps。結果如圖4所示,附錄中提供了更多示例。如圖所示,在Score-CAM中,隨機噪聲遠小於Mask [6], RISE [9], Grad-CAM[12]和Grad-CAM++[4]。與基於梯度的方法相比,我們的方法還可以生成更平滑的顯著maps。
我們證明了Score-CAM可以區分不同的類,如圖6所示。VGG-16模型將輸入分類為49.6%置信度的“bull mastiff”和0.2%置信度的“tiger cat”,我們的模型正確地給出了這兩類輸入的解釋位置,盡管后者的預測概率遠低於前者。期望Score-CAM能夠區分不同的類別是合理的,因為每個激活map的權重都與目標類上的響應相關,這使得Score-CAM具有良好的類別區分能力。
4.1.2 Multi-Target Visualization
Score-CAM不僅能夠准確地定位單個對象,而且在定位多個同類對象時也比以往的工作表現出更好的性能。結果如圖7所示,Grad-CAM[12]傾向於只捕捉圖像中的一個目標,Grad-CAM++[4]和Score-CAM都顯示了定位多個目標的能力,但是Score-CAM的顯著map比Grad-CAM++更加聚焦。
由於每個激活map的權重用其在目標類上的得分來表示,因此模型預測的每個置信度較高的目標對象都可以單獨高亮顯示。因此,所有與目標類相關的證據都可以得到響應,並通過線性組合進行組合。
4.2. Faithfulness Evaluation via Image Recognition
首先,我們評估了在[4]中所采用的對象識別任務中,由Score-CAM產生的解釋的可信度。原始輸入通過與顯著map的點乘來進行masked,以觀察目標類上的分數變化。在這個實驗中,我們沒有對原始生成的顯著map進行點乘,而是對顯著map中正像素的數量進行了輕微的修改(在我們的實驗中,圖像中50%的像素被消去了)。我們遵循[4]中使用的度量去測量質量,Average Drop被表示為(說明添加map的輸入導致分數降低的情況,越小越好,說明導致分數下降的程度低),Increase In Confidence(也叫做Average Increase,說明添加map的輸入導致分數增高的情況,越大越好,說明導致分數上升的程度高)被表示為
,其中Yci是圖像i中類c的預測分數,Oci是輸入帶有解釋map區域的類c的預測分數。Sign表示一個指示器函數,如果輸入為真,則返回1。在ImageNet (ILSVRC2012)驗證集上進行實驗,隨機選取2000張圖像。結果見表1。
從表1可以看出,Score-CAM的Average Drop為31.5%,Average Increase為30.6%,在很大程度上優於其他基於微擾和基於CAM的方法。在識別任務上的良好表現表明,Score-CAM可以成功地找到目標物體的最易識別的區域,而不僅僅是發現人類的想法是重要的。這里我們不與基於梯度的方法進行比較,因為它們的視覺屬性不同。在識別任務上的結果表明,相對於以往的方法,Score-CAM能更真實地揭示原始CNN模型的決策過程。
此外,為了更全面的比較,我們還對[9]中提出的刪除和插入度量進行了評價。作為Average Drop和Average Increase度量的補充,刪除度量隨着越來越多的重要像素被移除,預測類的概率降低,其中每個像素的重要性從生成的顯著map中得到。一個急劇下降的概率曲線下的一個較小的區域(作為被移除像素的分數的函數)意味着一個很好的解釋。另一方面,插入度量測量隨着越來越多的像素被引入,概率的增加,較高的AUC表明一個更好的解釋。
有幾種方法消除圖像的像素[5],所有這些方法有不同的優點和缺點。因此,在這個實驗中,我們簡單地通過設置像素值為0或1(步長設置為0.01),從一個圖像中刪除或引入像素(即每一個步驟刪除或引入整個圖像的1%像素)。示例如圖8所示。表3報告了超過2000幅圖像的平均結果,其中我們的方法在兩個指標上都比基於梯度的CAM方法取得了更好的性能。
4.3. Localization Evaluation
在本節中,我們通過定位能力來度量生成的顯著map的質量。我們從基於能量的角度來處理這個問題,擴展了從顯著map中提取最大點來觀察最大點是否落在物體邊界框中的pointing game。與只使用最大值點不同,我們關心有多少顯著map的能量落在目標對象的邊界框中。具體來說,我們首先將輸入圖像與目標類別的邊界框進行二值化,內部區域為1,外部區域為0。然后將其與生成的顯著map相乘,求和得到目標邊界框內的能量。該度量表示為,在基於能量的pointing game中使用該度量。
我們可以看到,在ILSVRC驗證集中,對象占據了圖像大部分區域的現象是很常見的,這使得這些圖像不適合度量生成的顯著map的定位能力。因此,我們從驗證集中隨機選取對象占整個圖像50%以上的圖像,為了方便,我們只考慮目標類只有一個邊框的圖像。我們對ILSVRC 2012驗證集中隨機選取的500幅圖像進行實驗,評估結果如表2所示,結果表明我們的方法在很大程度上優於以往的工作,顯著map中超過60%的能量落在目標對象的ground truth邊界框中。這也證實了由Score-CAM生成的顯著map具有較少的噪音。我們沒有將其與Guided BackProp[17]進行比較,因為它的工作原理類似於邊緣檢測器,而不是顯著map(heatmap)。另外,對於segmentation label的評估應該比object bounding box更加准確,我們會在以后的工作中增加這個功能。
4.4. Sanity Check
[2]發現,僅僅依靠視覺評估可能會產生誤導。一些顯著(saliency)方法[17]是獨立於模型和數據生成過程的。我們采用[2]中提出的模型參數隨機化檢驗方法,將經過訓練模型上的Score-CAM輸出與隨機初始化的相同架構的未經過訓練的網絡輸出進行比較。如圖9所示,與Grad-CAM和Grad-CAM++一樣,Score-CAM也通過了完整性檢查。Score-CAM結果對模型參數敏感,能反映模型的質量。
4.5. Applications
一個好的post-hoc解釋不僅應該告訴我們模型注意點在哪里,還應該幫助研究人員分析他們的模型。我們聲稱,以前的很多工作都把可視化解釋當作一種進行定位的方法,而忽略了它在幫助分析原始模型方面的有用性。在這一部分中,我們說明如何利用由Score-CAM生成的解釋進行模型分析,並為未來的探索提供見解。
我們觀察到,即使在分類性能較差的情況下,Score-CAM仍能很好地完成定位任務,但隨着分類性能的提高,顯著map中的噪聲減小,並且更集中於重要區域。噪聲表明了分類性能。這也可以作為判斷模型是否收斂的提示,如果生成的顯著map不再改變,則模型可能已經收斂。
此外,Score-CAM還可以幫助診斷模型做出錯誤預測的原因和識別數據集的偏差。圖11中帶有“bicycle”標簽的圖像被划分為“person”。生成兩個類的顯著map。通過比較,我們知道“person”與“bicycle”是相關的,因為“person”出現在訓練集中大多數的“bicycle”圖像中,而“person”區域是最容易導致錯誤分類的干擾區域。
5. Conclusion
在本文中,我們提出了一種新的CAM變體,即Score-CAM,作為一種更好的可視化解釋方法。Score-CAM在設計每個激活map的權重時結合了Increase In Confidence,擺脫了對梯度的依賴,具有更合理的權重表示。我們提供動機、實現、定性和定量評估的深入分析。我們的方法在識別和定位評估指標中,優於所有以前的基於CAM的方法和其他先進的方法。未來的工作包括探索在其他CAM變體中不同的權重表示的聯系。