YOLO26 Modelleri için CoreML Dışa Aktarımı#
Apple, her modern iPhone, iPad ve Mac'e özel AI silikonu olan Neural Engine'i ekliyor; CoreML de Ultralytics'in bugün modellere bu birimde dağıtım yapmak için desteklediği yol. Ultralytics YOLO26 modellerini CoreML'e dışa aktarmak, eğitilmiş bir .pt kontrol noktasını, yedi YOLO görevinin tamamını düşük gecikmeyle cihazda çalıştıran yerel bir .mlpackage biçimine dönüştürür; ağ bağlantısı gerekmez ve veriler cihazdan ayrılmaz.
Resmî Ultralytics YOLO iOS SDK ve Flutter eklentisi, CoreML dışa aktarımlarını Apple Neural Engine'de kutudan çıktığı gibi çalıştırır: Depth dahil yedi YOLO26 görevinin tümü için gerçek zamanlı kamera çıkarımı, tek görüntü tahmini ve otomatik model indirme sunar. Android NPU dağıtımı için Qualcomm QNN entegrasyonuna bak.
Sınıflandırma modellerini imgsz=224 biçiminde dışa aktar. Algılama, segmentasyon, anlamsal segmentasyon, derinlik, poz ve OBB modellerini imgsz=640 biçiminde dışa aktar. Bu 224/640 standardı, resmi CoreML, LiteRT ve QNN mobil varlıklarında ortaktır.
Apple, iOS 27 ve macOS 27 nesli için yeni Core AI çerçevesini ve .aimodel biçimini tanıttı; Ultralytics bunu format="coreai" ile dışa aktarıyor. CoreML, Ultralytics iOS ve Flutter SDK'larında varsayılan biçim olmayı sürdürüyor; iOS 27 aygıtlarında isteğe bağlı olarak Core AI'ı yüklüyor ve daha geniş Apple aygıt uyumluluğu için biçim olarak kullanılıyor.
İzle: Ultralytics YOLO26'yı INT8 nicelemesiyle CoreML'ye aktarma | Apple dağıtımı | iOS/MacOS 🍎
CoreML nedir?#
CoreML (Apple'ın kullandığı yazımıyla "Core ML"), Apple'ın aygıtta çalışan makine öğrenimi çerçevesidir. Modelleri modern ML Program biçiminde — Ultralytics dışa aktarıcısının oluşturduğu .mlpackage paketinde — yükler ve aygıtın CPU, GPU ve her Apple silikon çipinde bulunan özel NPU olan Apple Neural Engine (ANE) birimleri arasında zamanlar. Her şey yerel olarak çalıştığı için çıkarım çevrimdışı yapılabilir, ağ gecikmesi oluşturmaz ve kullanıcı verileri aygıtta kalır.
CoreML, Apple'ın Vision çerçevesiyle doğrudan tümleşir; Vision, modele aktarım sırasında görüntü ölçeklendirmesini ve yönünü işler. Ultralytics iOS SDK'sının kamera karelerini YOLO'ya neredeyse sıfır ön işleme maliyetiyle aktarması bu sayede mümkün olur.
YOLO26'yı CoreML biçiminde neden dışa aktarmalısın?#
- Neural Engine hızı: CoreML, desteklenen işlemleri düşük gecikmeli aygıt içi çıkarım için Apple'ın Neural Engine biriminde zamanlar. Aşağıdaki fiziksel aygıt tablosuna bak ve kendi dışa aktarımını hedef donanımında ölç.
- Çıktıyı seç: Varsayılan dışa aktarımlar NMS'yi uygulamana bırakır. NMS'yi eklemek için
nms=True, YOLO26'nın NMS içermeyen başlığını kullanmak içinnms=Falsekullan. - Gizli ve çevrimdışı: Tüm hesaplamalar aygıtta yapılır; buluta gidip gelme yoktur, API anahtarı gerekmez ve veri gizliliği tamdır.
- Tek dışa aktarım, tüm ekosistem: Aynı
.mlpackage, iOS, iPadOS, macOS, watchOS, tvOS ve visionOS'ta çalışır; resmi Ultralytics iOS SDK'sını ve Flutter eklentisini destekler.
Ölçülen Performans#
Standartlaştırılmış v8.3.0 YOLO26n INT8 CoreML varlıklarında, 12 GB belleğe ve iOS 26.5.2'ye sahip bir iPhone 17 Pro üzerinde uçtan uca tek görüntü çıkarımı. A19 Pro işlemcisi 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ücrede toplam süre (ön işleme + çıkarım + son işleme, açıklama ekleme hariç) ve altında aşamalara göre süre dağılımı gösterilir. iOS'ta Vision, giriş ölçeklendirmesini çıkarım isteğinin içinde gerçekleştirdiğinden ön işleme süresi 0 olarak bildirilir ve bu maliyet çıkarım süresine dahildir.
| Model | Görev | boyut (piksel) | CPU Core ML .cpuOnly(ms) | CPU + ANE tercih edilir Core ML .cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Segment | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | Anlamsal | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Derinlik | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Sınıflandırma | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-pose | Poz | 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 |
- Tam olarak
v8.3.0sürümündeki varlıklar, sınıflandırma için 224×224, diğer tüm görevler için 640×640 giriş boyutları tanımlar. - Hız değerleri,
bus.jpgüzerinde 3 ısınma çalıştırmasının ardından yapılan 15 çalıştırmanın ortalaması olan tek görüntülü seri çalışma gecikmeleridir. Profil modunda (optimize edilmiş yerel kod) iOS SDK'sının aşama başına zamanlaması kullanılarak, Flutter eklentisinin kıyaslama aracıyla ölçülmüştür. CPU/hızlandırıcı sırası, tek bir sıralı tarama içindeki görevler arasında dönüşümlü olarak değiştirilmiştir. CPU satırlarında Core ML.cpuOnly, CPU + ANE tercih edilen satırlarda ise.cpuAndNeuralEngineistenir; son işlem yerleşimini Core ML belirler. Sürekli gerçek zamanlı kamera kullanımı daha uzun sürer; çünkü yakalama ve ölçeklendirme hattı ile termal dengeye ulaşma süresi de buna dahildir. Standartlaştırma öncesinde yapılan geçmiş bir kamera taramasında aynı aygıtta YOLO26n algılama için kare başına 11.3 ms, YOLO26n derinlik için 16.5 ms ölçülmüştür. Kararlı durum profillemesi için iOS SDK performans belgesine bak. - Android CPU/GPU sonuçlarını LiteRT tümleştirmesinde, Snapdragon NPU sonuçlarını ise Qualcomm QNN tümleştirmesinde karşılaştır.
Desteklenen Görevler#
CoreML dışa aktarımı, Ultralytics'ın yedi görevinin tümünü destekler. Anlamsal segmentasyon ve derinlik kestirimi yalnızca bu başlıkları içeren tek aile olan YOLO26'da kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
YOLO26 Modellerini CoreML Biçiminde Dışa Aktarma#
Kurulum#
Gerekli paketi yüklemek için şu komutu çalıştır:
# Install the required package for YOLO26
pip install ultralyticscoremltools dönüştürücüsü ilk dışa aktarımda 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 biçimi Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. CoreML ile çıkarım ve doğrulama yalnızca macOS'ta çalışır. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Resmi uygulama modelleriyle eşleşen INT8 ağırlık nicelemesiyle CoreML biçiminde dışa aktar
model.export(format="coreml", quantize=8, imgsz=640) # sınıflandırma için imgsz=224 kullanfrom ultralytics import YOLO
# Dışa aktarılan CoreML modelini yükle (macOS)
model = YOLO("yolo26n.mlpackage")
# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Dışa aktarılan CoreML modelini yükle (macOS)
model = YOLO("yolo26n.mlpackage")
# COCO8 veri kümesinde doğruluğu doğrula
metrics = model.val(data="coco8.yaml")Dışa Aktarma Bağımsız Değişkenleri#
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'coreml' | Dışa aktarılan modelin hedef biçimi; çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı, belirli boyutlar içinse (height, width) demeti kullanılabilir. |
quantize | int veya str | None | Niceleme hassasiyeti (CoreML için yalnızca ağırlıklar): 16 (FP16), 8 (INT8), "w8a16" (FP16 etkinleştirmeli INT8 ağırlıklar) veya 32/ayarlanmamış değer (FP32). NMS ML Program'ları FP16 kullanır (Xcode önizlemesi için ve segment ile poz görevlerinde gereklidir); algılama görevinde bu ayarı geçersiz kılmak için 32 değerini geçir. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır. |
nms | bool, isteğe bağlı | None | Ham çıktıyı (None, varsayılan), eklenmiş NMS'yi (True) veya NMS içermeyen başlığı (False) seç. Eklenmiş NMS, dynamic=False ile algılama, segmentasyon ve pozu destekler. |
dynamic | bool | False | Dinamik giriş boyutlarına izin verir. Sınıflandırma veya RT-DETR modellerinde desteklenmez ve nms=True ile birlikte kullanılamaz. |
batch | int | 1 | Dışa aktarılan modelin toplu çıkarım boyutunu veya predict modunda eşzamanlı olarak işleyeceği en fazla görüntü sayısını belirtir. 1 üzerindeki değerler dynamic=True gerektirir. |
device | str | None | Dışa aktarma aygıtını belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.
Neural Engine'i Hedefleme#
CoreML donanımı MLModelConfiguration.computeUnits aracılığıyla seçer. Ultralytics iOS SDK'sı, iOS 16 ve sonraki sürümlerde .all yerine varsayılan olarak .cpuAndNeuralEngine kullanır: gerçek zamanlı kamera uygulamasında GPU, önizlemeyi ve katmanları birleştirmekle zaten meşguldür. Bu nedenle GPU'yu devre dışı bırakmak, ANE ağır işleri üstlenirken kaynak çekişmesini ve kare süresi dalgalanmasını önler. .cpuOnly değerini yalnızca uyumluluk testi için sabitle; maliyetini yukarıdaki tabloda görebilirsin.
Mac ana bilgisayarda Python'dan (Ultralytics veya coremltools aracılığıyla) CoreML modeli çalıştırmak da aynı kurala uyar: Ultralytics, ComputeUnit.CPU_AND_NE ile yükleme yapar (macOS 13 ve sonrasında; daha eski macOS sürümlerinde CPU_ONLY değerine geri döner) ve çıkarımı Neural Engine'de tutar (CPU'dan yaklaşık ~3× daha hızlı). Böylece, GPU/MPSGraph derleme yolunu ekleyen varsayılan ComputeUnit.ALL / CPU_AND_GPU seçeneklerinin coremltools 9.x üzerinde Error: MLIR pass manager failed doğrulama hatasıyla süreci sonlandırdığı güncel macOS ana bilgisayar sınırlaması da önlenir.
Dışa Aktarılan YOLO26 CoreML Modellerini Dağıtma#
En hızlı yol, Ultralytics iOS uygulamasına ve Flutter eklentisine güç veren Swift paketi olan resmi Ultralytics YOLO iOS SDK'sıdır. Resmi model adlarını otomatik olarak çözümler, .mlpackage dosyasını indirip önbelleğe alır ve tamamen çözümlenmiş 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ında, yerel katmanlarla gerçek zamanlı çıkarım için SDK'nın YOLOView bileşenini ekle veya Android ile aynı kod tabanını paylaşan platformlar arası uygulamalar için Flutter eklentisini kullan.
Ham bir .mlpackage modelini kendin tümleştirmek de Apple araçlarıyla oldukça kolaydır: modeli MLModel ile yükle, bir VNCoreMLRequest içine sar ve görüntüleri VNImageRequestHandler üzerinden aktar. Ayrıntılar için şu kaynaklara bak:
- Bir Core ML Modelini Uygulamana Tümleştirme: CoreML modelini uygulama paketine ekleme ve çağırma konusunda Apple'ın kılavuzu.
- CoreML Tools: Bu dışa aktarıma güç veren
coremltoolsaraç zinciri için dönüştürme, niceleme ve optimizasyon başvuru kaynağı. - Xcode Core ML Performans Raporları: Modelin ve aygıtının tam sürümü için katman başına aygıt yerleşimi ve gecikme profillemesi.
Modeli uygulama paketine gömülü olarak (anında kullanılabilirlik; nano/küçük modeller için ideal) ya da ilk çalıştırmada indirilip ö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 hemen kullanılabilmesi için pakete eklenirken daha büyük varyantlar isteğe bağlı olarak indirilir ve yerel önbelleğe alınır.
Önerilen İş Akışı#
- Modelini Ultralytics Eğit moduyla eğit veya resmi YOLO26 ağırlıklarıyla başla
- macOS veya x86 Linux'ta
model.export(format="coreml", quantize=8, imgsz=640)ile dışa aktar (sınıflandırma içinimgsz=224kullan) - Bir Mac'te
model.val()ile doğruluğu doğrula ve hedef aygıtında Xcode Core ML Performans Raporu ile profilleme yap .cpuAndNeuralEnginebiçimini hedefleyerek iOS SDK'sı, Flutter eklentisi veya kendi Vision tümleştirmenle dağıt
Özet#
Bu kılavuzda Ultralytics YOLO26 modellerini CoreML'nin .mlpackage biçiminde nasıl dışa aktaracağını, Apple Neural Engine için nasıl niceleyeceğini ve resmi iOS SDK'sı ile Flutter eklentisi ya da kendi Vision tümleştirmen üzerinden tek haneli milisaniye gecikmelerle nasıl dağıtacağını öğrendin. Diğer dağıtım hedefleri için tümleştirme kılavuzu sayfasına göz at ve biçimleri Kıyaslama moduyla karşılaştır.
Sık Sorulan Sorular#
macOS veya x86 Linux'ta Python'da
model.export(format="coreml", imgsz=640)komutunu ya da CLI'dayolo export model=yolo26n.pt format=coreml imgsz=640komutunu çalıştır. Sınıflandırma içinimgsz=224kullan ve resmi uygulama modelleriyle eşleşmesi içinquantize=8ekle. Dışa aktarma işlemi, Xcode, iOS SDK'sı veya Flutter eklentisi için kullanıma hazır biryolo26n.mlpackageML Program oluşturur.Uygulamanın NMS dahil algılama çıktıları alması gerekiyorsa
nms=Truekullan. Varsayılannms=None, uygulamanın işlemesi için ham bire-çok çıktılar üretir;nms=False, YOLO26'nın NMS içermeyen başlığını seçer. Eklenmiş NMS, sabit şekillerle algılama, segmentasyon ve pozu destekler; diğer görevler yerel çıktılarını korur.Resmi Ultralytics uygulama modelleri INT8 olarak sunulur; bu, indirme boyutunu en aza indirir ve yukarıdaki tabloda yer alan hızlarda çalışır.
quantize=16(FP16), neredeyse hiç doğruluk kaybı olmadan kullanılabilecek temkinli bir alternatiftir. Yayına almadan önce kendi dışa aktarımını bir Mac'temodel.val()ile doğrula.MLModelConfiguration.computeUnits = .cpuAndNeuralEnginedeğerini ayarla (iOS 16 ve sonraki sürümlerde iOS SDK'sının varsayılanı). Kamera uygulamalarında.allkullanmaktan kaçın; önizlemeyi birleştirmekle meşgul olan GPU'da çıkarım zamanlamak kare süresinde dalgalanmaya neden olur. Aygıt yerleşimini bir Xcode Core ML Performans Raporuyla doğrula.Evet, macOS'ta:
yolo predict model=yolo26n.mlpackage source=image.jpgveyolo val model=yolo26n.mlpackage data=coco8.yaml, diğer biçimlerde olduğu gibi çalışır. CoreML çalıştırmak için Apple donanımı gerekir; bu nedenle bu modlar Linux ve Windows'ta kullanılamaz.Resmi Ultralytics YOLO iOS SDK'sını (Swift Package) veya Flutter eklentisini kullan. Her ikisi de resmi modelleri ada göre yükler, otomatik indirme ve önbelleğe alma özellikleri sunar, modelleri Neural Engine'de çalıştırır ve gerçek zamanlı kamera için eksiksiz arayüzler içerir. Yukarıdaki performans tablosu tam olarak bu araç yığınıyla oluşturulmuştur.