تخطي إلى المحتوى

انشر YOLO11 على الأجهزة المحمولة والحافة باستخدام ExecuTorch

يتطلب نشر نماذج الرؤية الحاسوبية على الأجهزة الطرفية مثل الهواتف الذكية والأجهزة اللوحية والأنظمة المدمجة وقت تشغيل مُحسَّن يوازن بين الأداء وقيود الموارد. يتيح ExecuTorch، حل PyTorch للحوسبة الطرفية، الاستنتاج الفعال على الجهاز لنماذج Ultralytics YOLO.

يحدد هذا الدليل كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق ExecuTorch، مما يتيح لك نشر نماذجك على الأجهزة المحمولة والحافة بأداء مُحسَّن.

لماذا يتم التصدير إلى ExecuTorch؟

نظرة عامة على PyTorch ExecuTorch

ExecuTorch هو حل PyTorch الشامل لتمكين قدرات الاستدلال على الجهاز عبر الأجهزة المحمولة والطرفية. تم تصميم ExecuTorch بهدف أن يكون قابلاً للنقل وفعالاً، ويمكن استخدامه لتشغيل برامج PyTorch على مجموعة واسعة من منصات الحوسبة.

الميزات الرئيسية لـ ExecuTorch

يوفر ExecuTorch العديد من الميزات القوية لنشر نماذج Ultralytics YOLO على الأجهزة الطرفية:

  • تنسيق النموذج المحمول: يستخدم ExecuTorch الـ .pte تنسيق (PyTorch ExecuTorch)، وهو مُحسَّن للحجم وسرعة التحميل على الأجهزة ذات الموارد المحدودة.

  • الخلفية XNNPACK: يوفر التكامل الافتراضي مع XNNPACK استدلالًا مُحسَّنًا للغاية على وحدات المعالجة المركزية (CPU) للأجهزة المحمولة، مما يوفر أداءً ممتازًا دون الحاجة إلى أجهزة متخصصة.

  • Quantization Support: دعم مدمج لتقنيات التكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال مع الحفاظ على الدقة.

  • كفاءة الذاكرة: تقلل إدارة الذاكرة المحسّنة من حجم الذاكرة المستخدمة في وقت التشغيل، مما يجعلها مناسبة للأجهزة ذات ذاكرة الوصول العشوائي RAM المحدودة.

  • بيانات تعريف النموذج: تتضمن النماذج المصدرة بيانات تعريف (حجم الصورة، أسماء الفئات، إلخ) في ملف YAML منفصل لسهولة التكامل.

خيارات النشر مع ExecuTorch

يمكن نشر نماذج ExecuTorch عبر العديد من المنصات الطرفية والمحمولة:

  • تطبيقات الهاتف المحمول: انشر على تطبيقات iOS و Android بأداء أصلي، مما يتيح اكتشاف الكائنات في الوقت الفعلي في تطبيقات الهاتف المحمول.

  • الأنظمة المدمجة: تعمل على أجهزة Linux مدمجة مثل Raspberry Pi و NVIDIA Jetson وأنظمة أخرى تعتمد على ARM مع أداء مُحسَّن.

  • أجهزة الذكاء الاصطناعي المتطورة: انشر على أجهزة الذكاء الاصطناعي المتطورة المتخصصة مع مندوبين مخصصين للاستدلال المعجل.

  • أجهزة إنترنت الأشياء: التكامل في أجهزة إنترنت الأشياء للاستدلال على الجهاز دون متطلبات الاتصال السحابي.

تصدير نماذج Ultralytics YOLO11 إلى ExecuTorch

يتيح تحويل نماذج Ultralytics YOLO11 إلى تنسيق ExecuTorch النشر الفعال على الأجهزة المحمولة والحافة.

التثبيت

يتطلب تصدير ExecuTorch Python 3.10 أو أعلى وتبعيات محددة:

التثبيت

# Install Ultralytics package
pip install ultralytics

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

الاستخدام

تصدير نماذج YOLO11 إلى ExecuTorch هو أمر مباشر:

الاستخدام

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo11n_executorch_model' directory

executorch_model = YOLO("yolo11n_executorch_model")

results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ExecuTorch format
yolo export model=yolo11n.pt format=executorch # creates 'yolo11n_executorch_model' directory

