0
本文作者: AI研習(xí)社-譯站 | 2019-06-26 15:45 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
Review: MSDNet?—?Multi-Scale Dense Networks (Image Classification)
作者 | Sik-Ho Tsang
翻譯 | 莫爾?哈該、Yao Lu、Winteryangwt、唐里、鳶尾
編輯 | 王立魚(yú)
原文鏈接:
https://towardsdatascience.com/review-msdnet-multi-scale-dense-networks-image-classification-4d949955f6d5
本文講述了康奈爾大學(xué)、復(fù)旦大學(xué)、清華大學(xué)和Facebook人工智能研究(FAIR)聯(lián)合開(kāi)發(fā)的多尺度密集網(wǎng)絡(luò)MSDNet。該網(wǎng)絡(luò)的作者在2017年的CVPR中提出了DenseNet(超過(guò)2900次引用,并獲得了最佳論文獎(jiǎng))。并在2018年的 ICLR 中提出MSDNet(多尺度密集網(wǎng)絡(luò))得到了數(shù)十次引用。
使用MSDNet,訓(xùn)練多個(gè)不同資源要求的分類(lèi)器來(lái)自適應(yīng)不同的測(cè)試時(shí)間。因此,對(duì)于高性能計(jì)算設(shè)備,圖像經(jīng)過(guò)整個(gè)網(wǎng)絡(luò)來(lái)完成圖像分類(lèi)。對(duì)于有限計(jì)算資源的設(shè)備,圖像提前退出網(wǎng)絡(luò)來(lái)完成相對(duì)粗略的圖像分類(lèi)?,F(xiàn)在來(lái)讓我們來(lái)看一下這個(gè)網(wǎng)絡(luò)是如何工作的。
大綱:
計(jì)算受限的圖像分類(lèi)概念
MSDNet 架構(gòu)
對(duì)隨時(shí)分類(lèi)和預(yù)算批分類(lèi)的評(píng)估。
網(wǎng)絡(luò)約減和惰性計(jì)算
結(jié)果
這里有兩種對(duì)計(jì)算受限的圖像分類(lèi)的設(shè)置。
給出任意的時(shí)間點(diǎn),網(wǎng)絡(luò)能強(qiáng)制輸出預(yù)測(cè)。
例如:安卓應(yīng)用上的移動(dòng)APP。
一個(gè)固定的計(jì)算預(yù)算在一組大量的樣例中共享,且花費(fèi)在簡(jiǎn)單和困難樣例上的時(shí)間并不平均。這在大型機(jī)器學(xué)習(xí)應(yīng)用中很有用。
例如:搜索引擎,社交媒體公司、在線廣告代理商,都要在有限硬件上處理大量數(shù)據(jù)。
截至2010年,谷歌圖像搜索已經(jīng)索引了超過(guò)100億張圖片,以后可能增長(zhǎng)到1萬(wàn)億張。一個(gè)新的模型處理每張圖片即使慢了0.1秒,額外的開(kāi)銷(xiāo)也會(huì)增加3170年的CPU時(shí)間。
在預(yù)算批分類(lèi)設(shè)置中,公司可以將節(jié)約在簡(jiǎn)單樣例上的計(jì)算量用在困難樣例上,從而提高平均準(zhǔn)確度。
MSDNet的示例
如上圖所示,MSDNet是一個(gè)多尺度的DenseNet。上面的路徑用于沒(méi)有縮小尺寸的圖像,下面的路徑用于更小尺度的圖片。
舉個(gè)例子,我們想分類(lèi)一張貓的圖片。在通過(guò)這個(gè)網(wǎng)絡(luò)的過(guò)程中,這個(gè)分類(lèi)有了0.6的分類(lèi)置信度,大于閾值。我們可以提前離開(kāi),剩下的網(wǎng)絡(luò)直接跳過(guò),這樣省下“簡(jiǎn)單”圖像的計(jì)算時(shí)間。
另一方面,對(duì)于“困難”圖像,我們可能需要經(jīng)過(guò)更深的網(wǎng)絡(luò)直到分類(lèi)置信度高于閾值。
因此,通過(guò)平衡花費(fèi)在“簡(jiǎn)單”和“困難”圖像的時(shí)間可以節(jié)省計(jì)算時(shí)間。
MSDNet架構(gòu)
它的垂直布局是微型的S層卷積網(wǎng)絡(luò)(S=3)。
對(duì)于第一層(l=1),通過(guò)下采樣來(lái)獲得較粗尺度的特征圖。
對(duì)于l=1,尺度為s的后續(xù)層 ,所有尺度為s和s-1的前面層的特征圖被連接。Conv(1×1)-BN-ReLU-Conv(3×3)-BN-ReLU被使用。
下面的圖和表更準(zhǔn)確地展示了某些s和l使用的特征圖。
在某些位置,有一些中間分類(lèi)器插在網(wǎng)絡(luò)中間。
每一個(gè)分類(lèi)器有兩個(gè)128維3*3的下采樣卷積層,后接一個(gè)2*2的平均池化層和線性層。
在訓(xùn)練過(guò)程中,邏輯損失函數(shù) L(fk)使用在每個(gè)分類(lèi)器上,并最小化加權(quán)累計(jì)損失。
D代表訓(xùn)練集,w_k>=0是分類(lèi)器k的權(quán)重。
經(jīng)驗(yàn)上w_k=1。
你可能會(huì)問(wèn):為什么不將中間分類(lèi)器插入ResNet和DenseNet?為什么我們必須需要MSDNet?作者也對(duì)此進(jìn)行了評(píng)估。有兩個(gè)主要原因。
在CIFAR-100數(shù)據(jù)集上使用不同網(wǎng)絡(luò)的中間分類(lèi)器的評(píng)估
問(wèn)題:粗粒度特征的缺乏。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)精粒度特征網(wǎng)絡(luò)的前層和粗粒度特征在網(wǎng)絡(luò)的后層。前層網(wǎng)絡(luò)乏粗粒度特征,并且附加到這些層的提早退出分類(lèi)器可能會(huì)產(chǎn)生令人不滿意的高錯(cuò)誤率。
左上圖顯示了中間分類(lèi)器的結(jié)果,這些分類(lèi)器也插入到ResNet和DenseNet中。分類(lèi)器的準(zhǔn)確性與其在網(wǎng)絡(luò)中的位置高度相關(guān)。特別是在ResNet(藍(lán)線)的情況下,可以觀察到可見(jiàn)的“階梯”模式,在第2和第4分類(lèi)器之后有很大的改進(jìn) - 位于匯集層。
解決方案:多尺度特征圖。MSDNet在整個(gè)網(wǎng)絡(luò)中維護(hù)多個(gè)比例的特征表示,并且所有分類(lèi)器僅使用粗粒度特征。
水平連接保留并進(jìn)行高分辨率信息,這有助于在后續(xù)層中構(gòu)建高質(zhì)量的粗粒度特征。垂直連接在整個(gè)過(guò)程中產(chǎn)生粗粒度的特征,易于分類(lèi)。
問(wèn)題:早期的分類(lèi)器會(huì)影響以后的分類(lèi)器。右上圖顯示了最終分類(lèi)器的精度與單個(gè)中間分類(lèi)器的位置的關(guān)系,相對(duì)于沒(méi)有中間分類(lèi)器的網(wǎng)絡(luò)的精度。
引入中間分類(lèi)器會(huì)損害最終的ResNet分類(lèi)器(藍(lán)線),將其準(zhǔn)確度降低多達(dá)7%。ResNet中的這種精確度降低可能是由影響早期特征的中間分類(lèi)器在短期而不是最終層優(yōu)化而引起的。
解決方案:密集連接。相比之下,DenseNet(紅線)受這種影響的影響要小得多。這是因?yàn)樵贒enseNet中,使用連接而不是在ResNet中使用加法來(lái)組合要素圖。較早層的特征映射可以繞過(guò)與后續(xù)層的密集連接。最終分類(lèi)器的性能變得(或多或少)獨(dú)立于中間分類(lèi)器的位置。
在任意時(shí)間分類(lèi)中,存在一個(gè)可用于每個(gè)測(cè)試樣例的有限的計(jì)算預(yù)算B>0。
在任意時(shí)間設(shè)置的測(cè)試期間,輸入通過(guò)神經(jīng)網(wǎng)絡(luò)傳播直到預(yù)算B全部用完并且輸出最接近的預(yù)測(cè)
3.2. 預(yù)算批分類(lèi)
在預(yù)算批分類(lèi)中,在預(yù)先知道的有限計(jì)算預(yù)算B>0的情況下,模型需要去分類(lèi)一個(gè)Dtest樣例集合{x1, ..., xM} 。
預(yù)算批處理可能會(huì)花費(fèi)少于B/M的計(jì)算用于分類(lèi)簡(jiǎn)單樣例,同時(shí)花費(fèi)更多的B/M計(jì)算應(yīng)用于困難樣例。
因此,當(dāng)我們擁有一大批的測(cè)試樣例,預(yù)算B就被認(rèn)為是一個(gè)軟約束。
在測(cè)試時(shí),示例遍歷網(wǎng)絡(luò)并且如果其預(yù)測(cè)置信度(作為置信度量的softmax概率的最大值)超過(guò)預(yù)定閾值θk,則在分類(lèi)器fk之后退出。在開(kāi)始訓(xùn)練之前,我們計(jì)算需要將網(wǎng)絡(luò)處理到第K個(gè)分類(lèi)器的計(jì)算成本Ck。
我們用0<q≤1表示固定的退出概率,到達(dá)分類(lèi)器的樣本將獲得具有足夠置信度的分類(lèi)以退出。
一個(gè)樣本在K分類(lèi)其中退出的可能性
z是歸一化常數(shù)在這里。
我們需要確保在Dtest中對(duì)所有樣品進(jìn)行分類(lèi)的總成本不超過(guò)我們的預(yù)算B,從而產(chǎn)生約束:
然后,我們可以解決上述問(wèn)題,并在保留/驗(yàn)證集上指定閾值,使得大約一小部分qkvalidation樣本在第k個(gè)分類(lèi)器處退出。
有兩種直接的方法可以進(jìn)一步降低MSDNets的計(jì)算要求。
首先,在網(wǎng)絡(luò)的最后一層之前保持所有更精細(xì)的比例是低效的。減小網(wǎng)絡(luò)大小的一個(gè)簡(jiǎn)單策略是沿深度維度將其分成S塊,并且僅在第i個(gè)塊中保持最粗糙(S-i + 1)比例,如上所示。這降低了訓(xùn)練和測(cè)試的計(jì)算成本。
其次,由于第1層的分類(lèi)器僅使用最粗尺度的特征,因此第1層中的更精細(xì)的特征圖(以及先前S-2層中的一些更精細(xì)的特征圖)不會(huì)影響該分類(lèi)器的預(yù)測(cè)。因此,“對(duì)角塊”中的計(jì)算被分組,使得我們僅沿著評(píng)估下一個(gè)分類(lèi)器所需的路徑傳播該示例。當(dāng)我們需要停止因?yàn)橛?jì)算預(yù)算耗盡時(shí),這最小化了不必要的計(jì)算。這種策略稱(chēng)為懶惰計(jì)算。
CIFAR-10 & CIFAR-100,這兩個(gè)CIFAR數(shù)據(jù)集包括了50000張訓(xùn)練圖像和10000張測(cè)試圖像,且均為32x32像素大小。5000張訓(xùn)練圖像作為一個(gè)驗(yàn)證集。數(shù)據(jù)集分別包含10個(gè)類(lèi)和100個(gè)類(lèi)。訓(xùn)練集采用標(biāo)準(zhǔn)數(shù)據(jù)擴(kuò)充、隨機(jī)裁剪和水平翻轉(zhuǎn),小批量大小為64。
ImageNet: ImageNet數(shù)據(jù)集包含1,000個(gè)類(lèi),總共有120萬(wàn)張訓(xùn)練圖像和50,000張驗(yàn)證圖像。從訓(xùn)練集中提取50000幅圖像,用于估計(jì)MSDNet分類(lèi)器的置信閾值。應(yīng)用了標(biāo)準(zhǔn)數(shù)據(jù)增強(qiáng)。在測(cè)試時(shí),將224×224像素大小中心裁剪的圖像調(diào)整為256×256像素進(jìn)行分類(lèi)。小批量大小為256。
在ImageNet上,使用4個(gè)scale,即S=4,每層分別生成16、32、64和64個(gè)feature map。在進(jìn)入MSDNets的第一層之前,首先通過(guò)7×7卷積和3×3 max pooling(均使用stride 2)對(duì)原始圖像進(jìn)行變換。
CIFAR-100的消融實(shí)驗(yàn)
使用一個(gè)包含6個(gè)中間分類(lèi)器的MSDNet,有三個(gè)主要組件,多尺度特征圖、密集連接和中間分類(lèi)器,每次刪除其中一個(gè)組件
如果去掉MSDNet中的所有三個(gè)部分,就得到了一個(gè)規(guī)則的類(lèi)vgg卷積網(wǎng)絡(luò)
讓我們公平地進(jìn)行對(duì)比,我們保持網(wǎng)絡(luò)的計(jì)算成本相近,約3.0×10?FLOPs,并且適應(yīng)網(wǎng)絡(luò)的寬度,如每層的輸出通道數(shù)。
當(dāng)然,原始的MSDNet(黑色)具有最高的精度。
去掉密集連通性(橙色)后,整體精度會(huì)受到極大的影響。
再加上去除多尺度卷積(淡藍(lán)色),精度只在低成本區(qū)域受到影響。這與作者的動(dòng)機(jī)是一致的,即多尺度設(shè)計(jì)在早期就引入了區(qū)分特征。
作者還提到,去掉所有3個(gè)組件后,在特定的預(yù)算下,它(Star)的性能與MSDNet類(lèi)似。(但我無(wú)法從圖中找到星星……)
MSDNet 有24層
分類(lèi)器對(duì)第2×(i+1)層的輸出進(jìn)行操作,i=1,…,11。
在ImageNet上,第i個(gè)分類(lèi)器作用于(k×i+3)第i層,i=1,…,5,其中k=4, 6, 7。
ImageNet(左)、CIFAR-100(中)、CIFAR-10(右) 上及時(shí)分類(lèi)準(zhǔn)確率top1
ResNetMC:帶有MC(多個(gè)分類(lèi)器)的ResNet,62層,每個(gè)空間分辨率有10個(gè)殘余塊(對(duì)于三個(gè)分辨率):早期退出分類(lèi)器在每個(gè)分辨率的第4和第8個(gè)殘余塊的輸出上,產(chǎn)生總共 6個(gè)中間分類(lèi)器(加上最終的分類(lèi)層)。
DenseNetMC:帶有MC的DenseNet,52層,三個(gè)dense block,每個(gè)dense block有16層。6個(gè)中間分類(lèi)器連接到每個(gè)塊的第6層和第12層,也與該塊中所有之前的層緊密連接。
ResNetMC和DenseNetMC完成所有的評(píng)估都需要大約1.3×10? FLOPs。
此外,還對(duì)不同深度的ResNets/DenseNets進(jìn)行了綜合評(píng)價(jià)。在測(cè)試時(shí),按照網(wǎng)絡(luò)大小的升序?qū)W(wǎng)絡(luò)進(jìn)行評(píng)估,以獲得測(cè)試數(shù)據(jù)的預(yù)測(cè)。所有的預(yù)測(cè)都在評(píng)估的分類(lèi)器上求平均值。在ImageNet上,深度從10層到50層不等的ResNets和DenseNets的集合,深度從36層到121層不等。
在CIFAR-100上,MSDNet在任何范圍內(nèi)都明顯優(yōu)于ResNetMC和DenseNetMC。這是因?yàn)樵趦H僅幾層之后MSDNets就生成了比ResNets或DenseNets早期的高分辨率特征圖更適合分類(lèi)的低分辨率特征圖。
在算力極低的情況下,總體具有優(yōu)勢(shì),因?yàn)樗鼈兊念A(yù)測(cè)是由第一個(gè)(小)網(wǎng)絡(luò)執(zhí)行的,該網(wǎng)絡(luò)專(zhuān)門(mén)針對(duì)低算力進(jìn)行優(yōu)化。然而,當(dāng)算力增加時(shí),總體的準(zhǔn)確性并沒(méi)有增加得那么快。
和MSDNets不同的是,該集合反復(fù)的重復(fù)類(lèi)似底層特征的計(jì)算。
當(dāng)所有網(wǎng)絡(luò)都是淺層時(shí),集合精度會(huì)迅速飽和。
在CIFAR-10和CIFAR-100上,MSDNet網(wǎng)絡(luò)的范圍從10層到36層。第k個(gè)分類(lèi)器附加到{1+…+ k}層。
ImageNet上使用了與及時(shí)分類(lèi)相同的網(wǎng)絡(luò)。
ImageNet(左)、CIFAR-100(中)、CIFAR-10(右) 上Budgeted Batch Classification精度top1
在 Budgeted Batch Classification 中,預(yù)測(cè)模型接收一批M個(gè)實(shí)例和一個(gè)用于對(duì)所有M個(gè)實(shí)例進(jìn)行分類(lèi)的計(jì)算預(yù)算B. 使用動(dòng)態(tài)評(píng)估。
在ImageNet上,M = 128,比較五個(gè)DenseNets,五個(gè)ResNets,一個(gè)AlexNet和一個(gè)GoogLeNet。
5個(gè)ResNet的集合: “簡(jiǎn)單”圖像只通過(guò)最小的ResNet-10傳送,而“復(fù)雜”圖像由所有5個(gè)ResNet模型分類(lèi)。(預(yù)測(cè)在整體中的所有評(píng)估網(wǎng)絡(luò)中取平均值)。
在CIFAR-100、M=256上,比較了不同大小的ResNets, DenseNets,Stochastic Depth Networks,Wide ResNets,F(xiàn)ractalNets,ResNetMC和DenseNetMC。
如圖所示,使用了三個(gè)不同深度的MSDNets,將它們組合在一起,覆蓋了大范圍的計(jì)算預(yù)算。
例如,在ImageNet上,平均預(yù)算為1.7×10? FLOPs,MSDNet達(dá)到了前75%的精度,比具有相同F(xiàn)LOP數(shù)量的ResNet高出約6%。
與計(jì)算效率高的DenseNets相比,MSDNet使用少約2至3倍的FLOP來(lái)實(shí)現(xiàn)相同的分類(lèi)精度。
在CIFAR-100上,MSDNets在所有預(yù)算中始終優(yōu)于所有基準(zhǔn)。
MSDNet的性能與110層ResNet相當(dāng),僅使用十分之一的算力。
MSDNet的效率比DenseNets,Stochastic Depth Networks,Wide ResNets和FractalNets高出5倍。
與任何時(shí)間預(yù)測(cè)設(shè)置的結(jié)果相似,MSDNet具有多個(gè)中間分類(lèi)器,其性能顯著優(yōu)于ResNetsMC和DenseNetsMC,這進(jìn)一步證明了MSDNet中的粗粒度特征對(duì)于早期層的高性能非常重要。
在ImageNet上可視化簡(jiǎn)單和困難的圖像
簡(jiǎn)單圖像(頂行):退出第一個(gè)分類(lèi)器并正確分類(lèi)。
復(fù)雜圖像(下一行):退出第一個(gè)分類(lèi)器,分類(lèi)不正確,然而最后一個(gè)分類(lèi)器分類(lèi)正確,屬于非典型圖像。
一種更有效的DenseNet被發(fā)現(xiàn)并研究。作者還認(rèn)為這是在探索MSDNet過(guò)程中的一個(gè)有趣發(fā)現(xiàn)。
隨時(shí)分類(lèi)(左)和預(yù)算批分類(lèi)(右)
DenseNet*:通過(guò)將每個(gè)過(guò)渡層之后的增長(zhǎng)率加倍來(lái)修改原始DenseNets,以便將更多過(guò)濾器應(yīng)用于低分辨率特征圖。
DenseNet*(綠色)在計(jì)算效率方面明顯優(yōu)于原始的DenseNet(紅色)。
在隨時(shí)分類(lèi)中,不同深度的DenseNets*的集合只比MSDNet稍差。
在預(yù)算批分類(lèi)中,MSDNet的性能仍然大大優(yōu)于不同深度的DenseNets*。
對(duì)于今后的工作,作者計(jì)劃在分類(lèi)之外進(jìn)行研究(比如圖像分割)將MSDNet與模型壓縮、空間自適應(yīng)計(jì)算和更有效的卷積操作相結(jié)合。對(duì)我而已,這篇論文有很多重要的事實(shí)和概念,所以我寫(xiě)了這么長(zhǎng)的文章。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
參考文獻(xiàn)
[2018 ICLR] [MSDNet]
Multi-Scale Dense Networks for Resource Efficient Image Classification
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
點(diǎn)擊【什么是多尺度密集網(wǎng)絡(luò)-MSDNet?】即可訪問(wèn):
今日資源推薦:AI入門(mén)、大數(shù)據(jù)、機(jī)器學(xué)習(xí)免費(fèi)教程
35本世界頂級(jí)原本教程限時(shí)開(kāi)放,這類(lèi)書(shū)單由知名數(shù)據(jù)科學(xué)網(wǎng)站 KDnuggets 的副主編,同時(shí)也是資深的數(shù)據(jù)科學(xué)家、深度學(xué)習(xí)技術(shù)愛(ài)好者的Matthew Mayo推薦,他在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域具有豐富的科研和從業(yè)經(jīng)驗(yàn)。
點(diǎn)擊鏈接即可獲取:https://ai.yanxishe.com/page/resourceDetail/417
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。