揭祕卷積神經網路熱力圖:類啟用對映
全文共2280字,預計學習時長4分鐘
目前在視覺化方面,我們已經掌握了許多不同的技術。本文將介紹在卷積神經網路(CNN)中,針對影象的某些部位視覺化從而做出判斷的不同技術。
類啟用對映(CAM)是一種生成熱力圖的技術,用於突出影象的類的特定區域。
熱力圖效用
下面是一個典型的熱力圖:
圖片來源:https://github.com/jacobgil/pytorch-grad-cam
這張圖片中,一隻貓被紅色高亮顯示為“貓”類,表示網路在進行分類判斷時正在檢視正確位置。
視覺化神經網路正在檢視的位置大有用處,因為它幫助我們理解神經網路是否在檢視影象的適當部位,或者神經網路是否在進行誤導。下列是一些神經網路在做分類決判斷時可能進行誤導和錯誤檢視位置的例子:
· 卷積神經網路將一張圖片分類為“火車”,而實際上它是在尋找“火車軌道”(這意味著它會錯誤地將一張火車軌道圖片單獨分類為“火車”)。
· 卷積神經網路將x光胸片分類為“高患病機率”,依據的不是疾病的實際表現,而是放在病人左肩上的金屬“L”標記。重點是,這個“L”標記只有在病人躺下的時候才會被直接放在病人的身體上,而病人也只有虛弱到無法忍受才會躺下接受x光檢查。
參考:Zech et al. 2018,Confounding variables can degradegeneralization performance of radiological deep learning models.
傳送門:https://arxiv.org/pdf/1807.00431.pdf
· CNN可根據資料集中五分之一的馬影象中出現的左下角源標記將該影象分類為“馬”。但如果將這個“馬的源標記”放在一幅汽車影象上,那麼網路仍將該影象分類為“馬”。
參考:Lapuschkin et al. 2019, Unmasking Clever Hans Predictors and Assessing What Machines Really Learn.
傳送門:https://arxiv.org/pdf/1902.10178.pdf
相關論文集
這張圖顯示了有關卷積神經網路視覺化熱力圖的幾篇論文之間的關係。文章左上角可見這篇文章的關鍵——類啟用對映(CAM):
以下是完整類啟用對映論文的連結:Zhou et al. 2016 “Learning Deep Features for DiscriminativeLocalization.”
傳送門:http://openaccess.thecvf.com/content_cvpr_2016/papers/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf
此處特別推薦檢視圖1和圖2。
CAM:類啟用對映
類啟用對映結構
類啟用對映背後的原理是利用一種特殊的卷積神經網路結構生成視覺化熱力圖。
參考:this post for a review of convolutional neural networks
傳送門:https://glassboxmedicine.com/2019/05/05/how-computers-see-intro-to-convolutional-neural-networks/
其結構如下:卷積層,全域性池化層,然後是一個輸出分類判斷的全連線層。
在以上示意圖中,可以看到一些通用的卷積層,形成了“倒數第二個卷積層”(即網路中倒數第二層,也是卷積層的最後一層)。在這個“倒數第二個卷積層”中存在K特徵圖。在這個示意圖中,對於特徵對映A1、A2和A3, K = 3。
但實際上K可以是任何值——例如,可能會有64個或512個特徵對映。
根據文章中的標註,特徵圖高度為v和寬度為u:
文章傳送門:https://pdfs.semanticscholar.org/223a/d42ec73c1a41355c0ca3626fa99c7841f840.pdf
全域性池化層 (GAP)
全域性池化層是通過對特徵圖中的數字求平均值,從而將特徵圖轉換為單個數字。若有K=3個特徵圖,則在全域性池化之後,我們將得到K=3個數字。這三個數字用上圖中的三個小正方形表示:
以下是用於描述全域性池化層的標註符號:
因此,在全域性池化中,對特徵圖Aij的元素進行求和,從i =1到u(全寬),從j = 1到v(全高),然後除以特徵圖中的元素總數,Z = uv。
全連線層和分類數
在執行全域性池化後,我們將得到K個數字。通過全連線層將這K個數字轉換為分類判斷:
請注意,為避免混淆繪圖,圖中並未顯示全連線層中的每個權重。實際上,紅色數字(由GAP(A1)輸出)通過權重連線到每個輸出類,綠色數字(由GAP(A2)輸出)通過權重連線到每個輸出類,藍色數字(由GAP(A3)輸出)通過權重連線到每個輸出類。
參考:this post for review offully-connected layers.
傳送門:https://glassboxmedicine.com/2019/01/17/introduction-to-neural-networks/
僅看“貓”輸出類上,有三個權重,w1、w2和w3,這三個權重將全域性池化輸出連線到“貓”輸出節點。使用上圖所示的方程為"貓"類生成一個分數y^貓,對應於y^貓 = (w1)(紅色)+ (w2)(綠色)+(w3)(藍色)。
類啟用對映
現在完成了整個類啟用對映結構,從輸入影象到分類數。最後一步是得到類啟用對映視覺化熱力圖,步驟如下:
這看起來很像計算y^貓分數的方法,但不同之處在於,我們不是將權重w1、w2和w3乘以特徵圖Ak上的全域性池化層生成的單個數字,而是直接將權重乘以特徵圖。因此,雖然分數的輸出是數字,但是類啟用對映實際輸出的是數字網格。而這個數字網格就是熱力圖!
總結
下面是一頁草圖,總結了整篇類啟用對映論文:
留言 點贊 關注
我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”
(新增小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工