吊打一切現有版本的YOLO!曠視重磅開(kāi)源YOLOX:新一代目標檢測性能速度擔當!
導讀
YOLO系列終于又回到了Anchor-free的懷抱,不用費勁心思去設計anchor了!曠視開(kāi)源新的高性能檢測器YOLOX,本文將近兩年來(lái)目標檢測領(lǐng)域的各個(gè)角度的優(yōu)秀進(jìn)展與YOLO進(jìn)行了巧妙地集成組合,性能大幅提升。
paper: https://arxiv.org/abs/2107.08430
code: https://github.com/Megvii-BaseDetection/YOLOX
本文是曠視科技在目標檢測方面的最新技術(shù)總結,同時(shí)也是CVPR2021自動(dòng)駕駛競賽冠軍方案的技術(shù)總結。本文將近兩年來(lái)目標檢測領(lǐng)域的各個(gè)角度的優(yōu)秀進(jìn)展與YOLO進(jìn)行了巧妙地集成組合(比如解耦頭、數據增廣、標簽分配、Anchor-free機制等)得到了YOLOX,性能取得了大幅地提升,同時(shí)仍保持了YOLO系列一貫地高效推理。此外值得一提的是,YOLO系列終于又回到了Anchor-free的懷抱,不用費勁心思去設計anchor了。
Abstract
本文針對YOLO系列進(jìn)行了一些經(jīng)驗性改進(jìn),構建了一種新的高性能檢測器YOLOX。本文將YOLO檢測器調整為了Anchor-Free形式并集成了其他先進(jìn)檢測技術(shù)(比如decoupled head、label assignment SimOTA)取得了SOTA性能,比如:
對于YOLO-Nano,所提方法僅需0.91M參數+1.08G FLOPs取得了25.3%AP指標,以1.8%超越了NanoDet;
對于YOLOv3,所提方法將指標提升到了47.3%,以3%超越了當前最佳;
具有與YOLOv4-CSP、YOLOv5-L相當的參數量,YOLOX-L取得了50.0%AP指標同事具有68.9fps推理速度(Tesla V100),指標超過(guò)YOLOv5-L 1.8%;
值得一提的是,YOLOX-L憑借單模型取得了Streaming Perception(Workshop on Autonomous Driving at CVPR 2021)競賽冠軍。
此外,值得一提的,該方法的ONNX、TensorRT、NCNN、OpenVino推理模型均已開(kāi)源,為什么還不去體驗一把呢???
YOLOX
YOLOX-DarkNet53
我們選擇YOLOv3+DarkNet53作為基線(xiàn),接下來(lái),我們將逐步介紹YOLOX的整個(gè)系統設計。
Implementation Details 我們的訓練配置從基線(xiàn)模型到最終模型基本一致。在COCO train2017上訓練300epoch并進(jìn)行5epoch的warm-up。優(yōu)化器為SGD,學(xué)習率為,初始學(xué)習率為0.01,cosine學(xué)習機制。weight decay設置為0.0005,momentum設置為0.9, batch為128(8GPU)。輸入尺寸從448以步長(cháng)32均勻過(guò)渡到832. FPS與耗時(shí)采用FP-16精度、bs=1在Tesla V100測試所得。
YOLOv3 baseline 基線(xiàn)模型采用了DarkNet53骨干+SPP層(即所謂的YOLOv3-SPP)。我們對原始訓練策略進(jìn)行輕微調整:添加了EMA權值更新、cosine學(xué)習率機制、IoU損失、IoU感知分支。我們采用BCE損失訓練cls與obj分支,IoU損失訓練reg分支。這些廣義的訓練技巧與YOLOX的關(guān)鍵改進(jìn)是正交的,因此,我們將其添加到baseline中。此外,我們添加了RandomHorizontalFlip、ColorJitter以及多尺度數據增廣,移除了RandomResizedCrop?;谏鲜鲇柧毤记?,基線(xiàn)模型在COCO val上取得了38.5%AP指標,見(jiàn)Figure2.
Decoupled Head 在目標檢測中,分類(lèi)與回歸任務(wù)的沖突是一種常見(jiàn)問(wèn)題。因此,分類(lèi)與定位頭的解耦已被廣泛應用到單階段、兩階段檢測中。然而,隨著(zhù)YOLO系列的骨干、特征金字塔的進(jìn)化,單其檢測頭仍處于耦合狀態(tài),見(jiàn)上圖。
我們分析發(fā)現:檢測頭耦合會(huì )影響模型性能。采用解耦頭替換YOLO的檢測頭可以顯著(zhù)改善模型收斂速度,見(jiàn)上圖。解耦頭對于端到端版本YOLO非常重要,可參考下表。因此,我們將YOLO的檢測頭替換為輕量解耦頭,見(jiàn)上面的Figure2:它包含一個(gè)卷積進(jìn)行通道降維,后接兩個(gè)并行分支(均為卷積)。注:輕量頭可以帶來(lái)1.1ms的推理耗時(shí)。
Strong data augmentation 我們添加了Mosaic與Mixup兩種數據增廣以提升YOLOX的性能。Mosaic是U版YOLOv3中引入的一種有效增廣策略,后來(lái)被廣泛應用于YOLOv4、YOLOv5等檢測器中。MixUp早期是為圖像分類(lèi)設計后在BoF中進(jìn)行修改用于目標檢測訓練。通過(guò)這種額外的數據增廣,基線(xiàn)模型取得了42.0%AP指標。注:由于采用了更強的數據增廣,我們發(fā)現ImageNet預訓練將毫無(wú)意義,因此,所有模型我們均從頭開(kāi)始訓練。
Anchor-free YOLOv4、YOLOv5均采用了YOLOv3原始的anchor設置。然而anchor機制存在諸多問(wèn)題:(1) 為獲得最優(yōu)檢測性能,需要在訓練之前進(jìn)行聚類(lèi)分析以確定最佳anchor集合,這些anchor集合存在數據相關(guān)性,泛化性能較差;(2) anchor機制提升了檢測頭的復雜度。
Anchor-free檢測器在過(guò)去兩年得到了長(cháng)足發(fā)展并取得了與anchor檢測器相當的性能。將YOLO轉換為anchor-free形式非常簡(jiǎn)單,我們將每個(gè)位置的預測從3下降為1并直接預測四個(gè)值:即兩個(gè)offset以及高寬。參考FCOS,我們將每個(gè)目標的中心定位正樣本并預定義一個(gè)尺度范圍以便于對每個(gè)目標指派FPN水平。這種改進(jìn)可以降低檢測器的參數量于GFLOPs進(jìn)而取得更快更優(yōu)的性能:42.9%AP。
Multi positives 為確保與YOLOv3的一致性,前述anchor-free版本僅僅對每個(gè)目標賦予一個(gè)正樣本,而忽視了其他高質(zhì)量預測。參考FCOS,我們簡(jiǎn)單的賦予中心區域為正樣本。此時(shí)模型性能提升到45.0%,超過(guò)了當前最佳U版YOLOv3的44.3%。
SimOTA 先進(jìn)的標簽分配是近年來(lái)目標檢測領(lǐng)域的另一個(gè)重要進(jìn)展?;谖覀兊腛TA研究,我們總結了標簽分配的四個(gè)關(guān)鍵因素:(1) loss/quality aware; (2) center prior; (3) dynamic number of positive anchors; (4) global view。OTA滿(mǎn)足上述四條準則,因此我們選擇OTA作為候選標簽分配策略。具體來(lái)說(shuō),OTA從全局角度分析了標簽分配并將其轉化為最優(yōu)運輸問(wèn)題取得了SOTA性能。
然而,我們發(fā)現:最優(yōu)運輸問(wèn)題優(yōu)化會(huì )帶來(lái)25%的額外訓練耗時(shí)。因此,我們將其簡(jiǎn)化為動(dòng)態(tài)top-k策略以得到一個(gè)近似解(SimOTA)。SimOTA不僅可以降低訓練時(shí)間,同時(shí)可以避免額外的超參問(wèn)題。SimOTA的引入可以將模型的性能從45.0%提升到47.3%,大幅超越U版YOLOv的44.3%。
End-to-End YOLO 我們參考PSS添加了兩個(gè)額外的卷積層,one-to-one標簽分配以及stop gradient。這些改進(jìn)使得目標檢測器進(jìn)化成了端到端形式,但會(huì )輕微降低性能與推理速度。因此,我們將該改進(jìn)作為可選模塊,并未包含在最終模型中。
Other Backbones
除了DarkNet53外,我們還測試其他不同尺寸的骨干,YOLOX均取得了一致的性能提升。
Modified CSPNet in YOLOv5 為公平對比,我們采用了YOLOv5的骨干,包含CSPNet、SiLU激活以及PAN頭。我們同樣還延續了其縮放規則得到了YOLOX-S、YOLOX-M、YOLOX-L以及YOLOX-X等模型。對比結果見(jiàn)下表,可以看到:僅需非常少的額外的推理耗時(shí),所提方法取得了3.0%~1.0%的性能提升。
Tiny and Nano detectors 我們進(jìn)一步收縮模型得到YOLOX-Tiny以便于與YOLOv4-Tiny對比??紤]到端側設備,我們采用深度卷積構建YOLOX-nano模型,它僅有0.91M參數量+1.08GFLOPs計算量。性能對比見(jiàn)下表,可以看到:YOLOX在非常小的模型尺寸方面表現仍然非常優(yōu)異。
Model size and data augmentation 在所有實(shí)驗中,我們讓所有模型保持幾乎相同的學(xué)習率機制和優(yōu)化參數。然而,我們發(fā)現:合適的增廣策略會(huì )隨模型大小而變化。從下表可以看到:MixUp可以幫助YOLOX-L取得0.9%AP指標提升,但會(huì )弱化YOLOX-Nano的性能?;谏鲜鰧Ρ?,當訓練小模型時(shí),我們移除MixUp,并弱化Mosaic增廣,模型性能可以從24.0%提升到25.3%。而對于大模型則采用默認配置。
Comparison with the SOTA
上表對比了所提YOLOX與其他SOTA檢測器的性能對比,從中可以看到:相比YOLOv3、YOLOv4、YOLOv5系列,所提YOLOX取得了最佳性能,同時(shí)具有極具競爭力的推理速度??紤]到上表中推理速度的不可控因素,我們在同一平臺上進(jìn)行了統一對比,見(jiàn)下圖。所以,YOLOX就是目標檢測領(lǐng)域高性能+高速度的新一代擔當。
1st Place on Streaming Perception Challenge
上圖截取自CVPR自動(dòng)駕駛競賽官網(wǎng),本文所提YOLOX(BaseDet)取得了冠軍。所提交的模型為YOLOX-L,推理采用了TensorRT,推理速度小于33ms。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。