跳转到内容

YOLOv11 训练部署指南

文档信息

本教程说明物体检测模型 YOLOv11 的训练方法,以及将模型部署到 CSUN RV1126B 开发板的操作流程。

项目内容
文档名YOLOv11 训练部署指南
公司株式会社日昇テクノロジー
URLhttp://www.dragonwake.com
E-mailinfo@dragonwake.com
创建日期2026/06/06
版本Ver1.0
修改内容新建

修改履历

NO版本修改内容修改日期
1Ver1.0新建2026/06/06

本文档信息可能会因文档改进而在不另行通知的情况下发生变更。最新版请参考公司网站。

未经株式会社日昇テクノロジー书面许可,严禁以任何形式复制本文档。

1. YOLOv11 概要

YOLO11 系列是 YOLO 家族中较新的高效模型,具有较高的检测性能、轻量化特性和较好的实时性。该模型由发布 YOLOv8 的 Ultralytics 团队开发,继承了 YOLO 系列的整体设计思路。

本指南说明 YOLO11 物体检测算法的训练方法,以及部署到 CSUN RV1126B 开发板的流程。数据标注方法可参考既有相关文档。

图1-1 YOLOv11 训练、转换与部署整体流程。展示从数据集准备到模型训练、模型转换和模型部署的完整流程。

图1-1 YOLOv11 训练、转换与部署整体流程。展示从数据集准备到模型训练、模型转换和模型部署的完整流程。

2. 资料下载

本手册所需资料和源码可从以下链接下载:

https://dl.dragonwake.com/download/rv1126b/AI/demo/yolov11/AIDemo_yolov11_All.zip

解压后的主要目录结构如下:

|-- 01-data 数据集
|-- 02-training 训练用源码
|-- 03-model_convert AI 模型转换用源码
|-- 04-AI_deploy AI 模型部署用源码

图2-1 AIDemo_yolov11_All.zip 解压后的目录结构。

图2-1 AIDemo_yolov11_All.zip 解压后的目录结构。

3. YOLOv11 物体检测算法训练

YOLOv11 的训练源码在模型导出部分相对于 Ultralytics 官方 GitHub 版本做了部分修改,因此建议使用本资料中指定的训练源码。

3.1 数据集准备

开始 YOLO11 训练前,需要准备 VOC2007 等训练数据。

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

本文将 VOC2007 原始数据放到 01-data 目录下。VOC2007 的 train.txt 用于训练集,val.txt 用于验证集。

Terminal window
mkdir -p /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/01-data
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/01-data
wget https://www.robots.ox.ac.uk/~vgg/data/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
tar -xf VOCtrainval_06-Nov-2007.tar

图3-1 VOC2007 数据集解压后的目录结构。

图3-1 VOC2007 数据集解压后的目录结构。

3.2 VOC 转 YOLO 格式

数据准备完成后,使用 data/voc_2_yolo.py 脚本将 VOC 格式数据转换为 YOLO 格式。转换后的数据会保存在原数据同级的 yolo_datas 目录下。

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/02-training/ultralytics_yolo11
rm -rf demo/voc2007/datas/yolo_datas
python data/voc_2_yolo.py

3.3 训练参数配置

数据转换完成后,需要配置 data.yamldefault.yamlyolo11.yaml

文件说明
data.yaml指定训练数据、验证数据路径、类别数量和类别名称。
default.yaml指定 YOLO11 训练参数,可根据需要调整。
yolo11.yaml定义 YOLO11 模型结构,训练时需要根据数据集修改类别数量。

3.4 模型训练

完成上述步骤后,打开 train.py,设置 data.yamldefault.yamlyolo11.yaml 的路径。

