百度:YOLOX和NanoDet都沒我優(yōu)秀!輕量型實時目標(biāo)檢測模型PP-PicoDet開源
導(dǎo)讀
百度提出新型移動端實時檢測模型PP-PicoDet。本文對anchor-free策略在輕量型檢測器中的應(yīng)用進(jìn)行了探索;對骨干結(jié)構(gòu)進(jìn)行了增強(qiáng)并設(shè)計了一種輕量Neck部件;同時對SimOTA策略與Loss進(jìn)行了改進(jìn)。通過上述改進(jìn),所提PP-PicoDet取得了超越其他實時檢測模型的性能。
論文鏈接:https://arxiv.org/abs/2111.00902
代碼鏈接:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3/configs/picodet
比YOLOX還要優(yōu)秀,百度提出新型移動端實時檢測模型PP-PicoDet。本文對anchor-free策略在輕量型檢測器中的應(yīng)用進(jìn)行了探索;對骨干結(jié)構(gòu)進(jìn)行了增強(qiáng)并設(shè)計了一種輕量Neck部件;同時對SimOTA策略與Loss進(jìn)行了改進(jìn)。通過上述改進(jìn),所提PP-PicoDet取得了超越其他實時檢測模型的性能。比如:PicoDet-S僅需0.99M參數(shù)即可取得30.6%mAP,比YOLOX-Nano高4.8%同時推理延遲降低55%,比NanoDet指標(biāo)高7.1%,同時推理速度高達(dá)150fps(驍龍865)。
Abstract
更佳的精度-效率均衡已成為目標(biāo)檢測領(lǐng)域極具挑戰(zhàn)性問題。本文致力于目標(biāo)檢測的關(guān)鍵技術(shù)優(yōu)化與架構(gòu)選擇以提升其性能與效率。
我們對anchor-free策略在輕量型目標(biāo)檢測模型中的應(yīng)用進(jìn)行了探索;我們對骨干結(jié)構(gòu)進(jìn)行了增強(qiáng)并設(shè)計了一種輕量型Neck結(jié)構(gòu)以提升模型的特征提取能力;我們對label assignment策略與損失函數(shù)進(jìn)行了改進(jìn)以促進(jìn)更穩(wěn)定、更高效的訓(xùn)練。通過上述優(yōu)化,我們構(gòu)建了一類實時目標(biāo)檢測器PP-PicoDet,它在移動端設(shè)備上取得了非常優(yōu)異的性能。
相比其他主流檢測模型,所提方案取得了更好的精度-效率均衡。比如
PicoDet-S僅需0.99M參數(shù)即可取得30.6%mAP,比YOLOX-Nano高4.8%同時推理延遲降低55%,比NanoDet指標(biāo)高7.1%;當(dāng)輸入尺寸為320時,在移動端ARM CPU上可以達(dá)到123FPS處理速度,推理框架為PaddleLite時,推理速度可達(dá)150FPS。
PicoDet-M僅需2.15M參數(shù)即可取得34.3%mAP指標(biāo);
PicoDet-L僅需3.3M參數(shù)即可取得40.9%mAP,比YOLOv5s高3.7%mAP,推理速度快44%。
如下圖所示,所提方案具有最佳的精度-效率均衡。
Contribution
本文貢獻(xiàn)主要包含以下幾點:
采用CSP架構(gòu)構(gòu)建CSP-PAN,它通過卷積對所有分支輸入通道進(jìn)行統(tǒng)一,大幅提升特征提取能力,同時減少了參數(shù)量。與此同時,我們將深度卷積從擴(kuò)展到提升感受野;
label assignment是目標(biāo)檢測非常重要的模塊。我們在SimOTA的基礎(chǔ)上對某些計算細(xì)節(jié)進(jìn)行了優(yōu)化,在不損失效率的同時增強(qiáng)了性能。具體來說,我們采用VarifocalLoss與GIoULoss的加權(quán)組合計算損失矩陣 。
ShuffleNetV2在移動端非常高效,我們對其進(jìn)行了增強(qiáng)并提出一種新的骨干ESNet(Enhanced ShuffleNet, ESNet);
提出一種用于檢測的改進(jìn)版One-Shot NAS方案以尋找最佳的架構(gòu)。
Method
接下來,我們將首先呈現(xiàn)設(shè)計思路與NAS搜索方案,這有助于提升精度、降低推理延遲;然后我們再介紹關(guān)于Neck與Head模塊的增強(qiáng)策略;最后我們對Label Assignment以及其他提升性能的策略進(jìn)行介紹。
Better Backbone
實驗發(fā)現(xiàn):相比其他模型,ShuffleNetV2在移動端具有更好的魯棒性 。為提升ShuffleNetV2的性能,我們參考PP-LCNet對其進(jìn)行了增強(qiáng)并構(gòu)建一種新的骨干ESNet。
上圖給出了ESNet中的ESBlock結(jié)構(gòu)示意圖。SE是一種非常棒的提升特征表達(dá)能力的操作,故ESBlock中包含了SE模塊。SE模塊的設(shè)計參考了MobileNetV3,即兩個激活函數(shù)分別為Sigmoid、H-Sigmoid。
通道置換為ShuffleNetV2中的通道提供了信息交換,但它會導(dǎo)致融合特征損失。為解決該問題,當(dāng)stride=2時,我們添加了depth與point卷積對不同通道信息進(jìn)行融合(見上圖3-a)。
GhostNet中的Ghost模塊能夠用更少的參數(shù)生成更多特征并提升模型的學(xué)習(xí)能力。因此,當(dāng)stride=1時,我們在ESBlock中引入Ghost模塊以提升其性能(見上圖3-b)。
上述部分內(nèi)容是手工方式的模塊設(shè)計,文中還用到了NAS技術(shù)對ESNet進(jìn)行搜索以更好的適配檢測模型。對該部分內(nèi)容感興趣的同學(xué)建議查看原文,筆者對此暫時略過。
CSP-PAN and Detector Head
上圖給出了PP-PicoDet整體架構(gòu)示意圖。接下來,我們重點關(guān)注CSP-PAN與Head部分。CSP結(jié)構(gòu)已被廣泛應(yīng)用于YOLOv4與YOLOX的Neck部分。
在原始CSP-PAN中,每個輸出特征的通道數(shù)與源自骨干的輸入通道數(shù)保持相同。大通道數(shù)的結(jié)構(gòu)在移動端存在昂貴的計算消耗。我們通過 卷積將輸出特征的通道數(shù)調(diào)整到最小通道數(shù) 以解決上述問題。
Top-down與bottom-up兩路特征融合通過CSP結(jié)構(gòu)執(zhí)行。此外,我們還在CSP-PAN的基礎(chǔ)上添加了一個特征尺度以檢測更多目標(biāo)(見上圖P6分支)。與此同時,除了卷積外,其他卷積均為深度卷積。這種結(jié)構(gòu)設(shè)計可以帶來可觀的性能提升,同時參數(shù)量更少。
在檢測頭部分,我們采用深度分離卷基于卷積提升感受野。深度分離卷積的數(shù)量可以設(shè)置為2、4或者更多。Neck與Head均具有四個尺度分支,我們保持兩者的通道數(shù)一致。YOLOX采用更少通道數(shù)的“解耦頭”提升性能;而PP-PicoDet的“耦合頭”具有更好的性能,且無需減少通道數(shù) 。該方案的Head與YOLOX的Head具有幾乎相同的參數(shù)量和推理速度。
Label Assignment Strategy and Loss
正負(fù)樣本的標(biāo)簽分類對于目標(biāo)檢測器有著非常重要的影響。RetinaNet通過IoU進(jìn)行正負(fù)樣本劃分;FCOS則將中心點位于GT的anchor視作正樣本;YOLOv4與YOLOv5則選擇中心點與近鄰anchor作為正樣本;ATSS則通過統(tǒng)計信息進(jìn)行正負(fù)樣本劃分;SimOTA則是一種隨訓(xùn)練過程而動態(tài)變換的標(biāo)簽分配策略,具有更好的性能。因此,我們選擇SimOTA作為標(biāo)簽分配方案。
在SimOTA的基礎(chǔ)上,我們對其cost矩陣進(jìn)行優(yōu)化,采用VarifocalLoss與GIoULoss的加權(quán)組合計算。定義如下:
對于分類頭,我們采用VarifocalLoss耦合分類預(yù)測與質(zhì)量預(yù)測;對于回歸頭,我們采用GIoU與DistributionFocalLoss。整體損失定義如下:
Other Strategies
近年來,越來越多的激活函數(shù)取得了比ReLU更優(yōu)的性能。其中,H-Swish是一種移動端友好的算子,故我們將檢測器中的ReLU替換為H-Swish,性能大幅提升同時推理速度不變 。
相比線性學(xué)習(xí)率機(jī)制,cosine 學(xué)習(xí)率機(jī)制更為平滑且有益于訓(xùn)練穩(wěn)定性。
過多的數(shù)據(jù)增強(qiáng)可以提升增強(qiáng)效應(yīng),但會影響輕量型模型的訓(xùn)練難度。因此,我們僅使用RandomFlip, RandomCrop, Multi-scale Resize等數(shù)據(jù)增廣。
Experiments
上表給出了所提方案與其他輕量型檢測器的性能對比,從中可以看到:無論是精度還是速度,所提方案均大幅超越了所有YOLO模型 。性能的提升主要源于以下幾點改進(jìn):
Neck部分比其他YOLO模型更輕量,故骨干與Head可以賦予更多計算量;
VarifocalLoss的組合可以處理類別不平衡、動態(tài)學(xué)習(xí)樣本分類與FOCS的回歸方案在輕量模型中表現(xiàn)更佳;
在相同參數(shù)量下,PP-PicoDet-S超越了YOLOX-Nano與NanoDet;PP-PicoDet-L的精度與速度均超越了YOLOv5s。此外,由于更高效的卷積優(yōu)化,PaddleLite的推理速度要比NCNN更快??偠灾?,PP-PicoDet在極大程度上領(lǐng)先其他SOTA模型。
Ablation Study
上表給出了PP-PicoDet從基線模型逐步優(yōu)化而來的性能對比?;€模型類似NanoDet,骨干為ShuffleNetV2-1x,Neck采用了無卷積PAN,損失采用了GFL,標(biāo)簽分配采用ATSS,激活函數(shù)為LeakyReLU。從中可以看到:
采用本文所提CSP-PAN可以帶來3.8%mAP指標(biāo)提升,而參數(shù)量提升少于50K;
相比QFL,VFL可以帶來0.1%mAP指標(biāo)提升;
ATSS與SimOTA具有相同的性能,而改進(jìn)版SimOTA可以將性能提升到30.0%mAP;
相比LeakyReLU,H-Swish可以帶來0.9%mAP指標(biāo)提升。
上表對比了ShuffleNetV2-1.5x與ESNet-1x的性能,可以看到:ESNet具有更高的性能、更快的推理速度、更少的計算量。
上表對比了人工設(shè)計模型與NAS搜索模型的性能,可以看到:搜索到的模型的指標(biāo)僅下降0.2%mAP,而推理延遲減少41.5% 。因此,我們將基線模型的骨干替換為ESNet-0.75x,參數(shù)量減少約200K,而性能僅下降0.3%mAP。
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。