You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将YOLOv8分割模型正确导出为CoreML以获取类别标签与多边形?

YOLOv8分割模型导出CoreML获取类别标签与分割多边形的正确方法

依赖版本适配

  • 使用Ultralytics最新版(≥8.0.100),旧版本导出逻辑存在bug
  • coremltools选择7.x版本,6.x对分割模型的后处理支持不足

导出命令示例

直接用Ultralytics的export方法,明确指定分割任务并开启后处理,不要设置nms=True(该参数仅适用于检测模型):

from ultralytics import YOLO

# 加载训练好的分割模型
model = YOLO('best.pt')

# 导出CoreML,关键参数必须配置
model.export(
    format='coreml',
    task='segment',
    predict=True,
    imgsz=640,  # 和训练时的图像尺寸保持一致
    batch_size=1  # 适配iPhone单图推理需求
)

参数说明

  • task='segment':必须明确指定任务为分割,否则工具会默认按检测模型处理,导致后处理逻辑错误
  • predict=True:开启该参数后,导出的模型会包含完整后处理流程,直接输出检测框、类别ID、置信度、分割掩码,而非原始张量
  • 不要设置nms=True:分割模型的后处理逻辑与检测模型不同,添加该参数只会触发无效警告

Xcode中的输出结构

导出后的.mlpackage在Xcode中会显示结构化输出:

  • detections:包含每个目标的bbox(检测框)、classLabel(类别ID)、confidence(置信度)
  • masks:分割掩码的MultiArray,可在iOS代码中进一步转换为多边形

预训练模型验证注意事项

你之前测试的yolov8n.pt是检测模型,需对应设置task='detect'才能看到类别标签。如果使用预训练分割模型yolov8n-seg.pt,用上述命令导出后,Xcode中会显示正确的结构化输出。

iOS端转换分割多边形思路

模型输出的掩码数组可通过以下步骤转换为多边形:

  1. 将MultiArray转换为UIImage或二进制掩码
  2. 使用Core Graphics提取掩码轮廓
  3. 转换为UIBezierPath得到多边形路径

内容的提问来源于stack exchange,提问作者flypicaso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:32:51