<h1 style="text-align: center">ultralytics-rknn</h1>
这个项目基于 ultralytics-yolov8, 使用其网络和预训练模型移植到Rk3588开发板上,
完成边缘设备端的`检测`, `分类`, `分割`, `姿态`等任务。
### 相关项目地址
[ultralytics](https://github.com/ultralytics/ultralytics.git): 使用的神经网络模型及权重来源 <br>
[rknpu2](https://github.com/rockchip-linux/rknpu2): rk3588驱动项目<br>
[rknn-toolkit2](https://github.com/rockchip-linux/rknn-toolkit2): rk3588模型移植相关项目<br>
### 注意事项
为了能让模型移植到`RK3588`上,对网络输出方式进行简单的修改,下方会叙述修改地方。
### 项目环境
#### 1. 服务器端 (训练/测试/转换环境onnx)
```
python: 3.8 完全按照ultralytics原作者说明的环境
注意: onnx==1.10.0 protobuf==3.12.2
这里刚开始使用protobuf环境在3.19以上出现了,转换环境加载onnx错误的情况
```
#### 2. 转换环境(rknn)
```
均值: 0 0 0
方差: 255 255 255
安装rknn-toolkit2搭建即可。
```
### 3. 测试环境(RK3588)
```
RK3588使用的固件及转换环境均是v1.5.0, 其他版本未测试。
```
## 一. 检测模型迁移
### 模型转换
#### 1. pth 2 onnx
```
1. 运行 mytool/yolov8_det_export.py, 程序即可导出onnx模型
对于一个320尺寸模型,对于双输出。
```
#####
![修改点1](./img/fix_point1.png)
```
代码来源: ultralytics/nn/modules/head.py line: 62
原: dbox = dist2bbox(self.dfl(box), self.anchors.unsqueeze(0), xywh=True, dim=1) * self.strides
改: dbox = dist2bbox(self.dfl(box), self.anchors.unsqueeze(0), xywh=False, dim=1)
取消原先框复原时的乘法操作,这里会导致rknn推理是commit错误 (验证得到)
并且原先直接xywh输出,因为怕同样错误,直接采用x1y1x2y2的双点输出。将xywh=False
```
#####
![修改点2](./img/fix_point2.png)
```
代码来源: ultralytics/nn/modules/head.py line: 73
原: return y if self.export else (y, x)
改: return dbox.permute(0, 2, 1), cls.sigmoid().permute(0, 2, 1)
原先 只返回y,是因为将结果合并,我这里直接基于修改1,直接返回dbox和cls,并且由于原输出为 dbox[1 4 2100]在c++处理时偏移较为麻烦,所以直接
permute将其变换为 [1 2100 4],便于c++后处理步骤
```
### RKNN测试
```
[ cpp代码这边随便写的,只为能够最快测试流程和得到结果 ]
// 交叉编译器自己安装,我这边使用的是aarch64-gcc10.2版本
// 编译
cd ~/test/cpp
mkdir build && cd build
cmake .. && make
// 运行【注意模型位置及图像路径,代码中修改】生产res.jpg
./u2netp_demo
```
### 结果展示(RK3588)
```
基于320尺寸的yolov8n检测网络,FPS可以40到50左右,单帧速度20ms。
```
![测试结果](./img/detect_result2.png)
![测试结果](./img/detect_result.png)
## 二. 分割模型迁移
Waiting...
## 三. 姿态模型迁移
Waiting...
## 四. 跟踪模型迁移
Waiting...
奋斗奋斗再奋斗的ajie
- 粉丝: 1229
- 资源: 2589
最新资源
- 西门子S7-300博途植物萃取饮料生产线控制系统程序案例,编程软件采用博途STEP7加博途WINCC RT Pro 内有CAD工艺流程图和PDF版电气图供参考 博图版本V15.1及以上
- 西门子S7-1200博图程序案例,具体为一个3轴伺服螺丝机程序,画面采用西门子KTP700组态,程序语言采用SCL,程序结构清晰,写法十分经典,参考价值高 ,打开版本TIA V14及以上
- 西门子PLC1200伺服库卡机器人12工位博图程序例程,组态采用昆仑通态触摸屏,详细中文注释,PDF电路图参考,设备操作说明,物料BOM ,PLC和一台库卡机器人profinet通讯 PTO模式控制
- 西门子PLC-PVC送料配料系统控制程序画面实例,结构采用S7-314C+Wincc 程序内容包括1.配料系统物料分配 2.模拟量转,监测压力,称重程序, 3.PROFI
- 合资品牌汽车尾翼组装线(sw16可编辑+工程图+bom)全套技术资料100%好用.zip
- 147-西门子S7-1200博图程序案例, PID 恒温恒压供冷却水程序.触摸屏画面TP1200组态 霍尼韦尔电动比例阀PID控制水温,与两台西门子v20变频器模拟量PID控制水压 包括程序和Ep
- No.943 基于S7-300 PLC和Wincc Flexible触摸屏温室大棚控制 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- FX5U程序框架模板(10轴) 程序由老工程师费尽心力的整理,把控制允许整理成简单的模板架构程序 程序讲解 1 轴的参数初始化 2 自动启动条件 3 安全条件(台湾称许可条件,这个可以避免运动打架
- 2022最新款程序,切条机切带机选用中达优控定长送料触摸屏一体机程序 三菱work2编辑软件,能用于超声切带和热切 配有触摸屏软件 送料方式可以自由选择,根据实际切长的用夹手加滚筒送料,切短的用滚
- 三相三电平PWM整流器闭环控制策略,采用三电平SVPWM算法
- 二极管箝位型三电平逆变器,NPC三电平逆变器 主要难点:三电平空间矢量调制(SVPWM),中点电位平衡调制等 MATLAB Simulink仿真模型,可提供参考文献
- 基于PLC的三部十层群控电梯,采用博途编写,提供程序,画面,接线图,设计报告,以及PPT,详情见图 需要的话,点击“加好友”和我加好友吧比心
- BootLoader IAP 上位机使用C#语言编程,下位机以STM32 系列为例,方便移植到其他厂家的MCU芯片,采用YModem协议传输文件 实现完成一键下载,含有上位机源码及MCU源码 企业
- 基于plc的污水处理厂控制系统,全部采用博途仿真完成,提供程序,画面,接线图.流程图,报告,PPT等相关文档 最终运行效果,详见上方演示视频
- fx5u 完整项目案例 包含触摸屏 ,6路脉冲控制 程序简单 适合新手学习
- Mitsubishi 三菱电机马达PMSM电机负载观测转矩前馈simulink 基于Luenberger降阶状态观测器,包含PMSM数学模型,PMSM双闭环PI矢量控制,并添加了前馈控制,采用SVP
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