RK3576 yolov11-seg训练部署教程
1. yolov11-seg简介
yolov11-seg 是YOLO(You Only Look Once)系列的最新成员,专为及时真例联系义务设想。它正在坚持YOLO家属下效推理速率的同时,经过立异的收集构造战联系头设想,完成了像素级的准确目的检测取联系,合用于主动驾驶、医教影象、产业检测等对粗度战速率请求刻薄的场景。
本教程针对目的联系算法yolov11 seg的练习战摆设到EASY-EAI-Orin-nano(RK3576)停止阐明,而数据标注办法能够参考我们往期的文章。
2. yolov11-seg模子练习
yolov11-seg练习代码正在导出局部比照本版会有一些修正,倡议下载我们的练习代码。百度网盘链接:https://pan.百度.com/s/1kPU_t7GaZzi1zot_aI7xPQ?pwd=1234(提与码:1234)。
2.1 数据散预备
正在开端yolov11练习前,我看先预备好待练习数据,如crack(裂痕数据散),数据散也正在练习工程的紧缩包外面了。
目次以下图表示:
crack-seg标签数据格局阐明以下图所示:
注:假如您需求将json格局的标注数据转成label标签数据,可使用./data/json_2_yolo.py剧本转换。
2.2 练习参数设置装备摆设
设置装备摆设模子的练习参数:data.yaml,default.yaml,yolo11-seg.yaml,以crack-seg为例.
此中:
data.yaml:为待练习数据战考证数据的途径,和种别数战种别称号;
default.yaml:为yolov11-seg练习参数,可自止调剂模子练习的参数;
yolo11-seg.yaml:为yolov11-seg模子构造,正在模子练习时,您需求修正种别数。
更多闭于yolov11-seg疑息可参考:
https://blog.csdn.net/qq_45972324/article/details/143892222
2.3 模子练习
完成上述步调后,便可以开端练习模子了,翻开train.py剧本,输出data.yaml,default.yaml,yolo11-seg.yaml途径,以下代码段所示:
from ultralytics import YOLO import os os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" if __name__ == '__main__': cfg = r"./demo/crack-seg/default.yaml" data = r'./demo/crack-seg/data.yaml' #weight = r"./demo/weights/yolo11n-seg.pt" # pt 或 yolovx.yaml weight = r"./demo/crack-seg/yolo11-seg.yaml" model = YOLO(weight) results = model.train( data=data, cfg=cfg )
因为大师下载源码包后解压途径皆纷歧样,以是需求变动data.yaml的数据散途径才干让模子练习的时分找到数据散:
履行train.py练习剧本,开端模子练习,以下表示图:
python train.py

2.4 PC端猜测模子猜测
练习终了后,正在default.yaml文件设置装备摆设的project目次下保管练习进程,经历证散测试的最好后果的模子。同时能够履行模子猜测,开端评价模子的结果。翻开predict-seg.py剧本,设置装备摆设好模子途径战待检测图片,以下代码片断:
from ultralytics import YOLO # Load a model model_path = r"./demo/crack/train/weights/best.pt" image_path = r"./demo/crack-seg/test/images/1616.rf.c868709931a671796794fdbb95352c5a.jpg" model = YOLO(model_path) # load an official model # Predict with the model results = model(image_path) # predict on an image for result in results: boxes = result.boxes # Boxes object for bounding box outputs masks = result.masks # Masks object for segmentation masks outputs keypoints = result.keypoints # Keypoints object for pose outputs probs = result.probs # Probs object for classification outputs obb = result.obb # Oriented boxes object for OBB outputs result.show() # display to screen result.save(filename="result.jpg") # save to disk
履行剧本:
python predict-seg.py
剧本运转完毕后,会将图片后果图片保管为result.jpg,运转后果以下图所示:
2.5 PT模子转ONNX
正在PC端履行export.py将pt模子转成onnx,以下代码段所示:
from ultralytics import YOLO if __name__ == '__main__': format = 'rknn' # 'torchscript', 'onnx', 'openvino', 'engine', 'coreml', 'saved_model', 'pb', 'tflite', 'edgetpu', 'tfjs', 'paddle', 'ncnn' weight = r"./demo/crack/train/weights/best.pt" # pt 或 yolovx.yaml model = YOLO(weight) results = model.export(format = format)
履行剧本:
python export.py

