CNN 可視化技術總結(三):類可視化

2021-03-01 AI有道

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

    然而,上次我在知乎看到一個通過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的最大特點就是不再需要修改現有的模型結構了,也不需要重新訓練了,直接在原模型上即可可視化。

原理:同樣是處理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:Grad-CAM:  https:Grad-CAM++:  https:

參考論文:

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

重磅

AI有道年度技術文章電子版PDF來啦!

掃描下方二維碼,添加 AI有道小助手微信,可申請入群,並獲得2020完整技術文章合集PDF(一定要備註:入群 + 地點 + 學校/公司。例如:入群+上海+復旦。 

長按掃碼,申請入群

(添加人數較多,請耐心等待)

感謝你的分享,點讚,在看三  

相關焦點

  • CNN 可視化技術總結(二):卷積核可視化
    上篇文章我們介紹了特徵圖可視化方法,對於特徵圖可視化的方法(或者說原理)比較容易理解,即把feature map從特徵空間通過反卷積網絡映射回像素空間。    那捲積核怎樣可視化呢,基於什麼原理來可視化?卷積核的尺寸一般只有3x3, 5x5大小,如何可視化?本文將介紹這個兩個內容。
  • CNN 模型的可視化
    大家都了解卷積神經網絡 CNN,但是對於它在每一層提取到的特徵以及訓練的過程可能還是不太明白,所以這篇主要通過模型的可視化來神經網絡在每一層中是如何訓練的。我們知道,神經網絡本身包含了一系列特徵提取器,理想的 feature map 應該是稀疏的以及包含典型的局部信息。
  • 【深度】Deep Visualization:可視化並理解CNN
    其中一個工作就是今天我們討論的重點:可視化CNN模型,這裡的可視化指的是可視化CNN模型中的卷積核。可視化工作分為兩大類,一類是非參數化方法:這種方法不分析卷積核具體的參數,而是先選取圖片庫,然後將圖片在已有模型中進行一次前向傳播,對某個卷積核,我們使用對其響應最大的圖片塊來對之可視化;而另一類方法著重分析卷積核中的參數,使用參數重構出圖像。
  • CNN的一些可視化方法
    其次,現在也已經有很多方法對神經網絡進行分析了,特別是一些可視化方法,可以很直觀的展示深度模型的特徵提取過程。對神經網絡進行可視化分析不管是在學習上還是實際應用上都有很重要的意義,基於此,本文將介紹以下3種CNN的可視化方法:可視化中間特徵圖這種方法很簡單,把網絡中間某層的輸出的特徵圖按通道作為圖片進行可視化展示即可,如下述代碼所示:import
  • CNN的一些可視化方法!
    其次,現在也已經有很多方法對神經網絡進行分析了,特別是一些可視化方法,可以很直觀的展示深度模型的特徵提取過程。對神經網絡進行可視化分析不管是在學習上還是實際應用上都有很重要的意義,基於此,本文將介紹以下3種CNN的可視化方法:可視化中間特徵圖這種方法很簡單,把網絡中間某層的輸出的特徵圖按通道作為圖片進行可視化展示即可,如下述代碼所示:import
  • CNN 的一些可視化方法
    其次,現在也已經有很多方法對神經網絡進行分析了,特別是一些可視化方法,可以很直觀的展示深度模型的特徵提取過程。對神經網絡進行可視化分析不管是在學習上還是實際應用上都有很重要的意義,基於此,本文將介紹以下3種CNN的可視化方法:可視化中間特徵圖這種方法很簡單,把網絡中間某層的輸出的特徵圖按通道作為圖片進行可視化展示即可,如下述代碼所示:import
  • 數據可視化:常用圖表使用總結
    文章對常見的數據可視化圖表進行了簡單的匯總分析,希望對你有益。什麼是數據可視化?數據可視化,簡簡單單就是把數據展示出來嗎?非也非也,其終極是為了滿足用戶對數據的價值期望,利用數據,藉助可視化工具,還原和探索數據隱藏價值,描述數據世界。(⊙o⊙)…還是說人話吧,就是以下兩步。分析需求,熟悉數據,制定目標。
  • 數據可視化基本套路總結
    文章總結了多種數據可視化圖形,並簡要介紹了各種圖形的作用,能為科研工作者在數據可視化階段提供新的思路,在此分享給大家。本文旨在總結數據可視化基本套路,理解了本文的內容,就算不能在數據可視化比賽中拿獎,應付日常工作應該也夠了。熟悉了套路怎麼看,再結合專業知識,就可以解釋可視化結果了。
  • 【深度學習系列】CNN模型的可視化
    通過模型可視化能有一些直觀的認識並幫助我們調試模型,比如:feature map與原圖很接近,說明它沒有學到什麼特徵;或者它幾乎是一個純色的圖,說明它太過稀疏,可能是我們feature map數太多了(feature_map數太多也反映了卷積核太小)。可視化有很多種,比如:feature map可視化、權重可視化等等,我以feature map可視化為例。
  • ECharts數據可視化:從0到1的蛻變(內部技術分享總結)
    考慮到讓更多的小夥伴對數據可視化有個全新的認識,以及感興趣參與動手開發屬於自己的炫酷作品,小編加班加點趕出這邊文章,希望對大家有所幫助。主題內容從三個方面進行闡述What?數據可視化科普百度百科數據可視化(Data visualization)是關於數據視覺表現形式的科學技術研究。
  • 思維可視化的四類模型
    除非在這漫無目的的腦力激蕩中,你產生了讓自己信服的idea,否則你很難記住自己都想了什麼,所以大部分人這種碎片化的時間,都是毫無價值的浪費了。邏輯好的人,往往善於歸納總結,把複雜包裹起來,把整理後的閃光點暴露出來,就像集線器,把各種線索都收納到盒子裡,把重要的插頭暴露出來。領導講話,都喜歡講3點。這並不是信手拈來那麼簡單,這需要提前做好充沛的準備。
  • 大屏數據可視化規範總結
    最近關於大屏的項目做的比較多,目前手頭項目結束,有時間將內容整理分享,基於目前手上的某省監獄項目做可視化大屏規範分享希望能對大家有所幫助。大屏數據可視化概念數據可視化,是關於數據視覺表現形式的科學技術研究。
  • 數據可視化與信息可視化怎麼搞?
    可視化作為解決這問題的有效手段,通過視覺的方式讓數字易於理解。本文梳理了可視化相關內容,並且根據數據平臺組同仁們在可視化項目過程中使用經驗,總結一些可視化使用注意事項,與大家分享。數據可視化和信息可視化都是可視化的一種方式,數據可視化將資料庫中每一個數據項作為單個圖元元素表示,大量的數據集構成數據圖像,同時將數據的各個屬性值以多維數據的形式表示,可以從不同的維度觀察數據,從而對數據進行更深入的觀察和分析。信息可視化,旨在把數據資料以視覺化的方式表現出。信息可視化是一種將數據與設計結合起來的圖片,有利於個人或組織簡短有效地向受眾傳播信息的數據表現形式。
  • 關注可視化文本分析中的技術優勢——基於全國教育科學規劃教育技術類課題的命題分析
    進行文本可視化分析操作時,需根據研究對象的特徵,選擇恰當的工具,從原始材料中抽取文本的特徵屬性或元數據,在合適的視覺編碼描繪和概括文本內容、結構、關係等基礎上,與用戶互動,揭示文本信息的特徵和規律。已有研究表明,藉助技術在計算和可視化上的能力,可視化文本分析技術可以彌補人工分析時存在的耗時長、主觀性強等問題,提升文本信息處理與理解的效率,深入探察數據中隱藏的特徵、關係和模式。
  • 可視化發展年度報告 | ChinaVIS 2020特別專題
    最後一部分研究自然語言技術支持的交互及其它多模態交互,以及圖表問答。沉浸式可視化(巫英才)來自浙江大學的巫英才教授總結了沉浸式可視化的相關工作。可視化是通過交互進行推理分析的科學,現有的大多數可視化以鍵盤滑鼠為交互設備,而隨著沉浸式設備的普及就使得沉浸式可視化從科幻走向了現實。
  • 資源| MIT提出Matlab插件mNeuron:實現深度模型神經元的可視化
    項目連結:http://vision03.csail.mit.edu/cnn_art/?utm_content=buffer2ff9c&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer內容代碼:通過反向傳播優化可視化從深度學習工具包中訓練的神經元 [支持 Caffe 和 matconvnet]演示:可視化單個神經元可視化單個神經元模式類內變體
  • 數據可視化,請回答2018之可視化乾貨推薦
    The Weather Channel預計在2020年,能夠用AR技術展示80%的天氣播報。(地理課代表劃重點:同理海陸熱力差)這些Geek你得認識Topi Tjukanov芬蘭的地理學家Topi供職於環境部門,閒來無事,他喜歡用QGIS等軟體來製作地圖類作品,例如,他想知道:從城市中心開車一小時,能到哪裡?
  • 可視化設計的精髓之——數值可視化(上)
    數值可視化的本質就是用各種視覺屬性來表達數據值的大小。視覺屬性有這麼幾類:位置、長短、面積、顏色。對應視覺設計的點,線、面和色值。在此部分,我們介紹各種類圖表時,只介紹最基礎的圖標。其他的很多種形態各異的圖表都可以圍繞基礎的圖片進行變化,我們將在後面的章節展開介紹。1.
  • 人工智慧黑盒揭秘:深度神經網絡可視化技術
    本段分析了幾種典型深度神經網絡可視化技術,詳盡展示了前沿的可視化原理以及解釋性效果。從 CNN 被大規模研究使用以來,學者們持續不斷的探索可以理解和解釋 CNN 的方法,其中可視化技術被證明是解釋 CNN 內部結構最有效的方法之一。CNN 可視化技術包括,獨立單元激活的可視化,圖案和區域生成法,維度縮減空間表示法等。
  • CNN卷積特徵的可視化
    向AI轉型的程式設計師都關注了這個號👇👇👇機器學習AI算法工程  公眾號: datayx loveai.techAI圖譜,一個全新的IT技術分享社區本文主要是實現了一個簡單的卷積神經網絡,並對卷積過程中的提取特徵進行了可視化.