亞馬遜:用CNN進行圖像分類的Tricks
點擊下方卡片,關(guān)注“新機器視覺”公眾號
視覺/圖像重磅干貨,第一時間送達
來源: arXiv
編輯:劉曉坤、思源
自 2012 年 AlexNet 大展神威以來,研究者已經(jīng)提出了各種卷積架構(gòu),包括 VGG、NiN、Inception、ResNet、DenseNet 和 NASNet 等,我們會發(fā)現(xiàn)模型的準確率正穩(wěn)定提升。
但是現(xiàn)在這些提升并不僅僅來源于架構(gòu)的修正,還來源于訓(xùn)練過程的改進:包括損失函數(shù)的優(yōu)化、數(shù)據(jù)預(yù)處理方法的提煉和最優(yōu)化方法的提升等。在過去幾年中,卷積網(wǎng)絡(luò)與圖像分割出現(xiàn)大量的改進,但大多數(shù)在文獻中只作為實現(xiàn)細節(jié)而簡要提及,而其它還有一些技巧甚至只能在源代碼中找到。
在這篇論文中,李沐等研究者研究了一系列訓(xùn)練過程和模型架構(gòu)的改進方法。這些方法都能提升模型的準確率,且?guī)缀醪辉黾尤魏斡嬎銖?fù)雜度。它們大多數(shù)都是次要的「技巧」,例如修正卷積步幅大小或調(diào)整學(xué)習(xí)率策略等。總的來說,采用這些技巧會產(chǎn)生很大的不同。因此研究者希望在多個神經(jīng)網(wǎng)絡(luò)架構(gòu)和數(shù)據(jù)集上評估它們,并研究它們對最終模型準確率的影響。
研究者的實驗表明,一些技巧可以顯著提升準確率,且將它們組合在一起能進一步提升模型的準確率。研究者還對比了基線 ResNet 、加了各種技巧的 ResNet、以及其它相關(guān)的神經(jīng)網(wǎng)絡(luò),下表 1 展示了所有的準確率對比。這些技巧將 ResNet50 的 Top-1 驗證準確率從 75.3%提高到 79.29%,還優(yōu)于其他更新和改進的網(wǎng)絡(luò)架構(gòu)。此外,研究者還表示這些技巧很多都可以遷移到其它領(lǐng)域和數(shù)據(jù)集,例如目標(biāo)檢測和語義分割等。
論文:Bag of Tricks for Image Classification with Convolutional Neural Networks

論文地址:https://arxiv.org/pdf/1812.01187.pdf
摘要:圖像分類研究近期的多數(shù)進展都可以歸功于訓(xùn)練過程的調(diào)整,例如數(shù)據(jù)增強和優(yōu)化方法的變化。然而,在這些文獻中,大多數(shù)微調(diào)方法要么被簡單地作為實現(xiàn)細節(jié),或僅能在源代碼中看到。在本文中,我們將測試一系列的微調(diào)方法,并通過控制變量實驗評估它們對最終準確率的影響。我們將展示通過組合不同的微調(diào)方法,我們可以顯著地改善多種 CNN 模型。例如,我們將 ImageNet 上訓(xùn)練的 ResNet-50 的 top-1 驗證準確率從 75.3% 提升到 79.29。本研究還表明,圖像分類準確率的提高可以在其他應(yīng)用領(lǐng)域(如目標(biāo)檢測和語義分割)中實現(xiàn)更好的遷移學(xué)習(xí)性能。
目前我們基本上都用小批量 SGD 或其變體訓(xùn)練神經(jīng)網(wǎng)絡(luò),Algorithm 1 展示了 SGD 的模版過程(感興趣的讀者可以查閱原論文)。利用廣泛使用的 ResNet 實現(xiàn)作為我們的基線,訓(xùn)練過程主要分為以下六個步驟:
隨機采樣一張圖片,并解碼為 32 位的原始像素浮點值,每一個像素值的取值范圍為 [0, 255]。
隨機以 [3/4, 4/3] 為長寬比、[8%, 100%] 為比例裁減矩形區(qū)域,然后再縮放為 224*224 的方圖。
以 0.5 的概率隨機水平翻轉(zhuǎn)圖像。
從均勻分布 [0.6, 1.4] 中抽取系數(shù),并用于縮放色調(diào)和明亮度等。
從正態(tài)分布 N (0, 0.1) 中采樣一個系數(shù),以添加 PCA 噪聲。
圖像分別通過減去(123.68, 116.779, 103.939),并除以(58.393, 57.12, 57.375)而獲得經(jīng)歸一化的 RGB 三通道。
經(jīng)過六步后就可以訓(xùn)練并驗證了,以下展示了基線模型的準確率:

