树莓派5进行YOLOv8部署的4种不同部署方式检测速度对比:pytorch、onnx、ncnn、tflite

news2024/9/27 5:49:08

《博主简介》

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

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

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

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

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

目录

  • 1.引言
  • 2.模型转换
  • 3. 模型部署测试
    • 3.1 pytorch 部署方式
    • 3.2 onnx部署方式
    • 3.3 ncnn部署方式
    • 3.4 tflite部署方式
  • 4. 模型检测速度对比
  • 5. 进一步优化提速方法
    • 1.模型量化
    • 2. 使用更小的输入大小训练模型
    • 3. 使用Coral USB加速棒

1.引言

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

2.模型转换

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

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

# 转ncnn
yolo export model=yolov8n.pt format=ncnn

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

在这里插入图片描述

3. 模型部署测试

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

3.1 pytorch 部署方式

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

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

在这里插入图片描述
python VideoTest.py --model=yolov8n.pt --source=1.mp4 --show=True

3.2 onnx部署方式

使用onnx方式进行yolov8n的部署测试,模型为yolov8n.onnx,测试结果如下,检测视频的速度约为2-4帧/s平均3帧/s左右。命令如下:

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

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

3.3 ncnn部署方式

使用ncnn方式进行yolov8n的部署测试,模型为yolov8n_ncnn_model,测试结果如下,检测视频的速度约为4-8.5帧/s,平均8帧/s左右。命令如下:

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

在这里插入图片描述

在这里插入图片描述

3.4 tflite部署方式

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

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

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

4. 模型检测速度对比

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

模型格式检测速度(帧/s)
PyTorch2
ONNX3
NCNN8
TFLite2.5

绘制装对比图:

import matplotlib.pyplot as plt
# 数据
models = ["PyTorch", "ONNX", "NCNN", "TFLite"]
speeds = [2, 3, 8, 2.5]
# 创建柱状图
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()

查看图片
如上图所示,可以发现,ncnn方式进行部署,检测速度最佳。还有一定的速度提升优化空间。

5. 进一步优化提速方法

1.模型量化

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

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

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

3. 使用Coral USB加速棒

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

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


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

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于k8s集群的资源发布方式(灰度/滚动发布)

目录 1.常见的发布方式 2.实现蓝绿发布 3.实现金丝雀发布(Canary Release) 4.声明式管理方法 1.常见的发布方式 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚优点:用户无感知,部署和回滚速度较快&#…

如何统计visiual studio代码行数

统计Visual Studio中的代码行数,可以通过Visual Studio自带的查找功能结合正则表达式来实现。以下是一个详细的步骤说明: 一、使用Visual Studio的查找功能 打开Visual Studio:首先,确保你已经打开了Visual Studio并加载了你想要…

pyqt中使用opengl绘制图像

首先有在C中使用的opengl基础 在qt designer中,可以直接找到 QOpenGLWidget类 ,是一个黑框框(图1) 也就是说,不需要安装额外的东西,一切从简 然后就是看官方文档学习啦 intializeGL() 在这里面设定好…

JavaScript基础——数据类型转换

显示数据类型转换 String()函数进行显示转换 Number()函数进行显示转换 Boolean()函数进行显示转换 隐式数据类型转换 算术运算隐式转化 比较操作隐式转化 赋值操作 在JavaScript中,数据类型转换是常见的操作,它允许将一种类型的数据转换为另一种…

c++网络编程实战——开发基于协议的文件传输模块(一)如何实现一个简单的tcp长连接

前言 在之前的几篇内容中我们已经介绍过基于ftp协议的文件传输模块,而这个系列我们所想实现的就是如何实现基于tcp进行的文件传输模块,话不多说,开坑开坑! 什么是tcp长连接 我们知道tcp在建立连接的时候会通过三次握手与四次挥手来建立tcp连接&#x…

用uniapp 及socket.io做一个简单聊天app 4

界面如下&#xff1a; <template><view class"container"><input v-model"username" placeholder"用户名" /><input v-model"password" type"password" placeholder"密码" /><butto…

探秘北京崇文门中医医院卫景沛医生:为何深受患者信赖?

卫景沛是北京崇文门中医医院特聘专家&#xff0c;深受患者信赖&#xff01; 北京崇文门中医医院卫景沛主任毕业于兰州大学医学院&#xff0c;拥有医学硕士学位。他的硕士导师是天坛医院的王拥军教授&#xff0c;主要研究方向为脑血管病及脑血管病介入治疗。 为了提升自己在缺血…

对称加密:数据安全的保障

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Qt对象树的介绍

目录 创建项目&#xff08;此处我就不多介绍了&#xff09; 按钮 对象树 创建项目&#xff08;此处我就不多介绍了&#xff09; QMainWidow带菜单栏的 QWidget空白的 QDialog对话框 创建功能时注意&#xff1a; 项目工程名称一般不要有标点&#xff0c;不要带中文 按钮 /…

