Link to this sectionتصدير CoreML لنماذج YOLO26#
توفر Apple وحدات سيليكون مخصصة للذكاء الاصطناعي — المحرك العصبي (Neural Engine) — في كل أجهزة iPhone وiPad وMac الحديثة، ويُعد CoreML الطريقة الوحيدة لبرمجتها. يؤدي تصدير نماذج Ultralytics YOLO26 إلى CoreML إلى تحويل نقطة فحص .pt المدربة إلى حزمة .mlpackage أصلية تشغل مهام YOLO الست جميعها على الجهاز في غضون أجزاء من الثانية (ميللي ثانية)، دون الحاجة إلى اتصال بالشبكة ودون خروج أي بيانات من الجهاز.
تعمل حزمة Ultralytics YOLO iOS SDK الرسمية وإضافة Flutter على تشغيل صادرات CoreML على المحرك العصبي من Apple مباشرة — بما في ذلك الاستنتاج من الكاميرا في الوقت الفعلي، وتوقع الصور الفردية، والتنزيل التلقائي للنماذج لجميع مهام YOLO26 الست. لنشر النموذج على معالجات NPU في أجهزة Android، راجع تكامل Qualcomm QNN.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Link to this sectionما هو CoreML؟#
CoreML (يُشار إليه بـ "Core ML" من قِبل Apple) هو إطار عمل Apple للتعلم الآلي على الجهاز. يقوم بتحميل النماذج بتنسيق ML Program الحديث — وهو حزمة .mlpackage التي ينتجها مُصدر Ultralytics — ويجدولها عبر وحدة المعالجة المركزية (CPU)، ووحدة معالجة الرسومات (GPU)، والمحرك العصبي من Apple (ANE)، وهو معالج NPU المخصص في كل شريحة من شرائح Apple Silicon. نظرًا لأن كل شيء يعمل محليًا، فإن الاستنتاج يعمل دون اتصال بالإنترنت، ولا يضيف أي زمن وصول للشبكة، ويُبقي بيانات المستخدم على الجهاز.
يتكامل CoreML مباشرة مع إطار عمل Vision من Apple، والذي يتولى تغيير حجم الصور وتوجيهها في طريقها إلى النموذج — وهذه هي الطريقة التي تقوم بها حزمة Ultralytics iOS SDK بتغذية إطارات الكاميرا إلى YOLO بتكلفة معالجة مسبقة صفرية فعليًا.
Link to this sectionلماذا نقوم بتصدير YOLO26 إلى CoreML؟#
- سرعة المحرك العصبي: يعمل اكتشاف YOLO26n من البداية إلى النهاية في 3.8 مللي ثانية على جهاز iPhone 17 Pro للصور الفردية، وحوالي 16 مللي ثانية/إطار في الاستخدام المستمر للكاميرا في الوقت الفعلي (راجع الجدول والملاحظات أدناه) — مما يوفر أداءً حقيقيًا في الوقت الفعلي مع مساحة كافية لبقية تطبيقك.
- خالٍ من NMS بالتصميم: نموذج YOLO26 شامل، لذا لا يحتاج الرسم البياني المُصدّر إلى خط أنابيب NMS، ويكون فك التشفير في أقل من ميلي ثانية. النماذج الأقدم مثل YOLO11 يمكنها تضمين خط أنابيب CoreML NMS باستخدام
nms=True. - خصوصية وغير متصل بالإنترنت: تبقى جميع العمليات الحسابية على الجهاز — لا توجد رحلات ذهاب وإياب إلى السحابة، ولا مفاتيح API، وخصوصية بيانات كاملة.
- تصدير واحد، النظام البيئي بأكمله: تعمل حزمة
.mlpackageنفسها على أنظمة iOS وiPadOS وmacOS وwatchOS وtvOS وvisionOS، وتدعم حزمة iOS SDK الرسمية من Ultralytics وإضافة Flutter.
Link to this sectionالأداء المقاس#
استنتاج الصور الفردية من البداية إلى النهاية لنماذج YOLO26n INT8 CoreML الرسمية على جهاز iPhone 17 Pro (Apple A19، نظام iOS 26.5). يُظهر كل خلية الوقت الإجمالي (المعالجة المسبقة + الاستنتاج + المعالجة اللاحقة، باستثناء التعليقات التوضيحية) مع تقسيم التكلفة لكل مرحلة تحتها. على نظام iOS، يقوم إطار Vision بتغيير حجم المدخلات داخل طلب الاستنتاج، لذا يتم الإبلاغ عن المعالجة المسبقة كـ 0 ويتم تضمين تكلفتها في الاستنتاج.
| النموذج | المهمة | الحجم (بكسل) | CPU.cpuOnly(مللي ثانية) | المحرك العصبي.cpuAndNeuralEngine(مللي ثانية) |
|---|---|---|---|---|
| YOLO26n | اكتشاف | 640 | 9.1 0.0 / 9.1 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-seg | تجزئة | 640 | 12.3 0.0 / 12.1 / 0.2 | 4.8 0.0 / 4.5 / 0.3 |
| YOLO26n-sem | دلالي (Semantic) | 10241 | 21.8 0.0 / 21.0 / 0.8 | 12.1 0.0 / 11.3 / 0.8 |
| YOLO26n-cls | تصنيف | 224 | 2.2 0.0 / 2.2 / 0.0 | 2.0 0.0 / 2.0 / 0.0 |
| YOLO26n-pose | وضعية | 640 | 12.0 0.0 / 11.9 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-obb | OBB | 1024 | 21.7 0.0 / 21.7 / 0.0 | 7.2 0.0 / 7.2 / 0.0 |
- 1 تقوم صادرات CoreML الدلالية بتضمين ArgMax في الرسم البياني وإرجاع خريطة فئة مدمجة كاملة الدقة (
[1, 1024, 1024]) بدلاً من أرقام float logits، بحيث تكون المعالجة اللاحقة عبارة عن مسح لوني يستغرق أقل من ميلي ثانية، وتظهر الأقنعة بدقة بكسل حادة. - قيم Speed هي زمن استجابة دفعات الصور الفردية — متوسط 15 تشغيلاً بعد 3 تشغيلات إحماء على
bus.jpg، تم قياسها من خلال توقيت كل مرحلة في iOS SDK's عبر أداة القياس Flutter plugin's في وضع ملف التعريف (برمجة أصلية مُحسّنة). تعمل عمليات الكاميرا المستمرة في الوقت الفعلي بمعدلات أعلى (مع إضافة letterboxing لكامل المستشعر في كل إطار بالإضافة إلى الاستقرار الحراري): حيث تقيس YOLO26n detect حوالي 16 مللي ثانية/إطار في تطبيق الكاميرا المباشر على نفس الجهاز — راجع iOS SDK performance doc لمعرفة المزيد عن توصيف الحالة المستقرة. - يوجد جدول مطابقة Snapdragon CPU/GPU/NPU في تكامل Qualcomm QNN.
Link to this sectionتصدير نماذج YOLO26 إلى CoreML#
Link to this sectionالتثبيت#
لتثبيت الحزمة المطلوبة، قم بتشغيل:
# Install the required package for YOLO26
pip install ultralyticsيتم تثبيت محول coremltools تلقائيًا عند التصدير الأول. يعمل التصدير على macOS أو x86 Linux؛ للحصول على تعليمات مفصلة وأفضل الممارسات، راجع دليل التثبيت ودليل المشكلات الشائعة.
Link to this sectionالاستخدام#
يدعم تنسيق CoreML أوضاع التصدير، والتنبؤ، والتحقق. يتم تشغيل الاستنتاج والتحقق باستخدام CoreML على نظام macOS فقط. قم بتصدير نموذجك، ثم قم بتحميل النموذج المُصدر لتشغيل الاستنتاج أو التحقق من دقتها.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML (FP16 by default); quantize=8 matches the official app models
model.export(format="coreml", quantize=8) # creates 'yolo26n.mlpackage'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")Link to this sectionوسائط التصدير#
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'coreml' | التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لمدخل النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو زوجاً مرتباً (height, width) لأبعاد محددة. |
quantize | int أو str | None | دقة التكميم (للأوزان فقط في CoreML): 16 (FP16)، 8 (INT8)، "w8a16" (أوزان INT8 مع تنشيطات FP16)، أو 32/غير محدد (FP32). تستبدل علامات half/int8 التي تم إيقاف العمل بها. |
nms | bool | False | يُضمن خط أنابيب CoreML NMS. غير مطلوب لنماذج YOLO26 التي لا تحتاج إلى NMS؛ استخدمه للنماذج الأقدم مثل YOLO11. |
dynamic | bool | False | يسمح بأحجام إدخال ديناميكية، مما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة. |
batch | int | 1 | يحدد حجم استدلال دفعة النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict. |
device | str | None | يحدد الجهاز للتصدير: GPU (device=0)، CPU (device=cpu)، أو MPS لأجهزة Apple silicon (device=mps). |
لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة وثائق Ultralytics حول التصدير.
Link to this sectionاستهداف المحرك العصبي#
يختار CoreML الأجهزة عبر MLModelConfiguration.computeUnits. تقوم حزمة Ultralytics iOS SDK افتراضيًا بضبط .cpuAndNeuralEngine على iOS 16+ بدلاً من .all: في تطبيق كاميرا الوقت الفعلي، تكون وحدة معالجة الرسومات مشغولة بالفعل بتركيب المعاينة والتراكبات، لذا فإن استبعادها يتجنب التنافس وتقلب وقت الإطارات بينما يقوم المحرك العصبي (ANE) بالعمل الثقيل. استخدم .cpuOnly فقط لاختبار التوافق — يوضح الجدول أعلاه التكلفة المترتبة على ذلك.
يتبع تشغيل نموذج CoreML من Python على Mac host (عبر Ultralytics أو coremltools) نفس القاعدة: يتم تحميل Ultralytics باستخدام ComputeUnit.CPU_AND_NE (على نظام macOS 13+، مع العودة إلى CPU_ONLY في إصدارات macOS الأقدم)، مما يحافظ على الاستدلال على المحرك العصبي (أسرع بحوالي 3 مرات من وحدة المعالجة المركزية CPU). وهذا يتجنب أيضاً قيوداً حالية في مضيف macOS حيث أن الإعداد الافتراضي ComputeUnit.ALL / CPU_AND_GPU — الذي يضيف مسار ترجمة GPU/MPSGraph — يؤدي إلى إجهاض العملية مع خطأ تأكيدي Error: MLIR pass manager failed على coremltools 9.x.
Link to this sectionنشر نماذج 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 الخاصة بالحزمة للاستنتاج في الوقت الفعلي مع تراكبات أصلية، أو استخدم إضافة Flutter للتطبيقات عبر الأنظمة الأساسية التي تشترك في قاعدة كود واحدة مع Android.
يُعد دمج حزمة .mlpackage خام بنفسك أمرًا مباشرًا أيضًا باستخدام مكدس Apple — قم بتحميلها باستخدام MLModel وقم بتغليفها في VNCoreMLRequest وقم بتغذية الصور من خلال VNImageRequestHandler. تغطي هذه الموارد التفاصيل:
- دمج نموذج Core ML في تطبيقك: دليل Apple لتجميع واستدعاء نموذج CoreML.
- أدوات CoreML: مرجع التحويل والتكميم والتحسين لمجموعة أدوات
coremltoolsالتي تدعم هذا التصدير. - تقارير أداء Core ML في Xcode: تحديد موضع الجهاز لكل طبقة وتحليل زمن انتقال النموذج والجهاز الخاص بك.
قم بشحن النموذج إما مضمنًا في حزمة التطبيق (توفر فوري، مثالي للنماذج الصغيرة/النانو) أو تم تنزيله عند التشغيل الأول وتخزينه مؤقتًا (ملف ثنائي أصغر، تحديثات سهلة للنماذج) — تستخدم التطبيقات الرسمية النهج الثاني مع أصول إصدار GitHub.
Link to this sectionسير العمل الموصى به#
- درب نموذجك باستخدام وضع التدريب في Ultralytics، أو ابدأ من أوزان YOLO26 الرسمية
- تصدير باستخدام
model.export(format="coreml", quantize=8)على macOS أو Linux x86 - تحقق من الدقة باستخدام
model.val()على جهاز Mac، وقم بالتحليل باستخدام تقرير أداء Core ML في Xcode على جهازك المستهدف - انشر النموذج باستخدام iOS SDK، أو إضافة Flutter، أو تكامل Vision الخاص بك، مع استهداف
.cpuAndNeuralEngine
Link to this sectionملخص#
في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO26 إلى تنسيق .mlpackage الخاص بـ CoreML، وتكميمها للمحرك العصبي من Apple، ونشرها بزمن انتقال من خانة واحدة من الميللي ثانية — سواء من خلال iOS SDK الرسمية وإضافة Flutter أو تكامل Vision الخاص بك. لأهداف نشر أخرى، تصفح صفحة دليل التكامل، وقارن بين التنسيقات باستخدام وضع القياس.
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف أقوم بتصدير نماذج YOLO26 إلى تنسيق CoreML؟#
قم بتشغيل model.export(format="coreml") في Python أو yolo export model=yolo26n.pt format=coreml من CLI على macOS أو Linux x86. أضف quantize=8 لمطابقة نماذج التطبيق الرسمية. ينتج التصدير ملف yolo26n.mlpackage كـ ML Program جاهز للاستخدام في Xcode أو iOS SDK أو إضافة Flutter.
Link to this sectionهل أحتاج إلى nms=True عند تصدير YOLO26؟#
لا. نموذج YOLO26 متكامل ولا يحتاج إلى NMS، لذا فإن المخطط المُصدر يصدر بالفعل اكتشافات نهائية وتكاليف فك التشفير أقل من مللي ثانية. يوجد خيار nms=True للنماذج السابقة مثل YOLO11، حيث يقوم بتضمين خط أنابيب CoreML NMS حتى لا يضطر تطبيقك إلى تنفيذ القمع.
Link to this sectionأي دقة يجب أن أستخدمها — FP16 أم INT8؟#
تأتي نماذج تطبيق Ultralytics الرسمية بتنسيق INT8، مما يقلل حجم التنزيل ويعمل بالسرعات المذكورة في الجدول أعلاه. quantize=16 (FP16) هو بديل متحفظ لا يؤدي فعلياً إلى أي فقدان في الدقة. تحقق من دقة تصديرك باستخدام model.val() على جهاز Mac قبل النشر.
Link to this sectionكيف أتأكد من تشغيل الاستنتاج على المحرك العصبي؟#
اضبط MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (الإعداد الافتراضي لـ iOS SDK على iOS 16+). تجنب .all في تطبيقات الكاميرا — وحدة معالجة الرسومات مشغولة بتركيب المعاينة، وتجدولة الاستنتاج هناك تسبب تقلب وقت الإطارات. أكد التنسيب باستخدام تقرير أداء Core ML في Xcode.
Link to this sectionهل يمكنني تشغيل والتحقق من نماذج CoreML باستخدام Ultralytics CLI؟#
نعم، على نظام macOS: يعمل yolo predict model=yolo26n.mlpackage source=image.jpg و yolo val model=yolo26n.mlpackage data=coco8.yaml مثل أي تنسيق آخر. يتطلب تنفيذ CoreML أجهزة Apple، لذا فإن هذه الأوضاع غير متوفرة على Linux وWindows.
Link to this sectionما هي أسرع طريقة لتشغيل YOLO26 في تطبيق iOS أو Flutter؟#
استخدم Ultralytics YOLO iOS SDK الرسمية (حزمة Swift) أو إضافة Flutter. كلاهما يقوم بتحميل النماذج الرسمية بالاسم مع التنزيل والتخزين المؤقت التلقائي، وتشغيلها على المحرك العصبي، وتتضمن واجهات مستخدم كاملة للكاميرا في الوقت الفعلي — تم إنتاج جدول الأداء المقاس أعلاه باستخدام هذا المكدس تمامًا.