from ultralytics import YOLO
import os
# OMP 関連エラー(例: "OMP: Hint This means...")が発生する場合に使用します。
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
if __name__ == '__main__':
# 学習設定ファイル、データセット設定ファイル、モデル構造ファイルを指定します。
# 本スクリプトは ultralytics_yolo11 のプロジェクトルートで実行してください。
cfg = "./demo/voc2007/cfg/default.yaml"
data = "./demo/voc2007/cfg/data.yaml"
weight = "./demo/voc2007/cfg/yolo11.yaml" # .pt または yolo11.yaml を指定できます。
print("YOLO11 物体検出モデルの学習を開始します。")
print(f"学習設定ファイル: {cfg}")
print(f"データセット設定ファイル: {data}")
print(f"モデルファイル: {weight}")
model = YOLO(weight)
results = model.train(
data=data,
cfg=cfg
)
print("YOLO11 物体検出モデルの学習が完了しました。")

在 RV1126B Docker 开发环境中执行以下命令开始训练:

Terminal window
cd /home/csun/linuxshare/work/rv1126b/jp/embedded/images/develop_environment
./run.sh 2204
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/02-training/ultralytics_yolo11
python train.py

图3-2 YOLOv11 训练开始时输出的模型结构和训练日志。

图3-2 YOLOv11 训练开始时输出的模型结构和训练日志。

训练完成后的输出如下:

图3-3 YOLOv11 训练完成后输出的验证结果。

图3-3 YOLOv11 训练完成后输出的验证结果。

注意:本文档中的训练过程仅用于说明流程。后续模型推理和模型转换阶段使用 YOLOv11 标准 80 类模型。

生成的模型文件如下:

./runs/train/voc2007_yolo11s2/weights/best.pt

图3-4 训练后生成的 best.pt 和 last.pt 文件所在目录。

图3-4 训练后生成的 best.pt 和 last.pt 文件所在目录。

3.5 PC 端模型推理

训练完成后,训练过程和验证集效果最好的模型会保存在 default.yaml 中配置的 project 目录下。执行 predict.py 可以初步确认模型效果。

predict.py 中需要设置模型路径、输入图片、推理设备和图片尺寸,并完成图片预处理、模型推理和结果绘制。执行前请确认实际模型文件路径。

if __name__ == '__main__':
random.seed(0)
device_ = "cpu"
imgsz = (640, 640)
# 学習済みモデルと推論画像を指定します。
# 本スクリプトは ultralytics_yolo11 のプロジェクトルートで実行してください。
model_path = "./runs/train/voc2007_yolo11s2/weights/best.pt"
img_path = "./demo/images/bus.jpg"
is_dir = os.path.isdir(img_path)
print("YOLO11 モデルの推論を開始します。")
print(f"使用デバイス: {device_}")
print(f"入力モデル: {model_path}")
print(f"入力画像パス: {img_path}")
device = select_device(device_)
model = YOLO(model_path)
# モデル推論を実行し、結果画像を入力画像と同じディレクトリへ保存します。
# 単一画像を指定した場合は result.jpg として保存します。

执行命令如下:

Terminal window
python predict.py

图3-5 执行 predict.py 时的推理日志。

图3-5 执行 predict.py 时的推理日志。

图3-6 在 PC 端执行 YOLOv11 物体检测后的结果图像。

图3-6 在 PC 端执行 YOLOv11 物体检测后的结果图像。

3.6 PT 模型转 ONNX

在 PC 端执行 export.py,将 PT 模型导出为 ONNX 或用于 RKNN 转换的格式。代码示例中指定 format = 'rknn'

from ultralytics import YOLO
if __name__ == '__main__':
# エクスポート形式を指定します。
# 本プロジェクトの YOLO11 では、RKNN 変換用に rknn 形式を指定します。
# 選択可能な形式例: 'torchscript', 'onnx', 'openvino', 'engine', 'coreml',
# 'saved_model', 'pb', 'tflite', 'edgetpu', 'tfjs', 'paddle', 'ncnn', 'rknn'
format = 'rknn'
# 学習済みモデルを指定します。
# default.yaml の project が voc2007 の場合、通常は以下のパスに best.pt が保存されます。
# 必要に応じて、実際の学習結果ディレクトリに合わせて変更してください。
weight = "./runs/train/voc2007_yolo11s2/weights/best.pt" # .pt または yolo11.yaml を指定できます。
print("YOLO11 モデルのエクスポートを開始します。")
print(f"入力モデル: {weight}")
print(f"エクスポート形式: {format}")
model = YOLO(weight)
results = model.export(format=format)
print("YOLO11 モデルのエクスポートが完了しました。")

