下面的內(nèi)容大多是結(jié)合其它的博客的內(nèi)容和自己的理解進(jìn)行整理,加深自己的理解和方便查詢,沒有貼上原來(lái)博客的地址,如果有雷同,我不是故意的,希望見諒!
細(xì)粒度圖像分類的難點(diǎn)包括兩個(gè)方面:準(zhǔn)確定位到具有分辨力的關(guān)鍵區(qū)域,以及從檢測(cè)到的關(guān)鍵區(qū)域中提取有效特征進(jìn)行分類。關(guān)于區(qū)域定位主要有兩種方法:監(jiān)督式和非監(jiān)督式,監(jiān)督式即對(duì)訓(xùn)練數(shù)據(jù)標(biāo)注bounding box信息,而非監(jiān)督式是通過網(wǎng)絡(luò)去學(xué)習(xí)這些區(qū)域的信息,訓(xùn)練數(shù)據(jù)沒有bounding box信息。這里需要注意人為標(biāo)定的區(qū)域不一定是最適合模型分類的區(qū)域。
1、Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition(RA-CNN)。
2017年CVPR的文章,本文提出的RA-CNN的網(wǎng)絡(luò)包含三個(gè)scale子網(wǎng)絡(luò),每個(gè)scale子網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)都是一樣的,只是網(wǎng)絡(luò)參數(shù)不一樣,每個(gè)scale子網(wǎng)絡(luò)又包含兩種類型的網(wǎng)絡(luò):分類網(wǎng)絡(luò)和APN網(wǎng)絡(luò)。輸入圖像通過分類網(wǎng)絡(luò)進(jìn)行特征提取并分類,然后APN網(wǎng)絡(luò)基于提取到的特征進(jìn)行訓(xùn)練得到attention區(qū)域信息,再將attention區(qū)域裁剪出來(lái)并放大,作為第二個(gè)scale網(wǎng)絡(luò)的輸入,重復(fù)進(jìn)行三次就得到了三個(gè)scale網(wǎng)絡(luò)的輸出結(jié)果,最后將三個(gè)scale網(wǎng)絡(luò)的結(jié)果進(jìn)行融合得到輸出。
亮點(diǎn)1:多scale網(wǎng)絡(luò)可以在訓(xùn)練的過程中逐漸聚焦到關(guān)鍵區(qū)域;
亮點(diǎn)2:針對(duì)分類網(wǎng)絡(luò)和APN網(wǎng)絡(luò)設(shè)計(jì)兩個(gè)loss(softmax loss + ranking loss),通過固定一個(gè)網(wǎng)絡(luò)的參數(shù)訓(xùn)練另一個(gè)網(wǎng)絡(luò)的參數(shù)達(dá)到交替訓(xùn)練的目的;
亮點(diǎn)3:不需要bounding box的標(biāo)注信息。

