تصدير نموذج 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.
-
أداء عالٍ: يحقق أداءً فائقًا من خلال تسريع الأجهزة وتحسين النموذج.
الأداء المقاس (تاريخي)#
تم تسجيل هذه النتائج باستخدام المكون الإضافي Flutter من Ultralytics 0.6.8 و LiteRT 2.1.5 على نظام Android 16/API 36 على جهاز Xiaomi 17 بذاكرة LPDDR5X بسعة 12 جيجابايت. يحتوي معالجه Snapdragon 8 Elite Gen 5 (SM8850) بدقة 3 نانومتر على وحدة معالجة مركزية Qualcomm Oryon بـ 8 أنوية (نظيرتان رئيسيتان بتردد يصل إلى 4.6 جيجاهرتز و6 أنوية أداء بتردد يصل إلى 3.62 جيجاهرتز)، ووحدة معالجة رسومات Adreno، ووحدة NPU من Hexagon. تقارن هذه الجداول بين أصول TFLite بنجاح INT8 لـ onnx2tf القديمة وتصديرات litert-torch المرشحة التي تم تقييمها أثناء عملية الهجرة. تم استبدال أصول الإصدار لاحقاً بالتصديرات القياسية، لذا فإن هذه الأرقام لا تصف بايتات أصول v0.6.6 الحالية. راجع جداول أداء LiteRT لمعرفة القياسات الحالية.
عمل كلا التنسيقين في نفس جولة وحدة معالجة الرسومات المتتالية بأحجام الإدخال المعروضة. كل خلية تمثل الوقت الإجمالي (المعالجة المسبقة + الاستدلال + المعالجة اللاحقة)، مع تقسيم كل مرحلة تحته؛ وأكدت السجلات الأصلية أن كلا التنسيقين فوض الرسم البياني بالكامل إلى LiteRT OpenCL (LITERT_CL) على وحدة معالجة الرسومات Adreno.
| النموذج | المهمة | الحجم (بكسل) | القديم onnx2tf INT8 TFLite (مللي ثانية) | المرشح w8a32 LiteRT (مللي ثانية) |
|---|---|---|---|---|
| YOLO26n | اكتشاف | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | تجزئة | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | دلالي (Semantic) | 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 | استنتاج وحدة معالجة الرسوميات (مللي ثانية) | تجميع وحدة معالجة الرسوميات |
|---|---|---|
| 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 مللي ثانية إجمالاً مقابل حوالي 17 مللي ثانية لتنسيقات وحدة معالجة الرسومات (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 كيلوبايت على Arm Cortex M3 ويمكنه تشغيل العديد من النماذج الأساسية. لا يتطلب دعم نظام التشغيل، أو أي مكتبات C أو C++ قياسية، أو تخصيص ديناميكي للذاكرة.
استبدل تصدير TFLite بـ LiteRT#
بالنسبة لعمليات التصدير الجديدة، قم بتحويل نموذجك إلى LiteRT. يحتفظ النموذج الناتج بامتداد الملف .tflite.
التثبيت#
لتثبيت الحزم المطلوبة، قم بتشغيل:
# Install the required package for YOLO26
pip install ultralyticsللحصول على إرشادات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت Ultralytics. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على الحلول والنصائح.
الاستخدام#
تم تصميم جميع نماذج Ultralytics YOLO26 لدعم التصدير خارج الصندوق، مما يسهل دمجها في سيرงาน النشر المفضل لديك. يمكنك عرض القائمة الكاملة لتنسيقات التصدير المدعومة وخيارات التكوين لاختيار الإعداد الأفضل لتطبيقك.
يدعم تنسيق LiteRT البديل أوضاع التصدير (Export)، والتنبؤ (Predict)، والتحقق (Validate). قم بتصدير نموذجك، ثم تحميل نموذج .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 | حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة أو صفًا (tuple) (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 تلقائياً على مفوضي وحدة معالجة الرسومات. ويحل محل علامات half/int8 المهملة. |
batch | int | 1 | يحدد حجم استدلال الدفعات (batch) لنموذج التصدير أو الحد الأقصى لعدد الصور التي سيقوم النموذج المصدر بمعالجتها بشكل متزامن في الوضع predict. |
data | str | None | مسار ملف YAML الخاص بـ مجموعة البيانات، وهو أمر أساسي للكمومية؛ بينما تأخذ عملية التصنيف بدلاً من ذلك دليل مجموعة بيانات أو اسم مجموعة بيانات مدمج. إذا تم حذفه باستخدام quantize=8 أو 'w8a16'، فإن Ultralytics يختار مجموعة بيانات المعايرة الافتراضية لمهمة النموذج. |
fraction | float | 1.0 | يحدد جزءاً من مجموعة البيانات لاستخدامه في معايرة تكميم INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تمكين INT8، فسيتم استخدام مجموعة البيانات الكاملة. |
device | str | None | يحدد الجهاز المراد التصدير إليه: وحدة المعالجة المركزية (CPU) (device=cpu)، و MPS لسليكون أبل (device=mps). |
لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة وثائق Ultralytics حول التصدير.
نشر نماذج YOLO26 TFLite المصدرة#
بعد تصدير نموذج Ultralytics YOLO26 الخاص بك إلى تنسيق LiteRT، يمكنك نشر نموذج .tflite الناتج. تُعد الخطوة الأولى الأساسية والموصى بها تشغيل نموذج TFLite هي استخدام طريقة YOLO("model.tflite")، كما هو موضح في مقتطف تعليمات الاستخدام السابق. ومع ذلك، للحصول على إرشادات متعمقة حول نشر نماذج TFLite في إعدادات أخرى متنوعة، ألق نظرة على الموارد التالية:
-
Android: دليل البدء السريع لدمج TensorFlow Lite في تطبيقات Android، والذي يوفر خطوات سهلة المتابعة لإعداد وتشغيل نماذج التعلم الآلي.
-
iOS: اطلع على هذا الدليل المفصل للمطورين حول دمج ونشر نماذج TensorFlow Lite في تطبيقات iOS، والذي يقدم تعليمات خطوة بخطوة وموارد.
-
أمثلة شاملة (End-To-End Examples): توفر هذه الصفحة نظرة عامة على أمثلة متنوعة لـ TensorFlow Lite، وتستعرض التطبيقات العملية والدروس التعليمية المصممة لمساعدة المطورين على تنفيذ TensorFlow Lite في مشاريع التعلم الآلي الخاصة بهم على الأجهزة المحمولة والأجهزة الطرفية.
ملخص#
يحافظ هذا الدليل على سير عمل نشر TFLite القديم. بالنسبة لعمليات التصدير الجديدة، استخدم LiteRT لإنشاء نماذج .tflite لبيئات الحوسبة الطرفية.
لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة الوثائق الرسمية لـ TFLite.
أيضاً، إذا كنت مهتماً بعمليات الدمج الأخرى لـ Ultralytics YOLO26، تحقق من صفحة دليل التكامل الخاصة بنا. ستجد هناك الكثير من المعلومات والرؤى المفيدة.
الأسئلة الشائعة#
كيف يمكنني استبدال تصدير TFLite بـ LiteRT؟#
للحصول على تصدير جديد، استخدم تنسيق 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 لنشر نموذج YOLO26؟#
TensorFlow Lite (TFLite) هو إطار عمل للتعلم العميق مفتوح المصدر مصمم للاستدلال على الجهاز، مما يجعله مثاليًا لنشر نماذج YOLO26 على الهواتف المحمولة، والأجهزة المضمنة، وأجهزة إنترنت الأشياء. وتشمل الفوائد الرئيسية:
- التحسين على الجهاز: تقليل زمن الانتقال وتعزيز الخصوصية عن طريق معالجة البيانات محليًا.
- توافق المنصات: يدعم Android وiOS وLinux المضمن وMCU.
- الأداء: يستخدم تسريع الأجهزة لتحسين سرعة وكفاءة النموذج.
لمعرفة المزيد، راجع دليل TFLite.
هل من الممكن تشغيل نماذج YOLO26 TFLite على Raspberry Pi؟#
نعم، يمكنك تشغيل نماذج YOLO26 TFLite على Raspberry Pi لتحسين سرعات الاستنتاج. أولاً، قم بتصدير نموذجك إلى تنسيق LiteRT كما هو موضح أعلاه. ثم، استخدم أداة مثل TensorFlow Lite Interpreter لتنفيذ النموذج على Raspberry Pi الخاص بك.
لمزيد من التحسينات، قد تفكر في استخدام Coral Edge TPU. للحصول على خطوات مفصلة، راجع دليل نشر Raspberry Pi الخاص بنا ودليل تكامل Edge TPU.
هل يمكنني استخدام نماذج TFLite على المتحكمات الدقيقة لتنبؤات YOLO26؟#
نعم، يدعم TFLite النشر على المتحكمات الدقيقة ذات الموارد المحدودة. يتطلب وقت التشغيل الأساسي لـ TFLite 16 كيلوبايت فقط من الذاكرة على Arm Cortex M3 ويمكنه تشغيل نماذج YOLO26 الأساسية. وهذا يجعله مناسبًا للنشر على الأجهزة ذات الحد الأدنى من القدرة الحسابية والذاكرة.
للبدء، تفضل بزيارة دليل TFLite Micro للمتحكمات الدقيقة.
ما هي المنصات المتوافقة مع نماذج YOLO26 المصدرة بتنسيق TFLite؟#
يوفر TensorFlow Lite توافقًا واسعًا مع المنصات، مما يسمح لك بنشر نماذج YOLO26 على مجموعة واسعة من الأجهزة، بما في ذلك:
- Android وiOS: دعم أصلي من خلال مكتبات TFLite لـ Android وiOS.
- Linux المضمن: مثالي لأجهزة الكمبيوتر ذات اللوحة الواحدة مثل Raspberry Pi.
- المتحكمات الدقيقة: مناسب للمتحكمات الدقيقة ذات الموارد المحدودة.
لمزيد من المعلومات حول خيارات النشر، راجع دليل النشر المفصل الخاص بنا.
كيف يمكنني استكشاف الأخطاء وإصلاحها الشائعة أثناء تصدير نموذج YOLO26 إلى LiteRT؟#
إذا واجهت أخطاء أثناء تصدير نماذج YOLO26 إلى LiteRT، فتشمل الحلول الشائعة ما يلي:
- التحقق من توافق الحزم: تأكد من أنك تستخدم إصدارات متوافقة من Ultralytics، و
litert-torch، وai-edge-litert. راجع دليل التثبيت الخاص بنا. - دعم النموذج: تحقق من أن نموذج YOLO26 المحدد يدعم تصدير LiteRT من خلال مراجعة صفحة وثائق التصدير الخاصة بـ Ultralytics.
- مشكلات الكمية (Quantization): عند استخدام كمية INT8، تأكد من تحديد مسار مجموعة البيانات الخاصة بك بشكل صحيح في معلمة
data.
للحصول على نصائح إضافية حول استكشاف الأخطاء وإصلاحها، تفضل بزيارة دليل المشكلات الشائعة الخاص بنا.