下面的內容大多是結合其它的博客的內容和自己的理解進行整理,加深自己的理解和方便查詢龙优,沒有貼上原來博客的地址,如果有雷同事秀,我不是故意的彤断,希望見諒野舶!
細粒度圖像分類的難點包括兩個方面:準確定位到具有分辨力的關鍵區(qū)域,以及從檢測到的關鍵區(qū)域中提取有效特征進行分類宰衙。關于區(qū)域定位主要有兩種方法:監(jiān)督式和非監(jiān)督式平道,監(jiān)督式即對訓練數據標注bounding box信息,而非監(jiān)督式是通過網絡去學習這些區(qū)域的信息供炼,訓練數據沒有bounding box信息一屋。這里需要注意人為標定的區(qū)域不一定是最適合模型分類的區(qū)域。
1袋哼、Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition(RA-CNN)冀墨。
2017年CVPR的文章,本文提出的RA-CNN的網絡包含三個scale子網絡涛贯,每個scale子網絡的網絡結構都是一樣的诽嘉,只是網絡參數不一樣,每個scale子網絡又包含兩種類型的網絡:分類網絡和APN網絡弟翘。輸入圖像通過分類網絡進行特征提取并分類虫腋,然后APN網絡基于提取到的特征進行訓練得到attention區(qū)域信息,再將attention區(qū)域裁剪出來并放大衅胀,作為第二個scale網絡的輸入岔乔,重復進行三次就得到了三個scale網絡的輸出結果,最后將三個scale網絡的結果進行融合得到輸出滚躯。
亮點1:多scale網絡可以在訓練的過程中逐漸聚焦到關鍵區(qū)域;
亮點2:針對分類網絡和APN網絡設計兩個loss(softmax loss + ranking loss),通過固定一個網絡的參數訓練另一個網絡的參數達到交替訓練的目的嘿歌;
亮點3:不需要bounding box的標注信息掸掏。
Task1:p(X) = f(Wc ? X)
Task2:[tx,ty,tl]=g(Wc ?X)
其中Wc為(b1)或(b2)或(b3)的網絡參數鸳君,即卷積層农渊、池化層和激活層的集合,用來從輸入圖像中提取特征或颊,Wc*X就是最后提取到的特征砸紊。然后f()函數(task1)是全連接層和softmax層传于,用來將學習到的特征映射成類別概率,也就是p(X)醉顽。g()函數也就是APN網絡(task2)可以用兩個全連接層實現沼溜,其中最后一個全連接層的輸出channel是3,分別對應tx游添、ty盛末、tl。這里因為假設檢測出來的區(qū)域都是正方形否淤,所以得到的tx和ty表示區(qū)域的中心點坐標悄但,tl表示正方形區(qū)域邊長的一半。
2石抡、Residual Attention Network for Image Classification
具體理解可以參考下面這篇博文檐嚣,寫的特別詳細。
https://blog.csdn.net/wspba/article/details/73727469
3啰扛、CBAM: Convolutional Block Attention Module
具體理解可以參考下面這篇博文嚎京,寫的特別詳細,其他的博客也寫的都是大同小異隐解。
https://blog.csdn.net/u013738531/article/details/82731257
網絡可視化
1鞍帝、Visualizing and Understanding Convolutional Networks
綜述:這篇paper是CNN可視化的開山之作(由Lecun得意門生Matthew Zeiler發(fā)表于2013年),主要解決了兩個問題:
∩访!1)why CNN perform so well?
∨劣俊2)how CNN might be improved?
背景介紹:CNN針對圖像分類問題有著令人驚嘆的效果,2012年的AlexNet(test error:15.3%)碾壓第二名(test error:26.2%),由此CNN如雨后春筍般瘋狂生長续徽,CNN之所以成功主要歸功于三個方面:①數以百萬計的帶標簽數據蚓曼,②強大的GPU計算能力,③更好的正則化處理 钦扭。
提出問題:訓練出來的CNN模型為什么能夠奏效纫版?怎么奏效?這些問題并沒有得到解決客情。論文介紹了CNN各層到底學到了原始圖像的什么特征以及這些特征對最終預測結果的影響力度其弊。
實現:論文以2013年的ZFNet=5層conv+3層FC 為基礎,在此基礎上進行了略微調整膀斋,并提升了效果梭伐。
1)我們都知道ZFNet以conv+ReLU+Maxpooling為主要的實現方式,“看懂并理解”網絡就是這個過程的逆過程概页,即Unpooling+ReLU+反卷積籽御,下面我們分別進行介紹:
2)Unpooling:毫無疑問,maxpooling是一個不可逆過程,例如在一個3*3的pool中技掏,我們選擇9個元素的最大值進而實現降采樣铃将,我們必然會損失其他8個元素的真實數據。實現過程中哑梳,我們需要記錄pool中最大值的位置信息劲阎,我們稱之為“Switches”表格,在unpooling過程中鸠真,我們將最大值直接放回該位置悯仙,將其他位置直接置0;
3)ReLU:在CNN中吠卷,我們使用ReLU作為激活函數是為了修正feature map锡垄,使其恒不為負,為了重構每一層的輸出祭隔,這種約束依然成立货岭,我們繼續(xù)使用ReLU;
4)反卷積:CNN中疾渴,上層的輸出與學習到的filters進行卷積千贯,得到本層的特征,逆過程的實現就是通過使用相同卷積核的轉置搞坝,與矯正之后的特征進行卷積搔谴,從而實現反卷積。
2桩撮、Learning Deep Features for Discriminative Localization
綜述:論文重新審視了global average pooling(GAP)敦第,并詳細闡述了這種pooling方式如何使得CNN具有優(yōu)異的目標定位能力
介紹:
1)作者受到NIN、GoogLeNet的啟發(fā)距境,摒棄FC申尼,轉而使用GAP,在減少參數的同時對原本的分類效果影響不大垫桂;
2)GAP實際上起到一定正則化的作用,paper在幾種經典的網絡結構中使用其卷積結構粟按,而后+GAP+FC诬滩,采用softmax直接預測輸出;
3)論文中指出灭将,FC會導致feature map損失空間位置信息疼鸟,而GAP則不會(我的理解是如果在圖像的某一位置有高響應,則經過FC之后庙曙,根據整個feature并不能分辨出刺激源于左上角還是右下角還是什么其他的地方空镜,而通過GAP就可以,因為其保留了空間位置信息)
實現:
1)論文使用的NIN和GoogLeNet類似的結構,保留卷積結構吴攒,接上GAP张抄,接上一層FC,直接作為分類預測結果洼怔,論文通過將輸出層的權重投影到feature map上來識別圖像區(qū)域的重要性署惯,由此將這種技術稱為class activation mapping(CAM)
2)具體CAM如何實現?詳見如下圖:
3、Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization
綜述:
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)可用于結構化輸出
3.3)可用于視覺問題解答或者增強學習中
對于網絡可視化束倍,我們可以采用兩種方式:
1)deconvnet(反卷積)
2)guided-backpropagation(導向反向傳播)
反向傳播(backpropagation)/反卷積(deconvnet)/導向反向傳播(guided-backpropagation)這三者究竟有什么區(qū)別被丧?反卷積和導向反向傳播的基礎是反向傳播,就是對梯度進行求導绪妹,然后更新我們的參數甥桂,就是學習的過程,下圖十分清楚的對比了正向傳播/反向傳播/反卷積/導向反向傳播邮旷,4者不同之處主要體現在經過ReLU時對梯度的選擇性:
1)在CAM中黄选,我們根據最后一層的FC學到的權重作為對應feature map的權重,而后upsampling到原像素空間婶肩,看起來理所應當办陷,但當我們在最后一次使用conv之后,得到對應的feature map,之后多次使用FC律歼,我們如何計算feature map對應的權重呢民镜? 這里有一個小問題,我們?yōu)槭裁词褂胏onv階段最后一次得到的feature map呢险毁?因為最后一次conv得到的feature map是前面多次conv+ReLU+pooling的結果制圈,具有最強的空間信息和語義信息们童,隨后的FC和softmax所提取的信息已經很難理解,所以我們若想實現CNN的可視化鲸鹦,必須好好利用最后一次conv得到的feature map慧库。
下面開始我們的計算過程:實現方法:
1)在CAM中,我們根據最后一層的FC學到的權重作為對應feature map的權重亥鬓,而后upsampling到原像素空間完沪,看起來利索應當,但當我們在最后一次適用conv之后嵌戈,得到對應的feature map,之后多次使用FC覆积,我們如何計算feature map對應的權重呢?
這里有一個小問題熟呛,我們?yōu)槭裁词褂胏onv階段最后一次得到的feature map呢宽档?因為最后一次conv得到的feature map是前面多次conv+ReLU+pooling的結果,具有最強的空間信息和語義信息庵朝,隨后的FC和softmax所提取的信息已經很難理解吗冤,所以我們若想實現CNN的可視化,必須好好利用最后一次conv得到的feature map九府。
下面開始我們的計算過程:
整體結構如下圖所示:
Guided Grad-CAM(導向反向傳播和Grad-CAM的結合)
1)問題:雖然Grad-CAM可以很好的類別判別能力,也可以將相關區(qū)域定位出來侄旬,但是其不具備像素空間梯度可視化(比如導向反向傳播和反卷積這種細粒度重要性可視化)的方法
2)解決問題:
2.1)首先對圖像使用插值法進行上采樣
2.2)然后將導向反向傳播和Grad-CAM結合起來肺蔚,實現可視化
4、Tell Me Where to Look: Guided Attention Inference Network(GAIN)
這篇文章里用到了Grad-CAM來得到Attention Map儡羔。Grad-CAM是CAM的進一步拓展宣羊。CAM假設分類網絡最后不是用FC而是Global Average Pooling,那么實際上對于每一類的響應都有一張對應的Feature Map汰蜘。Feature Map其實就包含了對不同位置的響應強度仇冯。所以給定圖片想要得到針對某類的Attention Map只要weighted average各個feature map即可。得到weight的方式很直觀族操,從最后分類的FC層的參數就可以得到對于某一類每個feature map的權重苛坚。CAM需要網絡最后有Global Average Pooling,Grad-CAM去掉了這個限制色难。
總結:本文通過對卷積神經網絡的學習方法進行改進棕硫,使得能夠獲得更好的attention map晌涕,因此能夠提升圖像語義分割及物體定位的性能后室。