Saltar al contenido principal

Compilar un modelo CoreML localmente (coreml.compile_model)

Declaración

ruta_del_modelo_compilado, información_del_error = coreml.compile_model(ruta_del_archivo_del_modelo)

Parámetros

  • ruta_del_archivo_del_modelo
    Ruta del modelo que se compilará, de tipo texto. iOS 15 y posteriores admiten el formato .mlpackage; iOS 13 y 14 solo admiten el formato antiguo .mlmodel.

    Documentación de conversión de YOLO11 a CoreML

    Referencia de comandos para convertir YOLO11 en macOS
    # Se supone que ya tienes un entorno Python 3.10; créalo si no lo tienes (solo se ha probado con Python 3.10; las versiones superiores no están verificadas)
    # Instalar ultralytics; omite este paso si ya está instalado
    pip install ultralytics

    # En iOS 13 o iOS 14, puedes especificar format=mlmodel para convertir al formato antiguo mlmodel
    yolo export format=mlmodel nms=True model=best.pt

    # En iOS 15 y posteriores, puedes especificar format=coreml para convertir al modelo mlpackage
    yolo export format=coreml nms=True model=best.pt

    # nms=True no es obligatorio
    # Actívalo si quieres incluir NMS en el modelo exportado
    # Si quieres usar coreml.nms / coreml.rotated_nms en XXTouch para hacer el posprocesamiento, también puedes omitir nms=True

Valor de retorno

  • ruta_del_modelo_compilado
    Texto | nil. Si la compilación tiene éxito, devuelve la ruta del modelo compilado; si falla, devuelve nil.

  • información_del_error
    Texto | nil. Si la compilación tiene éxito, devuelve nil; si falla, devuelve la información del error.

Descripción

  • Disponible desde la versión 1.3.8

  • No admite sistemas iOS anteriores a iOS 12.

  • Esta función convierte modelos .mlpackage o .mlmodel al formato .mlmodelc, que el dispositivo puede cargar directamente.

  • Un .mlmodelc compilado en un modelo de dispositivo o versión del sistema no necesariamente es compatible con otros.

    Comandos para entrenar un modelo YOLO11 en un ordenador con GPU NVIDIA
    # Instala primero el paquete de desarrollo de escritorio C++ de Visual Studio; omite este paso si ya está instalado. Enlace:
    # https://visualstudio.microsoft.com/
    # Descarga e instala CUDA 11.8 Toolkit; omite este paso si ya está instalado. Enlace:
    # https://developer.nvidia.com/cuda-11-8-0-download-archive

    # Se supone que ya tienes un entorno Python 3.10; créalo si no lo tienes (solo se ha probado con Python 3.10; las versiones superiores no están verificadas)
    # Instalar ultralytics; omite este paso si ya está instalado
    pip install ultralytics

    # Reinstalar torch compatible con NVIDIA CUDA 11.8 Toolkit
    # Omite este paso si ya has instalado torch compatible con CUDA
    pip uninstall torch torchvision torchaudio # Desinstalar la versión de torch para CPU instalada en el ordenador
    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 # Entrenar con la GPU 0
    Comandos para entrenar un modelo YOLO11 en macOS
    # Se supone que ya tienes un entorno Python 3.10; créalo si no lo tienes (solo se ha probado con Python 3.10; las versiones superiores no están verificadas)
    # Instalar ultralytics; omite este paso si ya está instalado
    pip install ultralytics

    # Omite este paso si torch ya está instalado
    pip install torch torchvision torchaudio

    yolo train model=yolo11m.pt data=COCO.yml epochs=300 imgsz=640 device=mps # Entrenar con aceleración de sombreadores Metal

Ejemplo

compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- Ubicación del modelo compilado

file.remove(compiled_model_path) -- Durante las pruebas, recompilar cada vez; comenta esta línea cuando el modelo sea estable

if not file.exists(compiled_model_path) then -- Si todavía no existe un modelo compilado, compilar uno
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- Compilar el modelo
if not tmp_path then
error(err)
end
file.move(tmp_path, compiled_model_path, 'mo') -- Mover el modelo compilado a la ubicación indicada
end