تصدير نموذج 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 للتصدير؟#
طُوّر TensorFlow Lite، أو TFLite اختصارًا، بواسطة Google في مايو 2017 ضمن إطار عمل TensorFlow، وهو إطار عمل مفتوح المصدر للتعلم العميق صُمم للاستدلال على الجهاز، المعروف أيضًا باسم الحوسبة الطرفية. وقد وفّر للمطورين أدوات لتشغيل النماذج المدرّبة على الأجهزة المحمولة والمضمنة وأجهزة إنترنت الأشياء، وكذلك الحواسيب التقليدية.
دعم TensorFlow Lite مجموعة واسعة من المنصات، بما فيها Linux المضمن وAndroid وiOS والمتحكمات الدقيقة (MCUs). وأتاح تصدير TFLite للتطبيقات تشغيل النماذج محليًا ودون اتصال.
الميزات الرئيسية لنماذج TFLite#
توفر نماذج TFLite مجموعة واسعة من الميزات الرئيسية التي تتيح تعلّم الآلة على الجهاز، إذ تساعد المطورين على تشغيل نماذجهم على الأجهزة المحمولة والمضمنة والطرفية:
-
التحسين على الجهاز: يحسّن TFLite تعلّم الآلة على الجهاز، ويقلل زمن الاستجابة عبر معالجة البيانات محليًا، ويعزز الخصوصية بعدم نقل البيانات الشخصية، ويقلل حجم النموذج لتوفير المساحة.
-
دعم منصات متعددة: يوفر TFLite توافقًا واسعًا مع المنصات، ويدعم Android وiOS وLinux المضمن والمتحكمات الدقيقة.
-
دعم لغات متنوعة: يتوافق TFLite مع لغات برمجة متعددة، منها Java وSwift وObjective-C وC++ وPython.
-
أداء عالٍ: يحقق أداءً متفوقًا بفضل تسريع الأجهزة وتحسين النماذج.
الأداء المقاس (سجل تاريخي)#
سُجّلت هذه النتائج باستخدام إضافة Ultralytics لـ Flutter 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 (مللي ثانية) | مرشح w8a32 LiteRT (مللي ثانية) |
|---|---|---|---|---|
| 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 detect. ويُعد الاستدلال المقياس القابل للمقارنة والمعتمد على التنسيق:
| تنسيق Android | استدلال GPU (مللي ثانية) | ترجمة 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
# تحميل نموذج YOLO26
model = YOLO("yolo26n.pt")
# تصدير النموذج إلى تنسيق LiteRT
model.export(format="litert", imgsz=640) # استخدم imgsz=224 للتصنيفfrom ultralytics import YOLO
# تحميل نموذج TFLite المُصدّر
model = YOLO("yolo26n.tflite")
# تنفيذ الاستدلال
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# تحميل نموذج TFLite المُصدّر
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 بشكل منفصل؛ إذ يعمل نموذج 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 silicon (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 # تحميل نموذج 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.
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 النشر على المتحكمات الدقيقة ذات الموارد المحدودة: إذ لا تتطلب بيئة التشغيل الأساسية سوى 16 KB من الذاكرة على Arm Cortex M3، ويمكنها تشغيل العديد من النماذج الأساسية. ومع ذلك، تكون نماذج YOLO26 عمومًا أكبر من أن تلائم سعات الذاكرة المعتادة للمتحكمات الدقيقة؛ لذا تُعد الحواسيب أحادية اللوحة أو الأجهزة المحمولة أو المسرّعات المخصصة خيارات أفضل لتشغيل YOLO26.
للبدء، تفضل بزيارة دليل TFLite Micro للمتحكمات الدقيقة.
يوفر TensorFlow Lite توافقًا واسعًا مع المنصات، ما يتيح نشر نماذج YOLO26 على مجموعة كبيرة من الأجهزة، منها:
- Android وiOS: دعم أصلي عبر مكتبات TFLite لنظامي Android وiOS.
- Linux المضمن: مثالي للحواسيب أحادية اللوحة مثل Raspberry Pi.
- المتحكمات الدقيقة: مناسب للمتحكمات الدقيقة ذات الموارد المحدودة.
لمزيد من المعلومات حول خيارات النشر، راجع دليل النشر المفصل.
إذا واجهت أخطاء أثناء تصدير نماذج YOLO26 إلى LiteRT، فتشمل الحلول الشائعة ما يلي:
- تحقق من توافق الحزم: تأكد من استخدام إصدارات متوافقة من Ultralytics و
litert-torchوai-edge-litert. راجع دليل التثبيت. - دعم النموذج: تحقق من أن نموذج YOLO26 المحدد يدعم التصدير إلى LiteRT، وذلك بمراجعة صفحة وثائق التصدير لدى Ultralytics.
- مشكلات التكميم: عند استخدام تكميم INT8، تأكد من تحديد مسار مجموعة البيانات على نحو صحيح في المعامل
data.
للحصول على نصائح إضافية لاستكشاف الأخطاء وإصلاحها، تفضّل بزيارة دليل المشكلات الشائعة.
- تحقق من توافق الحزم: تأكد من استخدام إصدارات متوافقة من Ultralytics و