
譯者 | 朱先忠
審校 | 重樓
本文提出一種優(yōu)化的細(xì)粒度圖像分類訓(xùn)練方案。通過整合大批量訓(xùn)練、學(xué)習(xí)率預(yù)熱、TrivialAugment增強(qiáng)、余弦退火、標(biāo)簽平滑、隨機(jī)擦除及EMA等現(xiàn)代訓(xùn)練技術(shù),顯著提升了ResNet-50等通用骨干網(wǎng)絡(luò)在斯坦福汽車數(shù)據(jù)集上的性能,證明了高效訓(xùn)練流程的關(guān)鍵作用,無需依賴特定架構(gòu)改進(jìn)。
簡介
在過去一年里,我在Multitel的研究主要集中在細(xì)粒度視覺分類(FGVC)上。具體來說,我致力于構(gòu)建一個可在邊緣設(shè)備上實時運行的魯棒性強(qiáng)的汽車分類器。
我希望本文能讓大家了解我們在Multitel所做的高水平工程和應(yīng)用研究,我們將學(xué)術(shù)嚴(yán)謹(jǐn)性與現(xiàn)實世界的約束相結(jié)合。無論你是同行研究員、充滿好奇心的工程師,還是正在考慮加入我們團(tuán)隊的人士,我都希望這篇文章能夠為你提供見解和靈感。
1.問題
我們需要一個能夠識別特定車型的系統(tǒng),而不僅僅是“這是寶馬”,而是識別寶馬的具體型號和年份。并且,它需要在資源受限的邊緣設(shè)備上與其他車型一起實時運行。這類任務(wù)屬于所謂的細(xì)粒度視覺分類(FGVC)問題。

兩個模型及其判別部分的示例(【引文1】)
FGVC旨在識別屬于某個超類別的多個下屬類別的圖像(例如,動物/植物類別、汽車模型等)。其難點在于理解細(xì)粒度的視覺差異,以充分區(qū)分整體外觀高度相似但細(xì)粒度特征不同的物體(【引文2】)。

細(xì)粒度分類與一般圖像分類(【引文3】)
那么,是什么使得FGVC變得特別棘手呢?
- 類別間差異小:類別之間的視覺差異可能非常微妙。
- 類別內(nèi)差異大:同時,同一類別內(nèi)的實例可能會因光照、姿勢、背景或其他環(huán)境因素的變化而發(fā)生很大差異。
- 細(xì)微的視覺差異很容易被姿勢和觀點等其他因素所掩蓋。
- 長尾分布:數(shù)據(jù)集通常包含少量樣本,而許多類別的樣本卻很少。例如,你可能只有幾張在偏遠(yuǎn)地區(qū)發(fā)現(xiàn)的稀有蜘蛛物種的圖像,而常見物種的圖像卻有數(shù)千張。這種不平衡使得模型難以在所有類別中都獲得同等的學(xué)習(xí)效果。

CUB200數(shù)據(jù)集中的兩種海鷗說明了細(xì)粒度物體分類的難度(【引文4】)
2.整體分析
當(dāng)我們最初開始著手解決這個問題時,我們自然而然地轉(zhuǎn)向了文獻(xiàn)參考方面。我們深入研究了有關(guān)學(xué)術(shù)論文,考察了基準(zhǔn)數(shù)據(jù)集,并探索了最先進(jìn)的FGVC方法。起初,這個問題看起來比實際情況要復(fù)雜得多,至少在我們特定的環(huán)境下是如此。
多年來,F(xiàn)GVC一直受到廣泛研究,其中不乏引入日益復(fù)雜的架構(gòu)和流程的方法。例如,許多早期研究提出了兩階段模型:首先,定位子網(wǎng)絡(luò)識別具有判別性的物體部分,然后第二個網(wǎng)絡(luò)基于這些部分進(jìn)行分類。其他研究則側(cè)重于自定義損失函數(shù)、高階特征交叉項或使用分層結(jié)構(gòu)的標(biāo)簽依賴關(guān)系建模。
所有這些方法都是為了解決細(xì)微的視覺差異而設(shè)計的,而正是這些差異使得FGVC如此具有挑戰(zhàn)性。如果你對這些方法的演變感興趣,Wei等人(【引文2】)提供了一篇詳盡的綜述,深入探討了其中的許多方法。

