Ultralytics YOLO27:
Get Started

Exportação CoreML para modelos YOLO26#

A Apple inclui silício dedicado para IA — o Neural Engine — em todos os iPhone, iPad e Mac modernos, e o CoreML é o caminho compatível da Ultralytics para implantar modelos nele atualmente. Exportar modelos Ultralytics YOLO26 para CoreML converte um checkpoint .pt treinado em um .mlpackage nativo, que executa no dispositivo todas as sete tarefas YOLO com baixa latência, sem conexão de rede e sem que os dados saiam do dispositivo.

Executa YOLO hoje no Apple Neural Engine com os aplicativos móveis oficiais

O SDK oficial Ultralytics YOLO para iOS e o plugin Flutter executam exportações CoreML no Apple Neural Engine imediatamente — inferência de câmera em tempo real, previsões de imagens únicas e download automático de modelos para todas as sete tarefas YOLO26, incluindo Depth. Para implantação em NPU Android, consulta a integração Qualcomm QNN.

Tamanhos de entrada oficiais para dispositivos móveis

Exporte modelos de classificação em imgsz=224. Exporte modelos de detecção, segmentação, semântica, profundidade, pose e OBB em imgsz=640. Esse padrão 224/640 é compartilhado pelos recursos móveis oficiais de CoreML, LiteRT e QNN.

Novo formato Core AI da Apple

A Apple apresentou o novo framework Core AI e formato .aimodel para a geração iOS 27 e macOS 27, e a Ultralytics o exporta com format="coreai". CoreML continua sendo o formato padrão dos SDKs Ultralytics para iOS e Flutter, que carregam o Core AI como opção nos dispositivos iOS 27, além de ser o formato para maior compatibilidade com dispositivos Apple.



Assista: Como exportar Ultralytics YOLO26 para CoreML com quantização INT8 | Implantação Apple | iOS/MacOS 🍎

O que é CoreML?#

Apple CoreML deployment pipeline

CoreML (estilizado como "Core ML" pela Apple) é o framework de aprendizado de máquina da Apple para dispositivos. Ele carrega modelos no formato moderno ML Program — o pacote .mlpackage produzido pelo exportador da Ultralytics — e os agenda na CPU, GPU e Mecanismo Neural da Apple (ANE) do dispositivo, o NPU dedicado em cada chip Apple Silicon. Como tudo é executado localmente, a inferência funciona offline, não adiciona latência de rede e mantém os dados do usuário no dispositivo.

CoreML integra-se diretamente ao framework Vision da Apple, que processa o redimensionamento e a orientação da imagem antes de ela entrar no modelo — é assim que o SDK Ultralytics para iOS envia quadros da câmera ao YOLO praticamente sem custo de pré-processamento.

Por que exportar YOLO26 para CoreML?#

  • Velocidade do Neural Engine: CoreML agenda as operações compatíveis no Neural Engine da Apple para inferência de baixa latência no dispositivo. Consulta a tabela de dispositivos físicos abaixo e avalia o teu export específico no hardware de destino.
  • Escolhe a saída: os exports padrão deixam o NMS a cargo da tua aplicação. Usa nms=True para incorporar NMS ou nms=False para a cabeça do YOLO26 sem NMS.
  • Privado e offline: todo o processamento permanece no dispositivo — sem idas e voltas à nuvem, sem chaves de API e com total privacidade dos dados.
  • Um export, todo o ecossistema: o mesmo .mlpackage funciona em iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta o SDK para iOS e o plugin Flutter oficiais da Ultralytics.

Desempenho medido#

Inferência de ponta a ponta com uma única imagem para os recursos CoreML INT8 YOLO26n padronizados v8.3.0 em um iPhone 17 Pro com 12 GB de memória e iOS 26.5.2. O A19 Pro tem CPU de 6 núcleos (2 núcleos de desempenho e 4 de eficiência), GPU de 6 núcleos com aceleradores neurais e Neural Engine de 16 núcleos. Cada célula mostra o tempo total (pré-processamento + inferência + pós-processamento, sem incluir anotação), com a divisão por etapa abaixo. No iOS, o Vision redimensiona a entrada dentro da solicitação de inferência, por isso o pré-processamento aparece como 0 e seu custo está incluído na inferência.