表 2:文獻中實現(xiàn)的驗證準確率與我們基線模型的驗證準確率,注意 Inception V3 的輸入圖像大小是 299*299。
隨著 GPU 等硬件的流行,很多與性能相關(guān)的權(quán)衡取舍或最優(yōu)選擇都已經(jīng)發(fā)生了改變。在這一章節(jié)中,我們研究了能利用低精度和大批量訓(xùn)練優(yōu)勢的多種技術(shù),它們都不會損害模型的準確率,甚至有一些技術(shù)還能同時提升準確率與訓(xùn)練速度。
3.1 大批量訓(xùn)練
對于凸優(yōu)化問題,隨著批量的增加,收斂速度會降低。人們已經(jīng)知道神經(jīng)網(wǎng)絡(luò)會有類似的實證結(jié)果 [25]。換句話說,對于相同數(shù)量的 epoch,大批量訓(xùn)練的模型與使用較小批量訓(xùn)練的模型相比,驗證準確率會降低。因此有很多方法與技巧都旨在解決這個問題:
線性擴展學(xué)習(xí)率:較大的批量會減少梯度的噪聲,從而可以增加學(xué)習(xí)率來加快收斂。
學(xué)習(xí)率預(yù)熱:在預(yù)熱這一啟發(fā)式方法中,我們在最初使用較小的學(xué)習(xí)率,然后在訓(xùn)練過程變得穩(wěn)定時換回初始學(xué)習(xí)率。
Zero γ:注意 ResNet 塊的最后一層可以是批歸一化層(BN)。在 zero γ啟發(fā)式方法中,我們對所有殘差塊末端的 BN 層初始化γ=0。因此,所有的殘差塊僅返回輸入值,這相當(dāng)于網(wǎng)絡(luò)擁有更少的層,在初始階段更容易訓(xùn)練。
無偏衰減:無偏衰減啟發(fā)式方法僅應(yīng)用權(quán)重衰減到卷積層和全連接層的權(quán)重,其它如 BN 中的γ和β都不進行衰減。

表 4:ResNet-50 上每種有效訓(xùn)練啟發(fā)式的準確率效果。
3.2 低精度訓(xùn)練
然而,新硬件可能具有增強的算術(shù)邏輯單元以用于較低精度的數(shù)據(jù)類型。盡管具備性能優(yōu)勢,但是精度降低具有較窄的取值范圍,因此有可能出現(xiàn)超出范圍而擾亂訓(xùn)練進度的情況。

表 3:ResNet-50 在基線(BS = 256 與 FP32)和更高效硬件設(shè)置(BS = 1024 與 FP16)之間的訓(xùn)練時間和驗證準確率的比較。
我們將簡要介紹 ResNet 架構(gòu),特別是與模型變體調(diào)整相關(guān)的模塊。ResNet 網(wǎng)絡(luò)由一個輸入主干、四個后續(xù)階段和一個最終輸出層組成,如圖 1 所示。輸入主干有一個 7×7 卷積,輸出通道有 64 個,步幅為 2,接著是 3 ×3 最大池化層,步幅為 2。輸入主干(input stem)將輸入寬度和高度減小 4 倍,并將其通道尺寸增加到 64。
從階段 2 開始,每個階段從下采樣塊開始,然后是幾個殘差塊。在下采樣塊中,存在路徑 A 和路徑 B。路徑 A 具有三個卷積,其卷積核大小分別為 1×1、3×3 和 1×1。第一個卷積的步幅為 2,以將輸入長度和寬度減半,最后一個卷積的輸出通道比前兩個大 4 倍,稱為瓶頸結(jié)構(gòu)。路徑 B 使用步長為 2 的 1×1 卷積將輸入形狀變換為路徑 A 的輸出形狀,因此我們可以對兩個路徑的輸出求和以獲得下采樣塊的輸出。殘差塊類似于下采樣塊,除了僅使用步幅為 1 的卷積。
我們可以改變每個階段中殘差塊的數(shù)量以獲得不同的 ResNet 模型,例如 ResNet-50 和 ResNet-152,其中的數(shù)字表示網(wǎng)絡(luò)中卷積層的數(shù)量。

