PP-YOLOv2開源,你的目標檢測器又該升級了!性能超越Y(jié)OLOv5且推理耗時保持不變

極市導(dǎo)讀
本文是百度的研究員對PP-YOLO的一次升級,從PP-YOLO出發(fā),通過增量消融方式逐步添加有助于性能提升且不增加推理耗時的措施,取得了更佳的性能(49.5%mAP)-速度(69FPS)均衡,并優(yōu)于YOLOv4與YOLOv5。 >>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

paper: https://arxiv.org/abs/2104.10419
code: https://github.com/PaddlePaddle/PaddleDetection
本文是百度的研究員對PP-YOLO的一次升級,取得更佳的性能(49.5%mAP)-速度(69FPS)均衡,并優(yōu)于YOLOv4與YOLOv5。從PP-YOLO出發(fā),通過增量消融方式逐步添加有助于性能提升且不增加推理耗時的模塊達到提升PP-YOLO模型性能的目的。本文不僅對起正向作用的改進措施進行了分析,同時還對起負面作用的方案進行了說明??偠灾?,一句話:你的目標檢測器又該升級了。
Abstract
在實際應(yīng)用場景中,有效性與高效性對于目標檢測器非常重要。為滿足這兩個問題,我們?nèi)嬖u估了現(xiàn)有提高PP-YOLO性能的改進措施同時保持推理耗時不變。
本文對現(xiàn)有改進措施進行了分析并通過增強消融研究評估了其對最終模型的影響,此外,那些不起作用的也進行了討論。通過組合多種有效改進,我們將PP-YOLO在COCO2017 test-dev數(shù)據(jù)上的性能從45.9%mAP提升到了49.5%mAP,并將所得到的模型稱之為PP-YOLOv2。在推理速度方面,PP-YOLOv2可以達到68.9FPS@輸入尺寸;采用Paddle推理引擎+TensorRT+FP16+bs1,可以進一步將PP-YOLOv2的推理速度提升到106.5FPS。這樣優(yōu)秀的性能碾壓了同等參數(shù)量的YOLOv4-CSP,YOLOv5l等模型。除此之外,采用ResNet101骨干的PP-YOLOv2可以在COCO2017 test-dev數(shù)據(jù)集上取得50.3%mAP指標。

Introduction
盡管近年來提出了大量的目標檢測算法,但是YOLOv3仍是工業(yè)界應(yīng)用最廣泛的算法。這是因為:在實際應(yīng)用場景中,不僅計算資源有限,軟件支持同樣不夠充分。然而,YOLOv3的性能與兩階段目標檢測器的性能仍存在差異,因此,如何提升YOLOv3的有效性同時保持推理速度就成為了其實際應(yīng)用時的關(guān)鍵問題。
為同時滿足有效性與高效性,我們對PP-YOLO添加了大量基于不提升推理耗時的改進措施已提升其整體性能。需要注意的是,盡管有不少方法自稱可以獨立地改進目標檢測器的性能,但實際上某些方法組合后反而失效。因此,這些改進措施的實際組合測試就變的非常有必要。我們基于PaddlePaddle框架采用增強方式逐個評估其有效性。
通過增量方式調(diào)整不同的改進措施,我們得到了本文的PP-YOLOv2,它達到了更好的性能(49.5%mAP)-效率(69FPS)均衡。超過了現(xiàn)有同參數(shù)量的檢測器YOLOv4-CSP與YOLOv5.
Revisit PP-YOLO
我們先對基線模型的實現(xiàn)進行簡單說明。
Pre-Processing 首先采用Mixup(服從分布)訓(xùn)練;然后以0.5概率逐個執(zhí)行如下增廣方案RandomColorDistortion、RandomExpand、RandCrop、RandomFlip;接下來進行歸一化;最后輸出尺寸從中隨機抽取進行多尺度訓(xùn)練。
Baseline Model 本文的基線模型為YOLOv3的改進版PP-YOLO,具體來說,它的骨干網(wǎng)絡(luò)為ResNet50-vd,通過總計10個改進措施(包含Deformable Conv、SSLD、CoordConv、DropBlock、SPP等)改進YOLOv3的性能且?guī)缀醪挥绊懲评硇省?蓞⒁娙缦率疽鈭D。

Training Schedule 在COCO train2017數(shù)據(jù)集,采用SGD訓(xùn)練500k迭代,bs=96,在前4k迭代中將學習率線性的從0提升到0.005,然后再400k與450k處除10,weight_decay=0.0005,momentum=0.9,同時采用了梯度裁剪穩(wěn)定訓(xùn)練。
Selection of Refinements

接下來,我們將介紹本文所用到的改進措施,包含結(jié)構(gòu)、算子、輸入尺寸以及損失等。
Path Aggregation Network 對不同尺度的目標進行檢測是目標檢測的一個基本挑戰(zhàn)。實際上,檢測Neck需要為所有尺度構(gòu)建高級語義特征。PP-YOLO采用FPN構(gòu)建bottom-up通路;近年來也有不少關(guān)于FPN的改進,比如BiFPN、PAN、RFP等。本文參考PAN的設(shè)計集成了top-down信息??蓞⒁娚厦鎴D示部分。
Mish Activation Function 已有研究YOLOv4與YOLOv5表明:Mish對于改進目標檢測器的性能非常有效。由于我們已經(jīng)有了一個非常強有力的預(yù)訓(xùn)練骨干模型(82.4%top1精度),為保持骨干結(jié)構(gòu)不變,我們僅將Mish用到了Neck部分。
Larger Input Size 提升輸入尺寸可以增強目標面積,因此小尺度的目標信息可以更好的保持,進而可以提升模型性能。然而更大尺寸輸入會占用更多內(nèi)存,為使用這個技巧,我們需要減少batch。具體來說,我們將每個GPU的batch從24下降到12,并將輸入尺寸從608提升到768。輸入尺寸均勻的從中挑選。
IoU Aware Branch 在PP-YOLO中,IoU損失采用了軟加權(quán)方式;在這里我們采用軟標簽形式,IoU損失定義如下:
其中t表示錨點與其匹配真實框之間的IoU,p表示原始IoU分支的輸出。注:僅僅正樣本的IoU損失進行了計算。通過替換損失函數(shù),IoU損失分支表現(xiàn)更佳。
Experiments
COCO是目標檢測領(lǐng)域廣泛使用的基準數(shù)據(jù),我們采用COCO train2017(包含80類、118k圖像)進行訓(xùn)練;我們在COCO minival(包含5k圖像)上進行評估,評估準則采用了標準COCO準則mAP。
Ablation Studies
在這部分中,我們主要說明所嘗試的哪些有效改進,結(jié)果見下表。注:這里的推理速度僅僅考慮Fp32模型的影響,并不包含decoder與NMS。

