YOLOv8部署在RK3588上

1. 下载源码,用于训练:

git clone https://github.com/ultralytics/ultralytics.git

1.1

创建数据集文件夹,文件格式如下:

datasets
  |VOCdevkit  
  |    |images
  |    |   |train
  |    |   |val
  |    |   |test
  |    |
  |    |labels
  |        |train
  |        |val
  |        |test

1.2

/ultralytics/ultralytics/cfg/datasets/目录下新建一个AUV.yaml

path: /ultralytics/datasets/VOCdevkit/
train:
  - images/train
val:
  - images/val
test:
  - images/test

# Classes
names:
  0: eif4
  1: 4_AUV
  2: circle_AUV
  3: 6_AUV
  4: 8_AUV
  5: birds

2. 训练:

2.1

修改/home/baiwei/ultralytics/ultralytics/cfg/models/v8/目录下yolov8.yaml中的nc为自己的标签种类数
主目录ultralytics下执行:

yolo detect train data=./ultralytics/cfg/datasets/AUV.yaml model=./yolov8s.pt epochs=100 imgsz=640 batch=16 device=0


/*
data    新建的yaml文件,里面为数据集路径和标签
model   预训练模型路径
epochs  训练轮数
imgsz   输入网络图片大小,此处为640*640
batch   批处理大小
device  gpu号
*/

或者更改/ultralytics/ultralytics/cfg/目录下的defaut.yaml
这个yaml中的参数更多,有许多参数可以调

2.2

然后执行:

yolo cfg=./ultralytics/cfg/default.yaml

程序先自动下载yolov8n.pt用于检查数据集是否合规,然后自动下载yolov8s.pt作为预训练模型,在yolov8s.pt的基础上继续训练我们的数据
等待运行完毕后在/home/baiwei/ultralytics/runs/detect/train/weights/文件夹下生成best.pt为最佳模型

3. 下载瑞芯微修改后的源码,用于导出onnx:

git clone https://github.com/airockchip/ultralytics_yolov8.git  

3.1

将训练时的v8源码的/ultralytics/ultralytics/cfg/datasets/AUV.yaml复制到/ultralytics_yolov8/ultralytics/cfg/datasets

3.2

将训练好的best.pt放到ultralytics_yolov8主目录下
修改/ultralytics_yolov8/ultralytics/cfg/目录下defaut.yaml中的modeldata

model: /home/baiwei/ultralytics_yolov8/best.pt
data: /home/baiwei/ultralytics_yolov8/ultralytics/cfg/datasets/AUV.yaml
/*
model 训练好的best.pt路径
data  yaml文件,其中是数据集路径和标签
*/

3.3

同样修改ultralytics_yolov8/ultralytics/cfg/models/v8/yolov8.yaml中的nc为标签种类数
然后主目录下执行:

export PYTHONPATH=./
python ./ultralytics/engine/exporter.py

执行完毕后会在主目录下生成best.onnx模型

4. 按照《03_RKNN Toolkit2 环境搭建》搭建环境

所需要的安装包:https://pan.baidu.com/s/1_2oXkVxtgLK_vpUYJT__uQ?pwd=6666
提取码: 6666
由于Ubuntu20太大无法上传,建议大家自行查找教程在VM中安装ubuntu20系统

4.1 VMwar17下载

我参考的博客,在此引用该博文:
https://blog.csdn.net/qq_74731410/article/details/135824895

4.2 使用Vmware虚拟机软件运行ubuntu20环境:

安装好Vmware后点击左上角 文件->扫描虚拟机载入ubuntu20,开机密码:topeet

4.3 安装Miniconda

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

5. 在虚拟机安装rknn-toolkit2

我是直接下载的1.5.2版本的,下载地址
https://github.com/rockchip-linux/rknn-toolkit2/tree/v1.5.2
给出最新版本克隆地址
git clone https://github.com/rockchip-linux/rknn-toolkit2.git

5.1

在conda环境中执行以下安装命令

unzip rknn-toolkit2-1.5.2.zip  
pip install -r ./doc/requirements_cp38-1.5.2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install ./packages/rknn_toolkit2-1.5.2+b642f30c-cp38-cp38-linux_x86_64.whl

5.2

验证是否安装成功
在终端输入以下内容不报错代表成功

python
from rknn.api import RKNN

5.3

在虚拟机的rknn环境下rknn_model_zoo/examples/yolov8/python/目录下修改convert.py

DATASET_PATH = '../../../datasets/COCO/coco_subset_20.txt'
DEFAULT_RKNN_PATH = './best.rknn'

/*
DEFAULT_RKNN_PATH:生成的rknn模型路径
*/

5.4

执行以下代码将onnx转换为rknn模型:

python convert.py best.onnx rk3588 i8 best.rknn

6. 验证onnx模型

在虚拟机rknn_moodel_zoo/examples/yolov8/python/中执行以下代码测试onnx是否正确
修改yolov8.py中的CLASSEScoco_id_list
修改/rknn_model_zoo/examples/yolov8/model/coco_80_labels_list.txt为自己的标签种类
修改同目录下的dataset.txt为自己数据集中的一张照片

python yolov8.py --model_path best.onnx --img_show

7. 验证rknn模型

在3588上修改/rknn_model_zoo/examples/yolov8/model/coco_80_labels_list.txt为自己的标签种类
修改同目录下的dataset.txt为自己数据集中的一张照片
/userdata/OCR/rknn_model_zoo/目录下执行以下代码

./build-linux.sh -t rk3588 -a aarch64 -d yolov8

会在install/rk3588_linux_aarch64/rknn_yolov8_demo/下生成验证rknn模型程序:rknn_yolov8_demo
执行该程序验证rknn模型

./rknn_yolov8_demo <model_path> <image_path>

8. 后续量化

发现pt转onnx的时候,对模型的精度影响不是很大,但是在rknn_model_zoo的转换代码中,也就是onnx转rknn的时候,进行了模型量化,将FP32量化为了INT8,导致精度下降。
后续我会记录一下不进行量化的转化过程

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【资源说明】 YOLOv8部署瑞芯微RK3588板端c++源码(含使用说明).zipYOLOv8部署瑞芯微RK3588板端c++源码(含使用说明).zip ## 编译和运行 1)编译 ``` cd examples/rknn_yolov8_demo_open bash build-linux_RK3588.sh ``` 2)运行 ``` cd install/rknn_yolov8_demo_Linux ./rknn_yolov8_demo ``` 注意:修改模型、测试图像、保存图像的路径,修改文件为src下的main.cc ``` 测试效果 冒号“:”前的数子是coco的80类对应的类别,后面的浮点数是目标得分。(类别:得分) ![images](test_result.jpg) (注:图片来源coco128) 说明:推理测试预处理没有考虑等比率缩放,激活函数 SiLU 用 Relu 进行了替换。由于使用的是coco128的128张图片数据进行训练的,且迭代的次数不多,效果并不是很好,仅供测试流程用。换其他图片测试检测不到属于正常现象,最好选择coco128中的图像进行测试。 把板端模型推理和后处理时耗也附上,供参考,使用的芯片rk3588。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值