本機編譯 CoreML 模型 (coreml.compile_model)
聲明
編譯好的模型路徑, 錯誤資訊 = coreml.compile_model(模型檔案路徑)
參數
-
模型檔案路徑
文字型,需要編譯的模型路徑。iOS 15 及以上支援.mlpackage格式;iOS 13、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 不是必選項
# 如果你希望把 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