Ultralytics YOLO27:

تصدير نماذج YOLO26 إلى CoreML#

تضمّن Apple شرائح مخصصة للذكاء الاصطناعي — وهي Neural Engine — في كل iPhone وiPad وMac حديث، وتُعدّ CoreML المسار المدعوم من Ultralytics لنشر النماذج عليها اليوم. يؤدي تصدير نماذج Ultralytics YOLO26 إلى CoreML إلى تحويل نقطة تحقق .pt مدرَّبة إلى .mlpackage أصلية تشغّل مهام YOLO السبع على الجهاز بزمن استجابة منخفض، من دون اتصال بالشبكة ومن دون مغادرة أي بيانات للجهاز.

شغّل YOLO على Apple Neural Engine اليوم باستخدام تطبيقات الهاتف الرسمية

يشغّل Ultralytics YOLO iOS SDK الرسمي وإضافة Flutter عمليات تصدير CoreML على Apple Neural Engine مباشرةً — لاستدلال الكاميرا في الوقت الفعلي، والتنبؤ بصورة واحدة، والتنزيل التلقائي للنموذج لجميع مهام YOLO26 السبع، بما فيها Depth. لنشر النماذج على NPU في Android، راجع تكامل Qualcomm QNN.

أحجام الإدخال الرسمية للهاتف

صدّر نماذج التصنيف بحجم imgsz=224. وصدّر نماذج الكشف والتجزئة والتجزئة الدلالية والعمق ووضعية الجسم وOBB بحجم imgsz=640. ويُستخدم هذا المعيار 224/640 في أصول CoreML وLiteRT وQNN الرسمية للهاتف.

تنسيق Core AI الجديد من Apple

قدّمت Apple إطار Core AI وتنسيق .aimodel الجديدين لجيل iOS 27 وmacOS 27، وتُصدّرهما Ultralytics باستخدام format="coreai". يظل CoreML التنسيق الموصى به لـ Ultralytics iOS وFlutter SDK وللتوافق الأوسع مع أجهزة Apple.



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

ما هو CoreML؟#

Apple CoreML deployment pipeline

CoreML (تسميه Apple ‏"Core ML") هو إطار التعلم الآلي على الجهاز من Apple. ويحمّل النماذج بتنسيق ML Program الحديث — وهو الحزمة .mlpackage التي يُنتجها مُصدِّر Ultralytics — ويجدول تشغيلها عبر CPU وGPU وApple Neural Engine (ANE)، وهو NPU مخصص في كل شريحة من شرائح Apple silicon. وبما أن كل شيء يعمل محليًا، يعمل الاستدلال دون اتصال، ولا يضيف زمن استجابة للشبكة، ويحافظ على بيانات المستخدم على الجهاز.

يتكامل CoreML مباشرةً مع إطار Vision من Apple، الذي يتولى تغيير حجم الصورة واتجاهها عند إدخالها إلى النموذج — وهذه هي الطريقة التي يمرر بها Ultralytics iOS SDK إطارات الكاميرا إلى YOLO بتكلفة معالجة مسبقة تساوي فعليًا صفرًا.

لماذا تُصدِّر YOLO26 إلى CoreML؟#

  • سرعة Neural Engine: يجدول CoreML العمليات المدعومة على Neural Engine من Apple لتحقيق استدلال على الجهاز بزمن استجابة منخفض. راجع جدول الأجهزة الفعلية أدناه، وقِس أداء عملية التصدير الدقيقة على العتاد المستهدف.
  • اختر الإخراج: الصادرات الافتراضية تترك خوارزمية NMS لتطبيقك. استخدم nms=True لتضمين خوارزمية NMS، أو nms=False لرأس YOLO26 الخالي من خوارزمية NMS.
  • خاص ويعمل دون اتصال: تبقى جميع العمليات الحسابية على الجهاز — دون اتصالات سحابية ذهابًا وإيابًا، ودون مفاتيح API، مع خصوصية كاملة للبيانات.
  • تصدير واحد للنظام البيئي بأكمله: يعمل .mlpackage نفسه على iOS وiPadOS وmacOS وwatchOS وtvOS وvisionOS، ويشغّل iOS SDK الرسمي من Ultralytics وإضافة Flutter.

الأداء المُقاس#

