導言:工具
前面咱們介紹了兩種可視化方法,特徵圖可視化和卷積核可視化,這兩種方法在論文中都比較常見,這兩種更多的是用於分析模型在某一層學習到的東西。在理解這兩種可視化方法,很容易理解圖像是如何通過神經網絡後獲得識別分類。學習
然而,上次我在知乎看到一個經過yolov3作跌倒檢測,但願加上人臉識別進行多任務學習從而提升準確率的提問。這明顯提問者並不理解神經網絡是如何對這種帶有時間維度的視頻進行分析從而實現行爲識別,從本質上來說,這實際上是不理解神經網絡具體是如何識別一個類的。所以,當在這一點上理解錯誤後,所進行的模型選擇、方案設計和改進,就都是不合理的。ui
(我在知乎上回答了這個問題正確的跌倒檢測思路應該是什麼,感興趣的能夠去看看,個人知乎id是彷彿如有光)設計
所以,在本文中,咱們將介紹一種對於不一樣的類,如何知道模型根據哪些信息來識別的方法,即對類進行可視化,通俗一點來講就是熱力圖。這個方法主要是CAM系列,目前有CAM, Grad-CAM, Grad-CAM++。3d
如上圖所示,CAM的結構由CNN特徵提取網絡,全局平均池化GAP,全鏈接層和Softmax組成。視頻
實現原理:一張圖片在通過CNN特徵提取網絡後獲得feature maps, 再對每個feature map進行全局平均池化,變成一維向量,再通過全鏈接層與softmax獲得類的機率。blog
假定在GAP前是n個通道,則通過GAP後獲得的是一個長度爲1x n的向量,假定類別數爲m,則全鏈接層的權值爲一個n x m的張量。(注:這裏先忽視batch-size)token
對於某一個類別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的最大特色就是再也不須要修改現有的模型結構了,也不須要從新訓練了,直接在原模型上便可可視化。
原理:一樣是處理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技術指南》的技術總結部分,更多相關技術總結請掃描文末二維碼關注公衆號。