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.
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.
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.
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?#
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=Truepara incorporar NMS ounms=Falsepara 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
.mlpackagefunciona 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.
| Modelo | Tarefa | tamanho (pixels) | CPU Core ML .cpuOnly(ms) | CPU + ANE preferido Core ML .cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Detecção | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Segmentação | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | Semântica | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Profundidade | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Classificação | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-pose | Pose | 640 | 11.9 0.0 / 11.9 / 0.0 | 3.9 0.0 / 3.9 / 0.0 |
| YOLO26n-obb | OBB | 640 | 10.6 0.0 / 10.6 / 0.0 | 3.4 0.0 / 3.4 / 0.0 |
- Os recursos de lançamento exatos
v8.3.0declaram 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.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar modelos YOLO26 para CoreML#
Instalação#
Para instalar o pacote necessário, executa:
# Install the required package for YOLO26
pip install ultralyticsO 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.
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çãofrom ultralytics import YOLO
# Carregar o modelo CoreML exportado (macOS)
model = YOLO("yolo26n.mlpackage")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")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#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'coreml' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implantação. |
imgsz | int ou tuple | 640 | Tamanho 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. |
quantize | int ou str | None | Precisã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. |
nms | bool, opcional | None | Seleciona 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. |
dynamic | bool | False | Permite 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. |
batch | int | 1 | Especifica 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. |
device | str | None | Especifica 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:
- Integrar um modelo Core ML ao teu app: guia da Apple para incluir e chamar um modelo CoreML.
- Ferramentas CoreML: referência de conversão, quantização e otimização para o conjunto de ferramentas
coremltoolsque alimenta este export. - Relatórios de desempenho do Core ML no Xcode: criação de perfil da colocação de cada camada no dispositivo e da latência para o teu modelo e dispositivo específicos.
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.
Fluxo de trabalho recomendado#
- Treina o teu modelo com o modo Train da Ultralytics ou começa com os pesos oficiais do YOLO26
- Exporta com
model.export(format="coreml", quantize=8, imgsz=640)no macOS ou em Linux x86 (imgsz=224para classificação) - 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 - 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 ouyolo export model=yolo26n.pt format=coreml imgsz=640pela CLI no macOS ou em Linux x86. Usaimgsz=224para classificação e adicionaquantize=8para corresponder aos modelos oficiais do app. O export produz um programa MLyolo26n.mlpackagepronto para o Xcode, o SDK para iOS ou o plugin Flutter.Usa
nms=Truese a tua aplicação precisar de detecções com NMS incluído. O padrãonms=Noneexporta saídas brutas um-para-muitos para a tua aplicação processar;nms=Falseseleciona 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 commodel.val()em um Mac antes de lançar.Define
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(o padrão do SDK para iOS no iOS 16+). Evita.allem 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.jpgeyolo val model=yolo26n.mlpackage data=coco8.yamlfuncionam 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.