أمن جاهز للمؤسسات: متوافق مع ISO 27001 و SOC 2 Type I.

Link to this sectionتصدير نموذج TFLite للنشر (مهمل)#

تم الإيقاف — تم استبداله بـ LiteRT

بدءًا من Ultralytics 8.4.83، تمت إزالة تنسيق التصدير المستقل tflite واستبداله بتنسيق Google LiteRT الموحد. يُعد LiteRT (Lite Runtime) الجيل التالي والاسم الجديد لـ TensorFlow Lite، وهو يصدر نفس نموذج .tflite — الذي يغطي الآن النشر على الأجهزة المحمولة، والمضمنة، والحافة، والمتصفحات في تنسيق واحد.

لا يزال format="tflite" يعمل ولكنه يصدر تحذيرًا بالإهمال ويقوم بتصدير نموذج LiteRT بدلاً منه. استخدم format="litert" للمضي قدمًا؛ للحصول على تعليمات وخيارات التصدير الحالية، راجع دليل تصدير LiteRT.

TensorFlow Lite edge deployment framework

يتطلب نشر نماذج الرؤية الحاسوبية على الأجهزة الطرفية أو الأجهزة المضمنة تنسيقًا يمكنه ضمان أداء سلس.

كان تنسيق تصدير TensorFlow Lite أو TFLite السابق يعمل على تحسين نماذج Ultralytics YOLO26 لمهام مثل اكتشاف الكائنات وتصنيف الصور في تطبيقات الحافة. يحتفظ هذا الدليل بسياق نشر TFLite القديم؛ استخدم LiteRT لعمليات التصدير الجديدة.

Link to this sectionلماذا تم استخدام TFLite للتصدير؟#

تم تقديم TensorFlow Lite - أو اختصاراً TFLite - من قبل Google في مايو 2017 كجزء من إطار عمل TensorFlow الخاص بهم، وهو إطار عمل للتعلم العميق مفتوح المصدر مصمم للاستنتاج على الجهاز، والمعروف أيضاً باسم حوسبة الحافة. لقد منح المطورين أدوات لتنفيذ النماذج المدربة على الأجهزة المحمولة والمدمجة وأجهزة إنترنت الأشياء، بالإضافة إلى أجهزة الكمبيوتر التقليدية.

دعم TensorFlow Lite مجموعة واسعة من المنصات، بما في ذلك Linux المدمج، وAndroid، وiOS، والمتحكمات الدقيقة (MCUs). مكنت عمليات تصدير TFLite التطبيقات من تشغيل النماذج محلياً وبدون اتصال بالإنترنت.

Link to this sectionالميزات الرئيسية لنماذج TFLite#

توفر نماذج TFLite مجموعة واسعة من الميزات الرئيسية التي تمكّن التعلم الآلي على الجهاز من خلال مساعدة المطورين على تشغيل نماذجهم على الأجهزة المحمولة والمضمنة والطرفية:

  • التحسين على الجهاز: يعمل TFLite على التحسين للتعلم الآلي على الجهاز، مما يقلل من زمن الانتقال عن طريق معالجة البيانات محليًا، ويعزز الخصوصية بعدم نقل البيانات الشخصية، ويقلل من حجم النموذج لتوفير المساحة.

  • دعم منصات متعددة: يوفر TFLite توافقًا واسعًا مع المنصات، ويدعم Android وiOS وLinux المضمن والمتحكمات الدقيقة.

  • دعم متنوع للغات: يتوافق TFLite مع لغات برمجة مختلفة، بما في ذلك Java وSwift وObjective-C وC++ وPython.

  • أداء عالٍ: يحقق أداءً فائقًا من خلال تسريع الأجهزة وتحسين النموذج.

Link to this sectionالأداء المقاس (تاريخي)#

مرجع قبل/بعد لترحيل التنسيق

تم الاحتفاظ بهذه الأرقام الخاصة بـ TFLite كـ سجل تاريخي للمقارنة بين ما قبل وبعد لترحيل onnx2tf-TFLite ← LiteRT: تصدير INT8 TFLite القديم بواسطة onnx2tf أدناه مقابل تصدير LiteRT w8a32 الجديد (راجع جدول الأداء المقاس لـ LiteRT). تتم مشاركتها مع فريق Google LiteRT لإظهار المكان الذي لا يزال فيه تنسيق litert-torch الجديد يتراجع مقارنة بالتنسيق الذي حل محله - انظر تراجعات التنسيق أدناه.

