YOLOv5训练部署指南
文档信息
本教程介绍 YOLOv5 目标检测模型的训练方法,以及将模型部署到 CSUN RV1126B 开发板的完整流程。
| 项目 | 内容 |
|---|---|
| 文档名 | YOLOv5训练部署指南 |
| 公司 | 株式会社日昇テクノロジー |
| URL | http://www.dragonwake.com |
| info@dragonwake.com | |
| 创建日期 | 2026/06/04 |
| 版本 | Ver1.0 |
| 修改内容 | 新建 |
1. YOLOv5概述
YOLOv5模型由Ultralytics公司于2020年6月9日公开发布,是一种目标检测模型。该模型基于YOLOv3改进而来,提供YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种模型。
与YOLOv4相比,YOLOv5在检测精度下降较小的情况下,具有平均权重文件更小、训练时间和推理时间更短等特点。YOLOv5的网络结构由输入端、Backbone、Neck和Head四个部分组成。
本教程说明YOLOv5目标检测算法的训练方法,以及部署到CSUN RV1126B开发板的步骤。数据标注方法请参考已发布的相关文档。

图1-1 YOLOv5训练与部署整体流程
2. 资料下载
本手册所需资料和源码请从以下链接下载。
https://dl.dragonwake.com/download/rv1126b/AI/demo/yolov5/AIDemo_yolov5_All.zip
解压后的目录结构如下。
|-- 01-data 数据集|-- 02-training 训练用源码|-- 03-model_convert AI模型转换用源码|-- 04-AI_deploy AI模型部署用源码
图2-1 AIDemo_yolov5_All.zip解压后的目录结构
3. 数据集准备
3.1. 数据集下载
从“2. 资料下载”下载软件包后,在01-data目录下执行以下命令解压数据集。
unzip mask.zip解压后可以得到以下文件或文件夹。
images:用于训练和验证的图片文件labels:每张图片对应的YOLO格式标签文件list_dataset_file.py:用于生成训练和验证图片路径列表的脚本

图3-1 数据集解压后的文件结构
3.2. 生成路径列表
进入RV1126B Docker开发环境后,在数据集目录中执行list_dataset_file.py。
cd ~/linuxshare/work/rv1126b/jp/embedded/images/develop_environment./run.sh 2204cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/01-data/python list_dataset_file.py执行完成后,会生成训练样本列表train.txt和验证样本列表valid.txt。

图3-2 list_dataset_file.py执行结果
后续训练配置文件会引用这两个列表文件。

图3-3 生成的train.txt和valid.txt
4. YOLOv5目标检测算法训练
4.1. 下载训练源码
在PC端使用Git克隆公司GitHub仓库。由于网络情况不同,克隆过程可能需要一定时间。
git clone https://github.com/csunltd/rv1126b-yolov5.git
图4-1 克隆YOLOv5仓库
克隆完成后,可以看到如下目录结构。

图4-2 YOLOv5训练源码目录结构
4.2. 模型训练
进入YOLOv5工作目录,以下以训练口罩检测模型为例进行说明。训练前,需要根据实际数据集位置修改data/mask.yaml中的train.txt和valid.txt路径。
# Train/val/test setspath: ../../01-data
train: train.txtval: valid.txttest: valid.txt
# Classesnc: 2names: ['head', 'mask']
图4-3 mask.yaml配置示例
安装训练所需Python模块。
pip install PyYAML tqdm ultralytics pandas seaborn执行以下命令开始训练。
python train.py --data mask.yaml --cfg yolov5s.yaml --weights "" --batch-size 64训练开始后,终端会显示epoch、loss、精度等信息。训练结果会保存到./runs/train/exp*/目录,精度结果可通过results.csv查看。

图4-4 YOLOv5训练终端输出
4.3. 在PC端进行模型推理
训练完成后,验证集效果最好的模型通常会生成在./runs/train/exp*/weights/best.pt。执行以下命令进行推理,初步评估模型检测效果。
python detect.py --source data/images --weights ./runs/train/exp8/weights/best.pt --conf 0.5推理结果会保存到./runs/detect/exp*/目录。

图4-5 PC端YOLOv5口罩检测结果
4.4. 将pt模型转换为ONNX模型
将算法部署到CSUN RV1126B开发板时,最终需要转换为RKNN模型。在转换为RKNN之前,需要先将PyTorch的pt模型转换为ONNX模型,同时会生成best.anchors.txt。
python export.py --include onnx --rknpu RV1126 --weights ./runs/train/exp8/weights/best.pt为了提高RV1126B与RKNN转换工具的兼容性,建议显式指定--opset 12。
python export.py --include onnx --rknpu RV1126 --opset 12 --weights ./runs/train/exp8/weights/best.ptONNX模型文件会生成在best.pt所在目录。

