地平线rdk-x5部署yolo11(1) 模型转出

发布于:2025-05-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

一. 模型导出

可以参考RDK X5部署YOLOv8-Seg 和v8差不多

、拷贝YOLO项目

git clone https://github.com/ultralytics/ultralytics.git

2、虚拟环境和依赖安装

# 安装虚拟环境
conda create -n yolov8 python=3.8 -y
# 进入虚拟环境
conda activate yolov8
# 安装依赖
pip install ultralytics
pip install onnx

3、模型结构修改

  • 修改ultralytics/ultralytics/nn/modules/head.py中Detect类的forward部分,其余部分不变动
class Detect(nn.Module):
    def forward(self, x):
        results = []
        for i in range(self.nl):
            box = self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()
            cls = self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()
            results.append(cls)
            results.append(box)
        return tuple(results)
  • 修改ultralytics/ultralytics/nn/modules/head.py中Segment类的forward部分,其余部分不变动
class Segment(Detect):
    def forward(self, x):
        p = self.proto(x[0]).permute(0, 2, 3, 1).contiguous()  # mask protos
        results = []
        for i in range(self.nl):
            box = self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()
            cls = self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()
            mask = self.cv4[i](x[i]).permute(0, 2, 3, 1).contiguous()
            results.append(cls)
            results.append(box)
            results.append(mask)
        results.append(p)
        return tuple(results)

4、导出ONNX模型

from ultralytics import YOLO

YOLO('./yolov11n-seg.pt').export(format="onnx", opset=11)

horizon_x5_open_explorer_v1.2.8-py310_20240926/samples/ai_toolchain/horizon_model_convert_sample/04_detection/03_yolov5x/mapper/ 这个目录下有模型转换脚本:

01_check.sh

02_preprocess.sh

03_build.sh


网站公告

今日签到

点亮在社区的每一天
去签到