# Run inference with the exported model
yolo predict model=yolo11n_executorch_model source=https://ultralytics.com/images/bus.jpg

تُنشئ صادرات ExecuTorch دليلًا يتضمن .pte الملف والبيانات الوصفية. استخدم وقت تشغيل ExecuTorch في تطبيق الهاتف المحمول أو التطبيق المضمن لتحميل .pte النموذج وإجراء الاستدلال.

وسائط التصدير

عند التصدير إلى تنسيق ExecuTorch، يمكنك تحديد الوسائط التالية:

الوسيطةالنوعافتراضيالوصف
imgszint أو list640حجم الصورة لمدخلات النموذج (الارتفاع، العرض)
devicestr'cpu'الجهاز المراد استخدامه للتصدير ('cpu')

هيكل الإخراج

ينشئ تصدير ExecuTorch دليلًا يحتوي على النموذج والبيانات الوصفية:

yolo11n_executorch_model/
├── yolo11n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

استخدام نماذج ExecuTorch مُصدَّرة

بعد تصدير النموذج الخاص بك، ستحتاج إلى دمجه في التطبيق المستهدف الخاص بك باستخدام وقت تشغيل ExecuTorch.

التكامل مع الأجهزة المحمولة

لتطبيقات الأجهزة المحمولة (iOS/Android)، ستحتاج إلى:

  1. إضافة وقت تشغيل ExecuTorch: قم بتضمين مكتبة وقت تشغيل ExecuTorch في مشروع هاتفك المحمول
  2. تحميل النموذج: قم بتحميل .pte الملف في تطبيقك
  3. تشغيل الاستدلال: معالجة الصور والحصول على تنبؤات

مثال على تكامل iOS (Objective-C/C++):

// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples

#include <executorch/extension/module/module.h>

using namespace ::executorch::extension;

// Load the model
Module module("/path/to/yolo11n.pte");

// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});

// Run inference
const auto result = module.forward(tensor);

مثال على تكامل Android (Kotlin):

import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor

// Load the model
val module = Module.load("/path/to/yolo11n.pte")

// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)

// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArray

Embedded Linux

بالنسبة لأنظمة Linux المضمنة، استخدم ExecuTorch C++ API:

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo11n.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});

// Run inference
auto outputs = module.forward({input_tensor});

لمزيد من التفاصيل حول دمج ExecuTorch في تطبيقاتك، تفضل بزيارة وثائق ExecuTorch.

تحسين الأداء

تحسين حجم النموذج

لتقليل حجم النموذج للنشر:

  • استخدم نماذج أصغر: ابدأ بـ YOLO11n (nano) للحصول على أصغر حجم.
  • دقة إدخال أقل: استخدام أحجام صور أصغر (مثل imgsz=320 أو imgsz=416)
  • Quantization: تطبيق تقنيات التكميم (مدعومة في إصدارات ExecuTorch المستقبلية)

تحسين سرعة الاستدلال

للحصول على استدلال أسرع:

  • الخلفية XNNPACK: توفر الخلفية XNNPACK الافتراضية استدلالًا مُحسَّنًا لوحدة المعالجة المركزية (CPU).
  • تسريع الأجهزة: استخدم مندوبين خاصين بالمنصة (مثل CoreML لنظام iOS)
  • معالجة الدُفعات: معالجة صور متعددة قدر الإمكان

المعايير

قام فريق Ultralytics بوضع معايير لنماذج YOLO11، وقارن بين السرعة والدقة بين PyTorch و ExecuTorch.

الأداء

النموذجالتنسيقالحالةالحجم (ميجابايت)metrics/mAP50-95(B)وقت الاستدلال (مللي ثانية / صورة)
YOLO11nPyTorch5.40.5060337.67
YOLO11nExecuTorch110.5080167.28
YOLO11sPyTorch190.5770928.80
YOLO11sExecuTorch370.5780388.31

ملاحظة

لا يشمل وقت الاستدلال المعالجة المسبقة/اللاحقة.

استكشاف الأخطاء وإصلاحها

مشكلات شائعة

إشكالية: Python version error

الحل: يتطلب ExecuTorch Python 3.10 أو أعلى. قم بترقية تثبيت Python الخاص بك:

# Using conda
conda create -n executorch python=3.10
conda activate executorch

إشكالية: Export fails during first run

