深度學(xué)習(xí)的典型應(yīng)用是圖像分類問題。用深度學(xué)習(xí)技術(shù)進(jìn)行圖像分類,表現(xiàn)出眾,甚至超過了人類的水平。然而,天下沒有免費的午餐。深度學(xué)習(xí)對算力資源的要求也十分苛刻。偏偏在某些資源受限的場景下,仍然需要應(yīng)用深度學(xué)習(xí)進(jìn)行圖像分類。這是一個巨大的技術(shù)挑戰(zhàn)。
資源受限場景
資源受限的場景有不少,其中最主要的兩種:
設(shè)備本身的性能限制,比如移動設(shè)備。
海量數(shù)據(jù)。許多大公司有海量圖像需要處理,亟需在維持分類精確度的前提下,優(yōu)化性能。
前者常用的設(shè)定是anytime classification(隨時分類)。比如,用手機拍一朵花,深度學(xué)習(xí)模型可能會先返回“花”這一粗糙的分類結(jié)果,識別出這是在拍攝花卉,調(diào)用相應(yīng)的場景模式(比如,微距花卉)。如果用戶拍攝后在當(dāng)前界面停留較久,那么模型再進(jìn)一步返回具體的花的種類(用戶可能想知道剛拍了什么花)。如果直接返回具體類別,可能需要很長時間,這時用戶可能早已按下快門,來不及調(diào)用相應(yīng)的場景模式。
除了以上場景外,另一個anytime classification的典型應(yīng)用場景是適配不同設(shè)備。移動設(shè)備多種多樣,性能各異。anytime classification意味著我們只需訓(xùn)練一個模型,然后部署到不同的設(shè)備上。在性能較差的設(shè)備上,模型給出粗糙的分類。而在性能較好的設(shè)備上,模型給出精細(xì)的分類。這樣,我們無需為各種千奇百怪的模型一一訓(xùn)練模型。
而后者常用的設(shè)定是budgeted batch classification(預(yù)算批分類)。和anytime classification不同,這次的時間限制不在單張圖片上(比如在用戶按下快門之前),而是在整批圖像上。對于這一場景而言,要處理的圖像的分類難度不一定一樣。
比如,下圖左邊的馬很好檢測,即使是一個簡單的網(wǎng)絡(luò)都能檢測出來。而右邊的馬,因為拍攝角度關(guān)系,不容易檢測,需要算力負(fù)擔(dān)更重的網(wǎng)絡(luò)架構(gòu)。
圖片來源:Pixel Addict and Doyle;許可:CC BY-ND 2.0
如果整批圖像都用簡單模型分類,那么有些圖像不能被正確分類。相反,如果整批圖像都用復(fù)雜模型分類,那么在簡單圖像上浪費了很多資源。因此,我們需要一種彈性的模型,既可以使用較少的資源進(jìn)行粗糙的分類,也可以使用更多的資源進(jìn)行精細(xì)的分類。
我們看到,不管是anytime classification,還是budgeted batch classification,都要求模型具有既可以進(jìn)行粗糙分類,又能進(jìn)行精細(xì)分類的特性。所以,盡管表面上這兩個場景非常不一樣(一個的典型應(yīng)用場景是移動設(shè)備上的單張圖像分類,另一個的典型應(yīng)用場景是大公司高性能設(shè)備上的海量圖像分類),但其內(nèi)在需求的一致性,意味著我們可以構(gòu)建一個統(tǒng)一的模型來應(yīng)對這兩個場景的挑戰(zhàn)(或者,至少是大體思路一致的模型架構(gòu),然后根據(jù)這兩個場景的不同進(jìn)行局部調(diào)整)。
模型的直覺
應(yīng)對上面提到的問題,最簡單直接的方案就是使用多個不同的網(wǎng)絡(luò),每個網(wǎng)絡(luò)的能力不同(相應(yīng)的算力需求也不一樣)。具體而言,使用一組網(wǎng)絡(luò),每個網(wǎng)絡(luò)的能力依次遞增。然后依次使用這一組網(wǎng)絡(luò)進(jìn)行分類。在anytime classification場景下,返回最近的分類結(jié)果。而在budgeted batch classification場景下,當(dāng)網(wǎng)絡(luò)的結(jié)果置信度足夠高時,就返回結(jié)果,然后跳過后續(xù)的網(wǎng)絡(luò),直接分類下一張圖像。
這個方案非常直截了當(dāng),易于理解,易于實現(xiàn)。問題在于,多個模型所做的工作有很多是重復(fù)的(比如都需要通過卷積層提取特征之類),而使用多個模型,無法實現(xiàn)復(fù)用,每個模型都要從頭開始。對資源受限環(huán)境而言,這樣的浪費是不可接受的。
為了實現(xiàn)復(fù)用,可以把多個網(wǎng)絡(luò)整合成一個模型,共用許多組件,得到一個基于級聯(lián)分類層的深度網(wǎng)絡(luò)。
但是,CNN(卷積神經(jīng)網(wǎng)絡(luò))的架構(gòu)原本不是為這種級聯(lián)設(shè)計的,因此這樣簡單的堆疊分類層,會導(dǎo)致兩個問題:
CNN的不同層在不同尺度上提取圖像的特征。一般而言,靠前的層提取精細(xì)的特征(局部),而靠后的層提取粗糙的特征(整體)。而分類高度依賴整體的粗糙特征。前面的分類層因為缺乏粗糙尺度上的特征,效果非常差。
加入的分類層可能對特征提取層造成干擾。換句話說,靠前的分類層可能影響最終分類層的效果。
下圖為不同網(wǎng)絡(luò)架構(gòu)在CIFAR-100上的分類結(jié)果比較。其中,縱軸為相對精確度(最終分類層的精確度為1),橫軸為中間分類層的相對位置(最終分類層的位置為1)。黑色表示MSDNet(新提出的架構(gòu)),紅色表示DenseNet,藍(lán)色表示ResNet(作為比較對象)。我們看到,越靠后的分類層,分類的精確度越高。但是,在DenseNet和ResNet中,靠前的幾個分類層表現(xiàn)特別差,和靠后的分類層的差距特別大。這一點在ResNet上尤為明顯。這正是因為靠前的幾個分類層缺乏粗糙尺度上的特征。

