Aller au contenu principal

Compiler localement un modèle CoreML (coreml.compile_model)

Déclaration

chemin_modele_compile, message_erreur = coreml.compile_model(chemin_fichier_modele)

Paramètres

  • chemin_fichier_modele
    type texte, chemin du modèle à compiler. iOS 15 et versions ultérieures prennent en charge le format .mlpackage ; iOS 13 et 14 ne prennent en charge que l’ancien format .mlmodel

    Documentation sur la conversion de YOLO11 vers CoreML

    Exemples de commandes de conversion du format YOLO11 sous macOS
    # Cet exemple suppose qu’un environnement Python 3.10 est déjà disponible ; sinon, créez-en un (testé uniquement avec Python 3.10, les versions supérieures n’ont pas été vérifiées)
    # Installer ultralytics ; ignorer cette étape si le paquet est déjà installé
    pip install ultralytics

    # Sous iOS 13 ou iOS 14, spécifier format=mlmodel pour convertir vers l’ancien format mlmodel
    yolo export format=mlmodel nms=True model=best.pt

    # Sous iOS 15 et versions ultérieures, spécifier format=coreml pour produire un modèle mlpackage
    yolo export format=coreml nms=True model=best.pt

    # nms=True est facultatif
    # Pour intégrer NMS au modèle exporté, vous pouvez l’activer
    # Si le post-traitement doit être effectué côté XXTouch avec coreml.nms / coreml.rotated_nms, nms=True peut être omis

Valeur renvoyée

  • chemin_modele_compile
    type texte | nil, renvoie le chemin du modèle compilé en cas de réussite et nil en cas d’échec

  • message_erreur
    type texte | nil, renvoie nil en cas de réussite et le message d’erreur en cas d’échec

Description

  • Disponible à partir de la version logicielle 1.3.8

  • Les systèmes antérieurs à iOS 12 ne sont pas pris en charge

  • Cette fonction compile un modèle .mlpackage ou .mlmodel au format .mlmodelc, que l’appareil peut charger directement

  • Un modèle .mlmodelc compilé sur des appareils de modèles ou de versions système différents n’est pas nécessairement interchangeable

    Commande d’entraînement d’un modèle YOLO11 sur un ordinateur équipé d’un GPU NVIDIA
    # Installer d’abord le kit de développement C++ pour ordinateur de Visual Studio ; ignorer cette étape s’il est déjà installé. Lien :
    # https://visualstudio.microsoft.com/
    # Télécharger et installer CUDA 11.8 Toolkit ; ignorer cette étape s’il est déjà installé. Lien :
    # https://developer.nvidia.com/cuda-11-8-0-download-archive

    # Cet exemple suppose qu’un environnement Python 3.10 est déjà disponible ; sinon, créez-en un (testé uniquement avec Python 3.10, les versions supérieures n’ont pas été vérifiées)
    # Installer ultralytics ; ignorer cette étape si le paquet est déjà installé
    pip install ultralytics

    # Réinstaller la bibliothèque torch compatible avec NVIDIA CUDA 11.8 Toolkit
    # Si une bibliothèque torch compatible CUDA est déjà installée, ignorer cette étape
    pip uninstall torch torchvision torchaudio # Désinstaller la version CPU de torch déjà installée sur l’ordinateur
    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 # Utiliser le GPU0 pour l’entraînement
    Commande d’entraînement d’un modèle YOLO11 sous macOS
    # Cet exemple suppose qu’un environnement Python 3.10 est déjà disponible ; sinon, créez-en un (testé uniquement avec Python 3.10, les versions supérieures n’ont pas été vérifiées)
    # Installer ultralytics ; ignorer cette étape si le paquet est déjà installé
    pip install ultralytics

    # Si torch est déjà installé, ignorer cette étape
    pip install torch torchvision torchaudio

    yolo train model=yolo11m.pt data=COCO.yml epochs=300 imgsz=640 device=mps # Utiliser l’accélération du shader Metal pour l’entraînement

Exemple

compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- Emplacement du modèle compilé

file.remove(compiled_model_path) -- Recompiler à chaque fois pendant les tests ; cette ligne peut être commentée lorsque le modèle est stable

if not file.exists(compiled_model_path) then -- Compiler une copie si aucun modèle compilé n’existe encore
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- Compiler le modèle
if not tmp_path then
error(err)
end
file.move(tmp_path, compiled_model_path, 'mo') -- Déplacer le modèle compilé vers l’emplacement indiqué
end