CNN視覺化技術總結(三)--類視覺化

彷彿若有光157發表於2021-02-14

CNN視覺化技術總結(一)-特徵圖視覺化

CNN視覺化技術總結(二)--卷積核視覺化

導言:

    前面我們介紹了兩種視覺化方法,特徵圖視覺化和卷積核視覺化,這兩種方法在論文中都比較常見,這兩種更多的是用於分析模型在某一層學習到的東西。在理解這兩種視覺化方法,很容易理解影像是如何經過神經網路後得到識別分類。

 

    然而,上次我在知乎看到一個通過yolov3做跌倒檢測,希望加上人臉識別進行多工學習從而提高準確率的提問。這明顯提問者並不理解神經網路是如何對這種帶有時間維度的視訊進行分析從而實現行為識別,從本質上來講,這其實是不理解神經網路具體是如何識別一個類的。因此,當在這一點上理解錯誤後,所進行的模型選擇、方案設計和改進,就都是不合理的。

    (我在知乎上回答了這個問題正確的跌倒檢測思路應該是什麼,感興趣的可以去看看,我的知乎id是彷彿若有光)

 

    因此,在本文中,我們將介紹一種對於不同的類,如何知道模型根據哪些資訊來識別的方法,即對類進行視覺化,通俗一點來說就是熱力圖。這個方法主要是CAM系列,目前有CAM, Grad-CAM, Grad-CAM++。

 

CAM(Class Activation Map)

 

圖片

如上圖所示,CAM的結構由CNN特徵提取網路,全域性平均池化GAP,全連線層和Softmax組成。

 

實現原理:一張圖片在經過CNN特徵提取網路後得到feature maps, 再對每一個feature map進行全域性平均池化,變成一維向量,再經過全連線層與softmax得到類的概率。

 

假定在GAP前是n個通道,則經過GAP後得到的是一個長度為1x n的向量,假定類別數為m,則全連線層的權值為一個n x m的張量。(注:這裡先忽視batch-size)

 

對於某一個類別C, 現在想要視覺化這個模型對於識別類別C,原影像的哪些區域起主要作用,換句話說模型是根據哪些資訊得到該影像就是類別C。

 

做法是取出全連線層中得到類別C的概率的那一維權值,用W表示,即上圖的下半部分。然後對GAP前的feature map進行加權求和,由於此時feature map不是原影像大小,在加權求和後還需要進行上取樣,即可得到Class Activation Map。

 

用公式表示如下:(k表示通道,c表示類別,fk(x,y)表示feature map)

圖片

效果圖:

 

圖片

 

 

CAM的分析

CAM有個很致命的缺陷,它的結構是由CNN + GAP + FC + Softmax組成,也就是說如果想要視覺化某個現有的模型,但大部分現有的模型沒有GAP這個操作,此時想要視覺化便需要修改原模型結構,並重新訓練,相當麻煩,且如果模型很大,在修改後重新訓練不一定能達到原效果,視覺化也就沒有意義了。

因此,針對這個缺陷,其後續有了改進版Grad-CAM。

 

Grad-CAM

 

Grad-CAM的最大特點就是不再需要修改現有的模型結構了,也不需要重新訓練了,直接在原模型上即可視覺化。

 

原理:同樣是處理CNN特徵提取網路的最後一層feature maps。Grad-CAM對於想要視覺化的類別C,使最後輸出的類別C的概率值通過反向傳播到最後一層feature maps,得到類別C對該feature maps的每個畫素的梯度值,對每個畫素的梯度值取全域性平均池化,即可得到對feature maps的加權係數alpha,論文中提到這樣獲取的加權係數跟CAM中的係數幾乎是等價的。接下來對特徵圖加權求和,使用ReLU進行修正,再進行上取樣。

 

使用ReLU的原因是對於那些負值,可認為與識別類別C無關,這些負值可能是與其他類別有關,而正值才是對識別C有正面影響的。

 

用公式表示如下:

圖片

圖片

圖片

Grad-CAM的結構圖如上圖所示,對於Guided Backpropagation不瞭解的讀者,可看CNN視覺化技術總結的第一篇文章。

效果圖如下:

圖片

 

Grad-CAM後續還有改進版Grad-CAM++,其主要的改進效果是定位更準確,更適合同類多目標的情況,所謂同類多目標是指一張影像中對於某個類出現多個目標,例如七八個人。

改進方法是對加權係數的獲取提出新的方法,該方法複雜到不忍直視。因此這裡就不介紹了,感興趣的讀者可通過文章末尾的連結獲取該論文。

  下一篇將對所有的一些視覺化工具進行總結。內容將放在CV技術總結部分。

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

參考論文:

1. Learning Deep Features for Discriminative Localization

2.Grad-CAM: Why did you say that?Visual Explanations from Deep Networks via Gradient-based Localization

3. Grad-cam++: Generalized gradient-based visual explanations for deep convolutional networks

本文來源於公眾號《CV技術指南》的技術總結部分,更多相關技術總結請掃描文末二維碼關注公眾號。

相關文章