المقارنة قبل وبعد لكل مهمة على وحدة معالجة الرسوميات Adreno لهاتف Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850)، مقاسة عبر Ultralytics Flutter plugin 0.6.8: أصول INT8 TFLite القديمة المستخرجة عبر onnx2tf (بتنسيق NHWC، المدخل images) مقابل أصول w8a32 LiteRT الجديدة (بتنسيق NCHW، المدخل args_0)، وكلاهما يعمل على LiteRT 2.x في نفس الجولة المتتالية عند imgsz الخاص بنظام Android المشحون. تمثل كل خلية الوقت الإجمالي (المعالجة المسبقة + الاستنتاج + المعالجة اللاحقة) مع تقسيم الوقت لكل مرحلة أسفلها؛ كلا التنسيقين تم تجميعهما بالكامل على وحدة معالجة الرسوميات.

النموذجالمهمةالحجم
(بكسل)
قبل
onnx2tf INT8 TFLite
(مللي ثانية)
بعد
w8a32 LiteRT
(مللي ثانية)
YOLO26nاكتشاف64014.0
1.8 / 8.1 / 4.2
13.5
1.9 / 8.1 / 3.5
YOLO26n-segتجزئة64030.1
1.9 / 20.3 / 8.0
28.6
1.8 / 20.1 / 6.7
YOLO26n-semدلالي (Semantic)64026.4
1.9 / 16.4 / 8.1
32.9
1.8 / 23.0 / 8.2
YOLO26n-clsتصنيف2243.5
0.9 / 2.2 / 0.4
3.2
1.0 / 2.2 / 0.1
YOLO26n-poseوضعية64017.4
2.4 / 9.9 / 5.1
14.0
1.9 / 9.3 / 2.8
YOLO26n-obbOBB64013.9
3.0 / 8.3 / 2.7
13.0
2.9 / 7.9 / 2.3

يتفوق تنسيق w8a32 LiteRT على تنسيق INT8 القديم المستخرج بـ onnx2tf أو يعادله في خمس من أصل ست مهام من حيث زمن الاستجابة الكلي. يظل الاستنتاج الدلالي هو التراجع في التنسيق لأن قيم النواتج (logits) بتنسيق NCHW في w8a32 تتطلب وقت استنتاج أطول من قيم النواتج بتنسيق NHWC القديم، حتى بعد تنظيف المعالجة المسبقة. تعمل نماذج onnx2tf القديمة دون تغيير على LiteRT 2.x جنباً إلى جنب مع صادرات NCHW الجديدة. أصول Android LiteRT الرسمية مستضافة على إصدار yolo-flutter-app v0.6.6، مع سجل مفصل للأداء في مستند أداء Flutter.

Link to this sectionتراجعات التنسيق مقابل LiteRT#

الكشف باستخدام YOLO26n على نفس الجهاز على وحدة معالجة الرسوميات Adreno لهاتف Xiaomi 17 — مقارنة بين تنسيق INT8 TFLite القديم المستخرج بـ onnx2tf وتنسيقات التكميم الأربعة الخاصة بـ LiteRT، جميعها مقاسة في جولة واحدة مستمرة (وبالتالي فإن الاستنتاج هو المقياس القابل للمقارنة والذي يعتمد على التنسيق):

تنسيق Androidاستنتاج وحدة معالجة الرسوميات (مللي ثانية)تجميع وحدة معالجة الرسوميات
onnx2tf INT8 (TFLite القديم)8.6نعم
LiteRT w8a32 (الجديد الرسمي)8.4نعم
LiteRT INT8 (quantize=8)11.0نعم
LiteRT FP328.8نعم
LiteRT w8a16 (quantize="w8a16")(العودة إلى المعالج المركزي CPU)لا — فشل

