圖/文 歐尼克斯實境互動工作室 許哲豪 2020/9/10
卷積神經網路(Convolutional Neural Network, CNN) 在人工智慧中的影像分類、物件偵測等項目的優異表現已是眾所皆知了,但其背後複雜的模型(網路)結構及龐大參數量(權重值)究竟提供何種作用,一直都令人費解,無人不想了解這個神祕的黑箱。在上一期「如何利用可視化工具揭開神經網路背後的祕密(上)」[1]中已幫大家介紹了分層特徵圖(Layer Feature Maps)、敏感度分析(Sensitivity Analysis, SA)、有向非循環圖 (Directed Acyclic Graph, DAG)及反卷積網路(Deconvolution Network, DeconvNet)等四種可視化工具。這一期要接著為大家介紹CAM家族的四大常見可視化工具,包括:
- 類別活化映射(Class Activation Mapping, CAM)
- 梯度加權類別活化映射(Gradient-weighted CAM, Grad-CAM)
- 梯度加權類別活化映射改良(Grad-CAM++)
- 分數加權類別活化映射(Score-CAM)
類別活化映射(Class Activation Mapping, CAM)
一般常見的卷積神經網路最簡單的架構如Fig. 1所示,會由輸入層、多組卷積(Convolution)層及池化(Pooling)層、扁平化(Flatten)層、全連結(Full-Connection)層及最後的輸出層組成。而卷積層會產出許多特徵圖(Feature Maps),用來提取各個類別所需特徵元素,且其中隱含了空間資訊。但到了扁平化和全連結層時就失去空間概念,其輸出轉而變成是不同特徵元素的比重的加總。於是Zhou, Bolei等人提出類別活化映射(Class Activation Mapping, CAM)[2],將最後一個卷積層之後使用全域平均池化(Global Average Pooling, GAP)換掉全連結層,再依不同輸出節點,將所有GAP乘上一組特定的比重值並將其所有輸出疊合在一起,即可得到類似熱力圖(Heatmap)的CAM結果圖,如Fig. 2上圖所示。如此不僅可以保留卷積核所隱含對空間的資訊,同時大幅減少全連結層的參數量及計算量。
CAM在使用前仍需使用正常的網路將所有的參數訓練完成,最後才能拆掉後幾層加入GAP重新訓練最後的權重,因此使用上略為麻煩些。但其好處是沒有全連結層,輸入影像尺寸較不受限制,亦較不會產生過擬合現象。另外在[2]文中亦有比較不同深度及架構的模型在CAM上的表現,如Fig. 2下圖所示,不同的模型所表現出來的結果不盡相同。而CAM產生熱點通常僅會佔物件較重要的一部份,而非全部,也非精細的邊界分割,因此使用上僅能提供大致上的物件偵測及定位。
梯度加權類別活化映射(Gradient-weighted CAM, Grad-CAM)
從前面CAM的結果來看,已可大致了解到訓練完的模型參數是否有命中待偵測的物件及關注的重點,但CAM最大缺點就是要把模型拆掉重新計算GAP,還要重新訓練新加入的權重值,因此Selvaraju, Ramprasaath R.等人提出梯度加權類別活化映射(Gradient-weighted Class Activation Mapping, Grad-CAM)[3]加以改善,不管卷積層後方接的是全連結層,還是RNN, LSTM或是其它不同型態的網路,不需修改網路,就可得到Grad-CAM所產出的熱力圖(Heatmap),而其中和CAM最重要的差別就是直接以輸出層輸出和卷積層的輸出進行梯度計算代替CAM中的權重值W,即反向傳播(Back Propagation, BP)所得的值,如Fig. 3上圖所示。
另外為了更加強細部的表現,可再加入導向反向傳播(Guided Back Propagation)結果影像,令其和原產出之Grad-CAM結果影像相乘,如此就可得到更高解析度及定位精度的熱力圖結果影像,如Fig. 3下圖所示。當然這種算法也是有缺點的,當影像中出現多個同類物件時,就會較無法正確定位或只能定位出部份物件。
梯度加權類別活化映射改良版(Gradient-weighted CAM++, Grad-CAM++)
為了解決Grad-CAM在影像中有多同類物件無法順利定位問題,Aditya Chattopadhyay等人提出了「Grad-CAM++」[4]進行改良。其最主要貢獻在於引入輸出梯度對於特定位置的像素級別加權,用以確保每個像素在特微圖上的重要性衡量。由Fig. 4上圖中可看出CAM, Grad-CAM及Grad-CAM++分別用了不同的權重W計算方法,而後兩者同樣不需拆解原模型重新訓練,只須利用梯度變化(或者說反向傳播值)當成權重即可。
在這篇論文[4]中除了改善Grad-CAM的問題外,在主觀人眼評價可視化效果也獲得不錯成果,同時更提出一些客觀衡量方式以增加可靠度。從Fig. 4下圖大致可看出,Grad-CAM++明顯改善了同一影像中多個相同物件的辨別能力。
分數加權類別活化映射(Score-CAM)
在前面提的Grad-CAM及Grad-CAM++主要是透過梯度方式求得權重W,Haofan Wang等人提出另一種思路,捨棄梯度,改以置信度評分(分數加權)方式做為合成顯著圖(Saliency Map)依據,稱之為Score-CAM [5]。
如Fig. 5上圖Phase 1所示,首先將輸入影像送進模型中進行推論,取得各層特徵圖並將其進行上採樣(Upsampling)結果放大至輸入圖像原尺寸。接著進行Phase 2,把這些上採樣後的影像當成遮罩(Mask)和輸入影像進行點運算,保留可能是指定物件的區域,再進行推論得到最後分類結果輸出,即得到每一類別的置信度分數,用以取代梯度法的權重值(W)。最後再將其和Phase 1輸出的特徵圖做線性組合(累積乘加結果)即可得最後的輸出顯著圖。
從Fig. 5 下圖所示,可看出各種梯度法產生的顯著圖都存在著大量雜訊,而Score-CAM則略勝一籌,明顯乾淨許多,同時對二個以上相同分類物件也能較其它方法來的理想,這對後續想繼續作為影像分割的種子或其它應用是很重要的。
小結
經過上、下兩篇共八種卷積神經網路可視化工具的介紹,相信大家對於理解神經網路究竟學到什麼應該有些初步認識。目前雖然這些方法仍不足夠解釋所有的問題,且離傳統機器學習中的決策樹或支持向量機具有清楚可解釋性還有很長一段距離,相信未來會有更多可解釋性的人工智慧(Explainable AI, XAI)技術產生,屆時人工智慧就不再是黑箱作業了。
*本文同步發行於歐尼克斯實境互動工作室部落格(https://omnixri.blogspot.com)及AI HUB(https://aihub.org.tw),歡迎連結至AI HUB網站【社群互動】下【AI技術交流區(https://platform.aihub.com.tw/specialist)】瀏覽更多精采文章*
參考文獻
[1] 許哲豪,”如何利用可視化工具揭開神經網路背後的祕密(上)”
https://aihub.org.tw/platform/specialist/article/93c294a8-ebc1-11ea-ab40-0242ac120002
[2] Zhou, Bolei, et al. "Learning deep features for discriminative localization."
http://cnnlocalization.csail.mit.edu/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf
[3] Selvaraju, Ramprasaath R., et al. "Grad-CAM: Visual explanations from deep networks via gradient-based localization."
https://arxiv.org/abs/1610.02391
[4] Aditya Chattopadhyay, et al. "Grad-CAM++: Improved Visual Explanations for Deep Convolutional Networks"
https://arxiv.org/abs/1710.11063
[5] Haofan Wang, el al. "Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks"
https://arxiv.org/abs/1910.01279
沒有留言:
張貼留言