圖 1:ResNet-50 的架構(gòu)。圖中說明了卷積層的卷積核大小、輸出通道大小和步幅大小(默認值為 1),池化層也類似。

圖 2:三個 ResNet 變體。ResNet-B 修改 ResNet 的下采樣模塊。ResNet-C 進一步修改輸入主干。在此基礎(chǔ)上,ResNet-D 再次修改了下采樣塊。

表 5:將 ResNet-50 與三種模型變體進行模型大小(參數(shù)數(shù)量)、FLOPs 和 ImageNet 驗證準確率(top-1、top-5)的比較。
5.1 余弦學(xué)習(xí)率衰減
Loshchilov 等人 [18] 提出余弦退火策略,其簡化版本是按照余弦函數(shù)將學(xué)習(xí)速率從初始值降低到 0。假設(shè)批次總數(shù)為 T(忽略預(yù)熱階段),然后在批次 t,學(xué)習(xí)率η_t 計算如下:

其中η是初始學(xué)習(xí)率,我們將此方案稱為「余弦」衰減。

圖 3:可視化帶有預(yù)熱方案的學(xué)習(xí)率變化。頂部:批量大小為 1024 的余弦衰減和按迭代步衰減方案。底部:關(guān)于兩個方案的 top-1 驗證準確率曲線。
5.2 標(biāo)簽平滑
標(biāo)簽平滑的想法首先被提出用于訓(xùn)練 Inception-v2 [26]。它將真實概率的構(gòu)造改成:

其中ε是一個小常數(shù),K 是標(biāo)簽總數(shù)量。

圖 4:ImageNet 上標(biāo)簽平滑效果的可視化。頂部:當(dāng)增加ε時,目標(biāo)類別與其它類別之間的理論差距減小。下圖:最大預(yù)測與其它類別平均值之間差距的經(jīng)驗分布。很明顯,通過標(biāo)簽平滑,分布中心處于理論值并具有較少的極端值。
5.3 知識蒸餾
在知識蒸餾 [10] 中,我們使用教師模型來幫助訓(xùn)練當(dāng)前模型(被稱為學(xué)生模型)。教師模型通常是具有更高準確率的預(yù)訓(xùn)練模型,因此通過模仿,學(xué)生模型能夠在保持模型復(fù)雜性相同的同時提高其自身的準確率。一個例子是使用 ResNet-152 作為教師模型來幫助訓(xùn)練 ResNet-50。
5.4 混合訓(xùn)練
在混合訓(xùn)練(mixup)中,每次我們隨機抽樣兩個樣本 (x_i,y_i) 和 (x_j,y_j)。然后我們通過這兩個樣本的加權(quán)線性插值構(gòu)建一個新的樣本:

其中 λ∈[0,1] 是從 Beta(α, α) 分布提取的隨機數(shù)。在混合訓(xùn)練中,我們只使用新的樣本 (x hat, y hat)。
5.5 實驗結(jié)果

表 6:通過堆疊訓(xùn)練改進方法,得到的 ImageNet 驗證準確率。基線模型為第 3 節(jié)所描述的。
6.1 目標(biāo)檢測

表 8:在 Pascal VOC 上評估各種預(yù)訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)的 Faster-RCNN 性能。
6.2 語義分割

—版權(quán)聲明—
僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。
若有侵權(quán),請聯(lián)系微信號:yiyang-sy 刪除或修改!