再看一張圖。這張圖中,每次在網(wǎng)絡(luò)中插入一個中間分類層,橫軸表示插入的單個中間分類層的位置,縱軸為相應(yīng)的最終分類層的表現(xiàn)。我們看到,在ResNet中,插入的中間層的位置越靠前,最終分類層的表現(xiàn)就越差。這是因為插入的分類層干擾了特征提取層的運作。之所以插入的位置越靠前,最終分類層的表現(xiàn)就越差,這大概是因為,插入的分類層越靠前,相應(yīng)的特征提取層就越是為較近的中間分類層的表現(xiàn)這一“短期目標(biāo)”進(jìn)行優(yōu)化,相應(yīng)地忽略了較遠(yuǎn)的最終分類層這一“長期目標(biāo)”的需求。

那么,該如何處理這兩個問題呢?
我們先考慮第二個問題,分類層的干擾問題。如前所述,特征提取層為較近的中間分類層優(yōu)化,而忽視了較遠(yuǎn)的最終分類層的需求。那么,如果我們把特征提取層也和靠后的分類層連接起來呢?通過特征提取層和之后的分類層的直接連接,不就可以避免過于為靠前的分類層優(yōu)化,忽視靠后的分類層了嗎?事實上,Gao Huang等在CVPR 2017上發(fā)表的DenseNet就提供了這樣的特性。
5層的DenseNet組件
之前的圖片也表明,DenseNet下,前面插入分類層,對最終分類層的影響不大。
至于第一個缺乏粗糙尺度特征的問題,可以通過維護(hù)一個多尺度的特征映射來解決。

在上圖中,深度由左往右依次加深,尺度由上往下,從精細(xì)到粗糙,所有分類器都使用粗糙層的特征(粗糙層和分類高度相關(guān))。特定層和尺度上的特征映射通過連接以下一個或兩個卷積計算得出:
同一尺度上之前層的通常卷積操作的結(jié)果(圖中橫向的紅線)
(如果可能的話,)前一層更精細(xì)尺度上的特征映射的步進(jìn)卷積操作(圖中對角的藍(lán)線)。
結(jié)合這兩種,就得到了多尺度密集網(wǎng)絡(luò)(Multi-Scale Dense Network),簡稱MSDNet.
MSDNet架構(gòu)
如前所示,MSDNet的架構(gòu)為下圖:

第一層第一層(l=1)比較特別,因為它包含垂直連接(圖中藍(lán)線)。它的主要作用是在所有尺度上提供表示“種子”。粗糙尺度的特征映射通過降采樣獲得。
后續(xù)層后續(xù)層遵循DenseNet的結(jié)構(gòu),特定層和尺度上的特征映射的連接方式如上一節(jié)所述。第一層和后續(xù)層的輸出詳見下圖。

