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 é atualmente o caminho compatível da Ultralytics para implementar modelos nesse hardware. Exportar modelos Ultralytics YOLO26 para CoreML transforma um checkpoint .pt treinado num .mlpackage nativo que executa todas as sete tarefas YOLO no dispositivo com baixa latência, sem ligação à rede e sem que os dados saiam do dispositivo.
O Ultralytics YOLO iOS SDK oficial e o plugin Flutter executam exportações CoreML no Apple Neural Engine imediatamente — inferência de câmara em tempo real, previsão de imagem única e transferência automática de modelos para todas as sete tarefas YOLO26, incluindo Depth. Para implementação em NPU Android, consulta a integração Qualcomm QNN.
Exporta modelos de classificação em imgsz=224. Exporta modelos de deteção, segmentação, semântica, profundidade, pose e OBB em
imgsz=640. Este padrão 224/640 é partilhado pelos recursos móveis oficiais de CoreML, LiteRT e QNN.
A Apple introduziu o novo framework Core AI e o formato .aimodel para a geração iOS 27 e macOS 27, e a Ultralytics exporta para esse formato com format="coreai". O CoreML continua a ser o formato recomendado para os SDKs iOS e Flutter da Ultralytics e para uma compatibilidade mais ampla com dispositivos Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎
O que é o CoreML?#
CoreML (apresentado como "Core ML" pela Apple) é o framework de aprendizagem automática no dispositivo da Apple. Carrega modelos no formato moderno ML Program — o pacote .mlpackage produzido pelo exportador da Ultralytics — e distribui-os pelo CPU, GPU e Apple Neural Engine (ANE) do dispositivo, a NPU dedicada presente em todos os chips Apple Silicon. Como tudo é executado localmente, a inferência funciona offline, não acrescenta latência de rede e mantém os dados do utilizador no dispositivo.
O CoreML integra-se diretamente com o framework Vision da Apple, que trata do redimensionamento e da orientação da imagem antes de esta entrar no modelo — é assim que o SDK iOS da Ultralytics fornece frames da câmara ao YOLO com um custo de pré-processamento praticamente nulo.
Porquê exportar YOLO26 para CoreML?#
- Velocidade do Neural Engine: o CoreML agenda operações compatíveis no Neural Engine da Apple para obter inferência no dispositivo com baixa latência. Consulta a tabela de dispositivos físicos abaixo e compara a tua exportação exata no hardware de destino.
- Escolhe a saída: as exportações padrão deixam o NMS para a tua aplicação. Usa
nms=Truepara incorporar o NMS, ounms=Falsepara a cabeça sem NMS do YOLO26. - Privado e offline: toda a computação permanece no dispositivo — sem comunicação de ida e volta com a cloud, sem chaves API e com total privacidade dos dados.
- Uma exportação, todo o ecossistema: o mesmo
.mlpackageé executado em iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta o iOS SDK e o plugin Flutter oficiais da Ultralytics.
Desempenho medido#
Inferência de ponta a ponta de uma única imagem para os recursos CoreML YOLO26n INT8 padronizados v8.3.0 num iPhone 17 Pro com 12 GB de memória e iOS 26.5.2. O seu A19 Pro tem um CPU de 6 núcleos (2 núcleos de Performance e 4 de Efficiency), um GPU de 6 núcleos com Neural Accelerators e um Neural Engine de 16 núcleos. Cada célula mostra o tempo total (pré-processamento + inferência + pós-processamento, excluindo a anotação), com a divisão por fase apresentada abaixo. No iOS, o Vision executa o redimensionamento da entrada dentro do pedido de inferência, pelo que o pré-processamento é indicado como 0 e o seu custo é incluído na inferência.
| Modelo | Tarefa | tamanho (píxeis) | CPU Core ML .cpuOnly(ms) | CPU + ANE preferido Core ML .cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Deteçã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 exatos da versão
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 de rajada de imagem única — a média de 15 execuções após 3 execuções de aquecimento em
bus.jpg, medidas através da temporização por fase do iOS SDK com o sistema de benchmark do plugin Flutter no modo de perfil (código nativo otimizado). A ordem CPU/acelerador foi alternada entre tarefas numa única sequência. As linhas de CPU solicitam Core ML.cpuOnly; as linhas CPU + ANE preferido solicitam.cpuAndNeuralEngine, com a colocação final das operações controlada pelo Core ML. A operação sustentada da câmara em tempo real é mais lenta porque inclui o pipeline de captura e redimensionamento, além da estabilização térmica. Uma medição histórica de câmara anterior à padronização registou 11.3 ms/frame para deteção YOLO26n e 16.5 ms/frame para Depth YOLO26n no mesmo dispositivo — consulta o documento de desempenho do iOS SDK para a criação de perfis em estado estável. - Compara os resultados de CPU/GPU Android na integração LiteRT e os resultados da NPU Snapdragon na integração Qualcomm QNN.
Tarefas suportadas#
A exportação CoreML suporta todas as sete tarefas da 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 |
|---|---|---|---|
| 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 na primeira exportação. A exportação é executada em macOS ou Linux x86; para obter instruções detalhadas e boas práticas, consulta o nosso guia de instalação e o guia de problemas comuns.
Utilização#
O formato CoreML suporta os modos Exportar, Prever e Validar. A inferência e a validação com CoreML são executadas apenas em macOS. Exporta o teu modelo e carrega depois o modelo exportado para executar inferência ou validar a 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 do modelo exportado, que define a compatibilidade com vários ambientes de implementação. |
imgsz | int ou tuple | 640 | Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou um tuplo (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão da quantização (apenas pesos para CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesos INT8 com ativações FP16) ou 32/não definido (FP32). Os ML Programs NMS usam FP16 (para a pré-visualização do Xcode e obrigatório para segmentação e pose); passa 32 para substituir esse valor na deteção. Substitui os sinalizadores obsoletos half/int8. |
nms | bool, opcional | None | Seleciona a saída em bruto (None, predefinição), o NMS incorporado (True) ou a cabeça sem NMS (False). O NMS incorporado suporta detetar, segmentar e pose com dynamic=False. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos. Não é suportado para modelos de classificação ou RT-DETR, e não pode ser combinado com nms=True. |
batch | int | 1 | Especifica o tamanho da inferência em lote do modelo exportado ou o número máximo de imagens que o modelo exportado processará concorrentemente no modo predict. Valores acima de 1 exigem dynamic=True. |
device | str | None | Especifica o dispositivo para a exportação: GPU (device=0), CPU (device=cpu), MPS para Apple Silicon (device=mps). |
Para obter mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Direcionar para o Neural Engine#
O CoreML escolhe o hardware através de MLModelConfiguration.computeUnits. O SDK iOS da Ultralytics usa por predefinição .cpuAndNeuralEngine no iOS 16+, em vez de .all: numa aplicação de câmara em tempo real, o GPU já está ocupado a compor a pré-visualização e as sobreposições, pelo que excluí-lo evita contenção e instabilidade no tempo de frame enquanto o ANE executa o trabalho pesado. Fixa .cpuOnly apenas para testes de compatibilidade — a tabela acima mostra o custo.
Executar um modelo CoreML a partir de Python num Mac anfitrião (através da Ultralytics ou de coremltools) segue a mesma regra: a Ultralytics carrega-o com ComputeUnit.CPU_AND_NE (macOS 13+, recuando para CPU_ONLY em versões mais antigas do macOS), mantendo a inferência no Neural Engine (cerca de 3× mais rápida do que no CPU). Isto também evita uma limitação atual do macOS anfitrião, em que as predefinições ComputeUnit.ALL / CPU_AND_GPU — que adicionam o caminho de compilação GPU/MPSGraph — interrompem o processo com uma asserção Error: MLIR pass manager failed em coremltools 9.x.
Implementar modelos YOLO26 CoreML exportados#
O caminho mais rápido é o Ultralytics YOLO iOS SDK oficial, o mesmo pacote Swift que alimenta a aplicação iOS da Ultralytics e o plugin Flutter. Resolve automaticamente os nomes oficiais dos modelos, transfere e coloca em cache o .mlpackage e devolve resultados totalmente descodificados:
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 aplicações de câmara, adiciona o YOLOView do SDK para obter inferência em tempo real com sobreposições nativas, ou usa o plugin Flutter para aplicações multiplataforma que partilham uma base de código com Android.
Também é simples integrar diretamente um .mlpackage bruto com a stack da Apple — carrega-o com MLModel, envolve-o num VNCoreMLRequest e fornece as imagens através de VNImageRequestHandler. Estes recursos explicam os detalhes:
- Integrar um modelo Core ML na tua aplicação: guia da Apple para incluir 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. - Relatórios de desempenho do Core ML no Xcode: criação de perfis de colocação por camada e latência para o teu modelo e dispositivo específicos.
Implementa o modelo incorporado no pacote da aplicação (disponibilidade imediata, ideal para modelos nano/pequenos) ou transfere-o na primeira execução e coloca-o em cache (binário menor e atualizações fáceis do modelo). As aplicações oficiais combinam ambas as abordagens: os modelos nano predefinidos vêm incluídos para utilização imediata, enquanto as variantes maiores são transferidas 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 pelos pesos oficiais YOLO26
- Exporta com
model.export(format="coreml", quantize=8, imgsz=640)em macOS ou Linux x86 (imgsz=224para classificação) - Verifica a precisão com
model.val()num Mac e cria um perfil com um relatório de desempenho Core ML do Xcode no teu dispositivo de destino - Implementa com o iOS SDK, o plugin Flutter ou a tua própria integração Vision, tendo como alvo
.cpuAndNeuralEngine
Resumo#
Neste guia, aprendeste a exportar modelos Ultralytics YOLO26 para o formato .mlpackage do CoreML, quantizá-los para o Apple Neural Engine e implementá-los com latências de poucos milissegundos — através do iOS SDK e do plugin Flutter oficiais ou da tua própria integração Vision. Para outros destinos de implementaçã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)em Python ouyolo export model=yolo26n.pt format=coreml imgsz=640através da CLI em macOS ou Linux x86. Usaimgsz=224para classificação e adicionaquantize=8para corresponder aos modelos oficiais das aplicações. A exportação produz um ML Programyolo26n.mlpackagepronto para o Xcode, o iOS SDK ou o plugin Flutter.Usa
nms=Truese a tua aplicação precisar de deteções com o NMS incluído. A predefiniçãonms=Noneexporta saídas em bruto de um para muitos para a tua aplicação processar;nms=Falseseleciona a cabeça sem NMS do YOLO26. O NMS incorporado suporta detetar, segmentar e pose com formas estáticas; outras tarefas mantêm as suas saídas nativas.Os modelos oficiais das aplicações da Ultralytics são fornecidos como INT8, o que minimiza o tamanho da transferência e funciona às velocidades indicadas na tabela acima.
quantize=16(FP16) é uma alternativa conservadora, praticamente sem perda de precisão. Valida a tua exportação exata commodel.val()num Mac antes de a distribuir.Define
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(a predefinição do iOS SDK no iOS 16+). Evita.allem aplicações de câmara — o GPU está ocupado a compor a pré-visualização, e agendar a inferência nesse dispositivo provoca instabilidade no tempo de frame. Confirma a colocação com um relatório de desempenho Core ML do Xcode.Sim, em macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgeyolo val model=yolo26n.mlpackage data=coco8.yamlfuncionam como em qualquer outro formato. A execução CoreML requer hardware Apple, pelo que estes modos não estão disponíveis em Linux e Windows.Usa o Ultralytics YOLO iOS SDK oficial (Swift Package) ou o plugin Flutter. Ambos carregam modelos oficiais pelo nome, com transferência e colocação em cache automáticas, executam-nos no Neural Engine e incluem interfaces completas de câmara em tempo real — a tabela de desempenho medida acima foi produzida exatamente com esta stack.