基于深度學(xué)習(xí)的細(xì)粒度圖像分析(FGIA)領(lǐng)域概述(【引文2】)
當(dāng)我們仔細(xì)研究最近的基準(zhǔn)測試結(jié)果(存檔自Papers with Code)時,我們發(fā)現(xiàn)許多性能最佳的解決方案都基于Transformer架構(gòu)。這些模型通常達(dá)到了最佳準(zhǔn)確率,但很少或根本沒有討論推理時間或部署限制。考慮到我們的要求,我們相當(dāng)肯定這些模型無法在已經(jīng)并行運行多個模型的邊緣設(shè)備上實時運行。
在進(jìn)行此項研究時,斯坦福汽車上報告的最佳結(jié)果是由CMAL-Net實現(xiàn)的97.1%的準(zhǔn)確率。
3. 我們的方法
我們沒有從最復(fù)雜或最專業(yè)的解決方案入手,而是采取了相反的方法:一個我們已經(jīng)知道能夠滿足實時性和部署約束的模型,能否在任務(wù)中表現(xiàn)得足夠好?具體來說,我們思考的是,一個可靠的通用架構(gòu),如果經(jīng)過適當(dāng)?shù)挠?xùn)練,能否讓我們接近更新、更強(qiáng)大的模型的性能。
這種思路引導(dǎo)我們閱讀了RossWightman等人的論文《ResNet反擊:Timm中的一種改進(jìn)訓(xùn)練程序》。在此論文中,Wightman提出了一個令人信服的論點:大多數(shù)新架構(gòu)都使用最新的進(jìn)展和技術(shù)進(jìn)行訓(xùn)練,但隨后會與使用過時方法訓(xùn)練的舊基線進(jìn)行比較。Wightman認(rèn)為,經(jīng)常用作基準(zhǔn)的ResNet-50往往未能從這些現(xiàn)代改進(jìn)中獲益。他的論文提出了一種改進(jìn)的訓(xùn)練程序,并表明,即使是原始的ResNet-50,只要訓(xùn)練得當(dāng),也能取得令人驚訝的強(qiáng)勁結(jié)果,包括在多個FGVC基準(zhǔn)測試中。
考慮到這些限制和目標(biāo),我們著手構(gòu)建自己的強(qiáng)大、可復(fù)用的訓(xùn)練程序,使其能夠在FGVC任務(wù)上實現(xiàn)高性能,而無需依賴特定于架構(gòu)的技巧。我們的想法很簡單:從ResNet-50等已知高效的骨干網(wǎng)絡(luò)入手,專注于改進(jìn)訓(xùn)練流程,而不是修改模型本身。這樣,相同的方案以后只需進(jìn)行少量調(diào)整即可應(yīng)用于其他架構(gòu)。
我們開始從多個來源收集想法、技術(shù)和訓(xùn)練改進(jìn),將最佳實踐整合成一個統(tǒng)一、有凝聚力的流程。具體來說,我們借鑒了四個關(guān)鍵資源:
- 使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類的技巧(He等人)
- 卷積神經(jīng)網(wǎng)絡(luò)中組合技術(shù)性能的復(fù)合改進(jìn)(Lee等人)
- ResNet反擊:Timm中改進(jìn)的訓(xùn)練程序(Wightman等人)
- 如何使用TorchVision的最新基元(Vryniotis)訓(xùn)練最先進(jìn)的模型我們的目標(biāo)是創(chuàng)建一個強(qiáng)大的訓(xùn)練流程,不依賴于特定于模型的調(diào)整。這意味著,我們要專注于廣泛適用于各種架構(gòu)的技術(shù)。
為了測試和驗證我們的訓(xùn)練流程,我們使用了斯坦福汽車數(shù)據(jù)集(【引文9】),這是一個廣泛使用的細(xì)粒度分類基準(zhǔn),與我們的實際用例高度契合。該數(shù)據(jù)集包含196個汽車類別和16,185張圖片,所有圖片均從車尾拍攝,以突出類別間的細(xì)微差異。數(shù)據(jù)幾乎均勻地分為8,144張訓(xùn)練圖像和8,041張測試圖像。為了模擬我們的部署場景,即分類模型在目標(biāo)檢測系統(tǒng)的下游運行,我們在訓(xùn)練和評估之前將每張圖像裁剪到其帶注釋的邊界框中。
雖然該數(shù)據(jù)集的原始托管網(wǎng)站已不再可用,但仍可通過Kaggle和Huggingface等精選存儲庫訪問。該數(shù)據(jù)集根據(jù)BSD-3-Clause許可證分發(fā),允許商業(yè)和非商業(yè)用途。在本研究中,該數(shù)據(jù)集僅用于研究,以產(chǎn)生本文中所示的結(jié)果。
斯坦福汽車數(shù)據(jù)集(【引文9】)中裁剪圖像的示例
制作方案
接下來是我們經(jīng)過實驗、迭代以及對上述研究成果的精心匯總而得出的精煉訓(xùn)練方案。其目的是表明,只需應(yīng)用現(xiàn)代訓(xùn)練最佳實踐,無需任何特定于架構(gòu)的技巧,我們就能使像ResNet-50這樣的通用模型在細(xì)粒度基準(zhǔn)測試中表現(xiàn)出色。
我們將從使用基本設(shè)置訓(xùn)練的原始ResNet-50開始,逐步引入改進(jìn)。
對于每種技術(shù),我們將報告:
- 個人績效增益
- 添加到管道時的累積增益雖然我們所使用的許多技術(shù)可能都很熟悉,但我們的目的是強(qiáng)調(diào),如果將這些技術(shù)巧妙地組合起來,就能發(fā)揮出多么強(qiáng)大的威力?;鶞?zhǔn)測試通常會將使用最新進(jìn)展訓(xùn)練的新架構(gòu)與使用過時方法訓(xùn)練的舊基線進(jìn)行比較,從而掩蓋這一點。在這里,我們想顛覆這種現(xiàn)狀,展示將精心調(diào)整的方法應(yīng)用于廣泛使用的高效主干網(wǎng)絡(luò),能夠帶來怎樣的潛力。
我們也意識到這些技術(shù)中有很多是相互影響的。因此,在實踐中,我們通過貪婪搜索或網(wǎng)格搜索調(diào)整了一些組合,以考慮協(xié)同效應(yīng)和相互依賴性。
基本方案
在深入優(yōu)化之前,我們先從一個干凈、簡單的基線開始。
我們使用斯坦福汽車數(shù)據(jù)集,在ImageNet上訓(xùn)練一個預(yù)訓(xùn)練好的ResNet-50模型。每個模型在單個RTX4090 GPU上訓(xùn)練600個epoch,并根據(jù)驗證集準(zhǔn)確率提前停止訓(xùn)練,訓(xùn)練周期為200個epoch。
我們使用:
- Nesterov加速梯度(NAG)優(yōu)化
- 學(xué)習(xí)率:0.01
- 批次大?。?2
- 動量:0.9
- 損失函數(shù):交叉熵所有訓(xùn)練和驗證圖像均裁剪至其邊界框,并調(diào)整為224×224像素。我們采用與引文5中相同的標(biāo)準(zhǔn)增強(qiáng)策略。
以下是基礎(chǔ)訓(xùn)練配置及其性能的摘要:
我們在每次運行中固定隨機(jī)種子,以確保可重復(fù)性并減少實驗之間的差異。為了評估方案變化的真實效果,我們遵循最佳實踐,并對多次運行(通常為3到5次)的結(jié)果進(jìn)行平均。
現(xiàn)在,我們將在此基礎(chǔ)上逐步構(gòu)建,每次介紹一種技術(shù),并追蹤其對準(zhǔn)確率的影響。目標(biāo)是分離出每個組成部分的貢獻(xiàn),以及它們組合應(yīng)用時如何產(chǎn)生協(xié)同效應(yīng)。
大批量訓(xùn)練
在小批量隨機(jī)梯度下降(SGD)中,梯度下降是一個隨機(jī)過程,因為每個批次中的樣本都是隨機(jī)選擇的。增加批次大小不會改變隨機(jī)梯度的期望,但會降低其方差。然而,使用較大的批次大小可能會減慢訓(xùn)練進(jìn)度。對于相同的迭代次數(shù),使用較大的批次大小進(jìn)行訓(xùn)練會導(dǎo)致模型的驗證準(zhǔn)確率低于使用較小批次大小進(jìn)行訓(xùn)練的模型。
He等人(【引文5】)認(rèn)為,隨著批量大小的增加,學(xué)習(xí)率呈線性增加,對于ResNet-50訓(xùn)練來說,具有經(jīng)驗有效性。
為了提高訓(xùn)練的準(zhǔn)確性和速度,我們將批次大小更改為128,學(xué)習(xí)率更改為0.1。我們添加了一個StepLR調(diào)度程序,每30個epoch將每個參數(shù)組的學(xué)習(xí)率衰減0.1。
學(xué)習(xí)率預(yù)熱
由于在訓(xùn)練開始時所有參數(shù)通常都是隨機(jī)值,使用過大的學(xué)習(xí)率可能會導(dǎo)致數(shù)值不穩(wěn)定。
在預(yù)熱啟發(fā)式方法中,我們一開始使用較小的學(xué)習(xí)率,然后在訓(xùn)練過程穩(wěn)定后切換回初始學(xué)習(xí)率。我們采用漸進(jìn)式預(yù)熱策略,將學(xué)習(xí)率從0線性增加到初始學(xué)習(xí)率。
我們添加了5個時期的線性預(yù)熱策略。