Task1:p(X) = f(Wc ? X)
Task2:[tx,ty,tl]=g(Wc ?X)
其中Wc為(b1)或(b2)或(b3)的網(wǎng)絡(luò)參數(shù),即卷積層、池化層和激活層的集合,用來(lái)從輸入圖像中提取特征,Wc*X就是最后提取到的特征。然后f()函數(shù)(task1)是全連接層和softmax層,用來(lái)將學(xué)習(xí)到的特征映射成類別概率,也就是p(X)。g()函數(shù)也就是APN網(wǎng)絡(luò)(task2)可以用兩個(gè)全連接層實(shí)現(xiàn),其中最后一個(gè)全連接層的輸出channel是3,分別對(duì)應(yīng)tx、ty、tl。這里因?yàn)榧僭O(shè)檢測(cè)出來(lái)的區(qū)域都是正方形,所以得到的tx和ty表示區(qū)域的中心點(diǎn)坐標(biāo),tl表示正方形區(qū)域邊長(zhǎng)的一半。
2、Residual Attention Network for Image Classification
具體理解可以參考下面這篇博文,寫的特別詳細(xì)。
https://blog.csdn.net/wspba/article/details/73727469
3、CBAM: Convolutional Block Attention Module
具體理解可以參考下面這篇博文,寫的特別詳細(xì),其他的博客也寫的都是大同小異。
https://blog.csdn.net/u013738531/article/details/82731257
網(wǎng)絡(luò)可視化
1、Visualizing and Understanding Convolutional Networks
綜述:這篇paper是CNN可視化的開山之作(由Lecun得意門生Matthew Zeiler發(fā)表于2013年),主要解決了兩個(gè)問題:
1)why CNN perform so well?
?。玻﹉ow CNN might be improved?
背景介紹:CNN針對(duì)圖像分類問題有著令人驚嘆的效果,2012年的AlexNet(test error:15.3%)碾壓第二名(test error:26.2%),由此CNN如雨后春筍般瘋狂生長(zhǎng),CNN之所以成功主要?dú)w功于三個(gè)方面:①數(shù)以百萬(wàn)計(jì)的帶標(biāo)簽數(shù)據(jù),②強(qiáng)大的GPU計(jì)算能力,③更好的正則化處理 。
提出問題:訓(xùn)練出來(lái)的CNN模型為什么能夠奏效?怎么奏效?這些問題并沒有得到解決。論文介紹了CNN各層到底學(xué)到了原始圖像的什么特征以及這些特征對(duì)最終預(yù)測(cè)結(jié)果的影響力度。
實(shí)現(xiàn):論文以2013年的ZFNet=5層conv+3層FC 為基礎(chǔ),在此基礎(chǔ)上進(jìn)行了略微調(diào)整,并提升了效果。
1)我們都知道ZFNet以conv+ReLU+Maxpooling為主要的實(shí)現(xiàn)方式,“看懂并理解”網(wǎng)絡(luò)就是這個(gè)過程的逆過程,即Unpooling+ReLU+反卷積,下面我們分別進(jìn)行介紹:
2)Unpooling:毫無(wú)疑問,maxpooling是一個(gè)不可逆過程,例如在一個(gè)3*3的pool中,我們選擇9個(gè)元素的最大值進(jìn)而實(shí)現(xiàn)降采樣,我們必然會(huì)損失其他8個(gè)元素的真實(shí)數(shù)據(jù)。實(shí)現(xiàn)過程中,我們需要記錄pool中最大值的位置信息,我們稱之為“Switches”表格,在unpooling過程中,我們將最大值直接放回該位置,將其他位置直接置0;
3)ReLU:在CNN中,我們使用ReLU作為激活函數(shù)是為了修正feature map,使其恒不為負(fù),為了重構(gòu)每一層的輸出,這種約束依然成立,我們繼續(xù)使用ReLU;
4)反卷積:CNN中,上層的輸出與學(xué)習(xí)到的filters進(jìn)行卷積,得到本層的特征,逆過程的實(shí)現(xiàn)就是通過使用相同卷積核的轉(zhuǎn)置,與矯正之后的特征進(jìn)行卷積,從而實(shí)現(xiàn)反卷積。
2、Learning Deep Features for Discriminative Localization
綜述:論文重新審視了global average pooling(GAP),并詳細(xì)闡述了這種pooling方式如何使得CNN具有優(yōu)異的目標(biāo)定位能力
介紹:
1)作者受到NIN、GoogLeNet的啟發(fā),摒棄FC,轉(zhuǎn)而使用GAP,在減少參數(shù)的同時(shí)對(duì)原本的分類效果影響不大;
2)GAP實(shí)際上起到一定正則化的作用,paper在幾種經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)中使用其卷積結(jié)構(gòu),而后+GAP+FC,采用softmax直接預(yù)測(cè)輸出;
3)論文中指出,F(xiàn)C會(huì)導(dǎo)致feature map損失空間位置信息,而GAP則不會(huì)(我的理解是如果在圖像的某一位置有高響應(yīng),則經(jīng)過FC之后,根據(jù)整個(gè)feature并不能分辨出刺激源于左上角還是右下角還是什么其他的地方,而通過GAP就可以,因?yàn)槠浔A袅丝臻g位置信息)
實(shí)現(xiàn):
1)論文使用的NIN和GoogLeNet類似的結(jié)構(gòu),保留卷積結(jié)構(gòu),接上GAP,接上一層FC,直接作為分類預(yù)測(cè)結(jié)果,論文通過將輸出層的權(quán)重投影到feature map上來(lái)識(shí)別圖像區(qū)域的重要性,由此將這種技術(shù)稱為class activation mapping(CAM)
2)具體CAM如何實(shí)現(xiàn)?詳見如下圖:


3、Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization
綜述:
1)paper中提出了一種新的可視化CNN的方法 Gradient-weighted Class Activation Mapping (Grad-CAM),是CAM的升級(jí)版;
2)Grad-CAM可適用于任何網(wǎng)絡(luò)結(jié)構(gòu),省去了修改網(wǎng)絡(luò)結(jié)構(gòu)并訓(xùn)練的煩惱,一定程度上是對(duì)CAM的泛化
3)使用此種結(jié)構(gòu),可以應(yīng)用到以下幾個(gè)問題中:
3.1)之前的CAM必須對(duì)包含多層的FC進(jìn)行修改(使用GAP進(jìn)行替換),而Grad-CAM則不必修改網(wǎng)絡(luò)
3.2)可用于結(jié)構(gòu)化輸出
3.3)可用于視覺問題解答或者增強(qiáng)學(xué)習(xí)中
對(duì)于網(wǎng)絡(luò)可視化,我們可以采用兩種方式:
1)deconvnet(反卷積)
2)guided-backpropagation(導(dǎo)向反向傳播)
反向傳播(backpropagation)/反卷積(deconvnet)/導(dǎo)向反向傳播(guided-backpropagation)這三者究竟有什么區(qū)別?反卷積和導(dǎo)向反向傳播的基礎(chǔ)是反向傳播,就是對(duì)梯度進(jìn)行求導(dǎo),然后更新我們的參數(shù),就是學(xué)習(xí)的過程,下圖十分清楚的對(duì)比了正向傳播/反向傳播/反卷積/導(dǎo)向反向傳播,4者不同之處主要體現(xiàn)在經(jīng)過ReLU時(shí)對(duì)梯度的選擇性:

