亲测!树莓派5部署YOLOv10的4种不同方式推理速度对比:pytorch、onnx、tflite、openvino

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、【100个深度学习实战项目】【链接】,持续更新~~

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

1.引言

本文主要介绍在树莓派5上部署YOLOv10n模型的4种不同部署方式的检测速度对比。使用的是官方提供的yolo10n.pt模型,首先进行模型转换,然后进行视频检测速度测试,供小伙伴们参考。
其他YOLO模型如:YOLOv5、v9、v8等都可以使用类似的方式进行部署测试。

2.模型转换

首先,我们将yolov10n.pt转换分别转换成onnxncnntflite格式模型,供后续使用不同模型部署使用,进行速度对比测试。转换代码如下:

# 转onnx
yolo export model=yolov10n.pt format=onnx

# 转openvino
yolo export model=yolov10n.pt format=openvino

# 转tflite
yolo export model=yolov10n.pt format=tflite

在这里插入图片描述

3. 模型部署测试

首先,写一个可以测试摄像头与视频的测试脚本VideoTest.py,同时显示帧率,方便我们进行不同模型的测试。

3.1 pytorch 部署方式

基于pytorch框架的原生yolov10n.pt部署测试,测试结果如下,检测视频的速度约为1.8帧/s。命令如下:

python VideoTest.py --model=yolov10n.pt --source=1.mp4 --show=True

在这里插入图片描述
在这里插入图片描述

3.2 onnx部署方式

使用onnx方式进行yolov10n的部署测试,模型为yolov10n.onnx,测试结果如下,检测视频的速度约为4.6帧/s。命令如下:

python VideoTest.py --model=yolov10n.onnx --source=1.mp4 --show=True

在这里插入图片描述

在这里插入图片描述

3.3 openvino部署方式

使用openvino方式进行yolov10n的部署测试,模型为yolov10n_openvino_model ,测试结果如下,检测视频的速度约7帧/s左右。命令如下:

python VideoTest.py --model=yolov10n_openvino_model --source=1.mp4 --show=True

在这里插入图片描述

在这里插入图片描述

3.4 tflite部署方式

使用tflite方式进行yolov10n的部署测试,模型为yolov10n_float16.tflite。测试结果如下,检测视频的速度约为2.7帧/s。命令如下:

python VideoTest.py --model=yolov10n_saved_model/yolov8n_float16.tflite --source=1.mp4 --show=True

在这里插入图片描述

在这里插入图片描述

4. 模型检测速度对比

树莓派5上使用这pytorch、onnx、ncnn、tflite这4种方式进行yolov8n模型部署后,综合对比如下:

模型格式检测速度(帧/s)
PyTorch1.8
ONNX4.6
openvino7
TFLite2.7

绘制装对比图:

# --coding:utf-8--
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
# 支持中文
# 设置全局字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun']
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

# 数据
models = ["PyTorch", "ONNX", "OpenVino", "TFLite"]
speeds = [1.8, 4.6, 7, 2.7]
# 创建柱状图
plt.figure(figsize=(8, 6))
bars = plt.bar(models, speeds, color=['blue', 'green', 'red', 'purple'])
# 在每个柱子上显示具体数字
for bar in bars:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 0.2, round(yval, 2), ha='center', va='bottom')
# 添加标题和标签
plt.title('不同模型推理速度对比')
plt.xlabel('模型格式')
plt.ylabel('推理速度(帧/s)')
# 显示图表
plt.show()

查看图片

如上图所示,可以发现,openvino方式进行部署,检测速度最佳,可以达到7帧/s。还有一定的速度提升优化空间。

5. 进一步优化提速方法

1.模型量化

半精度或者Int8等,后续会进行进一步测试。

2. 使用更小的输入大小训练模型

yolov8默认640X640,可以使用320X320,精度可能会稍有影响,但是可以提高推理速度。

3. 使用Coral USB加速棒

Coral USB accelerator USB加速棒,提高模型计算推理速度,有其他小伙伴测试使用之后帧率可以达到20-30。具体还没试过,不是特别清楚速度提升效果。

注:测试时,如果不显示每一帧的frame图片,检测速度会稍微快一点,因为显示frame会占用一定的硬件资源。


关注文末名片G-Z-H:【阿旭算法与机器学习】,发送【开源】可获取更多学习资源

在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值