學(xué)習(xí)率曲線(作者本人提供圖片)

瑣碎增強(qiáng)算法
為了探索更強(qiáng)大的數(shù)據(jù)增強(qiáng)效果,我們用TrivialAugment替換了基準(zhǔn)增強(qiáng)。TrivialAugment的工作原理如下:它以圖像x和一組增強(qiáng)項A作為輸入。然后,它簡單地從A中均勻隨機(jī)地采樣一個增強(qiáng)項,并將此增強(qiáng)項應(yīng)用于給定圖像x,強(qiáng)度為m(從可能的強(qiáng)度集合{0,...,30}中均勻隨機(jī)采樣),并返回增強(qiáng)后的圖像。
TrivialAugment特別吸引人的地方在于它完全不需要參數(shù),不需要搜索或調(diào)整,使其成為一種簡單而有效的替代品,可以降低實驗的復(fù)雜性。
雖然這種通用且隨機(jī)的策略會優(yōu)于專門針對數(shù)據(jù)集進(jìn)行的數(shù)據(jù)增強(qiáng)或更復(fù)雜的自動增強(qiáng)方法,這似乎違反直覺,但我們嘗試了多種替代方案,TrivialAugment在多次運行中始終表現(xiàn)出色。它的簡單性、穩(wěn)定性以及出人意料的高效性使其成為一個引人注目的默認(rèn)選擇。

