论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization
這篇文章是來自悉尼科技大學(xué)Shaoli Huang等人的工作,與前兩篇文章的出發(fā)點(diǎn)類似,本篇文章也是在Parts上尋找Fine-Grained的線索,但與前兩篇文章相比,在框架中人工的參與更少。同其它Fine-Grained分類任務(wù)相似,這篇文章也采用兩步走,即object parts localization (where pathway)和classification (what pathway),值得一提的是在part定位過程中,利用了FCN(Fully Convolutional Network)。
論文提出的新方法是既可以得到不錯(cuò)的分類準(zhǔn)確率,也能提供一個(gè)可以解釋得了的模型,并且效率也更加高,非常適用于實(shí)際應(yīng)用中。
下面是方法提出的網(wǎng)絡(luò)結(jié)構(gòu)的示意圖:
接下來會介紹該方法的實(shí)現(xiàn)細(xì)節(jié)。
Part-Stacked CNN
論文將提出的新的CNN結(jié)構(gòu)命名為Part-Stacked CNN,這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)分為兩個(gè)子網(wǎng)絡(luò),分別是定位網(wǎng)絡(luò)(Localization Network)和分類網(wǎng)絡(luò)(Classification Network)。采用的是Caffe框架和經(jīng)典的AlexNet網(wǎng)絡(luò)結(jié)構(gòu)作為整個(gè)網(wǎng)絡(luò)的基本結(jié)構(gòu)。
作者提出與基于部件的R-CNN相比,一個(gè)最大不同點(diǎn)是,從定位網(wǎng)絡(luò)到分類網(wǎng)絡(luò)的一個(gè)信息轉(zhuǎn)換運(yùn)算,也就是使用定位網(wǎng)絡(luò)中得到的部件位置進(jìn)行分類的操作,是直接在數(shù)據(jù)的前向傳播過程中直接使用在第五個(gè)卷積層輸出的特征圖上(A unique design in our architecture is that the message transferring operation from the localization network to the classification network, i.e. using detected part locations to perform part-based classification, is conducted directly on the conv5 output feature maps within the process of data forwarding.)。
1. Localization Network
定位網(wǎng)絡(luò)的整體結(jié)構(gòu)如下圖所示:
定位網(wǎng)絡(luò)主要目的是檢測到物體部件的位置,論文是使用了最簡單的部件標(biāo)注–每個(gè)部件中心位置標(biāo)注的二維關(guān)鍵點(diǎn)。這里假設(shè)M表示數(shù)據(jù)集中物體部件標(biāo)簽的數(shù)量。然后采用全卷積網(wǎng)絡(luò)(fully convolutional network,FCN)來生成密集的特征圖輸出。這里使用FCN的理由給出了三點(diǎn):
1)FCN得到的特征圖輸出可以直接作為部件定位的結(jié)果用于分類網(wǎng)絡(luò);
2)FCN可以同時(shí)獲取多個(gè)物件部件的結(jié)果;
3)FCN在學(xué)習(xí)和預(yù)測階段都非常高效。
1.1 Learning階段
由上圖可以知道,定位網(wǎng)絡(luò)最終的輸出是一個(gè)帶有M個(gè)位置點(diǎn)的h×w的特征圖。定位網(wǎng)絡(luò)的前5層跟經(jīng)典的AlexNet網(wǎng)絡(luò)結(jié)構(gòu)一樣,然后在第五個(gè)卷積層后面加一個(gè)卷積核大小是1×1,輸出是512的第六個(gè)卷積層 conv6,接著就是卷積核大小一樣,輸出是 M+1的 conv7來實(shí)現(xiàn)分類,這里M+1是加上背景。
這里一個(gè)實(shí)際問題是需要決定FCN的輸入圖片尺寸以及網(wǎng)絡(luò)的深度。一般來說,越深的層可以生成更好的定位結(jié)果,但是它們的感受野(receptive fields)大小也要大過前面的網(wǎng)絡(luò)層,比如,CaffeNet(也就是指AlexNet)中,conv5 的感受野是 163×163,而輸入圖片的尺寸是227×227,這個(gè)感受野的尺寸會太大不能模型化一個(gè)物體的部件。因此,論文提出了一個(gè)簡單的方法——上采樣輸入圖片,這樣后面深層的感受野是固定尺寸的,那么相對于變大的輸入圖片就變得沒有那么大了。
因此,定位網(wǎng)絡(luò)的輸入圖片是一個(gè)使用bounding-box裁剪的,將尺寸調(diào)整成454×454大小的彩色圖片。
1.2 Inference 階段
學(xué)習(xí)階段通過FCN得到的是輸出結(jié)果是M+1個(gè)尺寸為27×27的特定部位的熱度圖( (M +1) part-specific heat maps in the
size of 27 × 27),接著,會對這個(gè)輸出結(jié)果使用一個(gè)高斯核進(jìn)行高斯濾波來去噪,最后得到最終的輸出結(jié)果是帶有M個(gè)位置點(diǎn)的h×w的特征圖。
在這個(gè)階段,會設(shè)定一個(gè)閾值,用來判斷一張圖片中是否含有某個(gè)部件,這里使用FCN層的conv7 的softmax函數(shù)輸出結(jié)果與高斯核的計(jì)算結(jié)果來與設(shè)定的閾值進(jìn)行判斷,如果低于閾值,則認(rèn)為這張圖片是缺乏這個(gè)部件。
2. Classification network
分類網(wǎng)絡(luò)使用兩個(gè)輸入流結(jié)構(gòu)的方法,分別是Part Stream和Object Stream,然后再使用一個(gè)包含三個(gè)全連接層的子網(wǎng)絡(luò)作為一個(gè)物體分類器。
2.1 Part Stream
Part Stream如作者所說,是其提出的網(wǎng)絡(luò)PS-CNN結(jié)構(gòu)的核心。在之前的如R-CNN論文中是訓(xùn)練一組部件CNNs,每個(gè)CNN專門訓(xùn)練一個(gè)部件,這個(gè)方法對于擁有多個(gè)部件的數(shù)據(jù)庫來說就會需要耗費(fèi)很多時(shí)間和非常大的內(nèi)存使用量。
因此,論文采用兩個(gè)策略來提高效率:
1)模型參數(shù)的共享。也就是對于前面5個(gè)卷積層的參數(shù)在所有物體部件中是共享的,這可以減少參數(shù)從而降低過擬合的風(fēng)險(xiǎn);
2)計(jì)算量共享策略。這個(gè)目的是在卷積層階段的所有部件的特征提取過程只需要進(jìn)行一次。
在特征提取完畢后,每個(gè)部件都會分別通過一個(gè)part crop layer進(jìn)行裁剪從而得到一個(gè)合適尺寸大小的feature map進(jìn)入后面的三個(gè)全連接層,這里是因?yàn)槠漭斎胧且粋€(gè)454 × 454尺寸大小,而在Object Stream中輸入圖片只是227 × 227,所以需要調(diào)整尺寸大小。
這里的part crop layer的裁剪是提取每個(gè)檢測到的部件位置的領(lǐng)域,論文中是提取一個(gè)6×6大小的領(lǐng)域,從原來大小為27×27的conv5 的特征圖中提取。
2.2 Object Stream
這一步主要是利用已有的bounding-box的標(biāo)簽來提取物體級別的語義信息,使用的也是經(jīng)典的AlexNet,然后使用pool 5層的輸出–6×6大小的特征圖。
2.3 Dimension reduction and fully connected layers.
完成上述兩個(gè)輸入流的網(wǎng)絡(luò),后面接著一個(gè)3個(gè)全連接層的深度神經(jīng)網(wǎng)絡(luò)(DNN),這里作為第一個(gè)全連接層的fc6就相當(dāng)于一個(gè)部件連接層,因?yàn)槠漭斎攵际莵碜訮art Stream和Object Stream的輸出結(jié)果,但是這里所需要的內(nèi)存會比原本的AlexNet網(wǎng)絡(luò)中的fc6要多出M+1倍。
為了降低內(nèi)存的使用,這里在Part Stream增加一個(gè)卷積核大小為1×1的卷積層 conv5_1,將原本輸出是256降到32個(gè),但是這里沒有使用標(biāo)準(zhǔn)的PCA方法,因?yàn)樾Ч麜懿?#xff0c;作者是訓(xùn)練一個(gè)輔助的CNN來初始化這個(gè)增加的卷積層的權(quán)值。
小結(jié)
論文最后是通過4個(gè)指標(biāo)來判斷其方法的性能的,分別是定位準(zhǔn)確率、分類準(zhǔn)確率、效率以及模型的可解釋性。通過實(shí)驗(yàn)結(jié)果可以看到,Part_Stacked CNN方法的性能是要優(yōu)于當(dāng)前大部分的方法,而且滿足了實(shí)時(shí)性,非常適合實(shí)際的應(yīng)用。
最近看的3篇論文,包括這篇論文在內(nèi),關(guān)注的重點(diǎn)都是Part,也就是部件或者說部位,并且都是希望盡可能減少人工的參與,利用實(shí)驗(yàn)用的數(shù)據(jù)庫已有的部件標(biāo)注甚至不需要標(biāo)注,只需要類標(biāo)簽,方法都是主要分為兩步,定位或者檢測網(wǎng)絡(luò),以及分類網(wǎng)絡(luò),同時(shí)還將這兩個(gè)網(wǎng)絡(luò)都整合成在一起,可以同時(shí)訓(xùn)練,而不是分別單獨(dú)訓(xùn)練幾個(gè)子網(wǎng)絡(luò),最后聯(lián)合特征,使用SVM來進(jìn)行分類,而且三個(gè)方法的性能都比當(dāng)前絕大數(shù)方法要有所提高。
這說明他們的思路也是正確的,自動檢測和定位部件,然后用到分類中,所有部件的訓(xùn)練都整合在一個(gè)大網(wǎng)絡(luò)中,這樣分類誤差可以在反向傳播中傳回給所有部件,并讓它們同時(shí)更新權(quán)值。
看起來,目前在精確分類方面,利用部位是一個(gè)趨勢,并且很多工作的結(jié)果也表明這個(gè)思路是正確的,的確可以取得不錯(cuò)的性能,同時(shí),也應(yīng)該向無監(jiān)督學(xué)習(xí)靠近,即盡可能自動檢測部件,而不需要過多的部件標(biāo)注。不過,現(xiàn)在這方面的工作也挺多了,要想到一個(gè)更好的突破點(diǎn),的確挺難啊,還是要多看幾篇論文,看看能否得到更多的想法吧。
總結(jié)
以上是生活随笔為你收集整理的论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity text不能刷新_Unity
- 下一篇: 电脑html动态桌面壁纸制作,动态桌面软