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