Ultralytics YOLO27:

YOLO26 Modelleri için CoreML Dışa Aktarma#

Apple, her modern iPhone, iPad ve Mac'te Neural Engine adlı özel yapay zekâ çipini sunuyor ve CoreML, modelleri bugün bu çipe dağıtmak için Ultralytics tarafından desteklenen yol. Ultralytics YOLO26 modellerini CoreML'e dışa aktarmak, eğitilmiş bir .pt checkpoint'ini, yedi YOLO görevinin tümünü cihaz üzerinde düşük gecikmeyle, ağ bağlantısı olmadan ve veriler cihazdan çıkmadan çalıştıran yerel bir .mlpackage nesnesine dönüştürür.

Bugün resmi mobil uygulamalarla Apple Neural Engine üzerinde YOLO çalıştır

Resmi Ultralytics YOLO iOS SDK ve Flutter eklentisi, CoreML dışa aktarımlarını Apple Neural Engine üzerinde kullanıma hazır şekilde çalıştırır: gerçek zamanlı kamera çıkarımı, tek görüntü tahmini ve Depth dahil yedi YOLO26 görevinin tümü için otomatik model indirme. Android NPU dağıtımı için Qualcomm QNN entegrasyonu sayfasına bak.

Resmi mobil giriş boyutları

Sınıflandırma modellerini imgsz=224 boyutunda dışa aktar. Detect, segment, semantic, depth, pose ve OBB modellerini imgsz=640 boyutunda dışa aktar. Bu 224/640 standardı, resmi CoreML, LiteRT ve QNN mobil varlıklarında ortaktır.

Apple'ın yeni Core AI formatı

Apple, iOS 27 ve macOS 27 nesli için yeni Core AI framework'ünü ve .aimodel formatını kullanıma sundu ve Ultralytics bunu format="coreai" ile dışa aktarır. CoreML, Ultralytics iOS ve Flutter SDK'ları ile daha geniş Apple cihaz uyumluluğu için önerilen format olmaya devam eder.



Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎

CoreML nedir?#

Apple CoreML deployment pipeline

Apple tarafından "Core ML" olarak adlandırılan CoreML, Apple'ın cihaz üzerinde çalışan makine öğrenimi framework'üdür. Modelleri modern ML Program formatında — Ultralytics dışa aktarıcısının ürettiği .mlpackage paketinde — yükler ve bunları cihazın CPU, GPU ve her Apple silikon çipinde bulunan özel NPU olan Apple Neural Engine (ANE) arasında planlar. Her şey yerel olarak çalıştığı için çıkarım çevrimdışı çalışır, ağ gecikmesi eklemez ve kullanıcı verilerini cihazda tutar.

CoreML, görüntünün modele girişi sırasında ölçeklendirme ve yönlendirmeyi yöneten Apple'ın Vision framework'ü ile doğrudan entegre olur. Ultralytics iOS SDK'nın kamera karelerini neredeyse sıfır ön işleme maliyetiyle YOLO'ya aktarması bu şekilde gerçekleşir.

YOLO26'yı CoreML'e neden dışa aktarmalısın?#

  • Neural Engine hızı: CoreML, desteklenen işlemleri düşük gecikmeli cihaz üzeri çıkarım için Apple'ın Neural Engine'i üzerinde planlar. Aşağıdaki fiziksel cihaz tablosuna bak ve kendi hedef donanımında tam dışa aktarımını kıyasla.
  • Çıktıyı seç: Varsayılan dış aktarımlar NMS'yi uygulamana bırakır. NMS'yi gömmek için nms=True kullan veya YOLO26'nın NMS içermeyen başlığı için nms=False kullan.
  • Özel ve çevrimdışı: Tüm hesaplamalar cihazda kalır; buluta gidiş-dönüş yoktur, API anahtarı gerekmez ve tam veri gizliliği sağlanır.
  • Tek dışa aktarma, tüm ekosistem: Aynı .mlpackage, iOS, iPadOS, macOS, watchOS, tvOS ve visionOS üzerinde çalışır ve resmi Ultralytics iOS SDK ile Flutter eklentisine güç verir.

Ölçülen Performans#