TrivialAugment的可視化(【引文10】)

余弦學(xué)習(xí)率衰減
接下來,我們探索了修改學(xué)習(xí)率方案。我們改用了余弦退火策略,該策略遵循余弦函數(shù)將學(xué)習(xí)率從初始值降低到0。余弦函數(shù)的一大優(yōu)勢在于無需優(yōu)化超參數(shù),這進(jìn)一步縮小了我們的搜索空間。

更新的學(xué)習(xí)率曲線(作者本人提供圖片)

標(biāo)簽平滑
減少過擬合的一個好方法是阻止模型變得過于自信。這可以通過使用標(biāo)簽平滑來軟化基本事實來實現(xiàn)。其思路是將真實標(biāo)簽的構(gòu)造更改為:

我們需要指定一個參數(shù)來控制平滑程度(越高越強(qiáng))。我們使用的平滑因子為ε=0.1,這是原始論文中提出的標(biāo)準(zhǔn)值,并在文獻(xiàn)中被廣泛采用。
有趣的是,我們通過經(jīng)驗發(fā)現(xiàn),添加標(biāo)簽平滑功能可以降低訓(xùn)練過程中的梯度方差。這使我們能夠安全地提高學(xué)習(xí)率,而不會破壞訓(xùn)練的穩(wěn)定性。因此,我們將初始學(xué)習(xí)率從0.1提高到了0.4。

