跳到主要内容

本机编译 CoreML 模型 (coreml.compile_model)

声明

编译好的模型路径, 错误信息 = coreml.compile_model(模型文件路径)

参数

  • 模型文件路径
    文本型,需要编译的模型路径,iOS 15 以上支持 .mlpackage 格式的模型,iOS 12、13 和 14 仅支持旧版 .mlmodel 模型

    YOLO11 转 CoreML 相关文档

    macOS 下 YOLO11 格式转换命令参考
    # 这里假设你已经有 Python 3.10 环境,没有请自行创建(仅在 Python 3.10 下测试通过,更高版本未验证)
    # 先安装 ultralytics,如果已安装则跳过这一步
    pip install ultralytics

    # 在 iOS 13 或 iOS 14 上可以指定 format 为 mlmodel 转换为旧版 mlmodel
    yolo export format=mlmodel nms=True model=best.pt

    # iOS 15 及以上可以指定 format 为 coreml 转换为 mlpackage 模型
    yolo export format=coreml nms=True model=best.pt

    # nms=True 不是必选项
    # 如果你希望把 NMS 内联进导出模型,可以开启它
    # 如果准备在 XXTouch 侧使用 coreml.nms / coreml.rotated_nms 自己做后处理,也可以不带 nms=True

返回值

  • 编译好的模型路径
    文本型 | nil,编译成功返回编译好的模型路径,编译失败返回 nil

  • 错误信息
    文本型 | nil,编译成功返回 nil,失败时返回错误信息

说明

  • 软件版本在 1.3.8 或以上方可使用

  • 不支持 iOS 12 以下版本系统

  • 这个函数用于将 .mlpackage.mlmodel 格式的模型编译成设备可直接加载的 .mlmodelc 格式

  • 不同型号或系统版本的设备上编译的 .mlmodelc 不一定可以通用

    NVIDIA 显卡电脑上的 YOLO11 模型训练命令
    # 先在电脑上安装 Visual Studio 的 C++ 桌面开发套件,如果已安装则跳过这一步,以下是链接
    # https://visualstudio.microsoft.com/
    # 在电脑上下载安装 CUDA 11.8 Toolkit,如果已安装则跳过这一步,以下是链接
    # https://developer.nvidia.com/cuda-11-8-0-download-archive

    # 这里假设你已经有 Python 3.10 环境,没有请自行创建(仅在 Python 3.10 下测试通过,更高版本未验证)
    # 先安装 ultralytics,如果已安装则跳过这一步
    pip install ultralytics

    # 重新安装支持 NVIDIA CUDA 11.8 Toolkit 的 torch 库
    # 如果确认安装过了支持 CUDA 的 torch 库则跳过这一步
    pip uninstall torch torchvision torchaudio # 卸载电脑上已安装的 CPU 版 torch
    pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118

    yolo train model=yolo11m.pt data=COCO.yml epochs=300 imgsz=640 device=0 # 使用 GPU0 进行训练
    macOS 上的 YOLO11 模型训练命令
    # 这里假设你已经有 Python 3.10 环境,没有请自行创建(仅在 Python 3.10 下测试通过,更高版本未验证)
    # 先安装 ultralytics,如果已安装则跳过这一步
    pip install ultralytics

    # 如果已安装 torch 则跳过这一步
    pip install torch torchvision torchaudio

    yolo train model=yolo11m.pt data=COCO.yml epochs=300 imgsz=640 device=mps # 使用 Metal 着色器加速训练

示例

compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- 编译好的模型存放位置

file.remove(compiled_model_path) -- 测试阶段每次重新编译,模型稳定后可注释掉此行

if not file.exists(compiled_model_path) then -- 如果还没有编译好的模型,则编译一份
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- 编译模型
if not tmp_path then
error(err)
end
file.move(tmp_path, compiled_model_path, 'mo') -- 将编译好的模型移动到指定位置
end