分類器分類器同樣遵循DenseNet的密集連接模式。每個分類器由兩個卷積層、一個平均池化層、一個線性層組成。如前所述,在anytime設(shè)定中,當(dāng)預(yù)算時間用盡后,輸出最近的預(yù)測。在batch budget設(shè)定下,當(dāng)分類器fk的預(yù)測置信度(softmax概率的最大值)超過預(yù)先定義的閾值θk時退出。在訓(xùn)練前,計算網(wǎng)絡(luò)到達(dá)第k個分類器的算力開銷Ck。相應(yīng)地,一個樣本在分類器k處退出的概率為qk= z(1-q)k-1q. 其中,q為樣本到達(dá)分類器且得到置信度足夠的分類并退出的退出概率。我們假定q在所有層上都是恒定的。z是一個歸一化常數(shù),確?!苉p(qk) = 1. 在測試時,需要確保分類測試集Dtest中的所有樣本的總開銷不超過期望預(yù)算B。也就是|Dtest|∑kqkCk≤ B這一限制。我們可以在驗證集上求解這一限制中的q值,進(jìn)而決定θk.
損失函數(shù)在訓(xùn)練中,所有分類器使用交叉熵?fù)p失函數(shù)L(fk),并最小化加權(quán)累積損失:

上式中,D為訓(xùn)練集,wk為第k個分類器的權(quán)重,wk≥ 0. 如果預(yù)算分布P(B)是已知的,我們可以使用權(quán)重wk結(jié)合關(guān)于預(yù)算B的先驗知識。在實踐中,我們發(fā)現(xiàn),所有損失函數(shù)使用同樣的權(quán)重效果較好。
網(wǎng)絡(luò)化簡和惰性演算以上的網(wǎng)絡(luò)架構(gòu)可以通過兩種直截了當(dāng)?shù)姆椒ㄟM(jìn)一步化簡。首先,在每層維持所有尺度并不高效。一個簡單的降低網(wǎng)絡(luò)尺寸的策略是將網(wǎng)絡(luò)分為S塊,在第i塊中僅僅保留最粗糙的(S - i + 1)尺度。移除尺度的同時,在塊之間加上相應(yīng)的過渡層,使用1x1卷積合并連接起來的特征,并在通過步進(jìn)卷積將精細(xì)尺度的特征傳給粗糙尺度之前截取一半的頻道。

