论文阅读笔记 | 目标检测算法——PP-YOLOv2
如有錯誤,懇請指出。
文章目錄
- 1. Introduction
- 2. Revisit PP-YOLO
- 2.1 Pre-Processing
- 2.2 Baseline Model
- 2.3 Training Schedule
- 3. Selection of Refinements
- 3.1 Path Aggregation Network
- 3.2 Mish Activation Function
- 3.3 Larger Input Size
- 3.4 IoU Aware Branch
- 4. Other try
- 4.1 Cosine Learning Rate Decay
- 4.2 Backbone Parameter Freezing
- 4.3 SiLU Activation Function
- 5. Result
paper:PP-YOLOv2: A Practical Object Detector
code:https://github.com/PaddlePaddle/PaddleDetection
摘要:
在PP-YOLO的基礎(chǔ)上再進(jìn)行了改進(jìn),提高精度的同時幾乎保持推斷時間不變。作者分析了一系列改進(jìn),并通過增量消融實驗來實證評估它們對最終模型性能的影響。最后PP-YOLOv2取得了更佳的性能(49.5%mAP)-速度(69FPS)均衡,并優(yōu)于YOLOv4與YOLOv5。
PP-YOLO閱讀筆記:目標(biāo)檢測算法——PP-YOLO
1. Introduction
在各種實際應(yīng)用中,不僅計算資源有限,而且軟件支持不足,所以雙階段的目標(biāo)檢測進(jìn)行的非常緩慢。所以如何在保持推理速度的同時提高YOLOv3的有效性是實際應(yīng)用中的一個關(guān)鍵問題。為了同時滿足這兩個問題,作者添加了一些改進(jìn),這些改進(jìn)幾乎不會增加推斷時間,從而提高PP-YOLO的整體性能。
2. Revisit PP-YOLO
2.1 Pre-Processing
應(yīng)用從Beta(α,β)Beta(α, β)Beta(α,β)分布中采樣的權(quán)重MixUp,其中α=1.5,β=1.5α=1.5, β=1.5α=1.5,β=1.5。
然后RandomColorDistortion、RandomExpand、RandCrop、RandomFlip以0.5的概率依次應(yīng)用。
然后對RGB通道進(jìn)行歸一化處理。
最后,輸入大小從[320,352,384,416,448,480,512,544,576,608]均勻抽取。
2.2 Baseline Model
基準(zhǔn)模型是PP-YOLO,其是YOLOv3的改進(jìn)版本,首先使用ResNet50-vd對YOLOv3的backbone進(jìn)行替換,隨后使用了10個技巧來提升性能。
具體查看:論文閱讀筆記 | 目標(biāo)檢測算法——PP-YOLO
2.3 Training Schedule
在COCOtrain2017上,使用隨機(jī)梯度下降(SGD)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用分布在8個gpu上的96張圖像的小批量進(jìn)行500K迭代。學(xué)習(xí)率在4K迭代時從0線性增加到0.005,在400K和450K迭代時分別除以10。重量衰減設(shè)為0.0005,動量設(shè)為0.9。采用梯度裁剪來穩(wěn)定訓(xùn)練過程。
3. Selection of Refinements
PP-YOLOv2大致結(jié)構(gòu)如圖所示:
3.1 Path Aggregation Network
使用PAN代替FPN,多了一個自頂向下的信息匯集,之前多次提及,這里不再重復(fù)。
3.2 Mish Activation Function
Mish激活函數(shù)在YOLOv4、YOLOv5等多種實際的探測器中被證明是有效的。它們在骨干中采用mish激活功能。然而,作者更喜歡使用預(yù)先訓(xùn)練的參數(shù),因為有一個強(qiáng)大的模型,在ImageNet上達(dá)到82.4%的top-1精度。為了保持主干不變,我們將mish激活函數(shù)應(yīng)用于檢測頸部而不是主干。
3.3 Larger Input Size
增加輸入尺寸會擴(kuò)大對象的面積。因此,小范圍的目標(biāo)信息將比以前更容易保存。因此,性能將得到提高。但是,較大的圖像輸入尺寸會占用更多的內(nèi)存。要應(yīng)用這個技巧,我們需要減少Batchsize。更具體地說,我們將Batchsize從每GPU 24張圖像減少到每GPU 12張圖像,并將最大輸入尺寸從608擴(kuò)大到768。
輸入大小從[320、352、384、416、448、480、512、544、576、608、640、672、704、736、768]均勻繪制。
3.4 IoU Aware Branch
在PP-YOLO中,IoU aware loss采用的是軟權(quán)重格式(soft weight format),與初衷不一致。因此作者采用軟標(biāo)簽格式(soft label format)。公式為:
loss=?t?log?(σ(p))?(1?t)?log?(1?σ(p))loss = -t*\log(σ(p))-(1-t)*\log(1-σ(p)) loss=?t?log(σ(p))?(1?t)?log(1?σ(p))
其中t表示錨點和它匹配的ground-truth邊界框之間的IoU,p是IoU感知分支的原始輸出。ps:僅僅正樣本的IoU損失進(jìn)行了計算
IoU注意力的提出由來:
在YOLOv3中,將分類概率和目標(biāo)得分相乘作為最終檢測置信度,其中這沒有考慮到定位精度。為了處理這個問題,論文中引入一個IoU預(yù)測分支。在訓(xùn)練過程中,使用感知IoU損失來訓(xùn)練這個分支。在推理階段,最后的分類置信度由分類概率、目標(biāo)分?jǐn)?shù)和IoU值乘積得到。最終的檢測置信度然后用作后續(xù)NMS的輸入。
4. Other try
作者其實還嘗試了其他的一些消融實驗,但是沒有效果,所以最后也沒有使用這些技巧,這里還是記錄一下比較好。
4.1 Cosine Learning Rate Decay
與線性步進(jìn)學(xué)習(xí)率衰減不同,余弦學(xué)習(xí)率衰減是學(xué)習(xí)率的指數(shù)衰減。不過其對初始學(xué)習(xí)率、熱身步數(shù)、結(jié)束學(xué)習(xí)率等超參數(shù)敏感,所以沒有看見其對COCOtrain2017有一個積極影響。(但是對COCOminitrain產(chǎn)生了積極的作用)
4.2 Backbone Parameter Freezing
在對下游任務(wù)進(jìn)行ImageNet預(yù)訓(xùn)練參數(shù)的微調(diào)時,通常會在前兩個階段凍結(jié)參數(shù)。然后這里同樣是對COCOminitrain有效而對COCOtrain2017無效。
不一致現(xiàn)象的一個可能原因是兩個訓(xùn)練集的大小不同,COCO minitrain2017是COCOtrain2017的五分之一。在小數(shù)據(jù)集上訓(xùn)練的參數(shù)的泛化能力可能比預(yù)先訓(xùn)練的參數(shù)差。
4.3 SiLU Activation Function
同樣的SiLU,對COCOminitrain有效而對COCOtrain2017無效。所以使用Mish而不是SiLU。
5. Result
- 消融實驗,各個在PP-YOLOv2中各個技巧帶來的提升:
- 與SOTA的對比:
總結(jié):
本文介紹了PP-YOLO的一些更新,形成了一個高性能的對象檢測器PPYOLOv2。PP-YOLOv2比其他著名的探測器(如YOLOv4和YOLOv5)在速度和精度上取得了更好的平衡。在本文中,我們探索了一些技巧,并展示了如何將這些技巧結(jié)合到PPYOLO檢測器上,并演示了它們的有效性。
總結(jié),其實PP-YOLO系列幾乎沒有任何創(chuàng)新的,但通過實驗結(jié)合技巧提升了檢測性能。
總結(jié)
以上是生活随笔為你收集整理的论文阅读笔记 | 目标检测算法——PP-YOLOv2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招聘 风波
- 下一篇: YOLOv1——YOLOX系列及FCOS