实操rk3588讯为开发板部署和运行yolov5模型

背景

        跟着讯为在b站的视频(【RKNPU2项目实战1】:YOLOV5实时目标分类_哔哩哔哩_bilibili)完成了前11分钟的内容,分别是:

        在pc端用ubuntu虚拟机推理yolo模型;

        在pc端连板推理yolo模型;

        把yolo模型部署到板端推理。

        这个过程中遇到三个问题:

  1. 同样是运行pc端虚拟机上的python脚本来使用板上的npu进行推理,连板推理和部署到板端的区别是什么?
  2. 为什么adb连接不上?
  3. 为什么adb连接不稳定?

第一个问题

从文章(RK3588模型推理总结 - 知乎 (zhihu.com))中得到一些启发。这个问题要结合之前的讯为官方教程中对RKNN-Toolkit2和RKNN-Toolkit2-Lite的介绍来理解:

  • RKNN-Toolkit2:只能运行在x86平台,支持模型转换、性能评估、推理;
  • RKNN-Toolkit2-Lite:只能运行在npu平台,只保留了推理功能。

其实无论是 ”在pc端用ubuntu虚拟机推理yolo模型”、“在pc端连板推理yolo模型”、“把yolo模型部署到板端推理“中的哪一种,都需先用RKNN-Toolkit2在pc上将yolo模型转换为以.rknn后缀结尾的模型文件,也就是属于Rockchip NPU平台适用的模型类型。”,接下来:

  • 如果是连扳推理。“直接在Linux平台上通过交叉编译得到arm架构的可执行文件, 然后将可执行文件及对应的库文件,.rknn后缀结尾的模型文件以及图片文件等输入资源拷贝至RK3588进行模型的运行。”
  • 如果是在虚拟机上直接推理,更简单,直接在Linux平台上编译得到x86架构下的的可执行文件,并执行。
  • 如果是部署到板端推理,就是把.rknn模型文件和python脚本都先传输到板上(教程中使用adb push,可以用u盘啥的拷贝。)

第二个问题

被这个问题折腾了很久,解决方法:

首先根据前面的教程05_RKNN 模型评估-推理测试_哔哩哔哩_bilibili

中23分40秒的内容下载adb工具.

其次,在虚拟机上设置usb兼容性为3.1(缺省值是1.1,我就是在这里卡了好久)

 

最后选择把Fuzhou Rockchip这个usb设备连接到虚拟机就连上adb啦。

 

 如果不小心误操作选择连接到主机了,还可以在菜单栏中的”虚拟机(M)“-”可移动设备(D)“里找到Fuzhou Rockchip设备,并点击”连接(断开与主机的连接)“。

第三个问题

为什么adb连接不稳定?

这个问题左排除右排出,实在没找到原因,先在官方qq群里提问了,等工作人员或大神解答:

我刚开机的时候还能看到fuzhou rockchip rkxxx这个设备。

过了一会儿发现虚拟机边上的手机图标没了,再去菜单栏中的”虚拟机(M)“-”可移动设备(D)“里找到Fuzhou Rockchip设备时,点击会报错如下图

点确定后再回到”可移动设备(D)“里,发现Fuzhou Rockchip这个设备没了,然后ADB就再连接不上了。

暂时的解决方法是给板子断电重新上电,ADB这个设备又出现了。可见不是线路连接的问题。

 

 

另外板子还存在未连接网线时,网口指示灯常亮的问题,之前在qq群反馈过,当时就有另两名群友提出他们的板子有同样问题,工作人员也马上回复说测试看看。不知道现在解决的怎么样了,下次更新的时候顺便提下解决后续。

 

 

 

祝我本周末能在板端用上nlp模型。

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【资源介绍】 基于RK3588部署yolov5s模型源码(实时摄像头检测)+部署说明文档.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 yolov5模型(.pt)在RK3588(S)上的部署(实时摄像头检测) - 所需: - 安装了Ubuntu20系统的RK3588 - 安装了Ubuntu18的电脑或者虚拟机 <details> <summary>一、yolov5 PT模型获取</summary> [Anaconda教程](https://blog.csdn.net/qq_25033587/article/details/89377259)\ [YOLOv5教程](https://zhuanlan.zhihu.com/p/501798155)\ 经过上面两个教程之后,你应该获取了自己的`best.pt`文件 </details> <details> <summary>二、PT模型转onnx模型</summary> - 将`models/yolo.py`文件中的`class`类下的`forward`函数由: ```python def forward(self, x): z = [] # inference output for i in range(self.nl): x[i] = self.m[i](x[i]) # conv bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85) x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous() if not self.training: # inference if self.dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]: self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i) if isinstance(self, Segment): # (boxes + masks) xy, wh, conf, mask = x[i].split((2, 2, self.nc + 1, self.no - self.nc - 5), 4) xy = (xy.sigmoid() * 2 + self.grid[i]) * self.stride[i] # xy wh = (wh.sigmoid() * 2) ** 2 * self.anchor_grid[i] # wh y = torch.cat((xy, wh, conf.sigmoid(), mask), 4) else: # Detect (boxes only) xy, wh, conf = x[i].sigmoid().split((2, 2, self.nc + 1), 4) xy = (xy * 2 + self.grid[i]) * self.stride[i] # xy wh = (wh * 2) ** 2 * self.anchor_grid[i] # wh y = torch.cat((xy, wh, conf), 4) z.append(y.view(bs, self.na * nx * ny, self.no)) return x if self.training else (torch.cat(z, 1),) if self.export else (torch.cat(z, 1), x) ``` 改为: ```python def forward(self, x): z = [] # inference

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值