تصدير نموذج TFLite للنشر (متوقف)#
اعتبارًا من Ultralytics 8.4.83، أُزيل تنسيق التصدير المستقل tflite واستُبدل بتنسيق Google LiteRT الموحّد. يُعد LiteRT (Lite Runtime) الجيل التالي والاسم الجديد لـ TensorFlow Lite، ويُصدّر نموذج .tflite نفسه — مع تغطية النشر على الأجهزة المحمولة والمدمجة والطرفية والمتصفحات ضمن تنسيق واحد.
لا يزال format="tflite" يعمل، لكنه يُصدر تحذيرًا بشأن الإيقاف ويُصدّر نموذج LiteRT بدلًا منه. استخدم format="litert" من الآن فصاعدًا؛ وللاطلاع على تعليمات وخيارات التصدير الحالية، راجع دليل تصدير LiteRT.
يتطلب نشر نماذج الرؤية الحاسوبية على الأجهزة الطرفية أو المدمجة تنسيقًا يضمن أداءً سلسًا.
كان تنسيق التصدير السابق TensorFlow Lite أو TFLite يحسّن نماذج Ultralytics YOLO26 لمهام مثل اكتشاف الأجسام وتصنيف الصور في التطبيقات الطرفية. يحافظ هذا الدليل على سياق النشر القديم لـ TFLite؛ استخدم LiteRT لعمليات التصدير الجديدة.
لماذا استُخدم TFLite للتصدير؟#
قدّمته Google في مايو 2017 بوصفه جزءًا من إطار TensorFlow، وكان TensorFlow Lite، أو TFLite اختصارًا، إطارًا مفتوح المصدر للتعلم العميق مصممًا للاستدلال على الجهاز، ويُعرف أيضًا باسم الحوسبة الطرفية. وقد أتاح للمطورين أدوات لتنفيذ النماذج المدرّبة على الأجهزة المحمولة والمدمجة وأجهزة إنترنت الأشياء، وكذلك على الحواسيب التقليدية.
دعم TensorFlow Lite مجموعة واسعة من المنصات، بما في ذلك Linux المدمج وAndroid وiOS ووحدات التحكم الدقيقة (MCUs). وأتاحت عمليات تصدير TFLite للتطبيقات تشغيل النماذج محليًا ودون اتصال.
الميزات الرئيسية لنماذج TFLite#
تقدم نماذج TFLite مجموعة واسعة من الميزات الرئيسية التي تتيح التعلم الآلي على الجهاز، من خلال مساعدة المطورين على تشغيل نماذجهم على الأجهزة المحمولة والمدمجة والطرفية:
-
التحسين على الجهاز: يحسّن TFLite أداء التعلم الآلي على الجهاز، فيقلل زمن الاستجابة عبر معالجة البيانات محليًا، ويعزز الخصوصية عبر عدم نقل البيانات الشخصية، ويقلل حجم النموذج لتوفير المساحة.
-
دعم منصات متعددة: يوفر TFLite توافقًا واسعًا مع المنصات، ويدعم Android وiOS وLinux المدمج ووحدات التحكم الدقيقة.
-
دعم لغات متنوع: يتوافق TFLite مع لغات برمجة متعددة، بما في ذلك Java وSwift وObjective-C وC++ وPython.
-
أداء عالٍ: يحقق أداءً متفوقًا عبر تسريع العتاد وتحسين النموذج.
الأداء المقاس (تاريخيًا)#
سُجلت هذه النتائج باستخدام إضافة Flutter من Ultralytics 0.6.8 وLiteRT 2.1.5 على Android 16/API 36
على جهاز Xiaomi 17 بذاكرة LPDDR5X بسعة 12 GB. ويحتوي
Snapdragon 8 Elite Gen 5 بدقة تصنيع 3 nm
(SM8850) على وحدة CPU Qualcomm Oryon ذات 8 أنوية (نواتان Prime بتردد يصل إلى 4.6 GHz و6 أنوية Performance بتردد يصل إلى 3.62 GHz)،
ووحدة GPU Adreno، ووحدة NPU Hexagon. تقارن هذه الجداول أصول TFLite القديمة بتنسيق INT8 الناتجة عن onnx2tf مع عمليات تصدير
litert-torch المرشحة التي جرى تقييمها أثناء الترحيل. وقد استُبدلت أصول الإصدار لاحقًا بعمليات التصدير الموحّدة، ولذلك فإن هذه الأرقام لا تصف وحدات بايت الأصل الحالي v0.6.6. راجع
جداول أداء LiteRT للاطلاع على القياسات الحالية.
عمل التنسيقان ضمن اختبار GPU متتابع نفسه وبأحجام الإدخال الموضحة. وتمثل كل خلية الزمن الإجمالي
(المعالجة المسبقة + الاستدلال + المعالجة اللاحقة)، مع عرض تقسيم المراحل أسفلها؛ وأكدت السجلات الأصلية أن كلا التنسيقين
فوّضا الرسم البياني الكامل إلى LiteRT OpenCL (LITERT_CL) على وحدة GPU Adreno.
| النموذج | المهمة | الحجم (بكسل) | قديم onnx2tf INT8 TFLite (ms) | مرشح w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segment | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | دلالي | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | التصنيف | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | الوضعية | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
قارنت عملية الترحيل نفسها أيضًا تنسيقات تكميم الكشف لنموذج YOLO26n. ويُعد الاستدلال المقياس القابل للمقارنة والمعتمد على التنسيق:
| تنسيق Android | استدلال GPU (ms) | يُجمّع GPU |
|---|---|---|
| onnx2tf INT8 (TFLite القديم) | 8.6 | نعم |
| LiteRT w8a32 (مرشح) | 8.4 | نعم |
LiteRT INT8 (quantize=8) | 11.0 | نعم |
| LiteRT FP32 | 8.8 | نعم |
LiteRT w8a16 (quantize="w8a16") | الرجوع إلى CPU | لا |
في هذه العملية، عاد w8a16 إلى CPU بزمن إجمالي يقارب 660 ms، مقارنةً بنحو 17 ms لتنسيقات GPU. وقد حفزت هذه النتائج شحن w8a32، لكن توافق المفوّض والأداء يعتمدان على الجهاز وإصدار وقت التشغيل.
قِس أداء الجهاز المستهدف وتحقق من موضع المسرّع في سجلات وقت التشغيل.
خيارات النشر في TFLite#
قبل أن نلقي نظرة على مثال تصدير البديل LiteRT، لنتعرف أولًا على كيفية استخدام نماذج TFLite عادةً.
يوفر TFLite خيارات متنوعة لنشر نماذج التعلم الآلي على الجهاز، بما في ذلك:
- النشر باستخدام Android وiOS: يمكن لتطبيقات Android وiOS التي تستخدم TFLite تحليل تدفقات الكاميرا والمستشعرات الطرفية لاكتشاف الأجسام والتعرف عليها. كما يوفر TFLite مكتبات iOS أصلية مكتوبة بلغة Swift وObjective-C. يوضح مخطط البنية أدناه عملية نشر نموذج مدرّب على منصتي Android وiOS باستخدام TensorFlow Lite.
-
التنفيذ باستخدام Linux المدمج: إذا لم يلبِّ تشغيل عمليات الاستدلال على Raspberry Pi باستخدام دليل Ultralytics متطلبات السرعة لحالة الاستخدام لديك، فيمكنك استخدام نموذج TFLite مُصدَّر لتسريع أزمنة الاستدلال. إضافةً إلى ذلك، يمكن تحسين الأداء أكثر باستخدام جهاز Coral Edge TPU.
-
النشر باستخدام وحدات التحكم الدقيقة: يمكن أيضًا نشر نماذج TFLite على وحدات التحكم الدقيقة وأجهزة أخرى لا تملك سوى بضعة كيلوبايتات من الذاكرة. ويشغل وقت التشغيل الأساسي 16 KB فقط على Arm Cortex M3، ويمكنه تشغيل العديد من النماذج الأساسية. ولا يتطلب دعم نظام تشغيل أو أي مكتبات C أو C++ قياسية أو تخصيصًا ديناميكيًا للذاكرة.
استبدال تصدير TFLite بـ LiteRT#
لعمليات التصدير الجديدة، حوّل نموذجك إلى LiteRT. ويحتفظ النموذج الناتج بامتداد الملف .tflite.
التثبيت#
لتثبيت الحزم المطلوبة، شغّل:
# Install the required package for YOLO26
pip install ultralyticsللحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت Ultralytics. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على الحلول والنصائح.
الاستخدام#
صُممت جميع نماذج Ultralytics YOLO26 لدعم التصدير مباشرةً، مما يسهّل دمجها في سير عمل النشر المفضل لديك. يمكنك عرض القائمة الكاملة لتنسيقات التصدير المدعومة وخيارات الإعداد لاختيار الإعداد الأنسب لتطبيقك.
يدعم تنسيق LiteRT البديل أوضاع التصدير والتنبؤ والتحقق. صدّر نموذجك، ثم حمّل نموذج .tflite المُصدَّر لتشغيل الاستدلال أو التحقق من دقته.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert", imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
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 بشكل منفصل — إذ يعمل نموذج FP32 تلقائيًا بصيغة FP16 على مفوّضات GPU. ويستبدل ذلك العلامتين المهجورتين half/int8. |
batch | int | 1 | يحدد حجم الدفعة للاستدلال في نموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدَّر بالتزامن في وضع predict. |
data | str | None | مسار YAML الخاص بـ مجموعة البيانات، وهو ضروري للتكميم؛ أما التصنيف فيتطلب دليل مجموعة بيانات أو اسم مجموعة بيانات مضمّنة. إذا أُغفل مع quantize=8 أو 'w8a16'، فستحدد Ultralytics مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
fraction | float أو int أو list | 1.0 | مجموعة المعايرة الجزئية كنسبة أو عدد صور أو نسب/أعداد [train, val, test]. تترك القوائم ذات العنصرين test ممتلئًا، بينما تتخطى 0. |
device | str | None | يحدد الجهاز المستخدم للتصدير: CPU (device=cpu)، وMPS لشرائح Apple (device=mps). |
لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة توثيق Ultralytics حول التصدير.
نشر نماذج YOLO26 TFLite المُصدَّرة#
بعد تصدير نموذج Ultralytics YOLO26 إلى تنسيق LiteRT، يمكنك نشر نموذج .tflite الناتج. وتتمثل الخطوة الأولى الأساسية والموصى بها لتشغيل نموذج TFLite في استخدام طريقة YOLO("model.tflite")، كما هو موضح في مقتطف التعليمات البرمجية السابق. ومع ذلك، للحصول على تعليمات متعمقة حول نشر نماذج TFLite في إعدادات أخرى متنوعة، اطلع على الموارد التالية:
-
Android: دليل بدء سريع لدمج TensorFlow Lite في تطبيقات Android، مع خطوات سهلة الاتباع لإعداد نماذج التعلم الآلي وتشغيلها.
-
iOS: اطلع على هذا الدليل التفصيلي للمطورين حول دمج نماذج TensorFlow Lite ونشرها في تطبيقات iOS، مع تعليمات وموارد خطوة بخطوة.
-
أمثلة شاملة من البداية إلى النهاية: تقدم هذه الصفحة نظرة عامة على أمثلة TensorFlow Lite المتنوعة، وتعرض تطبيقات عملية ودروسًا تعليمية مصممة لمساعدة المطورين على تنفيذ TensorFlow Lite في مشاريع التعلم الآلي الخاصة بهم على الأجهزة المحمولة والطرفية.
الملخص#
يحافظ هذا الدليل على سير عمل النشر القديم لـ TFLite. ولعمليات التصدير الجديدة، استخدم LiteRT لإنشاء نماذج .tflite لبيئات الحوسبة الطرفية.
لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة الوثائق الرسمية لـ TFLite.
وإذا كنت مهتمًا أيضًا بعمليات تكامل Ultralytics YOLO26 الأخرى، فاطلع على صفحة دليل عمليات التكامل. ستجد فيها الكثير من المعلومات والرؤى المفيدة.
الأسئلة الشائعة#
لإجراء تصدير جديد، استخدم تنسيق LiteRT. أولًا، ثبّت الحزمة المطلوبة باستخدام:
pip install ultralyticsبعد ذلك، استخدم مقتطف التعليمات البرمجية التالي لتصدير نموذجك:
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to LiteRT format model.export(format="litert", imgsz=640) # use imgsz=224 for classificationبالنسبة إلى مستخدمي CLI، يمكنك تنفيذ ذلك باستخدام:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationلمزيد من التفاصيل، تفضّل بزيارة دليل التصدير من Ultralytics.
يُعد TensorFlow Lite (TFLite) إطارًا مفتوح المصدر لـالتعلم العميق مصممًا للاستدلال على الجهاز، ما يجعله مناسبًا لنشر نماذج YOLO26 على الأجهزة المحمولة والمدمجة وأجهزة إنترنت الأشياء. وتشمل الفوائد الرئيسية:
- التحسين على الجهاز: تقليل زمن الاستجابة وتعزيز الخصوصية عبر معالجة البيانات محليًا.
- التوافق مع المنصات: دعم Android وiOS وLinux المدمج وMCU.
- الأداء: الاستفادة من تسريع العتاد لتحسين سرعة النموذج وكفاءته.
لمعرفة المزيد، اطلع على دليل TFLite.
نعم، يمكنك تشغيل نماذج YOLO26 TFLite على Raspberry Pi لتحسين سرعات الاستدلال. أولًا، صدّر نموذجك إلى تنسيق LiteRT كما هو موضح أعلاه. ثم استخدم أداة مثل TensorFlow Lite Interpreter لتنفيذ النموذج على Raspberry Pi.
ولإجراء مزيد من التحسينات، يمكنك التفكير في استخدام Coral Edge TPU. وللاطلاع على الخطوات التفصيلية، راجع دليل نشر Raspberry Pi ودليل تكامل Edge TPU.
نعم، يدعم TFLite النشر على وحدات التحكم الدقيقة ذات الموارد المحدودة. ولا يتطلب وقت التشغيل الأساسي لـ TFLite سوى 16 KB من الذاكرة على Arm Cortex M3، ويمكنه تشغيل نماذج YOLO26 الأساسية. وهذا يجعله مناسبًا للنشر على الأجهزة ذات القدرة الحاسوبية والذاكرة المحدودتين.
لبدء الاستخدام، تفضل بزيارة دليل TFLite Micro لوحدات التحكم الدقيقة.
يوفر TensorFlow Lite توافقًا واسعًا مع المنصات، ما يتيح لك نشر نماذج YOLO26 على مجموعة كبيرة من الأجهزة، بما في ذلك:
- Android وiOS: دعم أصلي من خلال مكتبات TFLite الخاصة بـ Android وiOS.
- Linux المدمج: مثالي للحواسيب أحادية اللوحة مثل Raspberry Pi.
- وحدات التحكم الدقيقة: مناسبة لوحدات MCU ذات الموارد المحدودة.
لمزيد من المعلومات حول خيارات النشر، راجع دليل النشر التفصيلي.
إذا واجهت أخطاء أثناء تصدير نماذج YOLO26 إلى LiteRT، فتشمل الحلول الشائعة ما يلي:
- التحقق من توافق الحزم: تأكد من استخدام إصدارات متوافقة من Ultralytics و
litert-torchوai-edge-litert. راجع دليل التثبيت. - دعم النموذج: تحقق من أن نموذج YOLO26 المحدد يدعم التصدير إلى LiteRT، وذلك بالرجوع إلى صفحة وثائق التصدير الخاصة بـ Ultralytics.
- مشكلات التكميم: عند استخدام تكميم INT8، تأكّد من تحديد مسار مجموعة البيانات بشكل صحيح في المعلَمة
data.
للحصول على نصائح إضافية لاستكشاف الأخطاء وإصلاحها، تفضّل بزيارة دليل المشكلات الشائعة.
- التحقق من توافق الحزم: تأكد من استخدام إصدارات متوافقة من Ultralytics و