https://mp.weixin.qq.com/s/gjQxtc2QUI0zVRV62pSWag
曠視科技開源了內部目標檢測模型-YOLOX,性能與速度全面超越YOLOv5早期版本!
如此神奇原因在於模型結構的修改,下圖說明了改了什么地方:
把原來的耦合頭部,通過1x1卷積解耦成兩個並行的分支,經過一系列處理之后最終取得精度與速度雙提升。實驗對比結果如下:
論文與代碼模型下載地址:
https://arxiv.org/pdf/2107.08430.pdf
https://github.com/Megvii-BaseDetection/YOLOX
ONNX格式模型轉與部署
下載YOLOX的ONNX格式模型(github上可以下載)
https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntime
https://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上速度最快的是OpenVINO
GPU上速度最快的是TensorRT
能不改代碼,同時支持CPU跟GPU推理是ONNXRUNTIMEOpenCV DNN毫無意外的速度最慢(CPU/GPU)