图4-6 ONNX转换后生成的文件
5. rknn-toolkit模型转换
5.1. 构建rknn-toolkit模型转换环境
ONNX模型需要转换为RKNN模型后才能在CSUN RV1126B开发板上运行。因此,需要先构建rknn-toolkit模型转换工具环境。TensorFlow、TensorFlow Lite、Caffe、Darknet等模型也可以按类似流程转换,本教程以ONNX模型为例说明。
模型转换环境搭建步骤请参考《AI模型转换环境构建指南》。
5.2. 将ONNX模型转换为RKNN模型
.rknn后缀模型可在CSUN RV1126B开发板上进行评估和运行。TensorFlow、TensorFlow Lite、Caffe、Darknet、ONNX、PyTorch等常见训练模型均可使用RKNN-Toolkit2转换为RKNN模型。其他框架训练得到的模型,也可先转换为ONNX格式,再转换为RKNN。
详细转换步骤请参考《RKNN模型转换教程示例》。
5.2.1. 展开模型转换Demo
模型转换Demo可从“2. 资料下载”下载并解压。
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/yolov5/03-model_convertunzip quant_dataset.ziptar -xJf yolov5_model_convert.tar.xz
图5-1 模型转换Demo解压后的目录
5.2.2. 进入模型转换工具Docker环境
使用以下命令将工作目录挂载到Docker容器中。/data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial作为工作区域,在容器内映射为/test。同时通过/dev/bus/usb:/dev/bus/usb将USB设备挂载到容器中。
docker run -t -i --privileged \ -v /dev/bus/usb:/dev/bus/usb \ -v /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial:/test \ rknn-toolkit2:2.3.2-cp38 /bin/bash
图5-2 进入rknn-toolkit2 Docker环境
5.2.3. 生成量化图片列表
在Docker环境中进入模型转换工作目录。
cd /test/yolov5/03-model_convert/yolov5_model_convert执行gen_list.py生成量化图片列表。
python gen_list.py
图5-3 生成量化图片列表的终端输出
生成的量化图片列表会保存为pic_path.txt。

图5-4 生成的pic_path.txt
5.2.4. 将ONNX模型转换为RKNN模型
rknn_convert.py默认执行int8量化。主要脚本内容如下。
import osimport urllibimport tracebackimport timeimport sysimport numpy as npimport cv2from rknn.api import RKNN
ONNX_MODEL = 'best.onnx'RKNN_MODEL = './yolov5_mask_rv1126b.rknn'DATASET = './pic_path.txt'QUANTIZE_ON = True
if __name__ == '__main__': rknn = RKNN(verbose=True)
if not os.path.exists(ONNX_MODEL): print('model not exist') exit(-1)
print('--> Config model') rknn.config( mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rv1126b' ) print('done')
print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load yolov5 failed!') exit(ret) print('done')
print('--> Building model') ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET) if ret != 0: print('Build yolov5 failed!') exit(ret) print('done')
print('--> Export RKNN model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export yolov5 rknn failed!') exit(ret) print('done')将best.onnx放入yolov5_model_convert目录,然后执行以下命令开始转换。
python rknn_convert.py
图5-5 RKNN模型转换终端输出
转换成功后,会生成可在CSUN RV1126B开发板上运行的RKNN模型。

图5-6 生成的RKNN模型文件
6. YOLOv5模型部署
6.1. 模型部署示例说明
本节说明YOLOv5模型部署到RV1126B开发板的流程。该模型仅经过简单训练,用作示例模型,不保证模型精度。
6.2. 准备工作
6.2.1. 硬件准备
准备RV1126B开发板、Type-C数据线和网线。可使用MobaXterm等工具通过SSH登录RV1126B开发板。详细内容请参考入门指南。
使用网线连接。

图6-1 RV1126B开发板LAN连接示例
使用Type-C串口线连接。

图6-2 RV1126B开发板Type-C串口连接示例
6.2.2. 开发环境准备
初次阅读本文档时,请参考《入门指南》,按照其中步骤搭建编译环境。
在PC端Ubuntu系统中执行run.sh,进入RV1126B编译环境。
cd ~/develop_environment./run.sh 2204
图6-3 进入RV1126B Docker开发环境
6.3. 示例程序编译
将下载的软件包移动到RV1126B Docker开发环境后,执行以下命令解压。
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploytar -xvf yolov5_detect_C_demo.tar.bz2
图6-4 YOLOv5检测Demo解压后的目录
在RV1126B Docker开发环境中进入示例程序目录并执行编译。
sudo mount -t nfs -o vers=3,proto=tcp,mountproto=tcp,nolock,retrans=5,timeo=5 192.168.11.85:/ /mntcd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov5/04-AI_deploy/yolov5_detect_C_demo/./build.sh
图6-5 YOLOv5检测Demo编译结果
编译成功后,将可执行程序目录yolov5_detect_demo_release/复制到RV1126B开发板的/userdata目录。
cp yolov5_detect_demo_release/ /mnt/userdata/ -rf
图6-6 将YOLOv5检测Demo复制到开发板
6.4. 在开发板上运行YOLOv5模型
通过串口调试或SSH调试进入开发板Shell,并进入示例程序部署目录。
cd /userdata/yolov5_detect_demo_release/执行示例程序。
chmod 777 yolov5_detect_demosudo ./yolov5_detect_demo执行结果如下,算法执行时间约为48ms。

图6-7 在RV1126B开发板上运行YOLOv5检测Demo
在RV1126B编译环境中,可以通过以下命令取回测试图片。
cp /mnt/userdata/yolov5_detect_demo_release/result.jpg .
图6-8 从开发板取回检测结果图片
测试结果如下。

图6-9 RV1126B开发板YOLOv5口罩检测结果
至此,YOLOv5目标检测示例已成功在开发板上运行。