メインコンテンツまでスキップ

CoreML モデルをデバイス上でコンパイルする (coreml.compile_model)

宣言

コンパイル済みモデルのパス, エラー情報 = coreml.compile_model(モデルファイルのパス)

パラメータ

  • モデルファイルのパス
    文字列型。コンパイルするモデルのパスです。iOS 15 以降では .mlpackage 形式を使用できます。iOS 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 GPU を搭載した PC での YOLO11 モデル学習コマンド
    # まず PC に Visual Studio の C++ デスクトップ開発ワークロードをインストールします。インストール済みの場合は省略してください。リンクは以下のとおりです
    # https://visualstudio.microsoft.com/
    # PC に 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 # PC にインストールされている 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