1. 程式人生 > >Grad-CAM:Visual Explanations from Deep Networks via Gradient-based L閱讀筆記-網路視覺化NO.3

Grad-CAM:Visual Explanations from Deep Networks via Gradient-based L閱讀筆記-網路視覺化NO.3

Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 閱讀筆記

這是網路視覺化的第三篇,其餘兩篇分別是:

①《Visualizing and Understanding Convolutional Networks》閱讀筆記-網路視覺化NO.1
②《Learning Deep Features for Discriminative Localization》閱讀筆記-網路視覺化NO.2
歡迎大家批評指正,留下寶貴意見

  • 綜述:
     1)paper中華提出了一種新的視覺化CNN的方法-Gradient-weighted Class Activation Mapping (Grad-CAM),可以說是CAM的升級版
     2)Grad-CAM可適用於任何網路結構,省去了修改網路結構並訓練的煩惱,一定程度上是對CAM的泛化
     3)使用此種結構,可以應用到以下幾個問題中:
     3.1)之前的CAM必須對包含多層的FC進行修改(使用GAP進行替換),而Grad-CAM則不必修改網路,從而避免了一些麻煩
     3.2)可用於結構化輸出,such as captioning(這一塊還不是很瞭解)
     3.3)可用於視覺問題解答或者增強學習中
     4)有關CAM的介紹,可以參閱
    《Learning Deep Features for Discriminative Localization》這篇論文的閱讀筆記
  • 對於網路視覺化,我們可以採用兩種方式:
     1)deconvnet(反捲積)
     2)guided-backpropagation(導向反向傳播)
     這兩種方式在一定程度上幫助我們理解在CNN中
     反向傳播(backpropagation)/反捲積(deconvnet)/導向反向傳播(guided-backpropagation)這三者究竟有什麼區別???
      反捲積和導向反向傳播的基礎是反向傳播,就是對梯度進行求導,然後更新我們的引數,就是學習的過程,具體見paper
    ,論文中有一張圖十分清楚的對比了正向傳播/反向傳播/反捲積/導向反向傳播,4者不同之處主要體現在經過ReLU時對梯度的選擇性,見下圖:
      這裡寫圖片描述
      注:圖中粗略解釋了幾者的區別,雖說區別並不大,只是經過ReLU時對梯度的取捨方式不同,但這微小的改變卻使得視覺化的效果大有不同
  • paper中舉了一個小demo,使用Grad-CAM的效果如下:
     這裡寫圖片描述
     注:這樣的結果十分符合我們人眼的觀測效果,當我們說一張圖中有一條狗狗的時候,也主要依靠狗狗的頭部進行判別,貓咪也是如此。
  • 實現方法:
     1)在CAM中,我們根據最後一層的FC學到的權重作為對應feature map的權重,而後upsampling到原畫素空間,看起來利索應當,但當我們在最後一次適用conv之後,得到對應的feature map,之後多次使用FC,我們如何計算feature map對應的權重呢?
     這裡有一個小問題,我們為什麼使用conv階段最後一次得到的feature map呢?因為最後一次conv得到的feature map是前面多次conv+ReLU+pooling的結果,具有最強的空間資訊和語義資訊,隨後的FC和softmax所提取的資訊已經很難理解,所以我們若想實現CNN的視覺化,必須好好利用最後一次conv得到的feature map。
     下面開始我們的計算過程:

    接下來我們言歸正傳,如何計算我們經過FC之後的feature map權重呢?計算公式如下:

    αkc=1ZiwjhycAijk
     其中αkc代表針對類C,第k個feature map的權重,Z代表feature map的大小,w,h分別代表feature map的寬度和高度,yc代表未經過softmax之前時類C的得分,Aijk代表第k個feature map中位置(i,j)的啟用值。
    由此我們得到了類C的Grad-CAM,如下:LGradCAMc=ReLU(αkcAk)
     此處我們為何進行ReLU運算呢?因為在我們的Grad-CAM中,我們只關注那些對預測結果起到positive influence on the class,倘若出現了negative則直接將其過濾掉。
    由此我們得到了類C的得分,如下:Sc=kKαkc1ZiwjhAi,jk
     其中αkc代表第k個feature map對類C的權重,iwjhAi,jk代表第k個feature map

    整體結構如下所示:
    這裡寫圖片描述
    注:paper中還強調Grad-CAM視覺化方法不僅僅可用於一般的影象分類網路的視覺化、輸出結構化網路的視覺化還可用於視覺問答網路的視覺化等等

  • Guided Grad-CAM(導向反向傳播和Grad-CAM的結合)
     1)問題:雖然Grad-CAM可以很好的類別判別能力,也可以將相關區域定位出來,但是其不具備畫素空間梯度視覺化(比如導向反向傳播和反捲積這種細粒度重要性視覺化)的方法
     2)解決問題:
      2.1)首先對影象使用插值法進行上取樣
      2.2)然後將導向反向傳播和Grad-CAM結合起來,實現視覺化
  • 實驗
     1)首先進行了定位實驗
      我們首先在ImageNet資料集上進行預測,然後獲取對應的Grad-CAM,選擇最大啟用值得15%作為threshold,畫出bounding box,結果如下:
      這裡寫圖片描述
      注:paper中解釋到,在物體定位實驗中,Grad-CAM取得了較好的實驗效果;但在分類實驗中,由於修改了網路結構,致使分類效能下降了2.98%
     2)之外還做了一些其他實驗,有時間了會補充上,再和大家一起交流

*作者:gengmiao 時間:2018.02.19,原創文章,轉載請保留原文地址、作者等資訊*