计算机基础(Windows 10+Office 2016)教程 —— 第8章 多媒体技术及应用

多媒体技术及应用 8.1 多媒体技术的概述8.1.1 多媒体技术的定义和特点8.1.2  多媒体的关键技术8.1.3 多媒体技术的发展趋势8.1.4 多媒体文件格式的转换8.1.5 多媒体技术的应用 8.2 多媒体计算机系统的构成8.2.1 多媒体计算机系统的硬件系统8.2.2 多媒体计算机系统的软件系统…

Python教程(十一):单元测试与异常捕获

目录 专栏列表前言一、Python中的测试1.1 单元测试1.1.1 定义测试类1.2.1 安装 pytest1.2.2 编写测试1.2.3 运行测试 二、Python中的异常捕获2.1 常规代码2.2 异常基础 三、抛出异常&#xff08;异常传播&#xff09;四、 自定义异常 专栏列表 Python教程&#xff08;一&#…

赛蓝企业管理系统 AuthToken/Index 身份认证绕过漏洞复现

0x01 产品简介 赛蓝企业管理系统是一款为企业提供全面管理解决方案的软件系统&#xff0c;它能够帮助企业实现精细化管理&#xff0c;提高效率&#xff0c;降低成本。系统集成了多种管理功能&#xff0c;包括但不限于项目管理、财务管理、采购管理、销售管理以及报表分析等&am…

【WPF开发】如何将工程打包成单独的EXE安装包

一、安装NSIS与HM NIS Edit 1、下载和安装NSIS NSIS官网 2、下载和安装HM NIS Edit HM NIS Edit官网 点击下载后等待几秒&#xff0c;就会弹出下载提示 双击下载的安装包&#xff0c;点击“OK” 点击“下一步” 点击“我接受” 更改路径后&#xff0c;点击安装即可 二、打包软…

SpringSecurity-1(认证和授权+SpringSecurity入门案例+自定义认证+数据库认证)

SpringSecurity 1 初识权限管理1.1 权限管理的概念1.2 权限管理的三个对象1.3 什么是SpringSecurity 2 SpringSecurity第一个入门程序2.1 SpringSecurity需要的依赖2.2 创建web工程2.2.1 使用maven构建web项目2.2.2 配置web.xml2.2.3 创建springSecurity.xml2.2.4 加载springSe…

【leetcode详解】寻找两个正序数组的中位数:最简单的【困难】题?

简评&#xff1a; 可以说&#xff0c;要做出来这道题&#xff0c;实际上是非常简单的 //这也是笔者目前唯一解出来的唯一一道【困难】题哈哈哈哈 思路解析&#xff1a; 将两个向量合并 class Solution { public:double findMedianSortedArrays(vector<int>& nums1…

c# MetroForm 和 IntPtr unsafe

一、NuGet安装框架 修改代码 效果&#xff1a; 结果&#xff1a; TopLevel与TopMost属性 frm.TopLevel false; //Form.TopLevel 获取或设置一个值&#xff0c;该值指示是否将窗体显示为顶级窗口。frm.TopMost false; //Form.TopMost 获取或设置一个值&#xff0c;指示该窗体…

嵌入式人工智能(43-基于树莓派4B的刷卡模块射频识别RFID-RC522)

1、RFID 射频识别&#xff08;RFID&#xff0c;Radio Frequency Identification&#xff09;是一种无线通信技术&#xff0c;用于自动识别和追踪标签上的信息。这项技术基于射频信号的传输和接收&#xff0c;通过将标签上的数据存储在特定的芯片中&#xff0c;实现物体的识别和…

上市公司绿色信息披露质量评分数据(2008-2023年)

数据来源&#xff1a;基础数据来源于上市公司年报/社会责任报告/环境报告以及ZJ会及统计局 时间跨度&#xff1a;2008-2023年 数据范围&#xff1a;企业及行业层面 数据指标&#xff1a; 按照是否货币化分类企业对于环境信息的披露:对于货币化的信息&#xff0c;定量和定性…

共襄恰青赛马节盛事 共享农业产业园成果

恰青赛马节是那曲一年一度的草原盛事&#xff0c;是藏北规模盛大的传统节日&#xff0c;承载着那曲悠久的文化底蕴&#xff0c;体现了藏北各族群众丰富的传统习俗&#xff0c;更是深受民众欢迎。今年的赛马节上&#xff0c;色尼区国家现代农业产业园紧抓机遇&#xff0c;设置农…

Android设备发送蓝牙文件到电脑笔记本失败解决

Android设备发送蓝牙文件到电脑笔记本失败解决 文章目录 Android设备发送蓝牙文件到电脑笔记本失败解决一、前言二、解决1、比较旧的电脑2、大部分新的电脑 三、其他1、发送蓝牙文件到Window电脑端小结2、可传输的蓝牙文件的文件类型 一、前言 普通手机之间蓝牙配对后&#xf…