Pular para o conteúdo principal

Compilar um modelo CoreML no dispositivo (coreml.compile_model)

Declaração

caminho_do_modelo_compilado, mensagem_de_erro = coreml.compile_model(caminho_do_arquivo_de_modelo)

Parâmetros

  • caminho do arquivo de modelo
    Texto: caminho do modelo a ser compilado. O formato .mlpackage é compatível com iOS 15 ou posterior; no iOS 13 e 14, somente o formato antigo .mlmodel é compatível.

    Documentação relacionada à conversão de YOLO11 para CoreML

    Referência do comando de conversão para o formato YOLO11 no macOS
    # Aqui pressupomos que você já tenha um ambiente Python 3.10; caso contrário, crie um (testado somente no Python 3.10; versões posteriores não foram verificadas)
    # Instale primeiro o ultralytics; pule esta etapa se ele já estiver instalado
    pip install ultralytics

    # No iOS 13 ou iOS 14, especifique format como mlmodel para converter para o mlmodel antigo
    yolo export format=mlmodel nms=True model=best.pt

    # No iOS 15 ou posterior, especifique format como coreml para converter para um modelo mlpackage
    yolo export format=coreml nms=True model=best.pt

    # nms=True não é obrigatório
    # Ative-o se quiser incorporar o NMS ao modelo exportado
    # Se pretende usar coreml.nms / coreml.rotated_nms no lado do XXTouch para fazer o pós-processamento, também pode omitir nms=True

Valores retornados

  • caminho do modelo compilado
    Texto | nil: retorna o caminho do modelo compilado quando a compilação é bem-sucedida e nil quando falha.

  • mensagem de erro
    Texto | nil: retorna nil quando a compilação é bem-sucedida e a mensagem de erro quando falha.

Observações

  • Disponível a partir da versão 1.3.8 do software

  • Sistemas anteriores ao iOS 12 não são compatíveis.

  • Esta função compila um modelo no formato .mlpackage ou .mlmodel para o formato .mlmodelc, que pode ser carregado diretamente pelo dispositivo.

  • Um .mlmodelc compilado em dispositivos de modelos ou versões do sistema diferentes pode não ser universalmente compatível.

    Comando para treinar um modelo YOLO11 em um computador com placa gráfica NVIDIA
    # Instale primeiro o kit de desenvolvimento C++ para desktop do Visual Studio no computador; pule esta etapa se já estiver instalado. Link:
    # https://visualstudio.microsoft.com/
    # Baixe e instale o CUDA 11.8 Toolkit no computador; pule esta etapa se já estiver instalado. Link:
    # https://developer.nvidia.com/cuda-11-8-0-download-archive

    # Aqui pressupomos que você já tenha um ambiente Python 3.10; caso contrário, crie um (testado somente no Python 3.10; versões posteriores não foram verificadas)
    # Instale primeiro o ultralytics; pule esta etapa se ele já estiver instalado
    pip install ultralytics

    # Reinstale a biblioteca torch compatível com o NVIDIA CUDA 11.8 Toolkit
    # Pule esta etapa se tiver certeza de que já instalou uma biblioteca torch compatível com CUDA
    pip uninstall torch torchvision torchaudio # desinstala a versão CPU do torch instalada no computador
    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 # usa a GPU0 para o treinamento
    Comando para treinar um modelo YOLO11 no macOS
    # Aqui pressupomos que você já tenha um ambiente Python 3.10; caso contrário, crie um (testado somente no Python 3.10; versões posteriores não foram verificadas)
    # Instale primeiro o ultralytics; pule esta etapa se ele já estiver instalado
    pip install ultralytics

    # Pule esta etapa se o torch já estiver instalado
    pip install torch torchvision torchaudio

    yolo train model=yolo11m.pt data=COCO.yml epochs=300 imgsz=640 device=mps # usa a aceleração do shader Metal para o treinamento

Exemplo

compiled_model_path = XXT_HOME_PATH..'/models/yolo11m.mlmodelc' -- local onde o modelo compilado será armazenado

file.remove(compiled_model_path) -- durante os testes, recompila sempre; depois que o modelo estiver estável, esta linha pode ser comentada

if not file.exists(compiled_model_path) then -- se ainda não houver um modelo compilado, compila um
local tmp_path, err = coreml.compile_model(XXT_HOME_PATH..'/models/yolo11m.mlpackage') -- compila o modelo
if not tmp_path then
error(err)
end
file.move(tmp_path, compiled_model_path, 'mo') -- move o modelo compilado para o local especificado
end