赞
踩
本文包含了将yolov5-5.0训练生成的权重文件.pt转为.onnx,并将.onnx转换为.rknn最终运行在rk3588平台的全部过程和安装包。至于为什么转换时需要修改yolo.py中的代码还没搞清楚,希望大家评论区中指导一下,谢谢!
借鉴了几篇优秀博客,在此给出链接:
瑞芯微RK3588开发板:虚拟机yolov5模型转化、开发板上python脚本调用npu并部署 全流程
3588板子部署yoloV5
yolov5训练并生成rknn模型部署在RK3588开发板上,实现NPU加速推理
所需要的安装包:https://pan.baidu.com/s/1_2oXkVxtgLK_vpUYJT__uQ?pwd=6666
提取码: 6666
由于Ubuntu20太大无法上传,建议大家自行查找教程在VM中安装ubuntu20系统
我参考的博客,在此引用该博文:
VMware 17安装教程(附安装包)
安装好后点击左上角 文件
->扫描虚拟机
载入ubuntu20
将Miniconda3-latest-Linux-x86_64.sh安装包拷贝到虚拟机ubuntu上
使用./Miniconda3-latest-Linux-x86_64.sh
命令进行安装,根据提示,输入回车和yes
,
等待安装完成
右键打开新的终端,发现用户名前出现(base),就代表安装成功了
终端中输入conda create -n rknn python=3.8
创建新的环境,接着输入y继续
使用conda activate rknn
激活相应的rknn环境
pip install numpy==1.16.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
训练好模型后进行pt->onnx
需要更改yolov5-5.0/models/yolo.py中Detect
类的def forward
,训练时切勿修改:
def forward(self,x):
z = []
for i in range(self.nl):
# x[i] = self.m[i](x[i])
x[i] = torch.sigmoid(self.m[i](x[i]))
return x
然后主目录执行:
python models/export.py --weights ./runs/train/exp/weights/best.pt --img 640 --batch 1
会在/yolov5-5.0/runs/train/exp/weights/
下生成best.onnx
我是直接下载的1.5.2版本的,下载好后直接拖进虚拟机中,没有用克隆,给出克隆地址
右键打开终端执行:
git clone https://github.com/rockchip-linux/rknn-toolkit2.git
rknn
环境conda activate rknn
1.5.2版本在rknn-toolkit2/doc
目录下选择和环境对应的python版本
pip install -r ./doc/requirements_cp38-1.5.2.txt -i -i https://pypi.tuna.tsinghua.edu.cn/simple
在packages文件夹下面,选择和环境对应的python版本
pip install ./packages/rknn_toolkit2-1.5.2+b642f30c-cp38-cp38-linux_x86_64.whl
在终端输入
python
然后输入
from rknn.api import RKNN
不报错表示安装成功
将生成的best.onnx放在/example/onnx/yolov5/目录下
ONNX_MODEL='best.onnx' #yolov5s.onnx所在地址
RKNN_MODEL='best.rknn' #生成的rknn模型所在地址
IMG_PATH='./bus.jpg' #测试图片所在地址
DATASET='./dataset.txt' #量化所需的图片集
...
...
CLASSES=("A","B") #数据集中的标签label
...
...
rknn.config(.....,target_platform='rk3588') # 将最后这个参数修改为使用的3588平台
...
执行:python test.py
生成yolov5s.rknn
我在服务器上git rknpu2包,切记在linux系统不要直接下载代码压缩包,要用git
git clone https://github.com/rockchip-linux/rknpu2.git
修改include
文件中的postprocess.h
#define OBJ_CLASS_NUM 3 # 这里的数字修改为数据集中的标签种类数
其次修改model
目录下的coco_80_labels_list.txt
文件,改为自己的标签类并保存
model/RK3588
编译并运行shell:
bash ./build-linux_RK3588.sh
执行完后会生成install/rknn_yolov5_demo_Linux
目录
rknn_yolov5_demo
和rknn_yolov5_video_demo
将整个install目录放到rk3588板子上,执行这两个程序,一个是测试图片的,一个是测试265和264编码视频的
使用ffmpage将MP4转h.265
ffmpeg -i eif4_60s.mp4 -vcodec hevc eif4_60s.hevc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。