YoloV5的Onnx模型转RKNN模型(包成功,最详细)
下面是前期准备:1.环境存储:建议100G以上(我感觉50G左右可能够)2.文件rknn-toolkit2-1.4.0.zip(下载链接见4.其它)onnx模型(算子集版本小于等于 12,具体原因详见4.其它中的3.1报错提示)验证图片模型的类别3.方式本博客使用VMware虚拟机以及VMware共享文件夹实现虚拟机和主机之间的互传文件。
前言
下面是前期准备:
1.环境
Ubuntu20.04 LTS
存储:建议100G以上(我感觉50G左右可能够)
2.文件
rknn-toolkit2-1.4.0.zip(下载链接见4.其它)
onnx模型(算子集版本小于等于 12,具体原因详见4.其它中的3.1报错提示)
验证图片
模型的类别
3.方式
本博客使用VMware虚拟机以及VMware共享文件夹实现虚拟机和主机之间的互传文件。
这里放一下配置方法链接:
主机与VMware虚拟机共享文件夹:解决虚拟机找不到共享文件夹问题 - 知乎
1.安装docker
sudo apt-get update
sudo apt-get upgrade
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install ca-certificates curl gnupg lsb-release
# 添加密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 添加软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker chs(换成你自己的用户名)
sudo reboot
sudo systemctl start docker
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
service docker restart
sudo docker run hello-world
sudo docker version
sudo docker images
注意:
运行docker的helloworld时
sudo docker run hello-world
如果显示helloworld则代表docker的环境正常,但如果提示:
属于正常现象,docker会有问题连接不上,国内全面禁止了docker本源及镜像源,用科学
不过不运行helloworld不影响rknn的转换,略过即可,只要后面的版本等信息输出正常就行:
和我的截图差不多就行,不要有报错一般就代表安装成功了。
2.进入docker镜像
首先回到主目录
cd ~/
创建一个rknn文件夹
mkdir rknn
rknn-toolkit2-1.4.0.zip复制到rknn文件夹下
因为我这里是使用共享文件夹所以就当把rknn-toolkit2-1.4.0.zip复制到windows的对应目录后直接cp了:
cp /mnt/hgfs/Ubuntu20.04/rknn-toolkit2-1.4.0.zip rknn-toolkit2-1.4.0.zip
然后解压这个文件夹
unzip rknn-toolkit2-1.4.0.zip
再将onnx模型放入rknn-toolkit2-1.4.0/examples文件夹
cd rknn
cp /mnt/hgfs/Ubuntu20.04/best.onnx best.onnx
cp best.onnx rknn-toolkit2-1.4.0/examples/best.onnx
然后将docker的镜像放到~/
cp rknn-toolkit2-1.4.0/docker/rknn-toolkit2-1.4.0-cp38-docker.tar.gz ~/rknn-toolkit2-1.4.0-cp38-docker.tar.gz
开启docker服务
sudo systemctl start docker
加载docker镜像,需要等一小会
docker load --input rknn-toolkit2-1.4.0-cp38-docker.tar.gz
运行docker镜像
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v ~/rknn/rknn-toolkit2-1.4.0/examples:/examples rknn-toolkit2:1.4.0-cp38 /bin/bash
如若运行成功,你就会成功进入docker镜像中,此时你将会变为root用户
ls
进入examples文件夹查看一下我们的onnx模型在不在
cd examples/
ls
正常,进入onnx的yolov5文件夹
cd onnx/yolov5/
将其放入onnx的yolov5文件夹
cp /examples/best.onnx best.onnx
ls
3.生成RKNN模型
首先将验证图片放入该文件夹,这里我们需要新建一个终端(不要关闭之前的终端)
然后将我们的一张验证图片放进来
docker cp /mnt/hgfs/Ubuntu20.04/test.jpg infallible_sanderson:/examples/onnx/yolov5/test.jpg
这里解释一下:/mnt/hgfs/Ubuntu20.04/test.jpg 外部的图片
infallible_sanderson docker镜像名字,可用docker ps -a 指令查询
/examples/onnx/yolov5/test.jpg 要复制到的路径
回到最开始的那个终端
查看图片是否被复制进来
ls
然后我们复制一份dataset.txt
cp dataset.txt mydataset.txt
再编辑
vim mydataset.txt
点击i
然后将名称修改为我们刚复制进来的图片文件名
然后按esc
输入英文冒号:
输入wq,按回车保存
再复制一份test.py后编辑
cp test.py mytest.py
vim mytest.py
ps:我这里中途换了一个onnx模型和图片,以jzl.onnx和jzl.jpg为例
然后翻到最后
最后esc
英文冒号:
wq
回车
此时就可以开始运行代码开始转换了:
python mytest.py
等待几秒就好
然后查看一下是否导出成功
ls
看起来像是成功了,我们将rknn模型和out.jpg拿出来
切换回到终端2,复制图片和模型文件
docker cp infallible_sanderson:/examples/onnx/yolov5/out.jpg /mnt/hgfs/Ubuntu20.04/out.jpg
Successfully copied 108kB to /mnt/hgfs/Ubuntu20.04/out.jpg
docker cp infallible_sanderson:/examples/onnx/yolov5/jzl.rknn /mnt/hgfs/Ubuntu20.04/jzl.rknn
Successfully copied 8.45MB to /mnt/hgfs/Ubuntu20.04/jzl.rknn
回到windows对应的共享文件夹打开
打开out.jpg看看
效果不错,成功了
4.其它
1.参考链接
【04 rk3568 yolov5 生成rknn文件】 https://www.bilibili.com/video/BV1Cz421k75D/?share_source=copy_web&vd_source=800b0cce2dee97823e91fad6181bdec5
2.下载链接
1.rknn-toolkit2-1.4.0.zip
链接: https://pan.baidu.com/s/1NM27wWLNjZkPaOzzoXfgKA?pwd=c6ad 提取码: c6ad 复制这段内容后打开百度网盘手机App,操作更方便哦
2.Ubuntu20.04系统镜像
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
3.可能报错情况:
3.1:onnx版本太高
需注意在使用yolo导出onnx模型的时候,在export.py中的opset属性要写12,写13会导致这里导出rknn报错
3.2模型运行的输入纬度3维与实际要求4维,纬度不符的错误
此问题尚未解决,原因未知,但最后生成了RKNN文件,是否能用尚未测试。
更多推荐
所有评论(0)