深度學(xué)習(xí)的典型應(yīng)用是圖像分類問題。用深度學(xué)習(xí)技術(shù)進(jìn)行圖像分類,表現(xiàn)出眾,甚至超過了人類的水平。然而,天下沒有免費(fèi)的午餐。深度學(xué)習(xí)對(duì)算力資源的要求也十分苛刻。偏偏在某些資源受限的場(chǎng)景下,仍然需要應(yīng)用深度學(xué)習(xí)進(jìn)行圖像分類。這是一個(gè)巨大的技術(shù)挑戰(zhàn)。
資源受限場(chǎng)景
資源受限的場(chǎng)景有不少,其中最主要的兩種:
設(shè)備本身的性能限制,比如移動(dòng)設(shè)備。
海量數(shù)據(jù)。許多大公司有海量圖像需要處理,亟需在維持分類精確度的前提下,優(yōu)化性能。
前者常用的設(shè)定是anytime classification(隨時(shí)分類)。比如,用手機(jī)拍一朵花,深度學(xué)習(xí)模型可能會(huì)先返回“花”這一粗糙的分類結(jié)果,識(shí)別出這是在拍攝花卉,調(diào)用相應(yīng)的場(chǎng)景模式(比如,微距花卉)。如果用戶拍攝后在當(dāng)前界面停留較久,那么模型再進(jìn)一步返回具體的花的種類(用戶可能想知道剛拍了什么花)。如果直接返回具體類別,可能需要很長(zhǎng)時(shí)間,這時(shí)用戶可能早已按下快門,來不及調(diào)用相應(yīng)的場(chǎng)景模式。
除了以上場(chǎng)景外,另一個(gè)anytime classification的典型應(yīng)用場(chǎng)景是適配不同設(shè)備。移動(dòng)設(shè)備多種多樣,性能各異。anytime classification意味著我們只需訓(xùn)練一個(gè)模型,然后部署到不同的設(shè)備上。在性能較差的設(shè)備上,模型給出粗糙的分類。而在性能較好的設(shè)備上,模型給出精細(xì)的分類。這樣,我們無需為各種千奇百怪的模型一一訓(xùn)練模型。
而后者常用的設(shè)定是budgeted batch classification(預(yù)算批分類)。和anytime classification不同,這次的時(shí)間限制不在單張圖片上(比如在用戶按下快門之前),而是在整批圖像上。對(duì)于這一場(chǎng)景而言,要處理的圖像的分類難度不一定一樣。
比如,下圖左邊的馬很好檢測(cè),即使是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)都能檢測(cè)出來。而右邊的馬,因?yàn)榕臄z角度關(guān)系,不容易檢測(cè),需要算力負(fù)擔(dān)更重的網(wǎng)絡(luò)架構(gòu)。
圖片來源:Pixel Addict and Doyle;許可:CC BY-ND 2.0
如果整批圖像都用簡(jiǎn)單模型分類,那么有些圖像不能被正確分類。相反,如果整批圖像都用復(fù)雜模型分類,那么在簡(jiǎn)單圖像上浪費(fèi)了很多資源。因此,我們需要一種彈性的模型,既可以使用較少的資源進(jìn)行粗糙的分類,也可以使用更多的資源進(jìn)行精細(xì)的分類。
我們看到,不管是anytime classification,還是budgeted batch classification,都要求模型具有既可以進(jìn)行粗糙分類,又能進(jìn)行精細(xì)分類的特性。所以,盡管表面上這兩個(gè)場(chǎng)景非常不一樣(一個(gè)的典型應(yīng)用場(chǎng)景是移動(dòng)設(shè)備上的單張圖像分類,另一個(gè)的典型應(yīng)用場(chǎng)景是大公司高性能設(shè)備上的海量圖像分類),但其內(nèi)在需求的一致性,意味著我們可以構(gòu)建一個(gè)統(tǒng)一的模型來應(yīng)對(duì)這兩個(gè)場(chǎng)景的挑戰(zhàn)(或者,至少是大體思路一致的模型架構(gòu),然后根據(jù)這兩個(gè)場(chǎng)景的不同進(jìn)行局部調(diào)整)。
模型的直覺
應(yīng)對(duì)上面提到的問題,最簡(jiǎn)單直接的方案就是使用多個(gè)不同的網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)的能力不同(相應(yīng)的算力需求也不一樣)。具體而言,使用一組網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)的能力依次遞增。然后依次使用這一組網(wǎng)絡(luò)進(jìn)行分類。在anytime classification場(chǎng)景下,返回最近的分類結(jié)果。而在budgeted batch classification場(chǎng)景下,當(dāng)網(wǎng)絡(luò)的結(jié)果置信度足夠高時(shí),就返回結(jié)果,然后跳過后續(xù)的網(wǎng)絡(luò),直接分類下一張圖像。
這個(gè)方案非常直截了當(dāng),易于理解,易于實(shí)現(xiàn)。問題在于,多個(gè)模型所做的工作有很多是重復(fù)的(比如都需要通過卷積層提取特征之類),而使用多個(gè)模型,無法實(shí)現(xiàn)復(fù)用,每個(gè)模型都要從頭開始。對(duì)資源受限環(huán)境而言,這樣的浪費(fèi)是不可接受的。
為了實(shí)現(xiàn)復(fù)用,可以把多個(gè)網(wǎng)絡(luò)整合成一個(gè)模型,共用許多組件,得到一個(gè)基于級(jí)聯(lián)分類層的深度網(wǎng)絡(luò)。
但是,CNN(卷積神經(jīng)網(wǎng)絡(luò))的架構(gòu)原本不是為這種級(jí)聯(lián)設(shè)計(jì)的,因此這樣簡(jiǎn)單的堆疊分類層,會(huì)導(dǎo)致兩個(gè)問題:
CNN的不同層在不同尺度上提取圖像的特征。一般而言,靠前的層提取精細(xì)的特征(局部),而靠后的層提取粗糙的特征(整體)。而分類高度依賴整體的粗糙特征。前面的分類層因?yàn)槿狈Υ植诔叨壬系奶卣?,效果非常差?/p>
加入的分類層可能對(duì)特征提取層造成干擾。換句話說,靠前的分類層可能影響最終分類層的效果。
下圖為不同網(wǎng)絡(luò)架構(gòu)在CIFAR-100上的分類結(jié)果比較。其中,縱軸為相對(duì)精確度(最終分類層的精確度為1),橫軸為中間分類層的相對(duì)位置(最終分類層的位置為1)。黑色表示MSDNet(新提出的架構(gòu)),紅色表示DenseNet,藍(lán)色表示ResNet(作為比較對(duì)象)。我們看到,越靠后的分類層,分類的精確度越高。但是,在DenseNet和ResNet中,靠前的幾個(gè)分類層表現(xiàn)特別差,和靠后的分類層的差距特別大。這一點(diǎn)在ResNet上尤為明顯。這正是因?yàn)榭壳暗膸讉€(gè)分類層缺乏粗糙尺度上的特征。
再看一張圖。這張圖中,每次在網(wǎng)絡(luò)中插入一個(gè)中間分類層,橫軸表示插入的單個(gè)中間分類層的位置,縱軸為相應(yīng)的最終分類層的表現(xiàn)。我們看到,在ResNet中,插入的中間層的位置越靠前,最終分類層的表現(xiàn)就越差。這是因?yàn)椴迦氲姆诸悓痈蓴_了特征提取層的運(yùn)作。之所以插入的位置越靠前,最終分類層的表現(xiàn)就越差,這大概是因?yàn)?,插入的分類層越靠前,相?yīng)的特征提取層就越是為較近的中間分類層的表現(xiàn)這一“短期目標(biāo)”進(jìn)行優(yōu)化,相應(yīng)地忽略了較遠(yuǎn)的最終分類層這一“長(zhǎng)期目標(biāo)”的需求。
那么,該如何處理這兩個(gè)問題呢?
我們先考慮第二個(gè)問題,分類層的干擾問題。如前所述,特征提取層為較近的中間分類層優(yōu)化,而忽視了較遠(yuǎn)的最終分類層的需求。那么,如果我們把特征提取層也和靠后的分類層連接起來呢?通過特征提取層和之后的分類層的直接連接,不就可以避免過于為靠前的分類層優(yōu)化,忽視靠后的分類層了嗎?事實(shí)上,Gao Huang等在CVPR 2017上發(fā)表的DenseNet就提供了這樣的特性。
5層的DenseNet組件
之前的圖片也表明,DenseNet下,前面插入分類層,對(duì)最終分類層的影響不大。
至于第一個(gè)缺乏粗糙尺度特征的問題,可以通過維護(hù)一個(gè)多尺度的特征映射來解決。
在上圖中,深度由左往右依次加深,尺度由上往下,從精細(xì)到粗糙,所有分類器都使用粗糙層的特征(粗糙層和分類高度相關(guān))。特定層和尺度上的特征映射通過連接以下一個(gè)或兩個(gè)卷積計(jì)算得出:
同一尺度上之前層的通常卷積操作的結(jié)果(圖中橫向的紅線)
(如果可能的話,)前一層更精細(xì)尺度上的特征映射的步進(jìn)卷積操作(圖中對(duì)角的藍(lán)線)。
結(jié)合這兩種,就得到了多尺度密集網(wǎng)絡(luò)(Multi-Scale Dense Network),簡(jiǎn)稱MSDNet.
MSDNet架構(gòu)
如前所示,MSDNet的架構(gòu)為下圖:
第一層第一層(l=1)比較特別,因?yàn)樗怪边B接(圖中藍(lán)線)。它的主要作用是在所有尺度上提供表示“種子”。粗糙尺度的特征映射通過降采樣獲得。
后續(xù)層后續(xù)層遵循DenseNet的結(jié)構(gòu),特定層和尺度上的特征映射的連接方式如上一節(jié)所述。第一層和后續(xù)層的輸出詳見下圖。
分類器分類器同樣遵循DenseNet的密集連接模式。每個(gè)分類器由兩個(gè)卷積層、一個(gè)平均池化層、一個(gè)線性層組成。如前所述,在anytime設(shè)定中,當(dāng)預(yù)算時(shí)間用盡后,輸出最近的預(yù)測(cè)。在batch budget設(shè)定下,當(dāng)分類器fk的預(yù)測(cè)置信度(softmax概率的最大值)超過預(yù)先定義的閾值θk時(shí)退出。在訓(xùn)練前,計(jì)算網(wǎng)絡(luò)到達(dá)第k個(gè)分類器的算力開銷Ck。相應(yīng)地,一個(gè)樣本在分類器k處退出的概率為qk= z(1-q)k-1q. 其中,q為樣本到達(dá)分類器且得到置信度足夠的分類并退出的退出概率。我們假定q在所有層上都是恒定的。z是一個(gè)歸一化常數(shù),確?!苉p(qk) = 1. 在測(cè)試時(shí),需要確保分類測(cè)試集Dtest中的所有樣本的總開銷不超過期望預(yù)算B。也就是|Dtest|∑kqkCk≤ B這一限制。我們可以在驗(yàn)證集上求解這一限制中的q值,進(jìn)而決定θk.
損失函數(shù)在訓(xùn)練中,所有分類器使用交叉熵?fù)p失函數(shù)L(fk),并最小化加權(quán)累積損失:
上式中,D為訓(xùn)練集,wk為第k個(gè)分類器的權(quán)重,wk≥ 0. 如果預(yù)算分布P(B)是已知的,我們可以使用權(quán)重wk結(jié)合關(guān)于預(yù)算B的先驗(yàn)知識(shí)。在實(shí)踐中,我們發(fā)現(xiàn),所有損失函數(shù)使用同樣的權(quán)重效果較好。
網(wǎng)絡(luò)化簡(jiǎn)和惰性演算以上的網(wǎng)絡(luò)架構(gòu)可以通過兩種直截了當(dāng)?shù)姆椒ㄟM(jìn)一步化簡(jiǎn)。首先,在每層維持所有尺度并不高效。一個(gè)簡(jiǎn)單的降低網(wǎng)絡(luò)尺寸的策略是將網(wǎng)絡(luò)分為S塊,在第i塊中僅僅保留最粗糙的(S - i + 1)尺度。移除尺度的同時(shí),在塊之間加上相應(yīng)的過渡層,使用1x1卷積合并連接起來的特征,并在通過步進(jìn)卷積將精細(xì)尺度的特征傳給粗糙尺度之前截取一半的頻道。
其次,由于第l層的分類器只使用最粗糙尺度的特征,第l層的更精細(xì)的特征映射(以及S-2層之前的一些更精細(xì)的特征映射)不影響該分類器的預(yù)測(cè)。因此,只沿著下一個(gè)分類器所需路徑傳播樣本可以最小化不必要的計(jì)算。研究人員稱這一策略為惰性演算。
試驗(yàn)
數(shù)據(jù)集
研究人員在3個(gè)圖像分類數(shù)據(jù)集上評(píng)估了MSDNet的效果:
CIFAR-10
CIFAR-100
ILSVRC 2012(ImageNet)
CIFAR數(shù)據(jù)集包括50000張訓(xùn)練圖像和10000張測(cè)試圖像,圖像大小為32x32像素。研究人員留置了5000張訓(xùn)練圖像作為驗(yàn)證集。CIFAR-10包含10個(gè)分類,CIFAR-100包含100個(gè)分類。研究人員應(yīng)用了標(biāo)準(zhǔn)的數(shù)據(jù)增強(qiáng)技術(shù):圖像每邊補(bǔ)零4個(gè)像素,接著隨機(jī)剪切以得到32x32圖像。圖像以0.5概率水平翻轉(zhuǎn),通過減去頻道均值和除以頻道標(biāo)準(zhǔn)差進(jìn)行歸一化。
ImageNet數(shù)據(jù)集包含1000分類,共計(jì)一百二十萬張訓(xùn)練圖像和50000張驗(yàn)證圖像。研究人員留置50000張訓(xùn)練圖像以估計(jì)MSDNet的分類器的置信度閾值。研究人員應(yīng)用了Kaiming He等在Deep Residual Learning for Image Recognition(arXiv:1512.03385)中提出的數(shù)據(jù)增強(qiáng)技術(shù)。在測(cè)試時(shí),圖像被縮放到256x256像素,然后中央剪切為224x224像素。
訓(xùn)練細(xì)節(jié)在CIFAR數(shù)據(jù)集上,所有模型(包括基線模型)使用隨機(jī)梯度下降(SGD)訓(xùn)練,mini-batch大小為64. 使用了Nesterov動(dòng)量法,動(dòng)量權(quán)重為0.9(不帶抑制),權(quán)重衰減為10-4。所有模型訓(xùn)練300個(gè)epoch,初始學(xué)習(xí)率為0.1,在150和225個(gè)epoch后除10. ImageNet的優(yōu)化規(guī)劃與此類似,只不過mini-batch大小增加到256,所有模型訓(xùn)練90個(gè)epoch,在30和60個(gè)epoch后降低學(xué)習(xí)率。
用于CIFAR數(shù)據(jù)集的MSDNet使用3個(gè)尺度。第一層使用3x3卷積(Conv),組歸一化(BN),ReLU激活。后續(xù)層遵循DenseNet的設(shè)計(jì),Conv(1x1)-BN-ReLU-Conv(3x3)-BN-ReLU. 3個(gè)尺度上的輸出頻道數(shù)分別為6、12、24. 每個(gè)分類器包含2個(gè)降采樣卷積層(128維3x3過濾器),1個(gè)2x2平均池化層,1個(gè)線性層。
用于ImageNet的MSDNet使用4個(gè)尺度,相應(yīng)地,每層生成16、32、64、64特征映射。在傳入MSDNet的第1層之前,原始圖像先經(jīng)過7x7卷積和3x3最大池化(步長(zhǎng)均為2)轉(zhuǎn)換。分類器的結(jié)構(gòu)和用于CIFAR的MSDNet相同,只不過每個(gè)卷積層的輸出頻道數(shù)和輸入頻道數(shù)一樣。
CIFAR數(shù)據(jù)集上,用于anytime設(shè)定的MSDNet有24層。分類器對(duì)第2x(i+1)層的輸出進(jìn)行操作,其中i=1,...,11. 而用于budgeted batch設(shè)定的MSDNet深度為10到36層。第k個(gè)分類器位于第(∑ki=1i)層。
ImageNet上的MSDNet(anytime和budgeted batch設(shè)定)使用4個(gè)尺度,相應(yīng)地,第i個(gè)分類器操作第(kxi+3)層的輸出,其中i=1,...,5,k=4,6,7.
ResNet有62層,每個(gè)分辨率包含10個(gè)殘差塊(共3個(gè)分辨率)。研究人員在每個(gè)分辨率的第4、8個(gè)殘差塊訓(xùn)練中間分類器,共計(jì)6個(gè)中間分類器(再加上最終分類器)。
DenseNet有52層,包含3個(gè)密集塊,每塊有16層。6個(gè)中間層位于每塊的第6、12層。
所有模型均使用Torch框架實(shí)現(xiàn),代碼見GitHub(gaohuang/MSDNet)。
CIFAR-10
在CIFAR-10上,無論是在anytime設(shè)定下,還是在budgeted batch設(shè)定下,MSDNet的表現(xiàn)(精確度)都顯著超過基線。
CIFAR-100
上圖為anytime設(shè)定下的結(jié)果,可以看到,除了在預(yù)算極小的情形下,MSDNet的表現(xiàn)都超過了其他模型。在預(yù)算極小的情形下,集成方法具有優(yōu)勢(shì),因?yàn)轭A(yù)測(cè)是由第一個(gè)(小型)網(wǎng)絡(luò)作出的,這一網(wǎng)絡(luò)專門為預(yù)算極小的情形優(yōu)化。
而在budgeted batch設(shè)定下,MSDNet的表現(xiàn)優(yōu)于其他模型。特別值得注意的是,MSDNet僅使用110層ResNet的十分之一的算力預(yù)算就達(dá)到了相當(dāng)?shù)谋憩F(xiàn)。
ImageNet
MSDNet在ImageNet上的表現(xiàn)同樣讓人印象深刻。
anytime
budgeted batch
消融測(cè)試
消融測(cè)試驗(yàn)證了密集連接、多尺度特征、中間分類器的有效性。
CIFAR-100上的消融測(cè)試
此外,研究人員還從ImageNet隨機(jī)選擇了一些圖片。下圖分為兩行,上面一行的圖像容易分類,下面一行的圖像較難分類。MSDNet的第一個(gè)分類器正確預(yù)測(cè)了“容易”圖像的分類,而沒能成功預(yù)測(cè)“困難”圖像的分類,而MSDNet的最終分類器正確預(yù)測(cè)了“困難”圖像的分類。
結(jié)語(yǔ)
在剛結(jié)束的ICLR 2018上,本文作者做了口頭報(bào)告(5月1日 04:00 -- 04:15 PM;Exhibition Hall A)。
研究人員打算以后進(jìn)一步探索分類以外的資源受限深度架構(gòu),比如圖像分割。此外,研究人員也有意探索更多進(jìn)一步優(yōu)化MSDNet的方法,比如模型壓縮,空間適應(yīng)計(jì)算,更高效的卷積操作。
-
圖像分類
+關(guān)注
關(guān)注
0文章
96瀏覽量
12168 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122797
原文標(biāo)題:資源受限場(chǎng)景下的深度學(xué)習(xí)圖像分類:MSDNet多尺度密集網(wǎng)絡(luò)
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
深度學(xué)習(xí)視角下的貓狗圖像識(shí)別實(shí)現(xiàn)

討論紋理分析在圖像分類中的重要性及其在深度學(xué)習(xí)中使用紋理分析
深度學(xué)習(xí)介紹
什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?
圖像分類的方法之深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)
一種新的目標(biāo)分類特征深度學(xué)習(xí)模型

Xilinx FPGA如何通過深度學(xué)習(xí)圖像分類加速機(jī)器學(xué)習(xí)
如何使用深度卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)服裝圖像分類檢索算法

深度學(xué)習(xí)中圖像分割的方法和應(yīng)用
詳解深度學(xué)習(xí)之圖像分割
基于深度學(xué)習(xí)的圖像修復(fù)模型及實(shí)驗(yàn)對(duì)比

評(píng)論