其次,由于第l層的分類器只使用最粗糙尺度的特征,第l層的更精細(xì)的特征映射(以及S-2層之前的一些更精細(xì)的特征映射)不影響該分類器的預(yù)測。因此,只沿著下一個分類器所需路徑傳播樣本可以最小化不必要的計算。研究人員稱這一策略為惰性演算。
試驗
數(shù)據(jù)集
研究人員在3個圖像分類數(shù)據(jù)集上評估了MSDNet的效果:
CIFAR-10
CIFAR-100
ILSVRC 2012(ImageNet)
CIFAR數(shù)據(jù)集包括50000張訓(xùn)練圖像和10000張測試圖像,圖像大小為32x32像素。研究人員留置了5000張訓(xùn)練圖像作為驗證集。CIFAR-10包含10個分類,CIFAR-100包含100個分類。研究人員應(yīng)用了標(biāo)準(zhǔn)的數(shù)據(jù)增強技術(shù):圖像每邊補零4個像素,接著隨機剪切以得到32x32圖像。圖像以0.5概率水平翻轉(zhuǎn),通過減去頻道均值和除以頻道標(biāo)準(zhǔn)差進(jìn)行歸一化。
ImageNet數(shù)據(jù)集包含1000分類,共計一百二十萬張訓(xùn)練圖像和50000張驗證圖像。研究人員留置50000張訓(xùn)練圖像以估計MSDNet的分類器的置信度閾值。研究人員應(yīng)用了Kaiming He等在Deep Residual Learning for Image Recognition(arXiv:1512.03385)中提出的數(shù)據(jù)增強技術(shù)。在測試時,圖像被縮放到256x256像素,然后中央剪切為224x224像素。
訓(xùn)練細(xì)節(jié)在CIFAR數(shù)據(jù)集上,所有模型(包括基線模型)使用隨機梯度下降(SGD)訓(xùn)練,mini-batch大小為64. 使用了Nesterov動量法,動量權(quán)重為0.9(不帶抑制),權(quán)重衰減為10-4。所有模型訓(xùn)練300個epoch,初始學(xué)習(xí)率為0.1,在150和225個epoch后除10. ImageNet的優(yōu)化規(guī)劃與此類似,只不過mini-batch大小增加到256,所有模型訓(xùn)練90個epoch,在30和60個epoch后降低學(xué)習(xí)率。
用于CIFAR數(shù)據(jù)集的MSDNet使用3個尺度。第一層使用3x3卷積(Conv),組歸一化(BN),ReLU激活。后續(xù)層遵循DenseNet的設(shè)計,Conv(1x1)-BN-ReLU-Conv(3x3)-BN-ReLU. 3個尺度上的輸出頻道數(shù)分別為6、12、24. 每個分類器包含2個降采樣卷積層(128維3x3過濾器),1個2x2平均池化層,1個線性層。
用于ImageNet的MSDNet使用4個尺度,相應(yīng)地,每層生成16、32、64、64特征映射。在傳入MSDNet的第1層之前,原始圖像先經(jīng)過7x7卷積和3x3最大池化(步長均為2)轉(zhuǎn)換。分類器的結(jié)構(gòu)和用于CIFAR的MSDNet相同,只不過每個卷積層的輸出頻道數(shù)和輸入頻道數(shù)一樣。
CIFAR數(shù)據(jù)集上,用于anytime設(shè)定的MSDNet有24層。分類器對第2x(i+1)層的輸出進(jìn)行操作,其中i=1,...,11. 而用于budgeted batch設(shè)定的MSDNet深度為10到36層。第k個分類器位于第(∑ki=1i)層。
ImageNet上的MSDNet(anytime和budgeted batch設(shè)定)使用4個尺度,相應(yīng)地,第i個分類器操作第(kxi+3)層的輸出,其中i=1,...,5,k=4,6,7.
ResNet有62層,每個分辨率包含10個殘差塊(共3個分辨率)。研究人員在每個分辨率的第4、8個殘差塊訓(xùn)練中間分類器,共計6個中間分類器(再加上最終分類器)。
DenseNet有52層,包含3個密集塊,每塊有16層。6個中間層位于每塊的第6、12層。
所有模型均使用Torch框架實現(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)勢,因為預(yù)測是由第一個(小型)網(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
消融測試
消融測試驗證了密集連接、多尺度特征、中間分類器的有效性。

CIFAR-100上的消融測試
此外,研究人員還從ImageNet隨機選擇了一些圖片。下圖分為兩行,上面一行的圖像容易分類,下面一行的圖像較難分類。MSDNet的第一個分類器正確預(yù)測了“容易”圖像的分類,而沒能成功預(yù)測“困難”圖像的分類,而MSDNet的最終分類器正確預(yù)測了“困難”圖像的分類。
結(jié)語
在剛結(jié)束的ICLR 2018上,本文作者做了口頭報告(5月1日 04:00 -- 04:15 PM;Exhibition Hall A)。
研究人員打算以后進(jìn)一步探索分類以外的資源受限深度架構(gòu),比如圖像分割。此外,研究人員也有意探索更多進(jìn)一步優(yōu)化MSDNet的方法,比如模型壓縮,空間適應(yīng)計算,更高效的卷積操作。
-
圖像分類
+關(guān)注
關(guān)注
0文章
96瀏覽量
12382 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5587瀏覽量
123762
原文標(biāo)題:資源受限場景下的深度學(xué)習(xí)圖像分類:MSDNet多尺度密集網(wǎng)絡(luò)
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
討論紋理分析在圖像分類中的重要性及其在深度學(xué)習(xí)中使用紋理分析
深度學(xué)習(xí)介紹
什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?
圖像分類的方法之深度學(xué)習(xí)與傳統(tǒng)機器學(xué)習(xí)
一種新的目標(biāo)分類特征深度學(xué)習(xí)模型
Xilinx FPGA如何通過深度學(xué)習(xí)圖像分類加速機器學(xué)習(xí)
如何使用深度卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)服裝圖像分類檢索算法
深度學(xué)習(xí)中圖像分割的方法和應(yīng)用
詳解深度學(xué)習(xí)之圖像分割
關(guān)于深度學(xué)習(xí)圖像分類不得不說的技巧詳解
基于深度學(xué)習(xí)的圖像修復(fù)模型及實驗對比

深度學(xué)習(xí)的典型應(yīng)用是圖像分類問題
評論