模型可視化十分重要,前文我們介紹了 CAM ,但是 CAM 本身存在一些限制,Grad CAM 作為 CAM 的擴充技術可以在限制更寬泛的條件下使用,本文介紹 Grad CAM。
簡介
- CAM 系列工作要解決的問題是網絡中的隐藏層特征的可視化,CAM 可以将模型中 F -> GAP -> MLP
- 但是 CAM 技術嚴格要求網絡最後一層為 MLP ,并且在實作時需要修改網絡結構,這限制了可視化的需求應用場景
Grad CAM
實作方法
- 假設模型特征層 A \in R^{W \times H \times C},經過 GAP 層後的特征 F^k,K \in {1,2,…,C },也就是有:
F^{k}=\frac{1}{Z} \sum_{i} \sum_{j} A_{i j}^{k}
- 設第 c 類的分類得分為 S_{c}, \mathrm{GAP} 的權重為 w_{i}^{c} ,特征圖大小為 c_{1} * c_{2}, Z=c_{1} * c_{2} ,第 i 個特征圖第 k 行第 j 列的像素值為 A_{k j}^{i} ,計算:
\alpha_{i}^{c}=\frac{1}{Z} \sum_{k=1}^{c_{1}} \sum_{j=1}^{c_{2}} \frac{\partial S_{c}}{\partial A_{k j}^{i}}
- Grad-CAM的Class Activation Mapping計算方式如下:
L_{\text {Grad-CAM }}^{c}=\operatorname{ReLU}\left(\sum_{i} \alpha_{i}^{c} A^{i}\right)
- 之是以使用ReLU激活函數,是因為我們隻關注對于類别有關的區域,即特征圖取值大于0的部分。
論文描述對 CAM 的擴充
論文中認為 Grad CAM 是對 CAM 的泛化擴充,讨論了Grad-CAM和類激活映射(CAM)之間的聯系,并正式證明Grad-CAM可以将CAM推廣到各種基于CNN的體系結構中。
- 具體地說,倒數第二層輸出了 K 個特征圖, A^{k} \in R^{u \times v} ,每個元素的下标為(i,j),比如 A_{i j}^{k} 。然後使用全局平均池化 (GAP) 在空間上對這些特征圖進行池化,并對其進行線性變換以 生成每個類c的得分 Y^{c} 。
- 定義 F^{k} 為全局平均池化的輸出:
F^{k}=\frac{1}{Z} \sum_{i} \sum_{j} A_{i j}^{k}
- CAM是計算最後的分數:
Y^{c}=\sum_{k} w_{k}^{c} \cdot F^{k}
- 其中 w_{k}^{c} 是将第 \mathrm{k} 個特征圖與第c個類連接配接的權重。取c類 \left(Y^{c}\right) 的分數相對于特征圖 F^{k} 的梯度,我們得到:
\frac{\partial Y^{c}}{\partial F^{k}}=\frac{\frac{\partial Y^{c}}{\partial A_{i j}^{k}}}{\frac{\partial F^{k}}{\partial A_{i j}^{k}}}
- 關于 A_{i j}^{k} 的梯度記為 \frac{\partial F^{k}}{\partial A_{i j}^{k}}=\frac{1}{z} ,得到:
\frac{\partial Y^{c}}{\partial F^{k}}=\frac{\partial Y^{c}}{\partial A_{i j}^{k}} \cdot Z
- 得到 \frac{\partial Y^{c}}{\partial F^{k}}=w_{k}^{c} ,推出:
w_{k}^{c}=Z \cdot \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
- 因為Z和w權重和坐标無關,化簡為:
Z w_{k}^{c}=Z \sum_{i} \sum_{j} \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
- Z為像素點總數或者記為1,重寫到:
w_{k}^{c}=\sum_{i} \sum_{j} \frac{\partial Y^{c}}{\partial A_{i j}^{k}}
- 在可視化過程中,比例常數 \frac{1}{Z} 被标準化, w_{k}^{c} 的表達式與Grad-CAM使用的 \alpha_{k}^{c} 相同
- 是以論文認為,Grad-CAM是CAM的一種概括
其他角度了解 Grad CAM
該方法作為 CAM 的擴充,為可用性場景和實作方式上都提供了更大的友善,但是我們(由 華哥
率先提出)認為結果的可靠性和有效性是建立在一些條件基礎之上的,而且理論來源也沒有十分明确
- 也就是說論文提出一種新的梯度求取 CAM 特征圖的計算方法,該方法可以收納 CAM 為一種特殊情況,是以 Grad CAM 是CAM的擴充,我們覺得并不十分符合邏輯,确實 CAM 是此種 Grad CAM 計算方法的特殊情況,但是這個 Grad CAM 方法本身的合理性或理論依據沒有充分說明
- 至于使用 ReLu 激活更是神奇,CAM 貌似就沒使用特定的激活函數,因為理論上沒有問題
- 我們提出一種了解 Grad CAM 的方式,回到 CAM ,方法合理的核心是 GAP 層與 MLP 層都是線性操作,二者交換不影響結果,再加上 CNN 網絡結構中特征位置與輸入圖像位置有較強的相關性,CAM 熱力圖才可以作為模型可視化的參考
- 延續線性操作可交換的思想考慮 Grad CAM,需要解決的問題是 GAP 層後面的特征處理不再局限為 MLP,需要面對的是更為一般的 y^c = f(F) ,而這個f(F) 函數很可能不是線性操作,那麼我們如果直接強行交換 GAP 和 f(F) 的位置看到的結果不那麼有說服力和參考價值
- 為了解決 f(F) 非線性的問題,我們可以将 f(F) 在 F_0 (目前圖像計算得到的 F 處的特征)處進行泰勒展開:
f(F)=f(F_0)+(F-F_0)f’(F_0)+o((F-F_0)^2)
其中 o((F-F_0)^2) 為二階無窮小量
- 如果略去無窮小量,将 f(F) 用一階泰勒展開近似的話,可以得到:
f(F) \approx f(F_0)+(F-F_0)f’(F_0)
- 而這種一階近似後,f’(F_0) 為确定的向量,f(F) 在 F_0 鄰域小範圍内可以近似為線性操作,是以泰勒一階近似後的f(F) 可以與 GAP 交換而不改變結果,才使得 Grad CAM 有可能成功地使模型可視化
- 那麼按照這個思路推導下去 Grad CAM 會變成什麼樣呢 顯然有 f(F_0)=Y^c
- 也就是說此種情形下的 Grad CAM 不但有 \frac{\partial Y^{c}}{\partial F^{k}}=w_{k}^{c} ,而且應該還有偏置項:
$$ b^c_k=Y^c-\frac{\partial Y^{c}}{\partial F^{k}}F_0 $$
- 當f(F) 函數為線性權重操作,即該層網絡結構為全連接配接層時:
$$ \frac{\partial Y^{c}}{\partial F^{k}}F_0=Y^c $$
- 進而得到在 CAM 的條件下偏置項正好為 0,我們是以才認為 Grad CAM 是 CAM 的擴充
- 一般的 Grad CAM 計算特征X \in R^{1 \times 1 \times C}的熱力圖時需要計算:
此處和論文中的計算方法有些出入,供大家參考,如有錯誤煩請指正
Grad CAM 的限制
Grad CAM 帶來了使用範圍的拓展,相應的會承受相關的代價
- 首先 Grad CAM 有着和 CAM 類似的使用條件限制:
- 天然使用于 CNN 結構,特征圖與原始圖像位置具有較強的相關性(Transformer 結構無法直接使用 CAM)
- 依賴 GAP 層,一個尺寸方向的線性 Pooling 操作
- 擴充的限制條件為不再強求最後的層為 MLP
- 而代價也是存在的,沿用我們的梯度線性操作近似理論,隻有 F_0 周圍的小鄰域空間近似線性,誤差較小
- 那麼用于計算熱力圖的特征 X 距離 F_0 越遠那麼結果可能越不可靠,是以 GAP 層前的特征越趨于平穩 Grad CAM 越可信
原始論文
- arxiv 連結:https://arxiv.org/abs/1610.02391
參考資料
- https://blog.csdn.net/dhaiuda/article/details/102937760
- https://zhuanlan.zhihu.com/p/269589676?utm_source=wechat_session