执行命令如下:

Terminal window
python export.py

图3-7 执行 export.py 导出 PT 模型时的终端日志。

图3-7 执行 export.py 导出 PT 模型时的终端日志。

转换后的模型文件会保存在同一目录下。

图3-8 导出后生成的 ONNX 模型文件所在目录。

图3-8 导出后生成的 ONNX 模型文件所在目录。

4. rknn-toolkit 模型转换

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

ONNX 模型需要转换为 RKNN 模型后才能在 CSUN RV1126B 开发板上运行。因此,需要提前搭建 rknn-toolkit 模型转换工具环境。TensorFlow、TensorFlow Lite、Caffe、Darknet 等模型也可以通过类似流程转换,本文以 ONNX 模型为例说明。

模型转换环境搭建步骤请参考《AI 模型转换环境构建指南》。

4.2 ONNX 模型转 RKNN 模型

.rknn 后缀模型可用于模型评估和板端运行。常见的 TensorFlow、TensorFlow Lite、Caffe、Darknet、ONNX、PyTorch 等模型均可使用 RKNN-Toolkit2 转换为 RKNN 模型。其他框架训练得到的模型也可以先转换为 ONNX,再转换为 RKNN。

详细转换步骤请参考《RKNN 模型转换教程示例》。

4.2.1 展开模型转换 Demo

模型转换 Demo 可从“资料下载”章节获取,下载后执行以下命令解压。

Terminal window
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/yolov11/03-model_convert
unzip quant_dataset.zip
tar -xJf yolov11_model_convert.tar.xz

图4-1 模型转换 Demo 解压后的文件结构。

图4-1 模型转换 Demo 解压后的文件结构。

4.2.2 进入模型转换工具 Docker 环境

使用以下命令将工作目录挂载到 Docker 镜像中。/data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial 作为工作目录映射到容器内的 /test,同时通过 /dev/bus/usb:/dev/bus/usb 挂载 USB 设备。

Terminal window
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

图4-2 进入 RKNN-Toolkit2 Docker 环境后的终端状态。

图4-2 进入 RKNN-Toolkit2 Docker 环境后的终端状态。

4.2.3 生成量化图片列表

在 Docker 环境中进入模型转换工作目录。

Terminal window
cd /test/yolov11/03-model_convert/yolov11_model_convert

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

Terminal window
python gen_list.py

图4-3 执行 gen_list.py 生成量化图片列表时的终端日志。

图4-3 执行 gen_list.py 生成量化图片列表时的终端日志。

生成的量化图片列表会保存为 pic_path.txt

图4-4 生成的 pic_path.txt 文件所在位置。

图4-4 生成的 pic_path.txt 文件所在位置。

4.2.4 ONNX 模型转 RKNN 模型

rknn_convert.py 默认执行 int8 量化,主要脚本内容如下:

import sys
from rknn.api import RKNN
# ONNX_MODEL = 'best.onnx'
ONNX_MODEL = 'yolov11s.onnx'
DATASET = './pic_path.txt'
RKNN_MODEL = './yolov11s_rv1126b.rknn'
# RKNN_MODEL = './dog_rope.rknn'
QUANTIZE_ON = True
if __name__ == '__main__':
# RKNN オブジェクトを作成します。
rknn = RKNN(verbose=False)
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 model failed!')
exit(ret)
print('done')
print('--> Building model')
ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
if ret != 0:
print('Build model failed!')
exit(ret)
print('done')
print('--> Export rknn model')
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
print('Export rknn model failed!')
exit(ret)
print('done')
rknn.release()

best.onnx 重命名为 yolov11s.onnx 并放入 yolov11_model_convert 目录,然后执行以下命令进行模型转换。

Terminal window
cp ../../02-training/ultralytics_yolo11/runs/train/voc2007_yolo11s2/weights/best.onnx yolov11s.onnx
python rknn_convert.py

