細(xì)粒度圖像分類學(xué)習(xí)筆記

 下面的內(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)注信息。

RA-CNN網(wǎng)絡(luò)結(jié)構(gòu)圖.png
從圖中可以看到 ,(a1)(a2)(a3)分別表示3個(gè)不同的scale子網(wǎng)絡(luò)(網(wǎng)絡(luò)結(jié)構(gòu)相同,參數(shù)不同),(b1)(b2)(b3)分別表示3個(gè)不同scale子網(wǎng)絡(luò)的卷積層,這些卷積層就是從輸入圖像中提取特征,根據(jù)提取到的特征,一方面?zhèn)鹘o全連接層fc和softmax層去預(yù)測(cè)該圖像的類別概率,一方面通過APN網(wǎng)絡(luò)(d1)(d2)得到區(qū)域信息,這兩個(gè)方面的操作也就是文中說的multi-task,一個(gè)task做分類,另一個(gè)task做區(qū)域檢測(cè)。
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)?詳見如下圖:

image.png
注:針對(duì)某一特定類別,比如圖中的這個(gè)狗狗,我們將最后一次卷積操作得到的feature map與訓(xùn)練FC得到的特征權(quán)重進(jìn)行累加求和,得到我們的CAM(當(dāng)我讀到這里的時(shí)候,產(chǎn)生了一個(gè)疑惑,圖中所示的CAM明明是映射到了原像素空間,但是經(jīng)過多次卷積池化feature map的size肯定不等于原圖像大小,目前的理解是將最后得到的CAM直接upsampling到原像素空間,我們的目的是計(jì)算圖像中的每個(gè)像素對(duì)最終結(jié)果的貢獻(xiàn)程度)
image.png

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ì)梯度的選擇性:

image.png
實(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è)谧詈笠淮问褂胏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ì)算過程:
image.png

整體結(jié)構(gòu)如下圖所示:
image.png
注:paper中還強(qiáng)調(diào)Grad-CAM可視化方法不僅僅可用于一般的圖像分類網(wǎng)絡(luò)的可視化、輸出結(jié)構(gòu)化網(wǎng)絡(luò)的可視化還可用于視覺問答網(wǎng)絡(luò)的可視化等等
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è)限制。

image.png
神經(jīng)網(wǎng)絡(luò)的識(shí)別方式,當(dāng)識(shí)別狗時(shí),網(wǎng)絡(luò)會(huì)將“注意力”放在狗身上,同樣的當(dāng)識(shí)別貓時(shí),網(wǎng)絡(luò)會(huì)將“注意力”放在貓身上。但是GAIN的作者發(fā)現(xiàn)了一個(gè)問題,那就是在識(shí)別某些物體的時(shí)候,網(wǎng)絡(luò)容易會(huì)將“注意力”放在和所要識(shí)別的物體相關(guān)的東西上,而不會(huì)將“注意力”放在物體本身上。如圖2所示,可以看出,網(wǎng)絡(luò)在識(shí)別船的時(shí)候,卻把“注意力”放在了水面上。
image.png
針對(duì)于本問題,作者提出了一種新的訓(xùn)練方式,通過在最小化原圖像識(shí)別損失函數(shù)的同時(shí)來(lái)最小化遮擋住待識(shí)別物體的圖像的識(shí)別分?jǐn)?shù)來(lái)訓(xùn)練整個(gè)網(wǎng)絡(luò),訓(xùn)練后的網(wǎng)絡(luò)能夠更好的將“注意力”放在待識(shí)別的物體上。給定圖像,分類網(wǎng)絡(luò)輸出對(duì)于c個(gè)類別上的分布,對(duì)于每一類可以利用Grad-CAM的方法得到一張Attention Map。根據(jù)Attention Map把重要的部分遮蓋掉得到c張不同的圖。然后同一個(gè)分類網(wǎng)絡(luò)需要對(duì)每張?zhí)幚磉^的圖分類,使得對(duì)應(yīng)的正確類別上的分?jǐn)?shù)盡可能的低。當(dāng)然如果有正確的attention annotation,可以額外加一個(gè)loss來(lái)幫助學(xué)習(xí)attention map。
GAIN工作方式.png
網(wǎng)絡(luò)分為兩個(gè)部分,第一部分為分類部分,就是簡(jiǎn)單的使用VGG對(duì)圖像進(jìn)行特征提取,然后使用全鏈接層實(shí)現(xiàn)對(duì)物體的識(shí)別。所以本論文的主要?jiǎng)?chuàng)新點(diǎn)主要集中在第二部分上。
image.png
上面這種訓(xùn)練方式被作者成為weak supervision。此外為了提高attention map質(zhì)量,作者還在GAIN的基礎(chǔ)上添加了額外的監(jiān)督部分(integrating extra supervision),文中稱這種方式為full supervision,如下圖所示
image.png
image.png
加入了這部分pixel-level的監(jiān)督學(xué)習(xí)后,所得到的attention_map的精準(zhǔn)度更高。同時(shí)本文也指出獲取這種pixel-level的分割圖是很費(fèi)時(shí)的,而作者提出的這種方法可以大大減少對(duì)pixel-level分割圖的需求量。
總結(jié):本文通過對(duì)卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法進(jìn)行改進(jìn),使得能夠獲得更好的attention map,因此能夠提升圖像語(yǔ)義分割及物體定位的性能。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容