استدلال شامل لصورة واحدة باستخدام أصول CoreML القياسية v8.3.0 من YOLO26n INT8 على iPhone 17 Pro بذاكرة 12 GB ونظام iOS 26.5.2. يحتوي A19 Pro على CPU سداسي النوى (نواتا أداء و4 نوى كفاءة)، وGPU سداسي النوى مع Neural Accelerators، وNeural Engine سداسي عشري النوى. تعرض كل خلية الوقت الإجمالي (المعالجة المسبقة + الاستدلال + المعالجة اللاحقة، باستثناء التعليق التوضيحي)، مع تقسيم المراحل أسفلها. في iOS، ينفذ Vision تغيير حجم الإدخال داخل طلب الاستدلال، لذا تُعرض المعالجة المسبقة بقيمة 0 وتُدرج تكلفتها ضمن الاستدلال.

النموذجالمهمةالحجم
(بكسل)
CPU
Core ML .cpuOnly
(مللي ثانية)
CPU + ANE المفضل
Core ML .cpuAndNeuralEngine
(مللي ثانية)
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-semدلالي6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthالعمق64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsالتصنيف2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-poseالوضعية64011.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
  • تعلن أصول الإصدار الدقيقة v8.3.0 عن مدخلات بحجم 224×224 للتصنيف و640×640 لكل مهمة أخرى.
  • قيم السرعة هي أزمنة استجابة متتالية لصورة واحدة — أي متوسط 15 تشغيلًا بعد 3 عمليات إحماء على bus.jpg، مقاسةً عبر توقيت المراحل في iOS SDK باستخدام أداة القياس في إضافة Flutter في وضع الملف التعريفي (تعليمة أصلية محسّنة). وقد تناوب ترتيب CPU/المسرّع بين المهام ضمن مسح تسلسلي واحد. تطلب صفوف CPU ‏Core ML .cpuOnly، بينما تطلب صفوف CPU + ANE المفضلة .cpuAndNeuralEngine، مع تحكم Core ML في التوزيع النهائي للعمليات. ويعمل تشغيل الكاميرا المستمر في الوقت الفعلي بزمن أعلى لأنه يتضمن مسار الالتقاط وتغيير الحجم، إضافةً إلى استقرار الحرارة. وقد سجّل مسح تاريخي للكاميرا، أُجري قبل اعتماد المعيار، 11.3 مللي ثانية/إطار لـ YOLO26n detect و16.5 مللي ثانية/إطار لـ YOLO26n Depth على الجهاز نفسه — راجع مستند أداء iOS SDK لقياس الأداء في الحالة المستقرة.
  • قارن نتائج CPU/GPU على Android في تكامل LiteRT، ونتائج Snapdragon NPU في تكامل Qualcomm QNN.

المهام المدعومة#

يدعم تصدير CoreML مهام Ultralytics السبع كلها. ولا يتوفر التقسيم الدلالي وتقدير العمق إلا مع YOLO26، وهي العائلة الوحيدة التي تتضمن رأسيْن لهاتين المهمتين.

المهمةYOLOv8YOLO11YOLO26
الكشف
التجزئة
الدلالي
العمق
التصنيف
الوضعية
OBB

تصدير نماذج YOLO26 إلى CoreML#

التثبيت#

لتثبيت الحزمة المطلوبة، نفّذ:

التثبيت
# Install the required package for YOLO26
pip install ultralytics

يُثبَّت المحوِّل coremltools تلقائيًا عند أول عملية تصدير. ويُجرى التصدير على macOS أو Linux x86؛ وللحصول على إرشادات مفصلة وأفضل الممارسات، راجع دليل التثبيت ودليل المشكلات الشائعة.

الاستخدام#

يدعم تنسيق CoreML أوضاع Export وPredict وValidate. ويعمل الاستدلال والتحقق باستخدام CoreML على macOS فقط. صدّر نموذجك، ثم حمّل النموذج المُصدَّر لتشغيل الاستدلال أو التحقق من دقته.

التصدير
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
التنبؤ
from 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")

وسائط التصدير#

