تصدير CoreML لنماذج YOLO26#
توفر شركة Apple مكونات ذكاء اصطناعي مخصصة في صورة محرك العصبي (Neural Engine) في كل هاتف iPhone و جهاز iPad و Mac حديث، و يعد CoreML هو المسار المدعوم من Ultralytics لنشر النماذج عليه اليوم. إن تصدير نماذج Ultralytics YOLO26 إلى CoreML يحول نقطة التحقق المدربة .pt إلى تنسيق .mlpackage أصلي يشغل مهام YOLO السبعة كلها على الجهاز بزمن استجابة منخفض، ودون الحاجة لاتصال بالشبكة ودون مغادرة أي بيانات للجهاز.
تشغل حزمة تطوير برمجيات iOS الرسمية من Ultralytics YOLO iOS SDK ومكون Flutter الإضافي عمليات تصدير CoreML على محرك أبل العصبي Apple Neural Engine مباشرة — ويشمل ذلك الاستدلال بالكاميرا في الوقت الفعلي، والتنبؤ بصورة فردية، وتنزيل النماذج تلقائياً لجميع مهام YOLO26 السبعة، بما في ذلك العمق Depth. لتنشر النماذج على وحدات NPU لأجهزة أندرويد، يرجى الاطلاع على تكامل Qualcomm QNN.
قم بتصدير نماذج التصنيف عند imgsz=224. وقم بتصدير نماذج الكشف، والتجزئة، والدلالية، والعمق، ووضعيات الجسم، وOBB عند
imgsz=640. يتم مشاركة معيار 224/640 هذا بواسطة الأصول المحمولة الرسمية لـ CoreML و LiteRT و QNN.
قدمت Apple إطار عمل Core AI الجديد وتنسيق .aimodel لجيل iOS 27 و macOS 27، وتصدره Ultralytics باستخدام format="coreai". يظل CoreML التنسيق الموصى به لمجموعات أدوات تطوير iOS و Flutter من Ultralytics والتوافق الأوسع مع أجهزة Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎
ما هو CoreML؟#
إن CoreML (الذي تسميه Apple "Core ML") هو إطار عمل التعلم الآلي الخاص بـ Apple على الجهاز. يقوم بتحميل النماذج بتنسيق ML Program الحديث — وهو حزمة .mlpackage التي ينتجها مصدر Ultralytics — ويقوم بجدولتها عبر وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) ومحرك أبل العصبي (Apple Neural Engine - ANE)، وهو وحدة معالجة عصبي (NPU) مخصصة في كل شريحة من شرائح Apple-silicon. ونظراً لأن كل شيء يعمل محلياً، فإن الاستدلال يعمل دون اتصال بالإنترنت، ولا يضيف أي تأخير في الشبكة، ويحافظ على بيانات المستخدم على الجهاز.
يتكامل CoreML مباشرة مع إطار عمل Vision الخاص بـ Apple، والذي يتعامل مع قياس حجم الصور واتجاهها في طريقها إلى النموذج — وهذه هي الطريقة التي تزود بها حزمة تطوير برمجيات iOS من Ultralytics إطارات الكاميرا إلى YOLO بتكلفة معالجة مسبقة تكاد تكون معدومة.
لماذا نقوم بتصدير YOLO26 إلى CoreML؟#
- سرعة المحرك العصبي (Neural Engine): يقوم CoreML جدولة العمليات المدعومة على محرك Apple العصبي (Neural Engine) للاستدلال على الجهاز منخفض زمن الانتقال. راجع جدول الأجهزة الفعلية أدناه، وقم بإجراء قياس الأداء لتصديرك الدقيق على الأجهزة المستهدفة.
- خالٍ من NMS بالتصميم: إن YOLO26 شامل من البداية إلى النهاية، لذا فإن الرسم البياني المصدر لا يحتاج إلى خط أنابيب NMS وفك التشفير يستغرق أقل من جزء من الألف من الثانية. نماذج الكشف الأقدم مثل YOLO11 يمكنها تضمين خط أنابيب NMS لـ CoreML مع
nms=True. - خاص وخارج الشبكة: تبقى جميع الحسابات على الجهاز — لا توجد رحلات ذهاب وإياب سحابية، ولا مفاتيح واجهة برمجة تطبيقات API، وخصوصية بيانات كاملة.
- تصدير واحد، والنظام البيئي بأكمله: نفس
.mlpackageيعمل على iOS، وiPadOS، وmacOS، وwatchOS، وtvOS، وvisionOS، ويشغل حزمة تطوير برمجيات iOS الرسمية من Ultralytics ومكون Flutter الإضافي.
الأداء المقاس#
استدلال للصورة الفردية من البداية إلى النهاية لأصول CoreML المعيارية v8.3.0 من نوع YOLO26n INT8 على هاتف
iPhone 17 Pro بذاكرة 12 جيجابايت ونظام iOS 26.5.2. يحتوي معالج A19 Pro الخاص به على وحدة معالجة مركزية (CPU) بـ 6 أنوية (نوتان للأداء و 4 أنوية للكفاءة)، ووحدة معالجة رسومات (GPU) بـ 6 أنوية مع مسرعات عصبية، ومحرك عصبي بـ 16 نواة. توضح كل خلية الوقت الإجمالي (المعالجة المسبقة + الاستدلال + المعالجة اللاحقة، باستثناء التعليقات التوضيحية) مع تقسيم كل مرحلة تحته. على نظام iOS، يقوم Vision بتنفيذ قياس المدخلات داخل طلب الاستدلال، لذا يتم الإبلاغ عن المعالجة المسبقة على أنها 0 ويتم تضمين تكلفتها في الاستدلال.
| النموذج | المهمة | الحجم (بكسل) | وحدة المعالجة المركزية (CPU) Core ML .cpuOnly(مللي ثانية) | وحدة المعالجة المركزية + تفضيل ANE Core ML .cpuAndNeuralEngine(مللي ثانية) |
|---|---|---|---|---|
| YOLO26n | اكتشاف | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | تجزئة | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | دلالي (Semantic) | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | العمق (Depth) | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | تصنيف | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-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 |
- تعلن أصول إصدار
v8.3.0الدقيقة عن مدخلات بحجم 224×224 للتصنيف و 640×640 لكل مهمة أخرى. - قيم السرعة هي زمن انتقال دفعات الصور الفردية — وهو متوسط 15 تشغيلاً بعد 3 تشغيلات إحماء على
bus.jpg، مقاسة من خلال توقيت كل مرحلة في حزمة تطوير برمجيات iOS عبر أداة القياس القياسية لمكون Flutter الإضافي في وضع ملف تعريف الملفات الشخصية (رمز أصلي مُحسَّن). تتبادل ترتيب وحدة المعالجة المركزية/المسرعات بين المهام في جولة متسلسلة واحدة. تطلب صفوف وحدة المعالجة المركزية Core ML.cpuOnly؛ وتطلب صفوف تفضيل وحدة المعالجة المركزية + ANE.cpuAndNeuralEngine، مع التحكم في وضع التشغيل النهائي بواسطة Core ML. يعمل تشغيل الكاميرا في الوقت الفعلي المستمر بمعدل أعلى لأنه يتضمن خط التقاط الصور والقياس بالإضافة إلى الاستقرار الحراري. قاست جولة سابقة لكاميرا ما قبل المعيار 11.3 مللي ثانية/إطار لكشف YOLO26n و 16.5 مللي ثانية/إطار لعمق YOLO26n على نفس الجهاز — راجع وثيقة أداء حزمة تطوير برمجيات iOS للحصول على ملف تعريف الحالة المستقرة. - قارن نتائج وحدة المعالجة المركزية/معالجة الرسومات في أندرويد في تكامل LiteRT ونتائج وحدة معالجة النيورو (NPU) في Snapdragon في تكامل Qualcomm QNN.
المهام المدعومة#
يدعم تصدير CoreML جميع مهام Ultralytics السبع. يتوفر التجزئة الدلالية وتقدير العمق فقط مع YOLO26، وهي العائلة الوحيدة التي توفر تلك الرؤوس.
تصدير نماذج YOLO26 إلى CoreML#
التثبيت#
لتثبيت الحزمة المطلوبة، قم بتشغيل:
# Install the required package for YOLO26
pip install ultralyticsيتم تثبيت محول coremltools تلقائياً عند التصدير الأول. يتم تشغيل التصدير على نظام macOS أو x86 Linux؛ للحصول على إرشادات مفصلة وأفضل الممارسات، تحقق من دليل التثبيت ودليل المشكلات الشائعة.
الاستخدام#
يدعم تنسيق 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 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")وسائط التصدير#
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'coreml' | التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون رقماً صحيحاً للصور المربعة أو صفاً (tuple) (height, width) لأبعاد محددة. |
quantize | int أو str | None | دقة التكميم (للأوزان فقط في CoreML): 16 (FP16)، أو 8 (INT8)، أو "w8a16" (أوزان INT8 مع تنشيطات FP16)، أو 32/غير محدد (FP32). تستخدم برامج NMS ML صيغة FP16 (لمعاينة Xcode، وهي مطلوبة لمهام التجزئة وتقدير الوضعية)؛ مرر 32 للتجاوز في مهام الاكتشاف. تحل محل العلامتين المهملتين half/int8. |
nms | bool | False | يضمن دمج 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 حول التصدير.
استهداف المحرك العصبي#
يختار CoreML الأجهزة عبر MLModelConfiguration.computeUnits. تعيين الافتراضي لحزمة تطوير برمجيات iOS من Ultralytics هو .cpuAndNeuralEngine على iOS 16+ بدلاً من .all: في تطبيق كاميرا في الوقت الفعلي، تكون وحدة معالجة الرسومات مشغولة بالفعل بتركيب المعاينة والطبقات، لذا فإن استبعادها يمنع التنازع واهتزاز وقت الإطار بينما يقوم ANE بالعمل الثقيل. قم بتثبيت .cpuOnly فقط لاختبار التوافق — يوضح الجدول أعلاه التكلفة التي يتطلبها ذلك.
تشغيل نموذج CoreML من Python على جهاز Mac مضيف (عبر Ultralytics أو coremltools) يتبع نفس القاعدة: يتم التحميل بواسطة Ultralytics مع ComputeUnit.CPU_AND_NE (macOS 13+, مع الرجوع إلى CPU_ONLY على إصدارات macOS الأقدم)، مما يحافظ على الاستدلال على المحرك العصبي (أسرع بحوالي 3 مرات من وحدة المعالجة المركزية). هذا يتجنب أيضاً حدًا حاليًا لمضيف macOS حيث يؤدي المسار الافتراضي ComputeUnit.ALL / CPU_AND_GPU — الذي يضيف مسار تجميع GPU/MPSGraph — إلى إلغاء العملية مع تأكيد Error: MLIR pass manager failed على coremltools 9.x.
نشر نماذج YOLO26 CoreML المُصدرة#
المسار الأسرع هو حزمة تطوير برمجيات iOS الرسمية من Ultralytics YOLO iOS SDK، وهي حزمة Swift نفسها التي تشغل تطبيق Ultralytics للإصدارات المحمولة ومكون 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 (CoreML Tools): مرجع التحويل والتكميم والتحسين لسلسلة أدوات
coremltoolsالتي تدعم هذا التصدير. - تقارير أداء Xcode Core ML: وضع الجهاز لكل طبقة وتحديد زمن الاستجابة لنموذجك وجهازك المحدد.
اشحن النموذج إما مدمجاً في حزمة التطبيق (توافر فوري، مثالي للنماذج النانوية/الصغيرة) أو يتم تنزيله عند التشغيل الأول وتخزينه مؤقتاً (ملف ثنائي أصغر، تحديثات سهلة للنموذج). تجمع التطبيقات الرسمية بين النهجين: يتم حزم النماذج النانوية الافتراضية للاستخدام الفوري، بينما تقوم البدائل الأكبر بتنزيلها عند الطلب ويتم تخزينها مؤقتاً محلياً.
سير العمل الموصى به#
- تدريب نموذجك باستخدام وضع التدريب (Train mode) من Ultralytics، أو البدء من أوزان YOLO26 الرسمية
- التصدير باستخدام
model.export(format="coreml", quantize=8, imgsz=640)على نظام macOS أو x86 Linux (imgsz=224للتصنيف) - التحقق من الدقة باستخدام
model.val()على جهاز Mac، والقياس باستخدام تقرير أداء Xcode Core ML على جهازك المستهدف - النشر باستخدام حزمة تطوير برمجيات iOS SDK، أو مكون Flutter الإضافي، أو تكامل Vision الخاص بك، مستهدفاً
.cpuAndNeuralEngine
ملخص#
في هذا الدليل، تعلمت كيفية تصدير نماذج Ultralytics YOLO26 إلى تنسيق .mlpackage الخاص بـ CoreML، وتكميمها لمحرك Apple العصبي، ونشرها بأزمنة استجابة تفوق أجزاء من الألف من الثانية — إما من خلال حزمة تطوير برمجيات iOS الرسمية ومكون Flutter أو تكامل Vision الخاص بك. لأهداف نشر أخرى، تصفح صفحة دليل التكامل، وقارن التنسيقات باستخدام وضع المعيار (Benchmark mode).
الأسئلة الشائعة#
قم بتشغيل
model.export(format="coreml", imgsz=640)في لغة Python أوyolo export model=yolo26n.pt format=coreml imgsz=640من واجهة سطر الأوامر CLI على نظام التشغيل macOS أو x86 Linux. استخدمimgsz=224للتصنيف وأضفquantize=8لتتطابق مع نماذج التطبيق الرسمية. ينتج عن التصدير برنامجyolo26n.mlpackageML Program جاهز لتطبيق Xcode، أو حزمة تطوير برمجيات iOS، أو مكون Flutter الإضافي.لا. نموذج YOLO26 لا يحتاج إلى NMS من النهاية إلى النهاية، لذا فإن الرسم البياني المُصدَّر يُصدر بالفعل عمليات الكشف النهائية وتكلفة فك التشفير في أقل من جزء من الألف من الثانية بكثير. خيار
nms=Trueمخصص للنماذج الأقدم مثل YOLO11، حيث يقوم بدمج NMS لكي لا يضطر تطبيقك إلى تنفيذ عملية القمع. وهو مدعوم لنماذج الاكتشاف والتجزئة وتقدير الوضعية؛ بينما يتم تجاهلnms=Trueمع عرض تحذير للمهام الأخرى.تأتي نماذج تطبيق Ultralytics الرسمية بتنسيق INT8، مما يقلل من حجم التنزيل ويعمل بالسرعات الموضحة في الجدول أعلاه. يعتبر
quantize=16(FP16) بديلاً متحفظاً بدون أي فقدان تقريباً في الدقة. تحقق من تصديرك الدقيق باستخدامmodel.val()على جهاز Mac قبل الشحن.قم بتعيين
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(وهو الوضع الافتراضي لحزمة تطوير برمجيات iOS على الإصدار iOS 16+). تجنب استخدام.allفي تطبيقات الكاميرا — فمعالجة الرسومات تكون مشغولة في تركيب المعاينة، وجدولة الاستدلال هناك تتسبب في اهتزاز وقت الإطار. أكد موقع التنسيق باستخدام تقرير أداء Xcode Core ML.نعم، على نظام التشغيل macOS: يعمل
yolo predict model=yolo26n.mlpackage source=image.jpgوyolo val model=yolo26n.mlpackage data=coco8.yamlتماماً مثل أي تنسيق آخر. يتطلب تنفيذ CoreML أجهزة Apple، لذا فإن هذه الأضاع غير متوفرة على أنظمة Linux و Windows.استخدم حزمة تطوير برمجيات iOS الرسمية من Ultralytics YOLO iOS SDK (حزمة Swift Package) أو مكون Flutter الإضافي. يقوم كلاهما بتحميل النماذج الرسمية بالاسم مع التنزيل والتخزين المؤقت تلقائياً، وتشغيلها على المحرك العصبي، ويتضمنان واجهات مستخدم كاملة للكاميرا في الوقت الفعلي — وقد تم إنتاج جدول الأداء المقاس أعلاه باستخدام هذه الحزمة تماماً.