隨機(jī)擦除
作為正則化的附加形式,我們在訓(xùn)練流程中引入了隨機(jī)擦除。該技術(shù)會在圖像中隨機(jī)選擇一個矩形區(qū)域,并以固定概率用隨機(jī)值替換其像素。
它通常與自動增強(qiáng)方法結(jié)合使用,由于其正則化效果,通常會在準(zhǔn)確性方面產(chǎn)生額外的提高。我們添加了概率為0.1的隨機(jī)擦除。

隨機(jī)擦除的示例(【引文11】)

指數(shù)移動平均線(EMA)
使用小批量訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,梯度下降法會在批次間更新模型參數(shù),從而引入噪聲并降低梯度的準(zhǔn)確性。指數(shù)移動平均法用于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),以提高其穩(wěn)定性和泛化能力。
EMA不僅僅使用在訓(xùn)練期間直接學(xué)習(xí)的原始權(quán)重,還維護(hù)模型權(quán)重的運行平均值,然后在每個訓(xùn)練步驟中使用當(dāng)前權(quán)重和先前EMA值的加權(quán)平均值進(jìn)行更新。
具體來說,在每個訓(xùn)練步驟中,EMA權(quán)重使用以下方法更新:

其中,θ是當(dāng)前模型權(quán)重,α是控制賦予過去多少權(quán)重的衰減因子。
通過在測試時評估EMA權(quán)重而不是原始權(quán)重,我們發(fā)現(xiàn)運行過程中的性能一致性有所提高,尤其是在訓(xùn)練的后期階段。

我們單獨測試了EMA,發(fā)現(xiàn)它在訓(xùn)練穩(wěn)定性和驗證性能方面都取得了顯著提升。但當(dāng)我們將EMA與其他技術(shù)整合到整個方案中時,它并沒有帶來進(jìn)一步的提升。結(jié)果似乎停滯不前,這表明大部分提升已經(jīng)被其他組件吸收了。
由于我們的目標(biāo)是開發(fā)通用的訓(xùn)練方案,而不是過度針對單個數(shù)據(jù)集的方案,因此我們選擇在最終設(shè)置中保留EMA。它的優(yōu)勢在其他條件下可能更為明顯,而且其低開銷使其成為安全的選擇。
我們測試過但未采用的優(yōu)化
我們還探索了一系列在其他圖像分類任務(wù)中通常有效的附加技術(shù),但發(fā)現(xiàn)它們要么沒有帶來顯著的改進(jìn),要么在某些情況下在斯坦福汽車數(shù)據(jù)集上的性能略有下降:
- 權(quán)重衰減:添加L2正則化,以抑制訓(xùn)練過程中的過大權(quán)重。我們在用例中對權(quán)重衰減進(jìn)行了廣泛的實驗,但它始終會導(dǎo)致性能下降。
- Cutmix/Mixup:Cutmix會替換圖像之間的隨機(jī)圖塊,并混合相應(yīng)的標(biāo)簽。Mixup則通過線性組合圖像和標(biāo)簽對來創(chuàng)建新的訓(xùn)練樣本。我們嘗試在訓(xùn)練過程中以相同的概率隨機(jī)應(yīng)用CutMix或MixUp,但這種方法會導(dǎo)致結(jié)果回歸。
- AutoAugment算法:AutoAugment算法取得了優(yōu)異的結(jié)果和頗具競爭力的準(zhǔn)確率,但我們發(fā)現(xiàn)TrivialAugment算法的表現(xiàn)更佳。更重要的是,TrivialAugment算法完全無需參數(shù),這縮小了我們的搜索空間并簡化了調(diào)優(yōu)過程。
- 備選優(yōu)化器和調(diào)度器:我們嘗試了多種優(yōu)化器和學(xué)習(xí)速率調(diào)度方案。Nesterov加速梯度(NAG)在所有優(yōu)化器中始終表現(xiàn)最佳,而余弦退火則脫穎而出,成為最佳調(diào)度器,無需額外調(diào)整超參數(shù)即可獲得優(yōu)異的結(jié)果。
4.結(jié)論
下圖總結(jié)了我們逐步建立訓(xùn)練方案時所取得的改進(jìn):

