本机编译 CoreML 模型 (coreml.compile_model)
声明
编译好的模型路径, 错误信息 = coreml.compile_model(模型文件路径)
参数
-
模型文件路径
文本型,需要编译的模型路径,iOS 15 以上支持 .mlpackage 格式的模型,iOS 13 和 iOS 14 仅支持旧版 .mlmodel 模型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 是必选项
返回值
-
编译好的模型路径
文本型 | nil,编译成功返回编译好的模型路径,编译失败返回nil
-
错误信息
文本型 | nil,编译成功返回nil
,失败这个是错误信息
说明
-
软件版本在 1.3.8 或以上方可使用
-
不支持 iOS 13 以下版本系统
-
这个函数的用途为将
.mlpackage
或者.mlmodel
格式的模型编译成设备可直接加载的.mlmodelc
格式 -
不同型号或系统版本设备上编译的
.mlmodelc
文件不一定可以通用N 卡电脑上 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
# 如果确认安装过了支持 CUDA 的 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' -- 编译好的模型存放位置
local noexecute = require('no_os_execute')
noexecute.rm_rf(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
local noexecute = require('no_os_execute')
noexecute.cp_r(tmp_path, compiled_model_path) -- 将编译好的模型移动到指定位置
noexecute.rm_rf(tmp_path) -- 删除临时文件
end