Standartlaştırılmış v8.3.0 YOLO26n INT8 CoreML varlıklarının uçtan uca tek görüntü çıkarımı, 12 GB belleğe ve iOS 26.5.2'ye sahip bir iPhone 17 Pro üzerinde ölçülmüştür. A19 Pro; 6 çekirdekli CPU'ya (2 Performance ve 4 Efficiency çekirdeği), Neural Accelerators özellikli 6 çekirdekli GPU'ya ve 16 çekirdekli Neural Engine'e sahiptir. Her hücre, toplam süreyi (açıklama hariç ön işleme + çıkarım + son işleme) ve altında aşama başına dağılımı gösterir. iOS'ta Vision, giriş ölçeklendirmesini çıkarım isteği içinde gerçekleştirdiğinden ön işleme 0 olarak raporlanır ve maliyeti çıkarıma dahil edilir.

ModelGörevboyut
(piksel)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE tercihli
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetect6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegment64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemantic6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthDerinlik64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsSınıflandırma2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePoz64011.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
  • Tam v8.3.0 sürüm varlıkları, sınıflandırma için 224×224 ve diğer tüm görevler için 640×640 girişler tanımlar.
  • Hız değerleri, tek görüntülü burst gecikmeleridirbus.jpg üzerinde 3 ısınma çalışmasının ardından gerçekleştirilen 15 çalışmanın ortalamasıdır. Ölçüm, profil modunda (optimize edilmiş yerel kod) Flutter eklentisinin benchmark harness'i aracılığıyla iOS SDK'nın aşama başına zamanlaması kullanılarak yapılmıştır. CPU/hızlandırıcı sırası, tek bir ardışık taramada görevler arasında değişimli olarak uygulanmıştır. CPU satırları Core ML .cpuOnly ister; CPU + ANE tercihli satırlar ise .cpuAndNeuralEngine ister ve nihai işlem yerleşimi Core ML tarafından kontrol edilir. Sürekli gerçek zamanlı kamera çalışması, yakalama ve ölçeklendirme işlem hattı ile termal kararlılığı da içerdiği için daha yüksek sonuçlar verir. Standardizasyon öncesi tarihsel bir kamera taramasında aynı cihazda YOLO26n detect için 11.3 ms/kare ve YOLO26n Depth için 16.5 ms/kare ölçülmüştür; kararlı durum profillemesi için iOS SDK performans dokümanına bak.
  • Android CPU/GPU sonuçlarını LiteRT entegrasyonundaki, Snapdragon NPU sonuçlarını ise Qualcomm QNN entegrasyonundaki sonuçlarla karşılaştır.

Desteklenen Görevler#

CoreML dışa aktarma, yedi Ultralytics görevinin tümünü destekler. Semantic segmentation ve depth estimation yalnızca bu başlıkları sunan tek aile olan YOLO26 ile kullanılabilir.

GörevYOLOv8YOLO11YOLO26
Algılama
Segmentasyon
Semantik
Derinlik
Sınıflandırma
Poz
OBB

YOLO26 Modellerini CoreML'e Dışa Aktarma#

Kurulum#

Gerekli paketi yüklemek için şunu çalıştır:

Kurulum
# Install the required package for YOLO26
pip install ultralytics

coremltools dönüştürücüsü, ilk dışa aktarma sırasında otomatik olarak yüklenir. Dışa aktarma macOS veya x86 Linux üzerinde çalışır; ayrıntılı talimatlar ve en iyi uygulamalar için kurulum kılavuzumuza ve Yaygın Sorunlar kılavuzuna bak.

Kullanım#

CoreML formatı Export, Predict ve Validate modlarını destekler. CoreML ile çıkarım ve doğrulama yalnızca macOS üzerinde çalışır. Modelini dışa aktar, ardından çıkarım çalıştırmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.

Dışa aktarma
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 classification
Tahmin
from ultralytics import YOLO

# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Doğrula
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")

Dışa Aktarma Bağımsız Değişkenleri#