ModeloTarefatamanho
(pixels)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE preferido
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetecção6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegmentação64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemântica6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthProfundidade64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsClassificação2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePose64011.9
0.0 / 11.9 / 0.0
3.9
0.0 / 3.9 / 0.0
YOLO26n-obbOBB64010.6
0.0 / 10.6 / 0.0
3.4
0.0 / 3.4 / 0.0
  • Os recursos de lançamento exatos v8.3.0 declaram entradas de 224×224 para classificação e de 640×640 para todas as outras tarefas.
  • Os valores de velocidade são latências em rajada para uma única imagem — a média de 15 execuções após 3 execuções de aquecimento em bus.jpg, medidas pelo tempo por etapa do SDK para iOS, por meio do sistema de benchmark do plugin Flutter no modo de perfil (código nativo otimizado). A ordem entre CPU e acelerador foi alternada entre as tarefas em uma única sequência. As linhas de CPU solicitam Core ML .cpuOnly; as linhas CPU + ANE preferido solicitam .cpuAndNeuralEngine, e o Core ML controla a colocação final das operações. A operação sustentada da câmera em tempo real é mais lenta porque inclui o pipeline de captura e redimensionamento, além da estabilização térmica. Uma avaliação histórica da câmera anterior à padronização mediu 11.3 ms/quadro para detecção YOLO26n e 16.5 ms/quadro para profundidade YOLO26n no mesmo dispositivo — consulta o documento de desempenho do SDK para iOS para ver a criação de perfil em regime estável.
  • Compara os resultados de CPU/GPU do Android na integração LiteRT e os resultados do NPU Snapdragon na integração Qualcomm QNN.

Tarefas suportadas#

O export CoreML é compatível com todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas no YOLO26, a única família que inclui essas cabeças.

TarefaYOLOv8YOLO11YOLO26
Detetar✅✅✅
Segmentar✅✅✅
Semântica❌❌✅
Profundidade❌❌✅
Classificar✅✅✅
Pose✅✅✅
OBB✅✅✅

Exportar modelos YOLO26 para CoreML#

Instalação#

Para instalar o pacote necessário, executa:

Instalação
# Install the required package for YOLO26
pip install ultralytics

O conversor coremltools é instalado automaticamente no primeiro export. O export é executado no macOS ou em Linux x86; para instruções detalhadas e práticas recomendadas, consulta o nosso guia de instalação e o guia de problemas comuns.

Uso#

O formato CoreML é compatível com os modos Export, Predict e Validate. A inferência e a validação com CoreML só são executadas no macOS. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a precisão.

Exportar
from ultralytics import YOLO

# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")

# Exportar para CoreML com quantização de pesos INT8, como nos modelos oficiais do app
model.export(format="coreml", quantize=8, imgsz=640)  # usar imgsz=224 para classificação
Prever
from ultralytics import YOLO

# Carregar o modelo CoreML exportado (macOS)
model = YOLO("yolo26n.mlpackage")

# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")
Validar
from ultralytics import YOLO

# Carregar o modelo CoreML exportado (macOS)
model = YOLO("yolo26n.mlpackage")

# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")

Argumentos de exportação#

ArgumentoTipoPadrãoDescrição
formatstr'coreml'Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implantação.
imgszint ou tuple640Tamanho de imagem desejado para a entrada do modelo. Pode ser um inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas.
quantizeint ou strNonePrecisão da quantização (somente pesos para CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesos INT8 com ativações FP16) ou 32/não definido (FP32). Os programas ML do NMS usam FP16 (para a pré-visualização do Xcode e por ser necessário para segmentação e pose); passa 32 para substituir esse valor na detecção. Substitui os sinalizadores obsoletos half/int8.
nmsbool, opcionalNoneSeleciona a saída bruta (None, padrão), NMS incorporado (True) ou a cabeça sem NMS (False). O NMS incorporado é compatível com detecção, segmentação e pose com dynamic=False.
dynamicboolFalsePermite tamanhos de entrada dinâmicos. Não é compatível com modelos de classificação ou RT-DETR e não pode ser combinado com nms=True.
batchint1Especifica o tamanho do lote de inferência do modelo exportado ou o número máximo de imagens que o modelo exportado processará simultaneamente no modo predict. Valores acima de 1 exigem dynamic=True.
devicestrNoneEspecifica o dispositivo para exportação: GPU (device=0), CPU (device=cpu), MPS para Apple Silicon (device=mps).

Para mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.

Usar o Neural Engine#

CoreML escolhe o hardware por meio de MLModelConfiguration.computeUnits. O SDK Ultralytics para iOS usa .cpuAndNeuralEngine por padrão no iOS 16+, em vez de .all: em uma aplicação de câmera em tempo real, a GPU já está ocupada compondo a pré-visualização e as sobreposições, então excluí-la evita contenção e oscilações no tempo dos quadros enquanto o ANE realiza o processamento pesado. Fixa .cpuOnly apenas para testes de compatibilidade — a tabela acima mostra o custo.

A execução de um modelo CoreML a partir do Python em um Mac host (pela Ultralytics ou coremltools) segue a mesma regra: a Ultralytics carrega com ComputeUnit.CPU_AND_NE (macOS 13+, usando CPU_ONLY como alternativa em versões anteriores do macOS), mantendo a inferência no Neural Engine (~3× mais rápido que a CPU). Isso também evita uma limitação atual do macOS host: o padrão ComputeUnit.ALL / CPU_AND_GPU — que adiciona o caminho de compilação GPU/MPSGraph — aborta o processo com uma asserção Error: MLIR pass manager failed em coremltools 9.x.

