1. 程式人生 > 其它 >YOLOX在OpenVINO、ONNXRUNTIME、TensorRT上面推理部署與速度比較

YOLOX在OpenVINO、ONNXRUNTIME、TensorRT上面推理部署與速度比較

https://mp.weixin.qq.com/s/gjQxtc2QUI0zVRV62pSWag

 

曠視科技開源了內部目標檢測模型-YOLOX,效能與速度全面超越YOLOv5早期版本!

如此神奇原因在於模型結構的修改,下圖說明了改了什麼地方:

把原來的耦合頭部,通過1x1卷積解耦成兩個並行的分支,經過一系列處理之後最終取得精度與速度雙提升。實驗對比結果如下:

論文與程式碼模型下載地址:

https://arxiv.org/pdf/2107.08430.pdfhttps://github.com/Megvii-BaseDetection/YOLOX

ONNX格式模型轉與部署

下載YOLOX的ONNX格式模型(github上可以下載)

https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntimehttps://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.onnx

 

下載ONNX格式模型,開啟之後如圖:

輸入格式:1x3x640x640,預設BGR,無需歸一化。輸出格式:1x8400x85

官方說明ONNX格式支援OpenVINO、ONNXRUNTIME、TensorRT三種方式,而且都提供原始碼,官方提供的原始碼參考如下

https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo

本人就是參考上述的程式碼然後一通猛改,分別封裝成三個類,完成了統一介面,公用了後處理部分的程式碼,基於本人筆記本的硬體資源與軟體版本:

-GPU 3050Ti-CPU i7 11代-OS:Win10 64位-OpenVINO2021.4-ONNXRUNTIME:1.7-CPU-OpenCV4.5.4-Python3.6.5-YOLOX-TensorRT8.4.x

在三個推理平臺上測試結果如下:

執行截圖如下:onnxruntime推理

 

OpenVINO推理

 

TensorRT推理 - FP32

 

轉威FP16

 

TensorRT推理 - FP16

 

總結

之前我寫過一篇文章比較了YOLOv5最新版本在OpenVINO、ONNXRUNTIME、OpenCV DNN上的速度比較,現在加上本篇比較了YOLOX

TensorRT、OpenVINO、ONNXRUNTIME上推理部署速度比較,得到的結論就是:

CPU上速度最快的是OpenVINOGPU上速度最快的是TensorRT

能不改程式碼,同時支援CPU跟GPU推理是ONNXRUNTIMEOpenCV DNN毫無意外的速度最慢(CPU/GPU)