图4-5 执行 rknn_convert.py 进行 RKNN 转换时的日志。

图4-5 执行 rknn_convert.py 进行 RKNN 转换时的日志。

转换成功后,会生成可在 CSUN RV1126B 开发板上运行的 RKNN 模型。

图4-6 转换后生成的 yolov11s_rv1126b.rknn 文件。

图4-6 转换后生成的 yolov11s_rv1126b.rknn 文件。

5. YOLOv11 模型部署

5.1 模型部署示例说明

本节说明如何将 YOLOv11 模型部署到 RV1126B 开发板。本资料中的训练模型仅为流程说明用示例模型,不保证模型精度。

5.2 准备工作

5.2.1 硬件准备

准备 RV1126B 开发板、Type-C 数据线和 LAN 网线,并使用 MobaXterm 通过 SSH 登录 RV1126B 开发板。详细步骤请参考入门指南。

通过 LAN 网线连接时,拓扑结构如下:

图5-1 通过 LAN 线连接 PC、路由器和 RV1126B 开发板的拓扑结构。

图5-1 通过 LAN 线连接 PC、路由器和 RV1126B 开发板的拓扑结构。

通过 Type-C 串口线连接时,连接方式如下:

图5-2 通过 Type-C 串口线连接 PC 和 RV1126B 开发板的方法。

图5-2 通过 Type-C 串口线连接 PC 和 RV1126B 开发板的方法。

5.2.2 开发环境准备

首次阅读本文档时,请参考《入门指南》并按步骤构建编译环境。

在 PC 端 Ubuntu 系统中执行 run.sh,进入 RV1126B 编译环境。

Terminal window
cd ~/develop_environment
./run.sh 2204

图5-3 进入 RV1126B Docker 开发环境后的启动界面。

图5-3 进入 RV1126B Docker 开发环境后的启动界面。

5.3 示例程序编译

将下载的包移动到 RV1126B Docker 开发环境后,执行以下命令解压:

Terminal window
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/04-AI_deploy
tar -xJf yolov11_detect_C_demo.tar.xz

图5-4 解压 yolov11_detect_C_demo 后的目录结构。

图5-4 解压 yolov11_detect_C_demo 后的目录结构。

进入示例程序目录并执行编译:

Terminal window
sudo mount -t nfs -o vers=3,proto=tcp,mountproto=tcp,nolock,retrans=5,timeo=5 192.168.11.85:/ /mnt
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/yolov11/04-AI_deploy/yolov11_detect_C_demo/
./build.sh

图5-5 编译 YOLOv11 C 示例程序时的终端输出。

图5-5 编译 YOLOv11 C 示例程序时的终端输出。

编译成功后,将 yolov11_detect_demo_release/ 复制到 RV1126B 开发板的 /userdata 目录。

Terminal window
cp yolov11_detect_demo_release/ /mnt/userdata/ -rf

5.4 在开发板上运行 YOLOv11 模型

通过串口调试或 SSH 进入开发板 Shell,并进入示例程序部署目录。

Terminal window
cd /userdata/yolov11_detect_demo_release

示例程序执行命令如下:

Terminal window
chmod 777 yolov11_detect_demo
./yolov11_detect_demo

图5-6 在 RV1126B 开发板上执行 YOLOv11 示例程序的日志。

图5-6 在 RV1126B 开发板上执行 YOLOv11 示例程序的日志。

算法执行时间约为 40 ms。

图5-7 开发板端算法执行时间日志。

图5-7 开发板端算法执行时间日志。

执行结果可在 RV1126B 编译环境中通过以下命令获取:

Terminal window
cp /mnt/userdata/yolov11_detect_demo_release/result.jpg .

图5-8 将开发板端推理结果图片复制到 PC 端的命令。

图5-8 将开发板端推理结果图片复制到 PC 端的命令。

图5-9 RV1126B 开发板生成的 YOLOv11 物体检测结果图像。

图5-9 RV1126B 开发板生成的 YOLOv11 物体检测结果图像。

至此,YOLOv11 物体检测示例已在开发板上正常运行。