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