الحل: قد يحتاج ExecuTorch إلى تنزيل وتجميع المكونات في أول استخدام. تأكد من أن لديك:

pip install --upgrade executorch

إشكالية: Import errors for ExecuTorch modules

الحل: تأكد من تثبيت ExecuTorch بشكل صحيح:

pip install executorch --force-reinstall

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

ملخص

يتيح تصدير نماذج YOLO11 إلى تنسيق ExecuTorch النشر الفعال على الأجهزة المحمولة والحافة. بفضل تكامل PyTorch الأصلي ودعم الأنظمة الأساسية المتعددة والأداء المحسن، يعد ExecuTorch خيارًا ممتازًا لتطبيقات الذكاء الاصطناعي المتطورة.

النقاط الرئيسية:

  • يوفر ExecuTorch نشرًا أصليًا للحافة خاص بـ PyTorch بأداء ممتاز
  • التصدير بسيط مع format='executorch' معامل
  • تم تحسين النماذج لوحدات المعالجة المركزية (CPUs) للأجهزة المحمولة عبر الواجهة الخلفية XNNPACK
  • يدعم منصات iOS و Android و Linux المضمنة
  • يتطلب Python 3.10+ ومترجم FlatBuffers

الأسئلة الشائعة

كيف يمكنني تصدير نموذج YOLO11 إلى تنسيق ExecuTorch؟

قم بتصدير نموذج YOLO11 إلى ExecuTorch باستخدام Python أو CLI:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="executorch")

أو

yolo export model=yolo11n.pt format=executorch

ما هي متطلبات النظام لتصدير ExecuTorch؟

يتطلب تصدير ExecuTorch:

  • Python 3.10 أو أعلى
  • executorch الحزمة (تثبيت عبر pip install executorch)
  • PyTorch (مثبت تلقائيًا مع ultralytics)

ملاحظة: خلال التصدير الأول، سيقوم ExecuTorch بتنزيل وتجميع المكونات الضرورية بما في ذلك برنامج ترجمة FlatBuffers تلقائيًا.

هل يمكنني تشغيل الاستدلال بنماذج ExecuTorch مباشرة في Python؟

نماذج ExecuTorch ‏(.pte تم تصميم الملفات) للنشر على الأجهزة المحمولة والحافة باستخدام وقت تشغيل ExecuTorch. لا يمكن تحميلها مباشرة باستخدام YOLO() للاستدلال في Python. تحتاج إلى دمجها في التطبيق المستهدف باستخدام مكتبات وقت التشغيل ExecuTorch.

ما هي المنصات التي يدعمها ExecuTorch؟

يدعم ExecuTorch:

  • الهاتف المحمول: iOS و Android
  • Embedded Linux: Raspberry Pi و NVIDIA Jetson وأجهزة ARM الأخرى
  • سطح المكتب: Linux و macOS و Windows (للتطوير)

كيف تتم مقارنة ExecuTorch بـ TFLite للنشر على الأجهزة المحمولة؟

يعتبر كل من ExecuTorch و TFLite ممتازين للنشر على الأجهزة المحمولة:

  • ExecuTorch: تكامل أفضل مع PyTorch، وسير عمل PyTorch أصلي، ونظام بيئي متنامي.
  • TFLite: أكثر نضجًا، دعم أوسع للأجهزة، المزيد من أمثلة النشر

اختر ExecuTorch إذا كنت تستخدم PyTorch بالفعل وتريد مسار نشر أصلي. اختر TFLite لتحقيق أقصى قدر من التوافق والأدوات الناضجة.

هل يمكنني استخدام نماذج ExecuTorch مع تسريع GPU؟

نعم! يدعم ExecuTorch تسريع الأجهزة من خلال العديد من الواجهات الخلفية:

  • وحدة معالجة الرسومات المحمولة (Mobile GPU): عبر مندوبي Vulkan أو Metal أو OpenCL
  • NPU/DSP: عبر مفوضين خاصين بالمنصة
  • افتراضي: XNNPACK للاستدلال المحسن لوحدة المعالجة المركزية CPU

راجع وثائق ExecuTorch للإعداد الخاص بالخلفية.



📅 تم إنشاؤه منذ شهر ✏️ تم تحديثه منذ 25 يومًا
glenn-jocherLaughing-qlakshanthadambitious-octopus

تعليقات