الوسيطةالنوعالافتراضيالوصف
formatstr'coreml'التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع بيئات النشر المختلفة.
imgszint أو tuple640حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة أو صفًا (height, width) لأبعاد محددة.
quantizeint أو strNoneدقة التكميم (للأوزان فقط في CoreML): 16 ‏(FP16)، أو 8 ‏(INT8)، أو "w8a16" ‏(أوزان INT8 مع عمليات تنشيط FP16)، أو 32/غير محدد ‏(FP32). تستخدم ML Programs الخاصة بـ NMS قيمة FP16 (لمعاينة Xcode، وهي مطلوبة للتجزئة ووضعية الجسم)؛ مرّر 32 للتجاوز في الكشف. ويحل هذا محل العلامتَين المهجورتَين half/int8.
nmsbool، اختياريNoneحدد الإخراج الخام (None، الافتراضي)، أو خوارزمية NMS المضمنة (True)، أو الرأس الخالي من خوارزمية NMS (False). تدعم خوارزمية NMS المضمنة الكشف والتجزئة ووضعيات الحركة باستخدام dynamic=False.
dynamicboolFalseيسمح بأحجام إدخال ديناميكية. لا يتم دعم هذه الميزة لننماذج التصنيف أو نماذج RT-DETR، ولا يمكن دمجها مع nms=True.
batchint1يحدد حجم الاستدلال الدفعي لنموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict. القيم التي تزيد عن 1 تتطلب dynamic=True.
devicestrNoneيحدد الجهاز المستخدم للتصدير: GPU ‏(device=0)، أو CPU ‏(device=cpu)، أو MPS لشرائح Apple silicon ‏(device=mps).

لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة توثيق Ultralytics حول التصدير.

استهداف Neural Engine#

يختار CoreML العتاد عبر MLModelConfiguration.computeUnits. ويستخدم Ultralytics iOS SDK افتراضيًا .cpuAndNeuralEngine على iOS 16 والإصدارات الأحدث بدلًا من .all: ففي تطبيق كاميرا يعمل في الوقت الفعلي، يكون GPU مشغولًا بتركيب المعاينة والتراكبات، لذا يؤدي استبعاده إلى تجنب التنافس وتذبذب زمن الإطار، بينما يتولى ANE العمل المكثف. ثبّت .cpuOnly لاختبار التوافق فقط — يوضح الجدول أعلاه تكلفته.

يتبع تشغيل نموذج CoreML من Python على مضيف Mac (عبر Ultralytics أو coremltools) القاعدة نفسها: يحمّله Ultralytics باستخدام ComputeUnit.CPU_AND_NE (macOS 13 والإصدارات الأحدث، مع الرجوع إلى CPU_ONLY في إصدارات macOS الأقدم)، مما يحافظ على الاستدلال في Neural Engine (أسرع بنحو ~3× من CPU). ويتجنب هذا أيضًا قيدًا حاليًا في مضيف macOS، حيث تؤدي ComputeUnit.ALL / CPU_AND_GPU الافتراضية — التي تضيف مسار تجميع GPU/MPSGraph — إلى إيقاف العملية بسبب تأكيد Error: MLIR pass manager failed على coremltools ‏9.x.

نشر نماذج YOLO26 CoreML المُصدَّرة#

أسرع مسار هو Ultralytics YOLO iOS SDK الرسمي، وهو حزمة Swift نفسها التي تشغّل تطبيق Ultralytics لنظام iOS وإضافة Flutter. إذ يحل أسماء النماذج الرسمية تلقائيًا، وينزّل .mlpackage ويخزّنه مؤقتًا، ويعيد نتائج مفكوكة الترميز بالكامل:

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

بالنسبة إلى تطبيقات الكاميرا، أضف YOLOView من SDK للاستدلال في الوقت الفعلي مع تراكبات أصلية، أو استخدم إضافة Flutter للتطبيقات متعددة المنصات التي تشارك قاعدة شيفرة واحدة مع Android.

كما أن دمج .mlpackage الخام بنفسك سهل باستخدام حزمة Apple — حمّله باستخدام MLModel، وغلّفه في VNCoreMLRequest، ومرّر الصور عبر VNImageRequestHandler. وتغطي الموارد التالية التفاصيل:

