您当前的位置: 首页 >> 电娱要闻

RK3576 yolov11-seg训练部署教程

作者:美共电子交流圈电子网 日期:2025-04-16 点击数:1

1. yolov11-seg简介

yolov11-seg 是YOLO(You Only Look Once)系列的最新成员,专为及时真例联系义务设想。它正在坚持YOLO家属下效推理速率的同时,经过立异的收集构造战联系头设想,完成了像素级的准确目的检测取联系,合用于主动驾驶、医教影象、产业检测等对粗度战速率请求刻薄的场景。

教程针对目的联系算法yolov11 seg的练习战摆设到EASY-EAI-Orin-nano(RK3576)停止阐明,而数据标注办法能够参考我们往期的文章。

wKgZPGf_DB2ARvryAABWpTPk7W8599.png

2. yolov11-seg模子练习

yolov11-seg练习代码正在导出局部比照本版会有一些修正,倡议下载我们的练习代码。百度网盘链接:https://pan.百度.com/s/1kPU_t7GaZzi1zot_aI7xPQ?pwd=1234(提与码:1234)。

2.1 数据散预备

正在开端yolov11练习前,我看先预备好待练习数据,如crack(裂痕数据散),数据散也正在练习工程的紧缩包外面了。

目次以下图表示:

wKgZO2f_DB2ALPlcAAAYJWg9EJo214.png

crack-seg标签数据格局阐明以下图所示:

wKgZO2f_DB2AG6XDAABZ1Mnofp0668.png

注:假如您需求将json格局的标注数据转成label标签数据,可使用./data/json_2_yolo.py剧本转换。

2.2 练习参数设置装备摆设

设置装备摆设模子的练习参数:data.yaml,default.yaml,yolo11-seg.yaml,以crack-seg为例.

wKgZPGf_DB2AQvLaAAAXCz_trlg280.png

此中:

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的数据散途径才干让模子练习的时分找到数据散:

wKgZO2f_DB6AaMaZAACLn93H7cY851.png

履行train.py练习剧本,开端模子练习,以下表示图:

python train.py
wKgZPGf_DB6AQPv6AAGXcRqbxWo967.png

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,运转后果以下图所示:

wKgZO2f_DB6ATZSyAAEj64NWMSs783.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
wKgZPGf_DB6AEoxTAAB5nDG_TKU127.png

死成best.onnx模子以下所示:

wKgZO2f_DB-AbrFeAAAmO1-GZ8w632.png

3. rknn-toolkit模子转换

3.1 rknn-toolkit模子转换情况拆建

onnx模子需求转换为rknn模子才干正在EASY-EAI-Orin-nano运转,以是需求先拆建rknn-toolkit模子转换东西的情况。固然tensorflow、tensroflow lite、caffe、darknet等也是经过相似的办法停止模子转换,只是本教程onnx为例。

3.1.1 概述

模子转换情况拆建流程以下所示:

wKgZPGf_DB-AJMbuAAAxiiEbB5I976.png

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目次,以下图所示:

wKgZO2f_DB-AZsP6AACIUiaLuRs586.png

3.1.4 运转模子转换东西情况

正在该目次翻开末端

wKgZPGf_DB-AXrtSAAC3K-nNJbw757.png

履行以下指令减载模子转换东西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

景象以下图所示:

wKgZO2f_DB-ADwhKAABwE02CuRY535.png

输出“python”减载python相干库,测验考试减载rknn库,以下图情况测试胜利:

wKgZPGf_DCCAZxXTAACYXiExqnY256.png

至此,模子转换东西情况拆建完成。

4. 模子转换为RKNN

EASY EAI Orin-nano撑持.rknn后缀的模子的评价及运转,关于罕见的tensorflow、tensroflow lite、caffe、darknet、onnx战Pytorch模子皆能够经过我们供给的 toolkit 东西将其转换至 rknn 模子,而关于其他框架练习出去的模子,也能够先将其转至 onnx 模子再转换为 rknn 模子。模子转换操纵流程进下图所示:

wKgZO2f_DCCAJpZgAADmstLlDDk888.png

4.1 模子转换Demo下载

下载百度网盘链接:https://pan.百度.com/s/1jrF2VFZImsBqWQeH4bawaA?pwd=1234(提与码:1234。)把quant_dataset.zip战yolov11_seg_model_convert.tar.bz2解压到实拟机,以下图所示:

wKgZPGf_DCCAa5JXAACzQWx5Y4c815.png

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

履行胜利以下图所示:

wKgZO2f_DCCAIlY8AAB8faQHBaA810.png

4.3 模子转换操纵阐明

4.3.1 模子转换Demo目次构造

模子转换测试Demo由yolov11_seg_model_convert战quant_dataset构成。yolov11_seg_model_convert寄存硬件剧本, quant_dataset寄存量化模子所需的数据。以下图所示:

wKgZPGf_DCGAEFyyAAC2eeTghJs494.png

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情况运转:

wKgZO2f_DCGAJQWbAAQlimLAv7Q346.png

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

下载解压后以下图所示:

wKgZPGf_DCGAZY1YAACud5g4MvY496.png

经过adb接心衔接EASY-EAI-Orin-nano,,衔接体例以下图所示:

wKgZO2f_DCGAKS4JABPnfd1PZu8406.png

接上去需求经过adb把源码传输到板卡上,先切换目次然后履行以下指令:

cd ~/rknn-toolkit2
adb push yolov11_seg_C_demo /userdata
wKgZPGf_DCKAA7LdAABXBEsmr68432.png

登录到板子切换到例程目次履行编译操纵

adb shell
cd /userdata/yolov11_seg_C_demo
chmod 777 build.sh
./build.sh
wKgZO2f_DCKAOi1JAAFfQcq9SRI104.png

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:

wKgZPGf_DCKADiA7AAJjk_RuqOI930.png

加入板卡情况,与回测试图片:

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 .

测试后果以下图所示:

wKgZPGf_DCOAHvc0AAAb0Xn1SnI555.jpgwKgZO2f_DCOAUIh4AAERS0zZ7oU080.jpg

至此,yolov11-seg真例联系例程已胜利正在板卡运转。

6. 材料下载

材料称号 链接
算法练习摆设教程完好源码包 https://pan.百度.com/s/1tg1WbzMBeJqmKhxe2DXdMw?pwd=1234
提与码:1234


考核编纂 黄宇

本站所有文章、数据、图片均来自网友原创提供和互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:

标签:[db:tags]