تصدير نماذج YOLO إلى LiteRT للنشر على الأجهزة الطرفية والويب#
إن LiteRT (اختصار لـ بيئة تشغيل Lite) بيئة تشغيل عالية الأداء من Google للذكاء الاصطناعي على الجهاز. وهي الجيل التالي والاسم الجديد لـ TensorFlow Lite (TFLite)، وتستخدم تنسيق النموذج نفسه .tflite. باستخدام LiteRT، يمكن نشر نموذج Ultralytics YOLO مُصدَّر واحد على الأجهزة المحمولة والمضمنة والطرفية والمتصفح — لتغطية جميع الاستخدامات التي كانت تتولاها تنسيقات التصدير الأقدم tflite وtfjs كلٌ على حدة، ضمن إطار موحد.
شاهد: كيفية تصدير Ultralytics YOLO26 إلى Google LiteRT | نشر الذكاء الاصطناعي للرؤية على Android وiOS | الذكاء الاصطناعي للأجهزة المحمولة 📱🚀
يهيئ تنسيق تصدير LiteRT نماذجك لمهام مثل اكتشاف الكائنات والتجزئة وتقدير الوضعيات والتصنيف، لتعمل بسرعة ودون اتصال على مجموعة واسعة من الأجهزة.
تشغّل إضافة Ultralytics YOLO الرسمية لـ Flutter صادرات LiteRT .tflite على Android مباشرةً، دون إعداد إضافي — وتشمل الاستدلال الفوري بالكاميرا، والتنبؤ بصورة واحدة، وتسريع GPU، والتنزيل التلقائي للنموذج لمهام YOLO26 السبع، بما فيها العمق. لأجهزة Apple، استخدم تصدير CoreML؛ وللوحدات NPU من Qualcomm Snapdragon، راجع تكامل Qualcomm QNN.
صدّر نماذج التصنيف باستخدام imgsz=224. وصدّر نماذج الاكتشاف والتجزئة والتجزئة الدلالية والعمق والوضعيات وOBB باستخدام imgsz=640. ويُستخدم معيار 224/640 نفسه في أصول LiteRT وCoreML وQNN الرسمية للأجهزة المحمولة.
تشغّل حزمة NPM الرسمية من Ultralytics YOLO صادرات LiteRT .tflite مباشرةً في المتصفح عبر LiteRT.js، دون الحاجة إلى خادم أو Python — مع استدلال فوري بكاميرا الويب، والتنبؤ بصورة واحدة، وتسريع WebGPU (مع الرجوع تلقائيًا إلى CPU/WASM) عبر ست مهام لـ YOLO26 (الاكتشاف والتجزئة والتجزئة الدلالية والتصنيف والوضعيات وOBB). وعلى WebGPU، يكون أسرع غالبًا بنحو ~2× من ONNX Runtime Web.
npm i @ultralytics/yolo @litertjs/coreلماذا تصدّر إلى LiteRT؟#
إن LiteRT إطار عمل مفتوح المصدر مصمم للاستدلال على الجهاز، المعروف أيضًا باسم الحوسبة الطرفية. وهو يوفر للمطورين أدوات لتنفيذ النماذج المدرّبة على الأجهزة المحمولة والمضمنة وأجهزة إنترنت الأشياء والحواسيب التقليدية، وكذلك — عبر LiteRT.js — مباشرةً في متصفحات الويب وNode.js.
تنسيق نموذج واحد، لكل وجهة:
- الأجهزة المحمولة والمضمنة: Android وiOS وLinux المضمن ووحدات التحكم الدقيقة (MCUs).
- مسرّعات الأجهزة الطرفية: متوافق مع Coral Edge TPU لتسريع إضافي.
- المتصفح وNode.js: يشغّل LiteRT.js النموذج
.tfliteنفسه على الويب مع تسريع WebGPU/WASM — ما يلغي الحاجة إلى تصدير منفصل لـ TensorFlow.js.
الميزات الرئيسية لنماذج LiteRT#
- التحسين على الجهاز: يقلّل زمن الاستجابة عبر معالجة البيانات محليًا، ويعزّز الخصوصية من خلال عدم نقل البيانات الشخصية، ويقلّل حجم النموذج لتوفير المساحة.
- دعم منصات متعددة: يعمل على Android وiOS وLinux المضمّن والمتحكمات الدقيقة ومتصفحات الويب الحديثة.
- تسريع الأجهزة: يستفيد من XNNPACK على CPU، ومن تسريع GPU عبر OpenCL وMetal وWebGPU. يعمل مفوّض GPU افتراضيًا بدقة FP16 لتحقيق سرعة إضافية.
- التكميم: يدعم FP32 وINT8 ثابتًا (
quantize=8، أوزان int8 + تنشيطات int8) وINT16 ثابتًا للتنشيطات (quantize="w8a16"، أوزان int8 + تنشيطات int16 لدقة أعلى) وINT8 ديناميكيًا (quantize="w8a32"، أوزان int8 + تنشيطات FP32، من دون الحاجة إلى بيانات المعايرة) لضغط النماذج وتسريع الاستدلال مع أقل قدر من فقدان الدقة. - دعم لغات متنوعة: متوافق مع Java/Kotlin وSwift وObjective-C وC++ وPython وJavaScript.
الأداء المقاس#
الأجهزة: Xiaomi 17 بذاكرة LPDDR5X سعتها 12 GB ونظام Android 17 / API 37. يحتوي Snapdragon 8 Elite Gen 5 المصنّع بتقنية 3 nm (SM8850) على CPU من Qualcomm Oryon بثماني نوى (نواتان Prime بتردد يصل إلى 4.6 GHz و6 نوى للأداء بتردد يصل إلى 3.62 GHz)، وGPU من Adreno، وNPU من Hexagon.
| النموذج | المهمة | الحجم (بكسل) | CPU w8a32 LiteRT (مللي ثانية) | GPU w8a32 LiteRT (مللي ثانية) | NPU LiteRT FP32 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 36.9 1.9 / 32.6 / 2.3 | 10.6 1.8 / 6.2 / 2.6 | 10.1 3.5 / 4.0 / 2.5 |
| YOLO26n-seg | Segment | 640 | 50.5 1.9 / 42.9 / 5.8 | 18.0 1.9 / 9.5 / 6.6 | 19.2 3.6 / 5.9 / 9.7 |
| YOLO26n-sem | دلالي | 640 | 45.7 1.9 / 35.7 / 8.2 | 30.6 1.9 / 20.5 / 8.3 | 25.8 3.6 / 11.0 / 11.3 |
| YOLO26n-depth | العمق | 640 | 66.8 2.2 / 55.0 / 9.7 | 21.9 2.1 / 10.1 / 9.8 | 24.8 4.3 / 6.0 / 14.5 |
| YOLO26n-cls | التصنيف | 224 | 3.6 0.3 / 3.3 / 0.0 | 2.0 0.4 / 1.4 / 0.2 | 1.5 0.6 / 0.7 / 0.3 |
| YOLO26n-pose | الوضعية | 640 | 39.9 2.0 / 36.5 / 1.4 | 10.0 1.8 / 6.7 / 1.4 | 11.5 3.5 / 4.2 / 3.8 |
| YOLO26n-obb | OBB | 640 | 36.3 2.0 / 33.2 / 1.2 | 10.1 2.6 / 5.9 / 1.6 | 8.2 3.5 / 3.7 / 0.9 |
- تمثل قيم السرعة زمن الاستجابة لدفعة صورة واحدة — أي متوسط 15 تشغيلًا بعد 3 عمليات إحماء على
bus.jpg، وقِيست باستخدام0.7.1في إضافة Ultralytics Flutter والأصول الرسميةv0.7.0(تصديرات Ultralytics 8.4.188). تناوب ترتيب CPU/GPU بين المهام ضمن جولة تسلسلية واحدة. أكدت السجلات الأصلية أن كل صف CPU استخدم LiteRT CPU/XNNPACK، وأن كل صف GPU فوّض الرسم البياني بأكمله إلى LiteRT OpenCL (LITERT_CL). - يتتبّع تصدير LiteRT نموذج PyTorch مباشرةً، وينتج
.tfliteبتنسيق NCHW ومدخل عائم — إذ يترجم مفوّض GPU الرسم البياني بأكمله (وتعمل المهام السبع كلها على GPU من Adreno هنا)، كما أنw8a32لا يحتاج إلى بيانات معايرة. ينبغي للمستهلكين قراءة أشكال الموترات وأسماء التوقيعات بدلًا من افتراض تخطيط NHWC القديم لـonnx2tf أو أسماء مخرجاتIdentity؛ ويجب تعبئة بيانات RGB مباشرةً بتنسيق CHW مستوٍ أو تبديل أبعادها قبل الاستدلال. تُرجع عمليات التصدير الدلالية درجات NCHW، وتتطلب حساب argmax للفئات على المضيف. تتوفر أصول Android الرسمية في إصدارv0.7.0لتطبيق yolo-flutter-app، وسجل الأداء التفصيلي في وثيقة أداء Flutter. - يمثل عمود NPU مسار NPU الخاص بـ LiteRT: تصدير FP32 (
yolo export format=litert، دونquantize) جُمّع على الجهاز بواسطة بيئتي التشغيلlitert-npu-runtime-qualcommو-mediatekالإصدار 2.3.0، وقيس باستخدام إصدار أولي من إضافة Flutter مهيأ لـ NPU (لم يُطرح بعد). يتضمن التحميل الأول عملية التجميع هذه (نحو 0.3 s لـn، وتصل إلى 6 s لـx). لا تُجمّع أصولw8a32بالكامل على وحدات NPU هذه. يُبلغ LiteRT عن تجميع NPU حتى عندما يشغّل الرسم البياني بصمت على GPU، لذا جرى التحقق من كل صف NPU بمقارنته بوقت GPU؛ وتُعرض الصفوف التي انتقلت إلى مسار بديل بالرمز —. - تجدون أرقام NPU Hexagon المطابقة لـ Snapdragon، الخاصة بأصول QNN الرسمية، في تكامل Qualcomm QNN.
- قارن نتائج CPU/المسرّع من Apple في تكامل CoreML.
تستخدم اختبارات الأجهزة التالية الأصول الرسمية نفسها v0.7.0.
Google Pixel 10#
الأجهزة: Google Pixel 10 بذاكرة سعتها 12 GB ونظام Android 17 / API 37. يحتوي Google Tensor G5 المصنّع بتقنية 3 nm على CPU بثماني نوى (نواة Prime واحدة بتردد يصل إلى 3.78 GHz، و5 نوى للأداء بتردد يصل إلى 3.05 GHz، ونواتان للكفاءة بتردد يصل إلى 2.25 GHz)، وGPU من PowerVR D-Series، وTPU من Google. قُرئت ترددات النوى واسم برنامج تشغيل GPU من جهاز الاختبار لأن Google لا تنشرهما ضمن المواصفات المرتبطة.
| النموذج | المهمة | الحجم (بكسل) | CPU w8a32 LiteRT (مللي ثانية) | GPU w8a32 LiteRT (مللي ثانية) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 36.6 1.5 / 33.5 / 1.6 | 36.5 3.5 / 28.4 / 4.6 |
| YOLO26n-seg | Segment | 640 | 53.1 1.5 / 45.8 / 5.7 | 51.5 1.6 / 40.1 / 9.9 |
| YOLO26n-sem | دلالي | 640 | 57.2 1.5 / 47.7 / 8.0 | 75.9 1.8 / 63.4 / 10.8 |
| YOLO26n-depth | العمق | 640 | 75.0 1.6 / 65.1 / 8.3 | 50.1 1.7 / 33.5 / 14.9 |
| YOLO26n-cls | التصنيف | 224 | 6.1 0.3 / 5.5 / 0.3 | 12.1 0.9 / 11.0 / 0.1 |
| YOLO26n-pose | الوضعية | 640 | 35.2 1.5 / 31.9 / 1.8 | 38.2 3.5 / 29.3 / 5.4 |
| YOLO26n-obb | OBB | 640 | 32.7 1.5 / 29.3 / 1.9 | 38.8 3.8 / 29.6 / 5.4 |
الاختبار المعياري: متوسط 15 استدعاءً لـ predict() بعد 3 عمليات إحماء على bus.jpg، باستخدام ultralytics_yolo 0.7.1 والأصول الرسمية v0.7.0. يتناوب ترتيب CPU/GPU بين المهام ضمن جولة تسلسلية واحدة. أكدت السجلات الأصلية أن كل صف CPU استخدم LiteRT CPU/XNNPACK، وأن كل صف GPU فوّض الرسم البياني بأكمله إلى LiteRT OpenCL (LITERT_CL). لا يتضمن عمود Tensor NPU أي صف لـ LiteRT: إذ ترفض خدمة EdgeTPU من Google التطبيقات غير المدرجة في قائمة السماح، وعندئذ يشغّل LiteRT النموذج على GPU.
Samsung Galaxy S26#
الأجهزة: Samsung Galaxy S26 (SM-S942B) بذاكرة سعتها 12 GB ونظام Android 17 / API 37. يحتوي Exynos 2600 المصنّع بتقنية 2 nm على CPU من Armv9.3 بعشر نوى (نواة C1-Ultra واحدة بتردد يصل إلى 3.8 GHz، و3 نوى C1-Pro للأداء بتردد يصل إلى 3.26 GHz، و6 نوى C1-Pro للكفاءة بتردد يصل إلى 2.76 GHz)، وGPU من Xclipse 960، وNPU من Samsung.
| النموذج | المهمة | الحجم (بكسل) | CPU w8a32 LiteRT (مللي ثانية) | GPU w8a32 LiteRT (مللي ثانية) | NPU LiteRT w8a32 AOT (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 30.2 1.3 / 27.3 / 1.6 | 15.9 1.4 / 11.5 / 2.9 | 12.2 1.3 / 8.6 / 2.2 |
| YOLO26n-seg | Segment | 640 | 45.6 1.3 / 39.1 / 5.2 | 30.5 1.3 / 23.6 / 5.6 | 17.0 1.4 / 9.7 / 5.8 |
| YOLO26n-sem | دلالي | 640 | 38.1 1.3 / 28.6 / 8.2 | 26.1 1.3 / 16.8 / 7.9 | 28.3 1.7 / 15.1 / 11.5 |
| YOLO26n-depth | العمق | 640 | 63.5 1.4 / 53.6 / 8.4 | 37.3 1.4 / 24.6 / 11.3 | 28.4 2.1 / 12.9 / 13.4 |
| YOLO26n-cls | التصنيف | 224 | 3.8 0.2 / 3.4 / 0.2 | 2.8 0.2 / 2.6 / 0.0 | 6.1 0.5 / 5.2 / 0.4 |
| YOLO26n-pose | الوضعية | 640 | 31.1 1.3 / 28.4 / 1.4 | 18.4 1.6 / 13.0 / 3.8 | 13.5 1.8 / 9.5 / 2.2 |
| YOLO26n-obb | OBB | 640 | 27.9 1.3 / 25.7 / 0.9 | 15.3 1.9 / 11.4 / 2.1 | 11.4 1.7 / 8.3 / 1.4 |
الاختبار المعياري: متوسط 15 استدعاءً لـ predict() بعد 3 عمليات إحماء على bus.jpg، باستخدام ultralytics_yolo 0.7.1 والأصول الرسمية v0.7.0. يتناوب ترتيب CPU/GPU بين المهام ضمن جولة تسلسلية واحدة. أكدت السجلات الأصلية أن كل صف CPU استخدم LiteRT CPU/XNNPACK، وأن كل صف GPU فوّض الرسم البياني بأكمله إلى LiteRT OpenCL (LITERT_CL). يستخدم عمود NPU الأصول w8a32 المجمّعة مسبقًا لـ Exynos 2600 (E9965) باستخدام إضافة المترجم Samsung في LiteRT. لا يتضمن LiteRT 2.3 مترجمًا على الجهاز من Samsung، كما أن Google لم تنشر بعد بيئة تشغيل NPU من Samsung، لذا استخدمت هذه الصفوف مكتبة إرسال مبنية من مصادر LiteRT 2.3.
Xiaomi 17T Pro#
الأجهزة: Xiaomi 17T Pro (2602EPTC0G) بذاكرة LPDDR5X سعتها 12 GB وAndroid 16 / API 36. ويضم MediaTek Dimensity 9500 بدقة تصنيع 3 nm (MT6993) وحدة CPU من Armv9.3 بثماني نوى (نواة C1-Ultra واحدة تصل إلى 4.21 GHz، وثلاث نوى C1-Premium تصل إلى 3.5 GHz، وأربع نوى C1-Pro تصل إلى 2.7 GHz)، ووحدة GPU من Mali-G1 Ultra MC12، ووحدة NPU 990 من MediaTek.
| النموذج | المهمة | الحجم (بكسل) | CPU w8a32 LiteRT (مللي ثانية) | GPU w8a32 LiteRT (مللي ثانية) | NPU LiteRT FP32 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 31.4 1.5 / 28.0 / 1.9 | 25.6 1.4 / 22.2 / 2.0 | 11.0 1.3 / 7.8 / 1.8 |
| YOLO26n-seg | Segment | 640 | 77.8 2.6 / 65.3 / 9.9 | 47.4 2.6 / 33.6 / 11.3 | 36.5 2.6 / 23.4 / 10.4 |
| YOLO26n-sem | دلالي | 640 | 81.3 2.6 / 62.2 / 16.5 | 79.3 2.6 / 59.5 / 17.1 | 87.6 2.6 / 68.3 / 16.7 |
| YOLO26n-depth | العمق | 640 | 111.3 3.4 / 91.1 / 16.8 | 55.3 2.8 / 36.3 / 16.1 | — |
| YOLO26n-cls | التصنيف | 224 | 6.3 0.5 / 5.4 / 0.4 | 8.1 0.5 / 7.5 / 0.1 | 3.2 0.5 / 2.2 / 0.5 |
| YOLO26n-pose | الوضعية | 640 | 53.9 2.6 / 49.5 / 1.8 | 32.8 2.7 / 26.7 / 3.4 | 16.2 2.9 / 11.1 / 2.3 |
| YOLO26n-obb | OBB | 640 | 49.5 2.7 / 44.4 / 2.4 | 29.4 2.8 / 22.7 / 3.9 | — |
المعيار: متوسط 15 استدعاءً لـ predict() بعد 3 عمليات إحماء على bus.jpg، باستخدام ultralytics_yolo و0.7.1 وأصول v0.7.0 الرسمية. يتناوب ترتيب CPU/GPU بين المهام خلال مرور تسلسلي واحد. أكدت السجلات الأصلية أن كل صف CPU استخدم LiteRT CPU/XNNPACK، وأن كل صف GPU فوّض الرسم البياني بالكامل إلى LiteRT OpenCL (LITERT_CL). لا تتوفر نتيجة NPU لمهمتي Depth وOBB: إذ يرفض مُجمّع NPU من MediaTek العمليات الأسية والمثلثية فيهما، ويشغّل LiteRT هذين الرسمين البيانيين على GPU.
المهام المدعومة#
يدعم تصدير LiteRT مهام Ultralytics السبع كلها. لا يتوفر التقسيم الدلالي وتقدير العمق إلا في YOLO26، وهي العائلة الوحيدة التي تتضمن هذه الرؤوس.
التصدير إلى LiteRT: تحويل نموذج YOLO#
يمكنك تحسين كفاءة التنفيذ على الجهاز وتوسيع خيارات النشر بتحويل نماذجك إلى تنسيق LiteRT.
التثبيت#
لتثبيت الحزمة المطلوبة، شغّل:
# Install the required package for YOLO
pip install ultralyticsللحصول على تعليمات مفصلة وأفضل الممارسات، راجع دليل تثبيت Ultralytics. وإذا واجهت أي صعوبات، فراجع دليل المشكلات الشائعة.
يدعم تصدير LiteRT حاليًا Linux x86_64 وmacOS. أما نموذج .tflite المُصدّر نفسه فيعمل على جميع المنصات التي يدعمها LiteRT (الأجهزة المحمولة والمضمّنة والطرفية والمتصفح).
الاستخدام#
تدعم نماذج Ultralytics YOLO جميعها التصدير مباشرةً. ويدعم تنسيق LiteRT أوضاع التصدير والتنبؤ والتحقق، لذا يمكنك تصدير نموذج ثم تحميله لإجراء الاستدلال أو التحقق من دقته محليًا.
from ultralytics import YOLO
# تحميل نموذج YOLO26
model = YOLO("yolo26n.pt")
# تصدير النموذج إلى تنسيق LiteRT
model.export(format="litert", imgsz=640) # ينشئ 'yolo26n.tflite'؛ استخدم imgsz=224 للتصنيفfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# INT8 ديناميكي: أوزان int8 وتنشيطات FP32 - لا حاجة إلى بيانات معايرة
model.export(format="litert", quantize="w8a32", imgsz=640) # ينشئ 'yolo26n_w8a32.tflite'
# INT8 ثابت: أوزان int8 + تنشيطات int8 - يحتاج إلى بيانات معايرة
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640) # ينشئ 'yolo26n_int8.tflite'
# w8a16 ثابت: أوزان int8 + تنشيطات int16 (دقة أعلى) - يحتاج إلى بيانات معايرة
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640) # ينشئ 'yolo26n_w8a16.tflite'from ultralytics import YOLO
# تحميل نموذج LiteRT المُصدّر
model = YOLO("yolo26n.tflite")
# تنفيذ الاستدلال
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# تحميل نموذج LiteRT المُصدّر
model = YOLO("yolo26n.tflite")
# # التحقق من الدقة على مجموعة بيانات COCO8
metrics = model.val(data="coco8.yaml")وسيطات التصدير#
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'litert' | التنسيق المستهدف للنموذج المُصدَّر، ويحدد مدى توافقه مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب كمدخل للنموذج. يمكن تحديده كعدد صحيح للصور المربعة أو كصف (height, width) للأبعاد المحددة. |
quantize | int أو str | None | دقة التكميم: 8 (INT8 ثابت، أوزان int8 + تنشيطات int8؛ يحتاج إلى معايرة data/fraction)، أو 'w8a16' (ثابت، أوزان int8 + تنشيطات int16؛ يحتاج إلى معايرة data/fraction)، أو 'w8a32' (INT8 ديناميكي، أوزان int8 + تنشيطات FP32؛ لا يحتاج إلى معايرة)، أو 32/غير محدد (FP32). لا يُصدّر FP16 بشكل منفصل (انظر الملاحظة أدناه). يحل هذا محل العلامات المهجورة half/int8. |
batch | int | 1 | يحدد حجم الدفعة للاستدلال بنموذج التصدير، أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدّر بالتزامن في وضع predict. |
data | str | None | ملف YAML لمجموعة البيانات المستخدم لمعايرة INT8؛ أما التصنيف فيتطلب دليل مجموعة بيانات أو اسم مجموعة بيانات مضمّنة. إذا لم يُحدّد مع quantize=8 أو 'w8a16'، تختار Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
fraction | float أو int أو list | 1.0 | مجموعة فرعية للمعايرة محددة كنسبة أو عدد صور أو نسب/أعداد [train, val, test]. تترك القوائم المكوّنة من عنصرين test كاملة، بينما تتجاوزها 0. |
device | str | None | يحدد الجهاز المستخدم للتصدير. يُجرى تصدير LiteRT على CPU (device=cpu). |
على خلاف تصدير tflite القديم، لا يتطلب LiteRT تصديرًا منفصلًا بدقة FP16. يعمل نموذج .tflite بدقة FP32 بدقة نصفية أثناء التشغيل عند استخدام مفوّض GPU (WebGPU أو OpenCL أو Metal) — وهذا هو النهج الرسمي لـLiteRT لاستدلال FP16.
لمزيد من التفاصيل حول عملية التصدير، تفضّل بزيارة صفحة وثائق Ultralytics حول التصدير.
استدلال CPU وNPU من Intel#
تعمل نماذج .tflite المُصدَّرة على أجهزة Intel عبر إضافة LiteRT Intel OpenVINO. مرّر device=intel:cpu أو device=intel:npu، وسيثبّت Ultralytics ai-edge-litert>=2.3.0 وai-edge-litert-sdk-intel عند الاستخدام الأول. يتطلب NPU معالج Intel Core Ultra مع تثبيت برنامج تشغيل NPU من Intel.
from ultralytics import YOLO
model = YOLO("yolo26n.tflite")
results = model("https://ultralytics.com/images/bus.jpg", device="intel:npu") # أو "intel:cpu"الأجهزة: Intel Core Ultra X7 358H (Panther Lake) وIntel AI Boost NPU 5010 وFedora Linux وبرنامج تشغيل NPU 1.38.0 وai-edge-litert 2.3.0.
| النموذج | المهمة | الحجم (بكسل) | CPU w8a32 LiteRT (مللي ثانية) | CPU w8a32 Intel (ms) | NPU w8a32 Intel (ms) |
|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 17.5 0.8 / 16.1 / 0.6 | 22.6 1.2 / 20.6 / 0.8 | 4.8 1.0 / 3.3 / 0.4 |
| YOLO26n-seg | Segment | 640 | 24.2 0.9 / 22.1 / 1.3 | 32.6 1.0 / 30.1 / 1.5 | 6.2 0.8 / 4.2 / 1.2 |
| YOLO26n-sem | دلالي | 640 | 25.2 1.0 / 14.2 / 10.0 | 33.1 1.1 / 21.9 / 10.2 | 16.5 1.0 / 5.5 / 10.0 |
| YOLO26n-depth | العمق | 640 | 31.7 0.9 / 30.2 / 0.5 | 76.6 0.9 / 75.2 / 0.5 | 9.1 1.0 / 7.5 / 0.5 |
| YOLO26n-cls | التصنيف | 224 | 4.6 2.8 / 1.7 / 0.0 | 7.3 3.3 / 3.9 / 0.0 | 4.1 3.2 / 0.9 / 0.0 |
| YOLO26n-pose | الوضعية | 640 | 20.3 0.8 / 19.0 / 0.5 | 28.6 1.1 / 26.8 / 0.8 | 6.3 0.8 / 4.9 / 0.5 |
| YOLO26n-obb | OBB | 640 | 17.2 0.8 / 16.1 / 0.3 | 22.1 1.2 / 20.5 / 0.4 | 4.6 0.9 / 3.4 / 0.3 |
المعيار المرجعي: متوسط 15 استدعاءً لـpredict() بعد 3 إحماءات على bus.jpg، باستخدام ultralytics 8.4.174 وai-edge-litert 2.3.0 مع عمليات التصدير إلى w8a32. تعرض كل خلية الزمن الإجمالي، مع تفصيل المعالجة المسبقة / الاستدلال / المعالجة اللاحقة أسفلها.
نشر نماذج YOLO المُصدّرة بتنسيق LiteRT#
بعد تصدير نموذج Ultralytics YOLO إلى LiteRT، يمكنك نشره عبر منصات متعددة. وأسرع طريقة للتحقق منه محليًا هي طريقة YOLO("yolo26n.tflite") الموضحة أعلاه. وللنشر في بيئات أخرى، راجع الموارد التالية:
الأجهزة المحمولة والمضمنة#
- Android: دليل البدء السريع لدمج LiteRT في تطبيقات Android.
- iOS: دليل لدمج نماذج LiteRT ونشرها في تطبيقات iOS.
- Linux المضمن وRaspberry Pi: شغّل نماذج LiteRT على الحواسيب أحادية اللوحة، مع إمكانية تسريعها باستخدام Coral Edge TPU.
- المتحكمات الدقيقة: انشر على وحدات MCU التي لا تتوفر إلا على بضعة كيلوبايتات من الذاكرة — إذ يشغل وقت التشغيل الأساسي نحو 16 كيلوبايت على Arm Cortex-M3.
المتصفح وNode.js (LiteRT.js)#
- نظرة عامة على LiteRT.js: شغّل نموذج
.tfliteنفسه مباشرةً في المتصفح مع تسريع WebGPU/WASM، ما يلغي الحاجة إلى الحوسبة من جهة الخادم ويحفظ البيانات على جهاز المستخدم. - أمثلة شاملة: أمثلة ودروس عملية لتنفيذ LiteRT على الأجهزة المحمولة والطرفية والويب.
الملخص#
في هذا الدليل، تناولنا كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق LiteRT. ومن خلال توحيد النشر على الأجهزة المحمولة/الطرفية (المعروف سابقًا باسم TFLite) وفي المتصفح (المعروف سابقًا باسم TF.js) ضمن نموذج .tflite واحد، يجعل LiteRT نماذج YOLO أسرع وأصغر حجمًا وقابلة للنقل إلى كل أجهزة التشغيل تقريبًا.
لمزيد من التفاصيل، تفضّل بزيارة الوثائق الرسمية لـ LiteRT.
وإذا كنت مهتمًا أيضًا بعمليات تكامل Ultralytics YOLO الأخرى، فاطّلع على صفحة دليل التكامل للاطلاع على الكثير من الموارد المفيدة.
الأسئلة الشائعة#
استخدم مكتبة Ultralytics لتصدير نموذج YOLO إلى LiteRT (
.tflite). أولًا، ثبّت الحزمة:pip install ultralyticsبعد ذلك، صدّر النموذج:
from ultralytics import YOLO # تحميل نموذج YOLO26 model = YOLO("yolo26n.pt") # تصدير النموذج إلى تنسيق LiteRT model.export(format="litert", imgsz=640) # استخدم imgsz=224 للتصنيفلمستخدمي CLI:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationلمزيد من التفاصيل، تفضّل بزيارة دليل التصدير من Ultralytics.
LiteRT هو الاسم الجديد لـ TensorFlow Lite — تنسيق النموذج
.tfliteنفسه وسلسلة وقت التشغيل نفسها، مع تغيير العلامة التجارية من Google. في Ultralytics، يغطي تنسيق التصدير الموحدlitertالآن حالتي الاستخدام اللتين كانتا تتطلبان سابقًا تنسيقين منفصلين:- تنسيق
tfliteالقديم ← النشر على الأجهزة المحمولة والمضمنة والطرفية. - تنسيق
tfjsالقديم ← النشر في المتصفح وNode.js، وتتكفل به الآن LiteRT.js التي تشغّل الملف.tfliteنفسه.
إذا كان لديك ملف
.tfliteموجود، فيمكنك تحميله مباشرةً باستخدامYOLO("model.tflite")، وسيعمل عبر الواجهة الخلفية LiteRT.- تنسيق
نعم. صدّر النموذج إلى تنسيق LiteRT، ثم شغّله على Raspberry Pi لتحسين سرعات الاستدلال. ولمزيد من التحسين، فكّر في استخدام Coral Edge TPU. للاطلاع على الخطوات التفصيلية، راجع دليل النشر على Raspberry Pi.
نعم. تشغّل LiteRT.js نموذج
.tfliteالمُصدّر نفسه مباشرةً في متصفح ويب أو تطبيق Node.js، مع تسريع WebGPU/WASM. وهذا يحل محل سير عمل TensorFlow.js السابق — فلا حاجة إلى تصدير منفصل للمتصفح، إذ يكفي نشر نموذج LiteRT باستخدام وقت تشغيل LiteRT.js.نعم — أثناء وقت التشغيل. يعمل نموذج LiteRT بدقة FP32 تلقائيًا بدقة FP16 عند تنفيذه على مفوّض GPU (WebGPU أو OpenCL أو Metal)، وهذا هو النهج الرسمي في LiteRT. لذلك، لا تحتاج إلى تصدير مخصص بدقة FP16؛ ولزيادة الضغط، استخدم تكميم INT8 مع
quantize=8.إذا واجهت أخطاء أثناء تصدير نماذج YOLO إلى LiteRT، فمن الحلول الشائعة:
- تحقّق من المنصة: يُدعم تصدير LiteRT على Linux x86_64 وmacOS. تحقّق من توافق بيئتك مع ذلك.
- تحقّق من توافق الحزم: تأكد من استخدام إصدار متوافق من Ultralytics. راجع دليل التثبيت.
- مشكلات التكميم: عند استخدام تكميم INT8، تأكد من تحديد مسار مجموعة البيانات على نحو صحيح في المعامل
data.
للحصول على نصائح إضافية لاستكشاف الأخطاء وإصلاحها، تفضّل بزيارة دليل المشكلات الشائعة.