Перейти к основному содержимому

Компиляция модели CoreML на устройстве (coreml.compile_model)

Объявление

путь_скомпилированной_модели, сообщение_об_ошибке = coreml.compile_model(путь_к_файлу_модели)

Параметры

  • путь_к_файлу_модели
    Текстовое значение, путь к компилируемой модели. Формат .mlpackage поддерживается в iOS 15 и выше; в iOS 13 и 14 поддерживается только старый формат .mlmodel

    Документация по преобразованию YOLO11 в CoreML

    Пример команд преобразования формата YOLO11 в macOS
    # Предполагается, что у вас уже есть окружение 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, скомпилированные на устройствах разных моделей или с разными версиями системы, не обязательно совместимы между собой

    Команды обучения модели YOLO11 на компьютере с видеокартой NVIDIA
    # Сначала установите пакет средств разработки C++ для Visual Studio; если он уже установлен, пропустите этот шаг. Ссылка:
    # 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

    # Переустановить библиотеку torch с поддержкой NVIDIA CUDA 11.8 Toolkit
    # Если вы уверены, что torch с поддержкой CUDA уже установлен, пропустите этот шаг
    pip uninstall torch torchvision torchaudio # Удалить установленную на компьютере версию torch для CPU
    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 для обучения
    Команды обучения модели YOLO11 в macOS
    # Предполагается, что у вас уже есть окружение 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