模型改進(jìn)帶來的累積準(zhǔn)確率提升(圖片由作者本人提供)
僅使用標(biāo)準(zhǔn)ResNet-50,我們就能夠在斯坦福汽車數(shù)據(jù)集上取得出色的性能,這表明仔細(xì)調(diào)整一些簡單的技術(shù)可以在細(xì)粒度分類中發(fā)揮很大作用。
然而,務(wù)必正確看待這一點。這些結(jié)果主要表明,我們可以訓(xùn)練一個模型,在干凈、精選的數(shù)據(jù)集中區(qū)分細(xì)粒度、代表性良好的類別。斯坦福汽車數(shù)據(jù)集幾乎是類別平衡的,包含高質(zhì)量圖像,大部分為正面圖像,并且沒有嚴(yán)重的遮擋或現(xiàn)實世界噪聲。但它并未解決諸如長尾分布、領(lǐng)域轉(zhuǎn)移或未知類別識別等挑戰(zhàn)。
實際上,你永遠(yuǎn)不可能擁有一個涵蓋所有車型的數(shù)據(jù)集——尤其是隨著新車型的出現(xiàn)而每天更新的數(shù)據(jù)集?,F(xiàn)實世界的系統(tǒng)需要處理分布偏移、開放集識別和不完美的輸入。
因此,雖然這可以作為強(qiáng)有力的基礎(chǔ)和概念證明,但要構(gòu)建強(qiáng)大且可投入生產(chǎn)的產(chǎn)品,仍有大量工作要做。
參考文獻(xiàn)
【1】Krause, Deng等人,《收集大規(guī)模細(xì)粒度汽車數(shù)據(jù)集》
【2】Wei等,《基于深度學(xué)習(xí)的細(xì)粒度圖像分析:一項綜述》
【3】Reslan和Farou,《利用深度學(xué)習(xí)對鳥類物種進(jìn)行自動細(xì)粒度分類》
【4】趙某等,《基于深度學(xué)習(xí)的細(xì)粒度對象分類與語義分割綜述》
【5】何等人,《利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類的技巧包》
【6】Lee等人,《復(fù)合卷積神經(jīng)網(wǎng)絡(luò)中組裝技術(shù)的性能改進(jìn)》
【7】Wightman等人,《ResNet反擊:Timm中改進(jìn)的訓(xùn)練程序》
【8】Vryniotis,《如何使用TorchVision的最新基元訓(xùn)練最先進(jìn)的模型》
【9】Krause等人,《用于細(xì)粒度分類的3D對象表示》
【10】Müller與Hutter,《TrivialAugment:無需調(diào)優(yōu)但最先進(jìn)的數(shù)據(jù)增強(qiáng)方法》
【11】Zhong等,《隨機(jī)擦除數(shù)據(jù)增強(qiáng)》
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:A Refined Training Recipe for Fine-Grained Visual Classification,作者:Ahmed Belgacem

























