瑞芯微(EASY EAI)RV1126B yolov26训练部署教程

运动时尚 土里土气 2026-09-21 06:21 3756 0

1.Yolo26简介

YOLO26 系列是 Ultralytics YOLO 家族中最先进(SOTA)、最具部署友好性的模型,专为边缘优先的视觉 AI 设计,在性能和效率上超越了 YOLO11 等前代模型。它由 Ultralytics 发布,通过引入多项核心创新(如端到端无 NMS 推理、DFL 移除与 MuSGD 优化器),在 CPU 推理速度上实现了高达 43% 的提升,同时显著增强了对小目标的检测能力。

本教程针对目标检测算法yolo26的训练和部署到EASY-EAI-Nano-TB(RV1126B)进行说明,而数据标注方法可以参考我们往期的文章。

图片

2. 资料下载

进行后续操作前必须先下载完整资料包!!!

资料名称 链接
算法训练部署教程完整源码包

https://pan.baidu.com/s/1YM33CVe4pHjh4isplBgi-A?pwd=1234

提取码: 1234

3.Yolo26模型训练

Yolo26训练代码在导出部分对比原版会有一些修改,建议使用我们的训练代码。

打开目录《1.AI模型训练》解压训练代码ultralytics-26.zip。

3.1数据集准备

在开始yolo26训练前,我看先准备好待训练数据,如VOC2007,下载链接:

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/index.html

然后将VOC2007数据分成训练集和测试集两个目录,如下图示意:

3.2Voc转Yolo

数据准备好后,使用data/voc_to_yolo.py脚本将Voc数据格式转成Yolo数据格式。转换完成后的数据存储在原数据同级目录的yolo_data下,如下图示意:

图片

3.3训练参数配置

数据转换完成后,在配置模型的训练参数:data.yaml,default.yaml,yolo26.yaml.

其中:

data.yaml:为待训练数据和验证数据的路径,以及类别数和类别名称;

default.yaml:为yolo26训练参数,可自行调整模型训练的参数;

Yolo26.yaml:为yolo26模型结构,在模型训练时,你需要修改类别数。

更多关于信息可参考:https://blog.csdn.net/qq_45972324/article/details/143892222

3.4模型训练

完成上述步骤后,就可以开始训练模型了,打开train-det.py脚本,输入data.yaml,default.yaml,yolo26.yaml路径,如下代码片段:

from ultralytics import YOLO import os os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # 程序报OMP: Hint This means...错误时使用 if __name__ == '__main__': cfg = r"./demo/voc2007/cfg/default.yaml" data = r'./demo/voc2007/cfg/data.yaml' weight = r"./demo/voc2007/cfg/yolo26.yaml" # pt 或 yolovx.yaml model = YOLO(weight) results = model.train( data=data, cfg=cfg )

在anaconda环境下(已装好了pytorch相关库等)执行train-det.py训练脚本,开始模型训练:

python train-det.py

图片

3.5 PC端预测模型预测

训练完毕后,在default.yaml文件配置的project目录下保存训练过程,经验证集测试的最好结果的模型。同时可以执行模型预测,初步评估模型的效果。打开predict-det.py脚本,配置好模型地址和待检测图片,执行脚本:

python predict-det.py

代码如下所示:

from ultralytics import YOLO img_path = r"./images/bus.jpg" model = YOLO("weights/yolo26s.pt") conf_thres = 0.4 iou_thres = 0.4 results = model(img_path, augment=False, conf=conf_thres, iou=iou_thres)[0] # Predict on an image results.show() # Display results

测试结果:

图片

3.6PT模型转ONNX

在PC端执行export-onnx.py脚本将pt模型转成onnx,如下图示:

图片

4.rknn-toolkit模型转换

4.1 rknn-toolkit模型转换环境搭建

onnx模型需要转换为rknn模型才能在EASY-EAI-Nano-TB运行,所以需要先搭建rknn-toolkit模型转换工具的环境。当然tensorflowtensroflow lite、caffe、darknet等也是通过类似的方法进行模型转换,只是本教程onnx为例。

4.1.1 概述

模型转换环境搭建流程如下所示:

图片

4.1.2下载模型转换工具

为了保证模型转换工具顺利运行,请下载网盘里“06.AI算法开发/01.rknn-toolkit2模型转换工具/rknn-toolkit2-v2.3.2/docker/docker_image/rknn-toolkit2-v2.3.2-cp38-docker.tar.gz”

网盘下载链接:https://pan.baidu.com/s/1cyvdodUCtSvWZsyIfqzQ-w?pwd=1234提取码: 1234

4.1.3把工具移到ubuntu20.04

把下载完成的docker镜像移到我司的虚拟机ubuntu20.04的rknn-toolkit2目录,如下图所示:

图片

4.1.4运行模型转换工具环境

在该目录打开终端

图片

执行以下指令加载模型转换工具docker镜像:

docker load --input rknn-toolkit2-v2.3.2-cp38-docker.tar.gz

执行以下指令进入镜像bash环境:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert_test:/test rknn-toolkit2:2.3.2-cp38 /bin/bash

现象如下图所示:

图片

输入“python”加载python相关库,尝试加载rknn库,如下图环境测试成功:

图片

至此,模型转换工具环境搭建完成。

5.模型转换为RKNN