死成best.onnx模子以下所示:
3. rknn-toolkit模子转换
3.1 rknn-toolkit模子转换情况拆建
onnx模子需求转换为rknn模子才干正在EASY-EAI-Orin-nano运转,以是需求先拆建rknn-toolkit模子转换东西的情况。固然tensorflow、tensroflow lite、caffe、darknet等也是经过相似的办法停止模子转换,只是本教程onnx为例。
3.1.1 概述
模子转换情况拆建流程以下所示:
3.1.2 下载模子转换东西
为了包管模子转换东西顺遂运转,请下载网盘里“06.AI算法开辟/01.rknn-toolkit2模子转换东西/rknn-toolkit2-v2.3.0/docker/rknn-toolkit2-v2.3.0-cp38-docker.tar.gz”。
网盘下载链接:https://pan.百度.com/s/1J86chdq1klKFnpCO1RCcEA?pwd=1234(提与码:1234)。
3.1.3 把东西移到ubuntu20.04
把下载完成的docker镜像移到我司的实拟机ubuntu20.04的rknn-toolkit2目次,以下图所示:
3.1.4 运转模子转换东西情况
正在该目次翻开末端
履行以下指令减载模子转换东西docker镜像:
docker load --input rknn-toolkit2-v2.3.0-cp38-docker.tar.gz
履行以下指令进进镜像bash情况:
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb rknn-toolkit2:2.3.0-cp38 /bin/bash
景象以下图所示:
输出“python”减载python相干库,测验考试减载rknn库,以下图情况测试胜利:
至此,模子转换东西情况拆建完成。
4. 模子转换为RKNN
EASY EAI Orin-nano撑持.rknn后缀的模子的评价及运转,关于罕见的tensorflow、tensroflow lite、caffe、darknet、onnx战Pytorch模子皆能够经过我们供给的 toolkit 东西将其转换至 rknn 模子,而关于其他框架练习出去的模子,也能够先将其转至 onnx 模子再转换为 rknn 模子。模子转换操纵流程进下图所示:
4.1 模子转换Demo下载
下载百度网盘链接:https://pan.百度.com/s/1jrF2VFZImsBqWQeH4bawaA?pwd=1234(提与码:1234。)把quant_dataset.zip战yolov11_seg_model_convert.tar.bz2解压到实拟机,以下图所示:
4.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.0-cp38 /bin/bash
履行胜利以下图所示:
4.3 模子转换操纵阐明
4.3.1 模子转换Demo目次构造
模子转换测试Demo由yolov11_seg_model_convert战quant_dataset构成。yolov11_seg_model_convert寄存硬件剧本, quant_dataset寄存量化模子所需的数据。以下图所示:
4.3.2 onnx模子转换为rknn模子
rknn_convert.py剧本默许停止int8量化操纵,剧本代码浑单以下所示:
from rknn.api import RKNN import sys from rknn.api import RKNN ONNX_MODEL = 'best.onnx' DATASET = './pic_path.txt' RKNN_MODEL = './yolov11n_seg_rk3576.rknn' QUANTIZE_ON = True if __name__ == '__main__': # 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='rk3576') print('done') # Load model print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load model failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET) if ret != 0: print('Build model failed!') exit(ret) print('done') # Export rknn model print('--> Export rknn model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export rknn model failed!') exit(ret) print('done') # Release rknn.release()
并履行以下号令停止模子转换:
python rknn_convert.py
死成模子以下图所示,EASY EAI Orin-nano情况运转:
5. 模子摆设示例
本大节展现yolov11-seg模子的正在EASY EAI Orin-nano的摆设进程,本章章节运用的yolov11n_seg_rk3576.rknn是运用crack数据散练习失掉。
5.1 源码下载和例程编译
下载yolov11-seg C Demo示例文件。
百度网盘链接: https://pan.百度.com/s/1GCBkHHWtgXMbDTvEPJHmAw?pwd=1234(提与码: 1234)。
下载顺序包移至ubuntu情况后,履行以下指令解压:
tar -xvf yolov11_seg_model_convert.tar.bz2
下载解压后以下图所示:
经过adb接心衔接EASY-EAI-Orin-nano,,衔接体例以下图所示:
接上去需求经过adb把源码传输到板卡上,先切换目次然后履行以下指令:
cd ~/rknn-toolkit2 adb push yolov11_seg_C_demo /userdata

登录到板子切换到例程目次履行编译操纵
adb shell cd /userdata/yolov11_seg_C_demo chmod 777 build.sh ./build.sh

5.2 开辟板履行yolov11 seg联系算法
编译胜利后切换到可履行顺序目次,以下所示:
cd /userdata/yolov11_seg_C_demo/yolov11_seg_demo_release/
运转例程号令以下所示:
chmod 777 yolov11_seg_demo ./yolov11_seg_demo yolov11n_seg_rk3576.rknn crack.jpg
履行后果以下图所示,算法履行工夫为60.1768ms:
加入板卡情况,与回测试图片:
exit adb pull /userdata/yolov11_seg_C_demo/yolov11_seg_demo_release/result.jpg . adb pull /userdata/yolov11_seg_C_demo/yolov11_seg_demo_release/mask_bgr.jpg .
测试后果以下图所示:
至此,yolov11-seg真例联系例程已胜利正在板卡运转。
6. 材料下载
材料称号 | 链接 |
算法练习摆设教程完好源码包 |
https://pan.百度.com/s/1tg1WbzMBeJqmKhxe2DXdMw?pwd=1234 提与码:1234 |
考核编纂 黄宇