مشكلات واجهت فريق Google LiteRT / litert-torch، ظهرت عند ترحيل أصول Android الإنتاجية من onnx2tf TFLite إلى LiteRT:

  1. تخطيط NCHW يجعل المستهلكين على دراية بالتخطيط. يقوم litert-torch بتتبع نموذج PyTorch وإخراج NCHW [1,3,H,W] بمدخل عائم (float)، بينما كان تصدير TFLite عبر onnx2tf بتنسيق NHWC [1,H,W,3] — مما يطابق تخطيط الكاميرا/الصور النقطية (bitmap). يقوم إضافي Flutter الحالي بكتابة CHW مستوٍ مباشرة أثناء حزم RGB، مما يتجنب عملية تبديل HWC إلى CHW منفصلة، ولكن لا يزال المستهلكون الأبسط بحاجة إما إلى الحزم المستوي المباشر أو عملية تبديل إضافية.
  2. quantize="w8a16" لا يتم تجميعه على مفوض وحدة معالجة الرسوميات (OpenCL) ويعود بصمت إلى مسار المعالج المركزي (CPU) الذي يكون أبطأ بحوالي 40 ضعفاً (حوالي 660 مللي ثانية مقابل حوالي 17 مللي ثانية)، مما يجعل تنسيق تنشيط int16 غير قابل للاستخدام في النشر على وحدة معالجة الرسوميات.
  3. تنسيق INT8 الثابت (quantize=8) هو أبطأ تنسيق على وحدة معالجة الرسوميات — حوالي 11 مللي ثانية مقابل حوالي 8.6 مللي ثانية لنموذج onnx2tf INT8 المكافئ القديم، أي أن مسار INT8 الخاص بـ LiteRT يتراجع مقارنة بالتنسيق الذي حل محله. يعد تنسيق w8a32 ذو النطاق الديناميكي هو تنسيق LiteRT الوحيد الذي يطابق سرعة INT8 القديمة، ولهذا السبب يتم شحنه الآن.
  4. نماذج التقسيم الدلالي تُصدر كـ logits بتنسيق NCHW خام دون خيار ArgMax داخل الرسم البياني، مما يفرض عملية argmax على جانب المضيف غير صديقة لذاكرة التخزين المؤقت عبر [1, C, H, W] (كل مستوى فئة يبعد H×W بالكامل). يمكن لمسارات onnx2tf وCoreML وQNN إصدار خريطة فئات مدمجة بدلاً من ذلك.
  5. تمت إعادة تسمية موترات الإخراج لتصبح output_0، output_1، … (مقابل Identity وIdentity_1 الخاصة بـ onnx2tf)، مما أدى إلى كسر عملية البحث عن شكل الإخراج في وقت التشغيل بصمت حتى أضاف المستهلك الأسماء الجديدة.

الأرقام المقابلة لـ LiteRT w8a32 (التنسيق الذي يتم شحنه الآن) موجودة في صفحة LiteRT.

Link to this sectionخيارات النشر في TFLite#

قبل أن نلقي نظرة على مثال تصدير LiteRT البديل، دعونا نفهم كيف تُستخدم نماذج TFLite عادةً.

يوفر TFLite خيارات متنوعة للنشر على الجهاز لنماذج التعلم الآلي، بما في ذلك:

  • النشر باستخدام Android وiOS: يمكن لتطبيقات Android وiOS التي تستخدم TFLite تحليل تدفقات الكاميرا وأجهزة الاستشعار على الحافة لاكتشاف الكائنات وتحديدها. يوفر TFLite أيضًا مكتبات iOS أصلية مكتوبة بـ Swift وObjective-C. يوضح مخطط البنية أدناه عملية نشر نموذج مدرب على منصات Android وiOS باستخدام TensorFlow Lite.

TensorFlow Lite deployment architecture for mobile

  • التنفيذ باستخدام Linux المضمن: إذا كان تشغيل الاستدلال على Raspberry Pi باستخدام دليل Ultralytics لا يلبي متطلبات السرعة لحالة استخدامك، يمكنك استخدام نموذج TFLite مصدر لتسريع أوقات الاستدلال. بالإضافة إلى ذلك، من الممكن تحسين الأداء بشكل أكبر باستخدام جهاز Coral Edge TPU.

  • النشر باستخدام المتحكمات الدقيقة: يمكن أيضًا نشر نماذج TFLite على المتحكمات الدقيقة والأجهزة الأخرى التي تحتوي على بضعة كيلوبايتات فقط من الذاكرة. يتناسب وقت التشغيل الأساسي مع 16 كيلوبايت على Arm Cortex M3 ويمكنه تشغيل العديد من النماذج الأساسية. لا يتطلب دعم نظام التشغيل، أو أي مكتبات C أو C++ قياسية، أو تخصيص ديناميكي للذاكرة.