A 首先,我們參考原始的PP-YOLO構(gòu)建本文的基線模型,由于CPU端的重度預(yù)處理會減慢訓(xùn)練,我們將每個GPU的圖像數(shù)從24下調(diào)到了12,降低bs會導(dǎo)致0.2%mAP指標下降。
PP-YOLO上添加的第一個正向改進為PAN,為穩(wěn)定訓(xùn)練,我們?yōu)镻AN模塊添加了幾個跳過連接,具體可以參見前面的圖示部分。可以看到:PAN+Mish的添加可以將模型的性能從45.4%mAP提升到47.1%mAP。盡管B模型要比A模型稍慢,但這種程度的性能提升促使我們將PAN應(yīng)用到最終的模型中。
由于YOLOv4與YOLOv5評估過程中的輸入尺寸為640,我們將訓(xùn)練與評估的輸入尺寸同樣調(diào)整到了640以進行公平對比。可以看到:模型性能得到了0.6%mAP提升。
持續(xù)輸入尺寸應(yīng)該受益更多,然而不可能同時采用大輸入尺寸與大batch。因此我們采用更大輸入尺寸+每個GPU12圖像訓(xùn)練模型D。此時可以帶來額外的0.6%mAP指標提升。
在訓(xùn)練階段,改進IoU損失表現(xiàn)更好。通過該損失的替換,模型E的提升提升到了49.1%mAP指標且不造成推理效率的損失。
Comparsion with Other SOTA Detectors

上表給出了所提方法與其他SOTA方案的性能、效率對比,從中可以看到:
PP-YOLOv2顯著優(yōu)于YOLOv4-CSP與YOLOv5; 在同等FPS下,PP-YOLOv2以2%mAP優(yōu)于YOLOv4-CSP,以1.3%AP優(yōu)于YOLOv5l; 替換ResNet50為ResNet101后,PP-YOLOv2的性能與YOLOv5x相當且推理速度快15.9%。
Things We Tried That Didn't Work
由于COCO train2017數(shù)據(jù)上訓(xùn)練(8個V100)PP-YOLO需要花費80小時,因此我們采用COCO minitrain(它是COCO train2017的子集,包含25K圖像)加速消融分析。在COCO minitrain數(shù)據(jù)上總計訓(xùn)練90k迭代并在60k迭代是學習率除10,其他訓(xùn)練配置同前。
在PP-YOLOv2的研發(fā)過程中,我們嘗試了大量的素材,某些在COCO minitrain上有正向作用但在COCO train2017上反而具有負面作用。接下來,我們對其中一些進行討論分析。
Cosine Learning Rate Decay 不同于線性方式學習率衰減,cosine方式學習率衰減是一種平滑的學習率調(diào)整,會更有益于訓(xùn)練過程。盡管cosine學習率在COCO minitrain表現(xiàn)更佳,但它對于超參(比如初始學習率、warmup迭代次數(shù)、最終的學習率)比較敏感。我們嘗試了多種超參數(shù)組合,但是在COCO train2017上并未發(fā)現(xiàn)正向作用。
Backbone Parameter Freezing 當在下游任務(wù)微調(diào)ImageNet預(yù)訓(xùn)練模型,凍結(jié)前兩階段的參數(shù)是一種常用策略。盡管在COCO minitrain上這種策略可以帶來1%mAP的性能增益,然而COCO train2017數(shù)據(jù)上反而帶來了0.8%mAP性能下降。
SiLU Activation Function 我們還嘗試在DetectionNeck中采用SiLU替換Mish,在COCO minitrain可以帶來0.3%mAP指標提升,但是在COCO train2017上反而帶來了0.5%mAP指標下降。
Conclusion
本文對PP-YOLO進行了更新得到了PP-YOLOv2,取得了更高的性能同時保持推理速度不明顯提升,在性能-推理速度方面取得了更好的均衡,取得了優(yōu)于YOLOv4與YOLOv5的性能。我們在PP-YOLO的基礎(chǔ)上,通過評估、添加不同的改進措施提升PP-YOLO的性能。
本文亮點總結(jié)
PP-YOLOv2顯著優(yōu)于YOLOv4-CSP與YOLOv5; 在同等FPS下,PP-YOLOv2以2%mAP優(yōu)于YOLOv4-CSP,以1.3%AP優(yōu)于YOLOv5l; 替換ResNet50為ResNet101后,PP-YOLOv2的性能與YOLOv5x相當且推理速度快15.9%。
如果覺得有用,就請分享到朋友圈吧!
推薦閱讀
2021-03-18
2021-01-19
2021-03-12

# 極市原創(chuàng)作者激勵計劃 #

