揭祕卷積神經網絡熱力圖:類激活映射

全文共2280字,預計學習時長4分鐘git

目前在可視化方面,咱們已經掌握了許多不一樣的技術。本文將介紹在卷積神經網絡(CNN)中,針對圖像的某些部位可視化從而作出判斷的不一樣技術。github

類激活映射(CAM)是一種生成熱力圖的技術,用於突出圖像的類的特定區域。微信

熱力圖效用網絡

下面是一個典型的熱力圖:post

圖片來源:https://github.com/jacobgil/pytorch-grad-cam學習

這張圖片中,一隻貓被紅色高亮顯示爲「貓」類,表示網絡在進行分類判斷時正在查看正確位置。this

視覺化神經網絡正在查看的位置大有用處,由於它幫助咱們理解神經網絡是否在查看圖像的適當部位,或者神經網絡是否在進行誤導。下列是一些神經網絡在作分類決判斷時可能進行誤導和錯誤查看位置的例子:人工智能

· 卷積神經網絡將一張圖片分類爲「火車」,而實際上它是在尋找「火車軌道」(這意味着它會錯誤地將一張火車軌道圖片單獨分類爲「火車」)。spa

· 卷積神經網絡將x光胸片分類爲「高患病概率」,依據的不是疾病的實際表現,而是放在病人左肩上的金屬「L」標記。重點是,這個「L」標記只有在病人躺下的時候纔會被直接放在病人的身體上,而病人也只有虛弱到沒法忍受纔會躺下接受x光檢查。3d

參考: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特徵圖。在這個示意圖中,對於特徵映射A一、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/

僅看「貓」輸出類上,有三個權重,w一、w2和w3,這三個權重將全局池化輸出鏈接到「貓」輸出節點。使用上圖所示的方程爲"貓"類生成一個分數y^貓,對應於y^貓 = (w1)(紅色)+ (w2)(綠色)+(w3)(藍色)。

類激活映射

如今完成了整個類激活映射結構,從輸入圖像到分類數。最後一步是獲得類激活映射可視化熱力圖,步驟以下:

這看起來很像計算y^貓分數的方法,但不一樣之處在於,咱們不是將權重w一、w2和w3乘以特徵圖Ak上的全局池化層生成的單個數字,而是直接將權重乘以特徵圖。所以,雖然分數的輸出是數字,可是類激活映射實際輸出的是數字網格。而這個數字網格就是熱力圖!

總結

下面是一頁草圖,總結了整篇類激活映射論文:

留言 點贊 關注

咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」

(添加小編微信:dxsxbb,加入讀者圈,一塊兒討論最新鮮的人工智能科技哦~)

相關文章
相關標籤/搜索