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 enilquando falha. -
mensagem de erro
Texto | nil: retornanilquando 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
.mlpackageou.mlmodelpara o formato.mlmodelc, que pode ser carregado diretamente pelo dispositivo. -
Um
.mlmodelccompilado 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 treinamentoComando 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