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