作者:忻怡、周樓、謙言、臨在
導(dǎo)言:
近日,阿里云機(jī)器學(xué)習(xí)平臺團(tuán)隊(duì)PAI通過自研的PAI-EasyCV框架復(fù)現(xiàn)YOLOX算法,并結(jié)合了PAI自研的PAI-Blade推理加速框架優(yōu)化模型性能,使得加速過后的YOLOX-PAI在速度和精度上都比現(xiàn)階段的輕量級目標(biāo)檢測的SOTA算法YOLOV6 提速約20%,同時(shí),PAI-EasyCV提供高效簡潔的模型部署和端到端推理接口,供社區(qū)快速體驗(yàn)使用YOLOX-PAI的功能。
目前,EasyCV和Blade項(xiàng)目已在GitHub上開源:
https://github.com/alibaba/EasyCV
https://github.com/alibaba/BladeDISC

實(shí)現(xiàn)方案:
1. 提供了一套Apache License 訓(xùn)練/優(yōu)化/推理的代碼庫以及鏡像,可以實(shí)現(xiàn)當(dāng)前社區(qū)40+mAP 量級最快(相比 YOLOV6 mAP提升0.4/加速13~20%)的目標(biāo)檢測模型。
2. 調(diào)研了YOLOX相關(guān)的改進(jìn)技術(shù)和消融實(shí)驗(yàn),總結(jié)了其中一些相對有幫助的改進(jìn),并以配置的方式提供出來。
3. 對目標(biāo)檢測的端到端推理進(jìn)行靈活封裝及速度優(yōu)化,在V100上的端到端推理為3.9ms,相對原版YOLOX的9.8ms,加速250%,供用戶快速完成目標(biāo)檢測推理任務(wù)。
本文,我們將重點(diǎn)介紹如何基于PAI-EasyCV使用PAI-Blade優(yōu)化模型推理過程,及如何使用PAI-EasyCV進(jìn)行模型訓(xùn)練、驗(yàn)證、部署和端到端推理。歡迎大家關(guān)注和使用PAI-EasyCV和PAI-Blade,進(jìn)行簡單高效的視覺算法開發(fā)及部署任務(wù)。
YOLOX-PAI 精益求精的算法改進(jìn)
YOLOX-PAI是阿里云機(jī)器學(xué)習(xí)平臺PAI 的開源計(jì)算機(jī)視覺代碼庫EasyCV中集成的 YOLOX 算法。通過對YOLOX 算法的分析,結(jié)合檢測技術(shù)的調(diào)研,從以下4個(gè)方向?qū)υ娴腨OLOX進(jìn)行優(yōu)化,
1. Backbone : repvgg[1] backbone
2. Neck : gsconv [2] / asff [3]
3. Head : toods[4] / rtoods
4. Loss : siou [5] / giou
在算法改進(jìn)的基礎(chǔ)上,利用PAI-Blade對改進(jìn)后的的模型進(jìn)行推理優(yōu)化,開發(fā)了如下的PAI-YOLOX模型。具體改進(jìn)的消融實(shí)驗(yàn)可以參考我們的[arxiv],篩選有效改進(jìn)與現(xiàn)有主流算法的對比結(jié)果如下:
( -ASFF 代表使用了 NeckASFF, -TOODN代表使用N個(gè)中間層的TOODHead取代原有的YOLOXHead)

從結(jié)果中可以看到,相比目前同水平(1ms以內(nèi))SOTA的YOLOV6模型,融合上述改進(jìn)的YOLOX-PAI在同等精度/速度的條件下有一定的速度/精度優(yōu)勢。(PS:上表精度測量和速度測量上與YOLOV6對齊,不包含NMS和后處理,測試精度也分圖片大小等于672/640兩種。)
YOLOX-PAI 簡單的端到端預(yù)測

