- 前言
- PC上的模型推理速度(已更新全部模型)
- Atlas200DK推理测速结果(已更新全部模型)
- (修)推理算力修正
Nanodet和YOLOv5都是我很喜欢的检测算法,Nanodet超轻量对嵌入式设备极其友好,u版yolo训练起来速度快效果好,功能强大
前两天旷视开源了YOLOX,我看了一下算法大体和代码实现,总的来讲还是比较有新意,去掉了anchors,有点融合FCOS的意思,不过纸面上的mAP比yolov5的p6系列还是有一定差距的 不过YOLOX代码写的真不错,比u版yolo简洁多了。
以下测试均在python中完成
PC上的模型推理速度(已更新全部模型)mAP我就不比了,这几个算法在原repo里都有coco数据集上的精度测试结果
PC配置:CPU:i7-10875H GPU:RTX2070super Max-Q
将YOLOX、YOLOv5、Nanodet仓库里的模型,对30张图片进行测速,取均值
modelsizepytorchonnxYOLOXnano416x41663.5ms14.9ms (27.1ms opencv)YOLOXtiny416x41688.0ms26.0ms (43.1ms opencv)YOLOXs640x640273.5ms70.6ms (130.2ms opencv)YOLOXx640x6401607.2ms528.6ms (750ms opencv)––––YOLOv5s640x640157ms58ms (134ms opencv)YOLOv5s6640x640156ms67msYOLOv5x640x640998ms428msYOLOv5x6640x6401067ms447ms––––Nanodet_s320x32054ms70ms opencvNanodet_m416x41687ms119ms opencvpytorch列是直接用的官方demo的测速结果 onnx列是将pytorch模型转成onnx后,分别采用onnxruntime和opencv的dnn module的测速结果,因为opencv中部分onnx算子实现较慢,因此推理速度比onnxruntime慢很多
刚测了PC上yolox系列在opencv dnn上的推理速度,其中两个超轻量模型速度竟然远超nanodet,amazing!
Atlas200DK推理测速结果(已更新全部模型)Atlas200dk配置:CPU: 8xArm Cortex A55 NPU: Ascend310(8~22TOPs算力) 由于前几天调试atlas碰到了很多坑,到现在才终于成功部署了v5和nanodet的模型,YOLOX的模型将尽量进行测试
modelsizecann(npu)onnx(cpu)YOLOXnano416x41611.5ms308.2msYOLOXtiny416x41612.2ms763.8msYOLOXs640x64016.5ms2907.3msYOLOXx640x64062.8ms24268ms––––YOLOv5s640x64034.4ms1187msYOLOv5s6640x64022.7ms–YOLOv5x640x64064.6ms11813msYOLOv5x6640x64062.7ms–––––Nanodet_s320x3208.0ms170.5msNanodet_m416x41611.0ms280.0ms在Atlas200dk上运行yolov5x、yolox_x的模型推理速度差不多达到16FPS,与cpu相比提升了30到400倍。
根据以上模型推理时间计算,Atlas的算力差不多在3.5~4.5TFLOPS/s之间,如果使用C++做部署应该还可以再提升一些速度。
同时yolov5的p6模型在cann下的运行时间和p5模型没啥区别(甚至比p5模型还快),可以用v5的P6模型白嫖精度指标
YOLOX系列模型在PC的CPU上的推理速度一般,但是YOLOX在Atlas的NPU上运行速度与v5相比不分伯仲,使用YOLOX的nano或tiny模型替代Nanodet可以提升一些精度
过两天把YOLOX的数据放上来(不过推理速度肯定比这俩慢了) 经过测试,Atlas在cpu上推理效率一般,但是在NPU上的效果非常好,过段时间相应的P6模型出来后可以很好的替代yolov5
并且还会更新一个在Atlas上部署模型的教程,包括pytorch转onnx,onnx模型优化,atc工具将onnx转om模型,acl模型部署方法,踩到的坑巨多,都是辛酸泪啊…
(修)推理算力修正根据YOLOX官方数据,YOLOX-x的FLOPS = 282 GFLOPS,则Atlas的算力应该是282/0.0628 = 4.27TFLOPS/s