EASY EAI Nano-TB支持.rknn后缀的模型的评估及运行,对于常见的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通过我们提供的 toolkit 工具将其转换至 rknn 模型,而对于其他框架训练出来的模型,也可以先将其转至 onnx 模型再转换为 rknn 模型。模型转换操作流程入下图所示:

图片

5.1 模型转换Demo下载

打开目录《2.AI模型转换》把yolov26_det_model_convert.tar.bz2quant_dataset.zip解压到虚拟机,如下图所示:

图片

5.2进入模型转换工具docker环境

执行以下指令把工作区域映射进docker镜像,其中/home/developer/rknn-toolkit2/model_convert为工作区域,/test为映射到docker镜像,/dev/bus/usb:/dev/bus/usb为映射usb到docker镜像:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit2/model_convert:/test rknn-toolkit2:2.3.2-cp38 /bin/bash

执行成功如下图所示:

图片

5.3模型转换操作说明

5.3.1模型转换Demo目录结构

模型转换测试Demo由yolov26_det_model_convertquant_dataset组成。yolov26_det_model_convert存放软件脚本,quant_dataset存放量化模型所需的数据。如下图所示:

图片

yolov26_det_model_convert文件夹存放以下内容,如下图所示:

图片

5.3.2生成量化图片列表

在docker环境切换到模型转换工作目录:

cd /test/yolov26_det_model_convert

如下图所示:

图片

执行gen_list.py生成量化图片列表:

python gen_list.py

命令行现象如下图所示:

图片

生成“量化图片列表”如下文件夹所示:

图片

5.3.3onnx模型转换为rknn模型

rknn_convert.py脚本默认进行int8量化操作,脚本代码清单如下所示:

from rknn.api import RKNN if __name__ == '__main__': do_quant = True platform = "rv1126b" data_path = "./pic_path.txt" model_path = r"./yolo26s.onnx" output_path = r"./yolo26s-int8.rknn" # Create RKNN object rknn = RKNN(verbose=False) # Pre-process config print('--> Config model') rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform=platform) print('done') # Load model print('--> Loading model') outputs = ['/model.23/Mul_2_output_0', '/model.23/Sigmoid_output_0'] # 输出层(截断层名称) ret = rknn.load_onnx(model=model_path, outputs=outputs) # ret = rknn.load_onnx(model=model_path) if ret != 0: print('Load model failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=do_quant, dataset=data_path) if ret != 0: print('Build model failed!') exit(ret) print('done') # Export rknn model print('--> Export rknn model') ret = rknn.export_rknn(output_path) if ret != 0: print('Export rknn model failed!') exit(ret) print('done') # Release rknn.release()

把onnx模型yolo26s.onnx放到yolov26_det_model_convert目录(后续用户使用自己的模型的时候,替换掉对应的onnx即可),并执行rknn_convert.py脚本进行模型转换:

python rknn_convert.py

生成模型如下图所示,此模型可以在rknn环境和EASY EAI Nano-TB环境运行:

图片

6.模型部署示例

6.1模型部署示例介绍

本小节展示yolo26模型的在EASY EAI Nano-TB的部署过程,本章章节使用的yolo26s-int8.rknn模型的是由Ultralytics官方提供的yolo26s.pt转换而来。

6.2 准备工作

6.2.1硬件准备

需准备EASY EAI Nano-TB开发板,Type-C数据线、网线。可以基于MobaXterm的ssh远程桌面登录调试。首先使用网线把EASY EAI Nano-TB的千兆以太网接口连着路由LAN口的交换机或者路由器的LAN口连接,如下图所示。

图片

以及串口连接。

图片

6.2.2开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh

图片

6.3源码下载以及例程编译

打开目录《3.AI算法部署》下载yolo26 C Demo示例文件。

下载程序包移至ubuntu环境后,执行以下指令解压:

tar -xvf yolov26_detect_C_demo.tar.bz2

下载解压后如下图所示:

图片

在EASY-EAI 编译环境下,进入到对应的例程目录执行编译操作,具体命令如下所示:

cd /opt/nfsroot/rknn-src/RV1126B/yolov26_detect_C_demo ./build.sh

图片

同时,把可执行程序目录yolov11_detect_demo_release/复制到开发板/userdata目录上:

cp yolov26_detect_demo_release/ /mnt/userdata/ -rf

图片

6.4开发板执行yolov26目标检测算法

通过串口调试ssh调试adb调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata/yolov26_detect_demo_release/

图片

运行例程命令如下所示:

chmod 777 yolov26_detect_demo sudo ./yolov26_detect_demo yolov11s_rv1126b.rknn bus.jpg

运行yolov26s int8模型例程命令如下所示:

chmod 777 yolov26_detect_demo sudo ./yolov26_detect_demo yolo26s-int8.rknn bus.jpg

执行结果如下图所示,算法执行时间为92.135ms:

图片

运行yolov26s fp16模型例程命令如下所示:

sudo ./yolov26_detect_demo yolo26s-fp16.rknn bus.jpg

执行结果如下图所示,算法执行时间为192.627ms:

图片

在EASY-EAI编译环境可以取回测试图片:

cp /mnt/userdata/yolov26_detect_demo_release/results.jpg .

图片

测试结果如下图所示:

图片

至此,yolov26目标检测例程已成功在板卡运行。