Implantar modelos YOLO26 CoreML exportados#

O caminho mais rápido é o SDK Ultralytics YOLO para iOS oficial, o mesmo pacote Swift que alimenta o app Ultralytics para iOS e o plugin Flutter. Ele resolve automaticamente os nomes oficiais dos modelos, baixa e armazena em cache o .mlpackage e retorna resultados totalmente decodificados:

import UltralyticsYOLO

// Loads the official INT8 model (downloaded and cached on first use), then runs inference
let yolo = YOLO("yolo26n", task: .detect) { result in
    if case .success(let model) = result {
        let results = model(uiImage)  // boxes, labels, confidences, timing
    }
}

Para apps de câmera, adiciona o YOLOView do SDK para ter inferência em tempo real com sobreposições nativas ou usa o plugin Flutter para criar apps multiplataforma que compartilham uma única base de código com Android.

Também é simples integrar diretamente um .mlpackage bruto usando a pilha da Apple — carrega-o com MLModel, envolve-o em um VNCoreMLRequest e envia as imagens por meio de VNImageRequestHandler. Estes recursos explicam os detalhes:

Inclui o modelo no pacote do app (disponibilidade imediata, ideal para modelos nano/pequenos) ou baixa-o na primeira execução e armazena-o em cache (binário menor e atualizações simples do modelo). Os apps oficiais combinam as duas abordagens: os modelos nano padrão são incluídos para uso imediato, enquanto as variantes maiores são baixadas quando necessário e armazenadas localmente em cache.

  1. Treina o teu modelo com o modo Train da Ultralytics ou começa com os pesos oficiais do YOLO26
  2. Exporta com model.export(format="coreml", quantize=8, imgsz=640) no macOS ou em Linux x86 (imgsz=224 para classificação)
  3. Verifica a precisão com model.val() em um Mac e cria um perfil com um relatório de desempenho do Core ML do Xcode no dispositivo de destino
  4. Implanta com o SDK para iOS, o plugin Flutter ou a tua própria integração com Vision, tendo como destino .cpuAndNeuralEngine

Resumo#

Neste guia, aprendeste a exportar modelos Ultralytics YOLO26 para o formato .mlpackage do CoreML, quantizá-los para o Neural Engine da Apple e implantá-los com latências de poucos milissegundos — seja pelo SDK oficial para iOS e pelo plugin Flutter ou pela tua própria integração com Vision. Para outros destinos de implantação, consulta a página do guia de integrações e compara formatos com o modo Benchmark.

Perguntas frequentes#

  • Executa model.export(format="coreml", imgsz=640) no Python ou yolo export model=yolo26n.pt format=coreml imgsz=640 pela CLI no macOS ou em Linux x86. Usa imgsz=224 para classificação e adiciona quantize=8 para corresponder aos modelos oficiais do app. O export produz um programa ML yolo26n.mlpackage pronto para o Xcode, o SDK para iOS ou o plugin Flutter.

  • Usa nms=True se a tua aplicação precisar de detecções com NMS incluído. O padrão nms=None exporta saídas brutas um-para-muitos para a tua aplicação processar; nms=False seleciona a cabeça do YOLO26 sem NMS. O NMS incorporado é compatível com detecção, segmentação e pose com formatos estáticos; as outras tarefas mantêm as saídas nativas.

  • Os modelos oficiais do app Ultralytics são fornecidos em INT8, o que minimiza o tamanho do download e oferece as velocidades indicadas na tabela acima. quantize=16 (FP16) é uma alternativa conservadora, praticamente sem perda de precisão. Valida o teu export específico com model.val() em um Mac antes de lançar.

  • Define MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (o padrão do SDK para iOS no iOS 16+). Evita .all em apps de câmera — a GPU está ocupada compondo a pré-visualização, e agendar a inferência nela causa oscilações no tempo dos quadros. Confirma a colocação com um relatório de desempenho do Core ML do Xcode.

  • Sim, no macOS: yolo predict model=yolo26n.mlpackage source=image.jpg e yolo val model=yolo26n.mlpackage data=coco8.yaml funcionam como em qualquer outro formato. A execução do CoreML exige hardware Apple, por isso esses modos não estão disponíveis no Linux nem no Windows.

  • Usa o SDK Ultralytics YOLO para iOS oficial (pacote Swift) ou o plugin Flutter. Ambos carregam modelos oficiais pelo nome, com download e armazenamento em cache automáticos, executam-nos no Neural Engine e incluem interfaces completas de câmera em tempo real — a tabela de desempenho medida acima foi produzida exatamente com esta pilha.

Comentários