انشر النموذج إما مضمّنًا في حزمة التطبيق (إتاحة فورية، ومثالي للنماذج الصغيرة جدًا/الصغيرة) أو نزّله عند التشغيل الأول وخزّنه مؤقتًا (ملف ثنائي أصغر وتحديثات سهلة للنموذج). تجمع التطبيقات الرسمية بين النهجين: إذ تُضمَّن نماذج nano الافتراضية للاستخدام الفوري، بينما تُنزَّل المتغيرات الأكبر عند الطلب وتُخزَّن محليًا مؤقتًا.

سير العمل الموصى به#

  1. درّب نموذجك باستخدام وضع Train في Ultralytics، أو ابدأ بأوزان YOLO26 الرسمية
  2. صدّر باستخدام model.export(format="coreml", quantize=8, imgsz=640) على macOS أو Linux x86 ‏(imgsz=224 للتصنيف)
  3. تحقق من الدقة باستخدام model.val() على Mac، وقِس الأداء باستخدام تقرير أداء Core ML في Xcode على جهازك المستهدف
  4. انشر باستخدام iOS SDK أو إضافة Flutter أو تكامل Vision الخاص بك، مع استهداف .cpuAndNeuralEngine

الملخص#

في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO26 إلى تنسيق .mlpackage في CoreML، وتكميمها من أجل Apple Neural Engine، ونشرها بأزمنة استجابة من خانة واحدة بالمللي ثانية — إما عبر iOS SDK وإضافة Flutter الرسميين أو عبر تكامل Vision الخاص بك. لأهداف النشر الأخرى، تصفح صفحة دليل التكامل، وقارن التنسيقات باستخدام وضع Benchmark.

الأسئلة الشائعة#

  • شغّل model.export(format="coreml", imgsz=640) في Python أو yolo export model=yolo26n.pt format=coreml imgsz=640 من CLI على macOS أو Linux x86. استخدم imgsz=224 للتصنيف وأضف quantize=8 لمطابقة نماذج التطبيقات الرسمية. ينتج التصدير yolo26n.mlpackage، وهو ML Program جاهز لـ Xcode أو iOS SDK أو إضافة Flutter.

  • استخدم nms=True إذا كان تطبيقك يحتاج إلى عمليات الكشف مع تضمين خوارزمية NMS. يقوم الخيار الافتراضي nms=None بتصدير مخرجات خام من واحد إلى متعدد ليقوم تطبيقك معالجتها؛ بينما يحدد nms=False رأس YOLO26 الخالي من خوارزمية NMS. تدعم خوارزمية NMS المضمنة الكشف والتجزئة ووضعيات الحركة بأشكال ثابتة؛ بينما تحتفظ المهام الأخرى بمخرجاتها الأصلية.

  • تأتي نماذج تطبيق Ultralytics الرسمية بصيغة INT8، مما يقلل حجم التنزيل إلى الحد الأدنى ويشغّلها بالسرعات الموضحة في الجدول أعلاه. ويُعد quantize=16 ‏(FP16) بديلًا محافظًا لا يسبب تقريبًا أي فقدان في الدقة. تحقّق من عملية التصدير الدقيقة باستخدام model.val() على Mac قبل النشر.

  • اضبط MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (وهو الإعداد الافتراضي لـ iOS SDK على iOS 16 والإصدارات الأحدث). تجنب .all في تطبيقات الكاميرا — إذ يكون GPU مشغولًا بتركيب المعاينة، وجدولة الاستدلال عليه تسبب تذبذب زمن الإطار. أكّد موضع التنفيذ باستخدام تقرير أداء Core ML في Xcode.

  • نعم، على macOS: يعمل yolo predict model=yolo26n.mlpackage source=image.jpg وyolo val model=yolo26n.mlpackage data=coco8.yaml مثل أي تنسيق آخر. يتطلب تنفيذ CoreML عتاد Apple، لذا لا يتوفر هذان الوضعان على Linux وWindows.

  • استخدم Ultralytics YOLO iOS SDK الرسمي (حزمة Swift) أو إضافة Flutter. يحمّل كلاهما النماذج الرسمية بالاسم مع التنزيل والتخزين المؤقت التلقائيين، ويشغلهما على Neural Engine، ويتضمنان واجهات كاميرا كاملة في الوقت الفعلي — وقد أُنتج جدول الأداء المقاس أعلاه باستخدام هذه الحزمة بالضبط.

التعليقات