Bağımsız değişkenTürVarsayılanAçıklama
formatstr'coreml'Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar.
imgszint veya tuple640Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya belirli boyutlar için (height, width) tuple'ı olabilir.
quantizeint veya strNoneNiceleme hassasiyeti (CoreML için yalnızca ağırlıklar): 16 (FP16), 8 (INT8), "w8a16" (FP16 aktivasyonlu INT8 ağırlıklar) veya 32/ayarlanmamış (FP32). NMS ML Program'ları FP16 kullanır (Xcode önizlemesi için ve segment ile pose için gereklidir); detect üzerinde geçersiz kılmak için 32 değerini ilet. Kullanımdan kaldırılan half/int8 işaretlerinin yerini alır.
nmsbool, isteğe bağlıNoneHam çıktıyı (None, varsayılan), gömülü NMS'yi (True) veya NMS içermeyen başlığı (False) seç. Gömülü NMS, dynamic=False ile nesne tespiti, bölümleme ve poz tahminini destekler.
dynamicboolFalseDinamik girdi boyutlarına izin verir. Sınıflandırma veya RT-DETR modelleri için desteklenmez ve nms=True ile birleştirilemez.
batchint1Dışa aktarılan modelin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda aynı anda işleyeceği maksimum görüntü sayısını belirtir. 1 üzerindeki değerler dynamic=True gerektirir.
devicestrNoneDışa aktarma cihazını belirtir: GPU (device=0), CPU (device=cpu), Apple silicon için MPS (device=mps).

Dışa aktarma süreci hakkında daha fazla ayrıntı için Ultralytics'in dışa aktarma dokümantasyonu sayfasını ziyaret et.

Neural Engine'i Hedefleme#

CoreML, donanımı MLModelConfiguration.computeUnits aracılığıyla seçer. Ultralytics iOS SDK, iOS 16+ sürümlerinde .all yerine varsayılan olarak .cpuAndNeuralEngine kullanır: gerçek zamanlı bir kamera uygulamasında GPU, önizlemeyi ve katmanları birleştirmekle zaten meşguldür; bu nedenle GPU'yu dışlamak, ANE ağır işi yaparken kaynak çekişmesini ve kare süresi titreşimini önler. .cpuOnly değerini yalnızca uyumluluk testi için sabitle; yukarıdaki tablo bunun maliyetini gösterir.

Bir Mac ana bilgisayarında (Ultralytics veya coremltools aracılığıyla) Python'dan CoreML modeli çalıştırmak da aynı kuralı izler: Ultralytics, ComputeUnit.CPU_AND_NE ile yükler (macOS 13+; daha eski macOS sürümlerinde CPU_ONLY değerine geri döner) ve çıkarımı Neural Engine üzerinde tutar (CPU'dan yaklaşık ~3× daha hızlı). Bu ayrıca, varsayılan ComputeUnit.ALL / CPU_AND_GPU değerlerinin GPU/MPSGraph derleme yolunu eklediği mevcut bir macOS ana bilgisayar sınırlamasını da önler; bu değerler coremltools 9.x üzerinde bir Error: MLIR pass manager failed assertion'ı ile işlemi sonlandırır.

Dışa Aktarılan YOLO26 CoreML Modellerini Dağıtma#

En hızlı yol, Ultralytics iOS uygulamasına ve Flutter eklentisine güç veren aynı Swift paketi olan resmi Ultralytics YOLO iOS SDK'dır. Resmi model adlarını otomatik olarak çözümler, .mlpackage dosyasını indirip önbelleğe alır ve tamamen kodu çözülmüş sonuçlar döndürür:

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
    }
}

Kamera uygulamaları için gerçek zamanlı çıkarımı yerel katmanlarla gerçekleştirmek üzere SDK'nın YOLOView bileşenini ekle veya Android ile tek bir kod tabanını paylaşan platformlar arası uygulamalar için Flutter eklentisini kullan.

Ham bir .mlpackage öğesini kendin entegre etmek de Apple yığınıyla oldukça kolaydır: MLModel ile yükle, bir VNCoreMLRequest içine sar ve görüntüleri VNImageRequestHandler üzerinden aktar. Bu kaynaklar ayrıntıları kapsar:

Modeli uygulama paketine gömülü olarak (anında kullanılabilirlik; nano/küçük modeller için ideal) veya ilk çalıştırmada indirip önbelleğe alınacak şekilde (daha küçük ikili dosya, kolay model güncellemeleri) dağıt. Resmi uygulamalar her iki yaklaşımı birleştirir: varsayılan nano modeller anında kullanım için pakete eklenirken daha büyük varyantlar isteğe bağlı olarak indirilir ve yerel olarak önbelleğe alınır.

Önerilen İş Akışı#

  1. Modelini Ultralytics Train mode ile eğit veya resmi YOLO26 ağırlıklarıyla başla
  2. macOS veya x86 Linux üzerinde model.export(format="coreml", quantize=8, imgsz=640) ile dışa aktar (sınıflandırma için imgsz=224)
  3. Mac üzerinde model.val() ile doğruluğu doğrula ve hedef cihazında bir Xcode Core ML Performans Raporu ile profille
  4. iOS SDK, Flutter eklentisi veya kendi Vision entegrasyonunla .cpuAndNeuralEngine hedefini kullanarak dağıt

Özet#

Bu kılavuzda Ultralytics YOLO26 modellerini CoreML'in .mlpackage formatına nasıl dışa aktaracağını, Apple Neural Engine için nasıl niceleyeceğini ve bunları tek haneli milisaniye gecikmelerinde nasıl dağıtacağını öğrendin — resmi iOS SDK ve Flutter eklentisiyle veya kendi Vision entegrasyonunla. Diğer dağıtım hedefleri için entegrasyon kılavuzu sayfasına göz at ve formatları Benchmark mode ile karşılaştır.

SSS#

  • macOS veya x86 Linux üzerinde Python'da model.export(format="coreml", imgsz=640) komutunu veya CLI'dan yolo export model=yolo26n.pt format=coreml imgsz=640 komutunu çalıştır. Sınıflandırma için imgsz=224 kullan ve resmi uygulama modelleriyle eşleşmesi için quantize=8 ekle. Dışa aktarma, Xcode, iOS SDK veya Flutter eklentisi için hazır bir yolo26n.mlpackage ML Programı üretir.

  • Uygulamanın NMS dahil tespitlere ihtiyacı varsa nms=True kullan. Varsayılan nms=None, uygulamanın işlemesi için ham bire çok çıktıları dışarı aktarır; nms=False ise YOLO26'nın NMS içermeyen başlığını seçer. Gömülü NMS, sabit şekillerle nesne tespiti, bölümleme ve poz tahminini destekler; diğer görevler yerel çıktılarını korur.

  • Resmi Ultralytics uygulama modelleri, indirme boyutunu en aza indiren ve yukarıdaki tablodaki hızlarda çalışan INT8 olarak sunulur. quantize=16 (FP16), temelde hiç doğruluk kaybı olmayan temkinli bir alternatiftir. Dağıtımdan önce tam dışa aktarımını bir Mac üzerinde model.val() ile doğrula.

  • MLModelConfiguration.computeUnits = .cpuAndNeuralEngine değerini ayarla (iOS 16+ için iOS SDK varsayılanı). Kamera uygulamalarında .all kullanmaktan kaçın; GPU önizlemeyi birleştirmekle meşguldür ve çıkarımı burada planlamak kare süresi titreşimine neden olur. Yerleşimi bir Xcode Core ML Performans Raporu ile doğrula.

  • Evet, macOS üzerinde: yolo predict model=yolo26n.mlpackage source=image.jpg ve yolo val model=yolo26n.mlpackage data=coco8.yaml, diğer tüm formatlar gibi çalışır. CoreML yürütmesi Apple donanımı gerektirdiğinden bu modlar Linux ve Windows'ta kullanılamaz.

  • Resmi Ultralytics YOLO iOS SDK (Swift Package) veya Flutter eklentisini kullan. Her ikisi de resmi modelleri adlarına göre otomatik indirme ve önbelleğe alma ile yükler, Neural Engine üzerinde çalıştırır ve eksiksiz gerçek zamanlı kamera arayüzleri içerir; yukarıdaki ölçülen performans tablosu tam olarak bu yığınla oluşturulmuştur.

Yorumlar