首页IT科技香橙派可以做什么(香橙派5使用NPU加速yolov5的实时视频推理(一))

香橙派可以做什么(香橙派5使用NPU加速yolov5的实时视频推理(一))

时间2025-09-21 04:06:28分类IT科技浏览17458
导读:前言: 寒假里,博主完成了树莓派4B搭载yolofastest-V2的ncnn加速,效果挺不错的,但总感觉还是稍微差点意思,于是就购买了一块香橙派5,想要用RK3588芯片自带的NPU来加速深度学习的部署,在2023年3月4日也是完成了香橙派5的NPU加速深度...

前言:

        寒假里                       ,博主完成了树莓派4B搭载yolofastest-V2的ncnn加速                                   ,效果挺不错的            ,但总感觉还是稍微差点意思           ,于是就购买了一块香橙派5                                   ,想要用RK3588芯片自带的NPU来加速深度学习的部署                        ,在2023年3月4日也是完成了香橙派5的NPU加速深度学习部分           ,其效果也确实非常可观                                  ,在画质较低的情况下                        ,运行速度达到了100fps以上,下面是我在B站发布的效果视频点我跳转                       。这篇博客也是为了总结一下玩香橙派5的时候遇到的坑                                   。

准备材料:

        1                       、香橙派5

        2                                   、一台windows10或windows11的电脑

        3            、一个内部带有Ubuntu20.04的移动硬盘(如果没有                                  ,也可以用VMware安装个虚拟机也行)            。

        3                       、USB摄像头(某宝上有卖的                                   ,啥都可以)用来做视频识别

        4                                   、64G内存卡(烧录了官方的Debian11系统)            、HDMI线           、显示屏                                   、官方的电源线                       、键鼠套装

        5           、香橙派5官方提供的无线网卡(其他网卡应该也行,只不过当时我买了                       ,即使安装了驱动也没上成网)

        6                                   、散热壳(也是某宝买的                                   ,不是官方的)

 说明:

        关于RKNN            ,官方给出了两种思路                       ,一种是关于C的                                   ,另一种是关于Python的            ,这里我只介绍Python有关部分           。

        在接下来的操作中           ,一和二是在windows系统上进行操作的                                   ,三是在Ubuntu20.04系统上进行的                        ,四是在香橙派5上操作的           ,大家注意区分!!!

一                       、使用官方指定的yolov5版本去训练:

        不瞒大家                                  ,对于yolov5来说                        ,博主本人在寒假之前也没用过,这个寒假才学会了yolov5的训练和应用                                  ,在此之前                                   ,我甚至都不知道yolov5还分为多个版本,RKNN官方教程

进入教程后                       ,首先点击框内链接跳转至yolov5的GitHub仓库

 博主这里跳转过后是403                                   ,没关系            ,我们直接点击yoloV5官方库跳转至如下界面                                   。

 点击左上角箭头所指区域                       ,搜索c5360f6e7009eb4d05f14d1cc9dae0963e949213                                   ,跳转至如下界面            ,按顺序点击箭头所指区域

 进入如下界面后           ,点击Browse file

 这样                                   ,我们就找到了正确的版本了

 把代码保存到本地                        ,接下来           ,我们点击Releases · ultralytics/yolov5 · GitHub                                  ,进入如下界面

 滚动滑轮大概在界面的中部位置                        ,点击箭头所指区域

 进入如下界面

滑动滚轮到页面底部,下载我们的预训练模型yolov5s.pt

 然后就是开始我们的yolov5的简单训练了                                  ,这里我参考的是这篇博客                                   ,这位博主写的很好,对小白很友好小白YOLOv5全流程-训练+实现数字识别_yolov5数字识别_牛大了2022的博客-CSDN博客

        当然了                       ,我们因为选择了不同的版本                                   ,会出现一点小的问题            ,这里我也记录了下来                        。

        1、这里一定要采用单引号                       ,否则就会报出这个错误ValueError: too many dimensions ‘str‘

        2                                   、当出现OSError: [WinError 1455] 页面文件太小,无法完成操作                                   ,一般是要去给Anaconda所在的盘符分配一定的虚拟内存            ,同时把train.py里的--batch-size选项调小           ,我是轻薄本                                   ,于是就改成了4                        ,虚拟内存分配了50G           ,此外                                  ,如果多次输出这个错误的话                        ,就尽量不要用python终端去执行命令了,直接修改train.py里面的参数                                  ,然后运行train.py

        3                                   、当出现如下错误的时候                                   ,不要慌张,可以把所有的np.int修改成np.int_即可

 4、如果以上错误都解决了的话                       ,已经开始训练了                                   ,结果出现下面的错误

 这样的话            ,就要进入loss.py函数                       ,修改两个地方                                   ,第一个地方:

for i in range(self.nl):

        anchors = self.anchors[i]

 改为如下所示:

for i in range(self.nl): anchors, shape = self.anchors[i], p[i].shape

第二个地方:

indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid

改为:

indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid

 以上的错误解决完了就可以训练了           。博主我啊            ,为了写这篇博客           ,还把这整个操作给又弄了一遍                                   ,各位看在这么辛苦的份上                        ,给我点个赞吧                                  。

二                       、将训练好的best.pt转为best.onnx

        这里           ,我们再次进入RKNN官方教程这里                                  ,按照官方提供的步骤来操作                        。

         这一步一定要等训练完成后                        ,再对export.py进行修改,然后我们要把得出的best.pt复制到export.py同一级文件夹下。

python export.py --weights best.pt --img 640 --batch 1 --include onnx

         我确实报了一大堆警告                                  ,最开始我没有去管                                   ,后来到了转rknn的时候,出了个大问题

这是报的错误

WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function.

         我们要到export.py文件里面                       ,把--opset选项该成11                                   ,再次运行代码            ,弹出下面的界面                       ,没有了上面说的警告                                   ,但还是会有一些警告            ,博主上网查了一些           ,说是深度神经网络的网络结构太灵活                                   ,网络结构中出现不少if else 语句                        ,需要去掉           ,这个我没在意                                  ,后续也没出啥问题                                  。

         之后                        ,在export.py的同级目录下,就会生成best.onnx这个文件                                  ,我们需要做的就是把这个文件copy到我们的Ubuntu20.04系统里面                                   ,进行处理                                   。

写不开了,大家可以跟着看第二篇

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
举例说明企业如何进行搜索引擎优化(企业网站的搜索引擎推广与优化) 辐射4disable命令怎么用(edquota命令 – 编辑用户或群组的磁盘配额)