Link to this sectionاستبدل تصدير TFLite بـ LiteRT#

لعمليات التصدير الجديدة، قم بتحويل نموذجك إلى LiteRT. يحتفظ النموذج الناتج بملحق الملف .tflite.

Link to this sectionالتثبيت#

لتثبيت الحزم المطلوبة، قم بتشغيل:

التثبيت
# Install the required package for YOLO26
pip install ultralytics

للحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، تحقق من دليل تثبيت Ultralytics الخاص بنا. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على حلول ونصائح.

Link to this sectionالاستخدام#

تم تصميم جميع نماذج 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")  # creates 'yolo26n.tflite'
التنبؤ
from 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")

Link to this sectionوسائط التصدير#

الوسيطالنوعالافتراضيالوصف
formatstr'litert'التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة.
imgszint أو tuple640حجم الصورة المطلوب لمدخل النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو زوجاً مرتباً (height, width) لأبعاد محددة.
quantizeint أو strNoneدقة التكميم: 8 (INT8 ثابت، أوزان int8 + تنشيطات int8؛ تحتاج إلى معايرة data/fraction'w8a16' (ثابت، أوزان int8 + تنشيطات int16؛ تحتاج إلى معايرة data/fraction'w8a32' (INT8 ديناميكي، أوزان int8 + تنشيطات FP32؛ لا تحتاج إلى معايرة)، أو 32/غير محدد (FP32). لا يتم تصدير FP16 بشكل منفصل — حيث يعمل نموذج FP32 تلقائياً بتنسيق FP16 على مفوضات GPU. يستبدل هذا علامات half/int8 التي تم إيقافها.
batchint1يحدد حجم استدلال دفعة النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict.
datastr'coco8.yaml'المسار إلى ملف إعداد dataset (الافتراضي: coco8.yaml)، وهو ضروري لعملية التكميم (quantization).
fractionfloat1.0يحدد جزءاً من مجموعة البيانات لاستخدامه في معايرة تكميم INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تمكين INT8، فسيتم استخدام مجموعة البيانات الكاملة.
devicestrNoneيحدد الجهاز لغرض التصدير: CPU (device=cpu)، أو MPS لـ Apple silicon (device=mps).

لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة وثائق Ultralytics حول التصدير.

Link to this sectionنشر نماذج YOLO26 TFLite المصدرة#

بعد تصدير نموذج Ultralytics YOLO26 الخاص بك إلى تنسيق LiteRT، يمكنك نشر نموذج .tflite الناتج. الخطوة الأولى الموصى بها والرئيسية لتشغيل نموذج TFLite هي استخدام طريقة YOLO("model.tflite") كما هو موضح في مقتطف كود الاستخدام السابق. ومع ذلك، للحصول على تعليمات متعمقة حول نشر نماذج TFLite الخاصة بك في بيئات أخرى متنوعة، ألقِ نظرة على الموارد التالية:

  • Android: دليل تشغيل سريع لدمج TensorFlow Lite في تطبيقات Android، يوفر خطوات سهلة المتابعة لإعداد وتشغيل نماذج التعلم الآلي.

  • iOS: تحقق من هذا الدليل المفصل للمطورين حول دمج ونشر نماذج TensorFlow Lite في تطبيقات iOS، والذي يقدم تعليمات خطوة بخطوة وموارد.

  • أمثلة شاملة: توفر هذه الصفحة نظرة عامة على العديد من أمثلة TensorFlow Lite، وتعرض تطبيقات عملية وبرامج تعليمية مصممة لمساعدة المطورين على تنفيذ TensorFlow Lite في مشاريع التعلم الآلي الخاصة بهم على الأجهزة المحمولة والطرفية.

Link to this sectionملخص#

يحتفظ هذا الدليل بسير عمل نشر TFLite القديم. بالنسبة لعمليات التصدير الجديدة، استخدم LiteRT لإنشاء نماذج .tflite لبيئات حوسبة الحافة.

لمزيد من التفاصيل حول الاستخدام، قم بزيارة التوثيق الرسمي لـ TFLite.

أيضًا، إذا كنت مهتمًا بتكاملات Ultralytics YOLO26 الأخرى، تحقق من صفحة دليل التكامل الخاصة بنا. ستجد الكثير من المعلومات والأفكار المفيدة هناك.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني استبدال تصدير 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")  # creates 'yolo26n.tflite'

بالنسبة لمستخدمي CLI، يمكنك تحقيق ذلك من خلال:

yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'

لمزيد من التفاصيل، قم بزيارة دليل تصدير Ultralytics.

Link to this sectionما هي فوائد استخدام TensorFlow Lite لنشر نموذج YOLO26؟#

TensorFlow Lite (TFLite) هو إطار عمل مفتوح المصدر للتعلم العميق مصمم للاستدلال على الجهاز، مما يجعله مثاليًا لنشر نماذج YOLO26 على الأجهزة المحمولة والمضمنة وأجهزة إنترنت الأشياء. تشمل الفوائد الرئيسية ما يلي:

  • التحسين على الجهاز: تقليل زمن الانتقال وتعزيز الخصوصية عن طريق معالجة البيانات محليًا.
  • توافق المنصات: يدعم Android وiOS وLinux المضمن وMCU.
  • الأداء: يستخدم تسريع الأجهزة لتحسين سرعة وكفاءة النموذج.

لمعرفة المزيد، تحقق من دليل TFLite.

Link to this sectionهل من الممكن تشغيل نماذج YOLO26 TFLite على Raspberry Pi؟#

نعم، يمكنك تشغيل نماذج YOLO26 TFLite على Raspberry Pi لتحسين سرعات الاستنتاج. أولاً، قم بتصدير نموذجك إلى تنسيق LiteRT كما هو موضح أعلاه. ثم، استخدم أداة مثل TensorFlow Lite Interpreter لتنفيذ النموذج على Raspberry Pi الخاص بك.

لمزيد من التحسينات، قد تفكر في استخدام Coral Edge TPU. للحصول على خطوات مفصلة، راجع دليل نشر Raspberry Pi الخاص بنا ودليل تكامل Edge TPU.

Link to this sectionهل يمكنني استخدام نماذج TFLite على المتحكمات الدقيقة لتنبؤات YOLO26؟#

نعم، يدعم TFLite النشر على المتحكمات الدقيقة ذات الموارد المحدودة. يتطلب وقت التشغيل الأساسي لـ TFLite 16 كيلوبايت فقط من الذاكرة على Arm Cortex M3 ويمكنه تشغيل نماذج YOLO26 الأساسية. وهذا يجعله مناسبًا للنشر على الأجهزة ذات الحد الأدنى من القدرة الحسابية والذاكرة.

للبدء، قم بزيارة دليل TFLite Micro للمتحكمات الدقيقة.

Link to this sectionما هي المنصات المتوافقة مع نماذج YOLO26 المصدرة بتنسيق TFLite؟#

يوفر TensorFlow Lite توافقًا واسعًا مع المنصات، مما يسمح لك بنشر نماذج YOLO26 على مجموعة واسعة من الأجهزة، بما في ذلك:

  • Android وiOS: دعم أصلي من خلال مكتبات TFLite لـ Android وiOS.
  • Linux المضمن: مثالي لأجهزة الكمبيوتر ذات اللوحة الواحدة مثل Raspberry Pi.
  • المتحكمات الدقيقة: مناسب للمتحكمات الدقيقة ذات الموارد المحدودة.

لمزيد من المعلومات حول خيارات النشر، راجع دليل النشر التفصيلي الخاص بنا.

Link to this sectionكيف يمكنني استكشاف الأخطاء وإصلاحها الشائعة أثناء تصدير نموذج YOLO26 إلى LiteRT؟#

إذا واجهت أخطاء أثناء تصدير نماذج YOLO26 إلى LiteRT، فتشمل الحلول الشائعة ما يلي:

  • تحقق من توافق الحزمة: تأكد من أنك تستخدم إصدارات متوافقة من Ultralytics وlitert-torch وai-edge-litert. راجع دليل التثبيت الخاص بنا.
  • دعم النموذج: تحقق من أن نموذج YOLO26 المحدد يدعم تصدير LiteRT من خلال الاطلاع على صفحة وثائق التصدير الخاصة بـ Ultralytics.
  • مشكلات التكميم (Quantization): عند استخدام تكميم INT8، تأكد من تحديد مسار مجموعة البيانات الخاصة بك بشكل صحيح في معامل data.

للحصول على نصائح إضافية لاستكشاف الأخطاء وإصلاحها، قم بزيارة دليل المشكلات الشائعة الخاص بنا.

التعليقات