針對使用PAI-EasyCV訓(xùn)練的YoloX-PAI 模型,用戶可以使用PAI-EasyCV自帶的導(dǎo)出功能得到優(yōu)化后的模型,并使用 EasyCV 提供的TorchYoloXPredictor 進(jìn)行端到端的推理。 該導(dǎo)出功能對檢測模型進(jìn)行了如下優(yōu)化:
使用PAI-Blade優(yōu)化模型推理速度,簡化對模型的推理加速(TensorRT/編譯優(yōu)化)開發(fā)流程。
支持EasyCV配置TorchScript/PAI-Blade對圖像前處理、模型推理、圖像后處理分別優(yōu)化,供用戶靈活使用。
支持python環(huán)境下的Predictor結(jié)構(gòu)端到端的模型推理優(yōu)化,簡化圖片預(yù)測過程。
也可以參考[EasyCV detector.py] 自行組織相應(yīng)的圖像前處理/后處理過程,或直接使用我們導(dǎo)出好的模型和接口,這里提供一個(gè)已經(jīng)導(dǎo)出好的檢測模型,用戶下載三個(gè)模型文件到本地 [preprocess, model, meta]
用戶可以直接使用PAI-EasyCV提供的Predictor接口,通過如下簡單的API調(diào)用,高效的進(jìn)行圖像的檢測任務(wù):
YOLOX-PAI 極致性能的推理優(yōu)化
下圖,我們展示了YOLOX-PAI在集成PAI-Blade/torchscript優(yōu)化后和原版YOLOX的不同尺寸(s/m/l/x)模型的推理耗時(shí)對比, 在開啟預(yù)處理優(yōu)化和模型的PAI-Blade優(yōu)化后:
可以看到PAI-EasyCV導(dǎo)出的模型,極大程度的優(yōu)化了原模型的端到端推理速度,達(dá)到了接近250%。
PAI-Blade 推理優(yōu)化
PAI-Blade是由阿里云機(jī)器學(xué)習(xí)平臺PAI開發(fā)的深度學(xué)習(xí)模型優(yōu)化工具,可以針對不同的設(shè)備不同模型進(jìn)行推理加速優(yōu)化。PAI-Blade遵循易用性,魯棒性和高性能為原則,將模型的部署優(yōu)化進(jìn)行高度封裝,設(shè)計(jì)了統(tǒng)一簡單的API,在完成Blade環(huán)境安裝后,用戶可以在不了解ONNX、TensorRT、編譯優(yōu)化等技術(shù)細(xì)節(jié)的條件下,通過簡單的代碼調(diào)用方便的實(shí)現(xiàn)對模型的高性能部署。更多PAI-Blade相關(guān)技術(shù)介紹可以參考 [PAI-Blade介紹]。
PAI-EasyCV中對PAI-Blade進(jìn)行了支持,用戶可以通過PAI-EasyCV的訓(xùn)練config 中配置相關(guān)的導(dǎo)出(export)參數(shù),調(diào)用PAI-Blade用于優(yōu)化導(dǎo)出模型,結(jié)合EasyCV Predictor完成圖片的端到端的圖像檢測任務(wù)。
寫在最后
YOLOX-PAI 是PAI-EasyCV團(tuán)隊(duì)基于曠視YOLOX 復(fù)現(xiàn)并優(yōu)化的在V100BS32的1000fps量級下的SOTA檢測模型。整體工作上集成和對比了很多社區(qū)已有的工作:替換基于RepVGG的高性能Backbone, 在Neck中添加基于特征圖融合的ASFF/GSConv增強(qiáng),在檢測頭中加入了任務(wù)相關(guān)的注意力機(jī)制TOOD結(jié)構(gòu)。結(jié)合PAI-Blade編譯優(yōu)化技術(shù),同等精度下比YOLOV6 加速13~20%。EasyCV提供配套了一系列算法/訓(xùn)練/推理優(yōu)化代碼和環(huán)境,目前,YOLOX-PAI已廣泛的應(yīng)用在阿里集團(tuán)內(nèi)外的互聯(lián)網(wǎng),智能零售,自動駕駛等客戶場景中。
PAI-EasyCV(https://github.com/alibaba/EasyCV)是阿里云機(jī)器學(xué)習(xí)平臺PAI研發(fā)的計(jì)算機(jī)視覺算法框架,已在集團(tuán)內(nèi)外多個(gè)業(yè)務(wù)場景取得相關(guān)業(yè)務(wù)落地成果,未來將聚焦在自監(jiān)督學(xué)習(xí)/VisionTransformer等前沿視覺領(lǐng)域,并結(jié)合PAI-Blade等自研技術(shù)不斷優(yōu)化。歡迎大家參與進(jìn)來一同進(jìn)步。
相關(guān)文獻(xiàn)
[1] Ge Z, Liu S, Wang F, et al. Yolox: Exceeding yolo series in 2021[J]. arXiv preprint arXiv:2107.08430, 2021.
[2] YOLOv6, https://github.com/meituan/YOLOv6.
[3] Xu S, Wang X, Lv W, et al. PP-YOLOE: An evolved version of YOLO[J]. arXiv preprint arXiv:2203.16250, 2022.
[4] Wang C Y, Liao H Y M, Wu Y H, et al. CSPNet: A new backbone that can enhance learning capability of CNN[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition workshops. 2020: 390-391.
[5] Ding X, Zhang X, Ma N, et al. Repvgg: Making vgg-style convnets great again[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 13733-13742.
[6] Liu S, Huang D, Wang Y. Learning spatial fusion for single-shot object detection[J]. arXiv preprint arXiv:1911.09516, 2019.
[7] YOLOv5, https://github.com/ultralytics/yolov5.
[8] Li H, Li J, Wei H, et al. Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles[J]. arXiv preprint arXiv:2206.02424, 2022.
[9] Feng C, Zhong Y, Gao Y, et al. Tood: Task-aligned one-stage object detection[C]//2021 IEEE/CVF International Conference on Computer Vision (ICCV). IEEE Computer Society, 2021: 3490-3499.
[10] Gevorgyan Z. SIoU Loss: More Powerful Learning for Bounding Box Regression[J]. arXiv preprint arXiv:2205.12740, 2022.
[11] Rezatofighi H, Tsoi N, Gwak J Y, et al. Generalized intersection over union: A metric and a loss for bounding box regression[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 658-666.
星空人工智能技術(shù)網(wǎng) 倡導(dǎo)尊重與保護(hù)知識產(chǎn)權(quán)。如發(fā)現(xiàn)本站文章存在版權(quán)等問題,煩請30天內(nèi)提供版權(quán)疑問、身份證明、版權(quán)證明、聯(lián)系方式等發(fā)郵件至1851688011@qq.com我們將及時(shí)溝通與處理。?。?a href="/">首頁 > 星空機(jī)器人 » YOLOX-PAI:加速YOLOX,比YOLOV6更快更強(qiáng)