Exportação CoreML para Modelos YOLO26#
A Apple inclui silício de IA dedicado — o Neural Engine — em todos os iPhone, iPad e Mac modernos, e o CoreML é o caminho suportado pela Ultralytics para implantar modelos nele atualmente. Exportar modelos do Ultralytics YOLO26 para o CoreML transforma um checkpoint treinado do .pt em um .mlpackage nativo que executa todas as sete tarefas do YOLO no dispositivo com baixa latência, sem conexão de rede e sem que nenhum dado saia do dispositivo.
O Ultralytics YOLO iOS SDK oficial e o plugin Flutter executam exportações do CoreML no Apple Neural Engine de forma nativa — inferência de câmera em tempo real, predição de imagem única e download automático de modelos para todas as sete tarefas do YOLO26, incluindo Depth. Para implantação em NPU Android, consulte a integração Qualcomm QNN.
Exporte modelos de classificação em imgsz=224. Exporte modelos de detect, segment, semantic, depth, pose e OBB em
imgsz=640. Este padrão de 224/640 é compartilhado pelos ativos móveis oficiais do CoreML, LiteRT e QNN.
A Apple introduziu o novo Core AI framework e .aimodel format para a geração do iOS 27 e macOS 27, e a Ultralytics o exporta com format="coreai". O CoreML continua a ser o formato recomendado para os SDKs iOS e Flutter da Ultralytics e para uma maior compatibilidade com dispositivos Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎
O que é o CoreML?#
O CoreML (chamado de "Core ML" pela Apple) é o framework de machine learning para execução no dispositivo da Apple. Ele carrega modelos no formato moderno ML Program — o pacote .mlpackage gerado pelo exportador da Ultralytics — e os distribui entre a CPU, a GPU e o Apple Neural Engine (ANE) do dispositivo, a NPU dedicada em cada chip de silício da Apple. 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.
O CoreML integra-se diretamente ao framework Vision da Apple, que lida com o redimensionamento e a orientação de imagens na entrada para o modelo — é assim que o iOS SDK da Ultralytics fornece quadros de câmera para o YOLO com custo de pré-processamento efetivamente zero.
Por que exportar o YOLO26 para CoreML?#
- Velocidade do Neural Engine: O CoreML agenda operações suportadas no Neural Engine da Apple para inferência no dispositivo com baixa latência. Consulte a tabela de dispositivos físicos abaixo e faça o benchmark da sua exportação exata no seu hardware de destino.
- Livre de NMS por design: O YOLO26 é end-to-end, portanto o grafo exportado não precisa de pipeline de NMS e a decodificação leva menos de um milissegundo. Modelos de detecção mais antigos, como o YOLO11, podem incorporar um pipeline de NMS do CoreML com
nms=True. - Privado e offline: Toda a computação permanece no dispositivo — sem idas e vindas à nuvem, sem chaves de API, com total privacidade de dados.
- Uma exportação, todo o ecossistema: O mesmo
.mlpackageé executado no iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta o iOS SDK e o plugin Flutter oficiais da Ultralytics.
Desempenho Medido#
Inferência de imagem única end-to-end para os ativos CoreML INT8 do YOLO26n padronizados v8.3.0 em um
iPhone 17 Pro com 12 GB de memória e iOS 26.5.2. O seu A19 Pro possui uma CPU de 6 núcleos
(2 núcleos de Desempenho e 4 de Eficiência), GPU de 6 núcleos com Neural Accelerators e Neural Engine de 16 núcleos. Cada célula
exibe o tempo total (pré-processamento + inferência + pós-processamento, excluindo
anotação) com a divisão por etapa logo abaixo. No iOS, o Vision realiza o escalonamento de entrada dentro da solicitação de inferência,
portanto o pré-processamento é relatado 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 | Detectar | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Segmentar | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | Semântico | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Depth | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Classificar | 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 ativos exatos de lançamento de
v8.3.0declaram entradas de 224×224 para classificação e 640×640 para todas as outras tarefas. - Os valores de Speed são latências de rajada de imagem única — a média de 15 execuções após 3 execuções de aquecimento em
bus.jpg, medidas por meio da contagem de tempo por etapa do iOS SDK através do mecanismo de benchmark do plugin Flutter no modo profile (código nativo otimizado). A ordem de CPU/acelerador alternou entre as tarefas em uma varredura sequencial. As linhas de CPU solicitam Core ML.cpuOnly; as linhas de CPU + ANE preferido solicitam.cpuAndNeuralEngine, com o posicionamento final das operações controlado pelo Core ML. A operação de câmera em tempo real contínua é mais lenta porque inclui o pipeline de captura e escala mais a estabilização térmica. Uma varredura de câmera pré-padronizada histórica mediu 11,3 ms/quadro para a detecção do YOLO26n e 16,5 ms/quadro para o YOLO26n Depth no mesmo dispositivo — consulte a documentação de desempenho do iOS SDK para o perfil em regime permanente. - Compare os resultados de CPU/GPU do Android na integração LiteRT e os resultados de NPU Snapdragon na integração Qualcomm QNN.
Tarefas Suportadas#
A exportação para CoreML suporta todas as sete tarefas do Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportando Modelos YOLO26 para CoreML#
Instalação#
Para instalar o pacote necessário, execute:
# Install the required package for YOLO26
pip install ultralyticsO conversor coremltools é instalado automaticamente na primeira exportação. A exportação é executada no macOS ou Linux x86; para instruções detalhadas e práticas recomendadas, consulte nosso guia de instalação e o guia de Problemas Comuns.
Uso#
O formato CoreML suporta os modos Export, Predict e Validate. A inferência e a validação com o CoreML são executadas apenas no macOS. Exporte seu modelo e, em seguida, carregue o modelo exportado para executar a inferência ou validar sua precisão.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML with INT8 weight quantization, matching the official app models
model.export(format="coreml", quantize=8, imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argumentos de Exportação#
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'coreml' | Formato de destino para o modelo exportado, definindo a compatibilidade com vários ambientes de implementação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão de quantização (apenas pesos para CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesos INT8 com ativações FP16), ou 32/não definido (FP32). Os NMS ML Programs usam FP16 (para a pré-visualização do Xcode e obrigatório para segment e pose); passa 32 para substituir em detect. Substitui as flags obsoletas half/int8. |
nms | bool | False | Incorporate o NMS no modelo exportado. Suportado para detect, segment e pose (ignorado com um aviso para outras tarefas); não é necessário para o YOLO26 sem NMS, usa para modelos anteriores como o YOLO11. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade no manuseio de dimensões variáveis de imagem. |
batch | int | 1 | Especifica o tamanho de inferência em lote do modelo de exportação ou o número máximo de imagens que o modelo exportado processará concorrentemente no modo predict. |
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 de documentação do Ultralytics sobre exportação.
Visando o Neural Engine#
O CoreML escolhe o hardware por meio de MLModelConfiguration.computeUnits. O SDK do iOS da Ultralytics usa por padrão .cpuAndNeuralEngine no iOS 16+ em vez de .all: em um aplicativo de câmera em tempo real, a GPU já está ocupada compondo a pré-visualização e as sobreposições, portanto, excluí-la evita contenção e oscilação no tempo dos quadros enquanto o ANE faz o trabalho pesado. Defina .cpuOnly apenas para testes de compatibilidade — a tabela acima mostra o custo disso.
Executar um modelo CoreML a partir do Python em um Mac host (via Ultralytics ou coremltools) segue a mesma regra: a Ultralytics carrega com ComputeUnit.CPU_AND_NE (macOS 13+, recorrendo a CPU_ONLY em macOS mais antigos), mantendo a inferência no Neural Engine (~3x mais rápido que a CPU). Isso também evita uma limitação atual do host macOS em que o padrão ComputeUnit.ALL / CPU_AND_GPU — que adiciona o caminho de compilação da GPU/MPSGraph — interrompe o processo com uma asserção Error: MLIR pass manager failed em coremltools 9.x.
Implantando Modelos YOLO26 CoreML Exportados#
O caminho mais rápido é o iOS SDK do YOLO da Ultralytics oficial, o mesmo pacote Swift que alimenta o aplicativo iOS da Ultralytics e o plugin Flutter. Ele resolve nomes de modelos oficiais automaticamente, 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 aplicativos de câmera, insira o YOLOView do SDK para inferência em tempo real com sobreposições nativas, ou use o plugin Flutter para aplicativos multiplataforma que compartilham uma única base de código com o Android.
Integrar um .mlpackage bruto por conta própria também é simples com a pilha da Apple — carregue-o com MLModel, envolva-o em um VNCoreMLRequest e envie imagens por meio de VNImageRequestHandler. Estes recursos cobrem os detalhes:
- Integrating a Core ML Model into Your App: Guia da Apple sobre como empacotar e chamar um modelo CoreML.
- CoreML Tools: Referência de conversão, quantização e otimização para a cadeia de ferramentas
coremltoolsque alimenta esta exportação. - Xcode Core ML Performance Reports: Posicionamento de dispositivo por camada e perfil de latência para o seu modelo e dispositivo exatos.
Envie o modelo embutido no pacote do aplicativo (disponibilidade instantânea, ideal para modelos nano/small) ou baixado na primeira execução e armazenado em cache (binário menor, atualizações de modelo fáceis). Os aplicativos oficiais combinam ambas as abordagens: os modelos nano padrão vêm embutidos para uso imediato, enquanto as variantes maiores são baixadas sob demanda e armazenadas em cache localmente.
Fluxo de Trabalho Recomendado#
- Treine seu modelo com o modo Train da Ultralytics ou comece com os pesos oficiais do YOLO26
- Exporte com
model.export(format="coreml", quantize=8, imgsz=640)no macOS ou Linux x86 (imgsz=224para classificação) - Verifique a precisão com
model.val()em um Mac e faça o perfil com um relatório de desempenho do Xcode Core ML no seu dispositivo de destino - Implante com o iOS SDK, o plugin Flutter ou sua própria integração Vision, tendo como alvo
.cpuAndNeuralEngine
Resumo#
Neste guia, você aprendeu como exportar modelos do Ultralytics YOLO26 para o formato .mlpackage do CoreML, quantizá-los para o Apple Neural Engine e implantá-los com latências de um dígito em milissegundos — seja por meio do iOS SDK oficial e plugin Flutter ou de sua própria integração Vision. Para outros destinos de implantação, navegue pela página do guia de integração e compare formatos com o modo Benchmark.
FAQ#
Execute
model.export(format="coreml", imgsz=640)em Python ouyolo export model=yolo26n.pt format=coreml imgsz=640por meio da CLI no macOS ou Linux x86. Useimgsz=224para classificação e adicionequantize=8para corresponder aos modelos oficiais do aplicativo. A exportação produz um Programa MLyolo26n.mlpackagepronto para o Xcode, o iOS SDK ou o plugin Flutter.Não. O YOLO26 é de ponta a ponta sem NMS, pelo que o grafo exportado já emite detecções finais e custos de descodificação bem abaixo de um milissegundo. A opção
nms=Trueexiste para modelos anteriores, como o YOLO11, onde incorpora o NMS para que a tua aplicação não tenha de implementar a supressão. É suportada para modelos de detect, segment e pose;nms=Trueé ignorada com um aviso para outras tarefas.Os modelos oficiais do aplicativo Ultralytics são fornecidos como INT8, o que minimiza o tamanho do download e é executado nas velocidades da tabela acima.
quantize=16(FP16) é uma alternativa conservadora essencialmente sem perda de precisão. Valide sua exportação exata commodel.val()em um Mac antes de realizar o envio.Defina
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(o padrão do iOS SDK no iOS 16+). Evite.allem aplicativos de câmera — a GPU está ocupada compondo a pré-visualização e agendar a inferência nela causa instabilidade no tempo de quadros. Confirme o posicionamento com um relatório de desempenho do Xcode Core ML.Sim, no macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgeyolo val model=yolo26n.mlpackage data=coco8.yamlfuncionam como qualquer outro formato. A execução do CoreML requer hardware da Apple, portanto esses modos não estão disponíveis no Linux e no Windows.Use o Ultralytics YOLO iOS SDK oficial (Swift Package) ou o plugin Flutter. Ambos carregam modelos oficiais por nome com download e cache automáticos, executam-no no Neural Engine e incluem UIs de câmera em tempo real completas — a tabela de desempenho medida acima foi produzida exatamente com essa pilha.