瑞芯微(EASY EAI)RV1126B yolov26训练部署教程
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模型转换工具的环境。当然tensorflow、tensroflow 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.bz2和quant_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_convert和quant_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目标检测例程已成功在板卡运行。









