較YOLOv7精度提升1.9%,54.7mAP的PP-YOLOE+強(qiáng)勢登場!
精度54.7mAP,相較YOLOv7提升1.9%
L版本端到端推理速度42.2FPS
訓(xùn)練速度提升3.75倍
COCO數(shù)據(jù)集僅需20epoch即可達(dá)到50.0mAP
下游任務(wù)泛化性最高提升8%
10+即開即用多端部署Demo
這究竟是什么模型,竟可達(dá)到以上效果?答案是:PP-YOLOE+PP-YOLOE+是基于飛槳云邊一體高精度模型PP-YOLOE迭代優(yōu)化升級的版本,具備以下特點(diǎn):
超強(qiáng)性能
表格1:PP-YOLOE+與PP-YOLOE性能對比*備注:以上速度為端到端推理速度,包含數(shù)據(jù)解碼+數(shù)據(jù)預(yù)處理+模型預(yù)測+后處理計算;均在v100上測試所得,V100 + CUDA11.2 + cudnn8.2.0 + TRT8.0.1.6
- 訓(xùn)練收斂加速:使用Objects365預(yù)訓(xùn)練模型,減少訓(xùn)練輪數(shù),訓(xùn)練收斂速度提升3.75倍。
- 下游任務(wù)泛化性顯著提升:在農(nóng)業(yè)、夜間安防、工業(yè)等不同場景數(shù)據(jù)集上驗證,精度最高提升8.1%。
高性能部署能力:本次升級PP-YOLOE+支持多種部署方式,包括Python/C++、Serving、ONNX Runtime、ONNX-TRT、INT8量化等部署能力。
超強(qiáng)性能與超高泛化性使得PP-YOLOE+助力開發(fā)者在最短時間、最少量數(shù)據(jù)上能得到最優(yōu)效果。模型下載與完整教程請見PP-YOLOE+:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/configs/ppyoloe
回顧:PP-YOLOE經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu)剖析
圖1:PP-YOLOE網(wǎng)絡(luò)結(jié)構(gòu)PP-YOLOE是一款高精度推理速度快的檢測模型,包含骨干網(wǎng)絡(luò)CSPRepResNet、特征融合CSPPAN、輕量級ET-Head和改進(jìn)的動態(tài)匹配算法TAL(Task Alignment Learning)等模塊, 并且根據(jù)不同的應(yīng)用場景設(shè)計了一系列模型,即s/m/l/x。PP-YOLOE的全系列模型從精度速度性價比來看達(dá)到工業(yè)界最優(yōu)。具體來說,PP-YOLOE-l在COCO test-dev上AP可達(dá)51.4,在V100上速度可達(dá)78.1 FPS,使用TensorRT FP16進(jìn)行推理,在V100上速度可達(dá)149FPS。PP-YOLOE-l相較于PP-YOLOv2精度提升1.9AP、速度提升13.35%,相對于YOLOX-l精度提升1.3AP、速度提升24.96%。此外,PP-YOLOE還避免使用諸如可變形卷積或者M(jìn)atrix NMS之類的特殊算子,使PP-YOLOE全系列模型能輕松地部署在NVIDIA V100和T4這樣的云端GPU架構(gòu)、Jetson系列的移動端GPU和高性能的FPGA開發(fā)板上。具體的結(jié)構(gòu)包括以下三大部分:
可擴(kuò)展的backbone和neck
我們設(shè)計了CSPRepResNet作為backbone, neck部分也采用了新設(shè)計的CSPPAN結(jié)構(gòu),backbone和neck均以我們提出的CSPRepResStage為基礎(chǔ)模塊。新的backbone和neck在增強(qiáng)模型表征能力的同時提升了模型的推理速度,并且可以通過width multiplier和depth multiplier靈活地配置模型的大小。
TAL(Task Alignment Learning)
為了進(jìn)一步提升模型的精度,我們選用了TOOD [1]中的動態(tài)匹配算法策略TAL。TAL同時考慮分類和回歸,使得匹配結(jié)果同時獲得了最優(yōu)的分類和定位精度。
Efficient Task-aligned head
檢測head方面,我們在TOOD的T-head基礎(chǔ)上進(jìn)行改進(jìn)。首先,使用ESE block替換掉了原文中比較耗時的layer attention,使得模型在保證精度不變的同時提升了速度。其次,由于T-head使用了可變形卷積算子,對硬件部署不友好,我們在分類分支使用shortcut替換cls-align模塊,回歸分支使用積分層替換掉含有可變形卷積的reg-align模塊,以上兩個改進(jìn)使得head變得更為高效、簡潔且易部署。最終,我們進(jìn)一步使用VFL(VariFocal Loss)替換BCE作為分類分支Loss,達(dá)到了速度精度雙高的目的。PP-YOLOE+算法升級深度解讀
本次PP-YOLOE+升級主要內(nèi)容:
升級一:強(qiáng)大的Objects365預(yù)訓(xùn)練模型、升級版backbone等改動大幅提升PP-YOLOE系列模型的精度;
升級二:優(yōu)化預(yù)處理,提升模型端到端推理速度,更貼近用戶使用的真實(shí)場景;
- 升級三:完善多種環(huán)境下的推理部署能力。
精度
首先,我們使用Objects365大規(guī)模數(shù)據(jù)集對模型進(jìn)行了預(yù)訓(xùn)練。Objects365數(shù)據(jù)集含有的數(shù)據(jù)量可達(dá)百萬級,在大數(shù)據(jù)量下的訓(xùn)練可以使模型獲得更強(qiáng)大的特征提取能力、更好的泛化能力,在下游任務(wù)上的訓(xùn)練可以達(dá)到更好的效果。其次,我們在RepResBlock中的1x1卷積上增加了一個可學(xué)習(xí)的權(quán)重alpha,進(jìn)一步提升了backbone的表征能力,獲得了不錯的效果提升。最后,我們調(diào)整了NMS的參數(shù),在COCO上可以獲得更好的評估精度。
訓(xùn)練速度
基于Objects365的預(yù)訓(xùn)練模型,將學(xué)習(xí)率調(diào)整為原始學(xué)習(xí)率的十分之一,訓(xùn)練的epoch從300降到了80,在大大縮短了訓(xùn)練時間的同時,獲得了精度上的提升。
端到端推理速度
我們精簡了預(yù)處理的計算方式,由于減均值除方差的方式在CPU上極其耗時,所以我們在優(yōu)化時直接去除掉了這部分的預(yù)處理操作,使得PP-YOLOE+系列模型在端到端的速度上能獲得40%以上的加速提升。圖2:PP-YOLOE+模型效果
下游泛化性增強(qiáng)
我們驗證了PP-YOLOE+模型強(qiáng)大的泛化能力,在農(nóng)業(yè)、低光、工業(yè)等不同場景下游任務(wù)檢測效果穩(wěn)定提升。農(nóng)業(yè)數(shù)據(jù)集采用Embrapa WGISD,該數(shù)據(jù)集用于葡萄栽培中基于圖像的監(jiān)測和現(xiàn)場機(jī)器人技術(shù),提供了來自5種不同葡萄品種的實(shí)地實(shí)例。鏈接
https://github.com/thsant/wgisd低光數(shù)據(jù)集使用ExDark,該數(shù)據(jù)集是一個專門在低光照環(huán)境下拍攝出針對低光目標(biāo)檢測的數(shù)據(jù)集,包括從極低光環(huán)境到暮光環(huán)境等10種不同光照條件下的圖片。
鏈接
https://github.com/cs-chan/Exclusively-Dark-Image-Dataset工業(yè)數(shù)據(jù)集使用PKU-Market-PCB,該數(shù)據(jù)集用于印刷電路板(PCB)的瑕疵檢測,提供了6種常見的PCB缺陷。
鏈接
https://robotics.pkusz.edu.cn/resources/dataset/
精度
表格2:PP-YOLOE+在不同場景數(shù)據(jù)集的效果
可視化效果
圖3:可視化效果全面升級的部署支持
在推理部署方面,本次升級給大家?guī)砹溯^為完備的部署能力,包括Python、C++、Serving、ONNX Runtime、ONNX-TRT、INT8量化等部署能力。具體的使用文檔可以到PaddleDetection的GitHub上獲取。文檔鏈接
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/deploy總的來說,PP-YOLOE+希望真正的站在用戶的角度去解決訓(xùn)練慢、泛化性差、部署難的問題。通過使用大規(guī)模數(shù)據(jù)集Objects365對模型進(jìn)行預(yù)訓(xùn)練,使得模型在下游任務(wù)上表現(xiàn)更魯棒、泛化能力更強(qiáng)。通過優(yōu)化推理過程,完善推理鏈條,使得PP-YOLOE+不但在端到端預(yù)測速度上得到極大的提升,還拓展了Python、C++、Serving、ONNX Runtime以及TensorRT等多種推理環(huán)境下的部署能力,提升模型可擴(kuò)展性,從而提升用戶的使用體驗。
飛槳端到端開發(fā)套件PaddleDetection
PaddleDetection為基于飛槳的端到端目標(biāo)檢測套件,內(nèi)置30+模型算法及300+預(yù)訓(xùn)練模型,覆蓋目標(biāo)檢測、實(shí)例分割、跟蹤、關(guān)鍵點(diǎn)檢測等方向,其中包括服務(wù)器端和移動端高精度、輕量化產(chǎn)業(yè)級SOTA模型、冠軍方案和學(xué)術(shù)前沿算法,并提供即插即用的垂類場景預(yù)訓(xùn)練模型,覆蓋人、車等20+場景,提供配置化的網(wǎng)絡(luò)模塊組件、十余種數(shù)據(jù)增強(qiáng)策略和損失函數(shù)等高階優(yōu)化支持和多種部署方案,在打通數(shù)據(jù)處理、模型開發(fā)、訓(xùn)練、壓縮、部署全流程的基礎(chǔ)上,提供豐富的案例及教程,加速算法產(chǎn)業(yè)落地應(yīng)用。圖4:PaddleDetection全景圖
- 項目鏈接
https://github.com/PaddlePaddle/PaddleDetection
參考文獻(xiàn)
[1] Feng C , Zhong Y , Gao Y , et al. TOOD: Task-aligned One-stage Object Detection[C]// 2021
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。