1)在CAM中,我們根據(jù)最后一層的FC學(xué)到的權(quán)重作為對(duì)應(yīng)feature map的權(quán)重,而后upsampling到原像素空間,看起來(lái)理所應(yīng)當(dāng),但當(dāng)我們?cè)谧詈笠淮问褂胏onv之后,得到對(duì)應(yīng)的feature map,之后多次使用FC,我們?nèi)绾斡?jì)算feature map對(duì)應(yīng)的權(quán)重呢? 這里有一個(gè)小問題,我們?yōu)槭裁词褂胏onv階段最后一次得到的feature map呢?因?yàn)樽詈笠淮蝐onv得到的feature map是前面多次conv+ReLU+pooling的結(jié)果,具有最強(qiáng)的空間信息和語(yǔ)義信息,隨后的FC和softmax所提取的信息已經(jīng)很難理解,所以我們?nèi)粝雽?shí)現(xiàn)CNN的可視化,必須好好利用最后一次conv得到的feature map。
下面開始我們的計(jì)算過程:實(shí)現(xiàn)方法:
1)在CAM中,我們根據(jù)最后一層的FC學(xué)到的權(quán)重作為對(duì)應(yīng)feature map的權(quán)重,而后upsampling到原像素空間,看起來(lái)利索應(yīng)當(dāng),但當(dāng)我們?cè)谧詈笠淮芜m用conv之后,得到對(duì)應(yīng)的feature map,之后多次使用FC,我們?nèi)绾斡?jì)算feature map對(duì)應(yīng)的權(quán)重呢?
這里有一個(gè)小問題,我們?yōu)槭裁词褂胏onv階段最后一次得到的feature map呢?因?yàn)樽詈笠淮蝐onv得到的feature map是前面多次conv+ReLU+pooling的結(jié)果,具有最強(qiáng)的空間信息和語(yǔ)義信息,隨后的FC和softmax所提取的信息已經(jīng)很難理解,所以我們?nèi)粝雽?shí)現(xiàn)CNN的可視化,必須好好利用最后一次conv得到的feature map。
下面開始我們的計(jì)算過程:

整體結(jié)構(gòu)如下圖所示:

Guided Grad-CAM(導(dǎo)向反向傳播和Grad-CAM的結(jié)合)
1)問題:雖然Grad-CAM可以很好的類別判別能力,也可以將相關(guān)區(qū)域定位出來(lái),但是其不具備像素空間梯度可視化(比如導(dǎo)向反向傳播和反卷積這種細(xì)粒度重要性可視化)的方法
2)解決問題:
2.1)首先對(duì)圖像使用插值法進(jìn)行上采樣
2.2)然后將導(dǎo)向反向傳播和Grad-CAM結(jié)合起來(lái),實(shí)現(xiàn)可視化
4、Tell Me Where to Look: Guided Attention Inference Network(GAIN)
這篇文章里用到了Grad-CAM來(lái)得到Attention Map。Grad-CAM是CAM的進(jìn)一步拓展。CAM假設(shè)分類網(wǎng)絡(luò)最后不是用FC而是Global Average Pooling,那么實(shí)際上對(duì)于每一類的響應(yīng)都有一張對(duì)應(yīng)的Feature Map。Feature Map其實(shí)就包含了對(duì)不同位置的響應(yīng)強(qiáng)度。所以給定圖片想要得到針對(duì)某類的Attention Map只要weighted average各個(gè)feature map即可。得到weight的方式很直觀,從最后分類的FC層的參數(shù)就可以得到對(duì)于某一類每個(gè)feature map的權(quán)重。CAM需要網(wǎng)絡(luò)最后有Global Average Pooling,Grad-CAM去掉了這個(gè)限制。






總結(jié):本文通過對(duì)卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法進(jìn)行改進(jìn),使得能夠獲得更好的attention map,因此能夠提升圖像語(yǔ)義分割及物體定位的性能。