نشر YOLO11 على الهاتف المحمول والحافة باستخدام ExecuTorch
يتطلب نشر نماذج الرؤية الحاسوبية على الأجهزة المتطورة مثل الهواتف الذكية والأجهزة اللوحية والأنظمة المدمجة وقت تشغيل مُحسَّن يوازن بين الأداء وقيود الموارد. يتيح حل ExecuTorch، وهو حل PyTorch للحوسبة الطرفية، إمكانية الاستدلال الفعال على الجهاز من أجل Ultralytics YOLO نماذج.
يوضّح هذا الدليل كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق ExecuTorch، مما يتيح لك نشر نماذجك على الأجهزة المحمولة والأجهزة الطرفية بأداء محسّن.
لماذا التصدير إلى ExecuTorch؟
ExecuTorch هو حل PyTorch المتكامل لتمكين قدرات الاستدلال على الجهاز عبر الأجهزة المحمولة والأجهزة المتطورة. صُممت ExecuTorch بهدف أن تكون محمولة وفعالة، ويمكن استخدامها لتشغيل برامج PyTorch على مجموعة واسعة من منصات الحوسبة.
الميزات الرئيسية لـ ExecuTorch
يوفر ExecuTorch العديد من الميزات الفعالة لنشر نماذج Ultralytics YOLO على الأجهزة المتطورة:
-
تنسيق النموذج المحمول: يستخدم برنامج ExecuTorch
.pte
PyTorch تنسيقPyTorch ExecuTorch)، وهو تنسيق مُحسَّن من حيث الحجم وسرعة التحميل على الأجهزة محدودة الموارد. -
واجهة XNNPACK الخلفية: يوفّر التكامل الافتراضي مع XNNPACK استدلالاً محسّنًا للغاية على وحدات المعالجة المركزية المحمولة، مما يوفر أداءً ممتازًا دون الحاجة إلى أجهزة متخصصة.
-
دعم التكميم: دعم مدمج لتقنيات التكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال مع الحفاظ على الدقة.
-
كفاءة الذاكرة: تعمل الإدارة المحسّنة للذاكرة على تقليل بصمة الذاكرة وقت التشغيل، مما يجعلها مناسبة للأجهزة ذات ذاكرة الوصول العشوائي المحدودة.
-
بيانات تعريف النموذج: تتضمن النماذج المصدرة بيانات التعريف (حجم الصورة، أسماء الفئات، إلخ) في ملف YAML منفصل لسهولة التكامل.
خيارات النشر مع ExecuTorch
يمكن نشر نماذج ExecuTorch عبر مختلف المنصات المتطورة والمتنقلة:
-
تطبيقات الجوال: النشر على تطبيقات iOS و Android بأداء أصلي، مما يتيح اكتشاف الكائنات في الوقت الفعلي في تطبيقات الأجهزة المحمولة.
-
الأنظمة المدمجة: التشغيل على أجهزة لينكس المدمجة مثل 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، يمكنك تحديد الوسيطات التالية:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
imgsz |
int أو list |
640 |
حجم الصورة لمدخلات النموذج (الارتفاع، العرض) |
device |
str |
'cpu' |
الجهاز المراد استخدامه للتصدير ('cpu' ) |
هيكل المخرجات
ينشئ تصدير ExecuTorch دليلاً يحتوي على النموذج والبيانات الوصفية:
yolo11n_executorch_model/
├── yolo11n.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)
استخدام نماذج ExecuTorch المصدرة
بعد تصدير نموذجك، ستحتاج إلى دمجه في تطبيقك المستهدف باستخدام وقت تشغيل ExecuTorch.
التكامل عبر الهاتف المحمول
بالنسبة لتطبيقات الأجهزة المحمولةiOSAndroid)، ستحتاج إلى
- إضافة وقت تشغيل ExecuTorch: قم بتضمين مكتبة وقت تشغيل ExecuTorch في مشروعك المحمول
- نموذج التحميل: تحميل
.pte
ملف في تطبيقك - تشغيل الاستدلال: معالجة الصور والحصول على تنبؤات
مثال على تكامل iOS (Objective-C/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
لينكس المدمج
بالنسبة لأنظمة لينكس المدمجة، استخدم واجهة برمجة تطبيقات 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 (نانو) للحصول على أصغر بصمة
- دقة إدخال أقل: استخدم أحجام صور أصغر (على سبيل المثال,
imgsz=320
أوimgsz=416
) - التكميم: تطبيق تقنيات التكميم (مدعومة في إصدارات ExecuTorch المستقبلية)
تحسين سرعة الاستدلال
للاستدلال بشكل أسرع:
- خلفية XNNPACK: توفر الواجهة الخلفية الافتراضية XNNPACK استدلالاً محسناً CPU
- تسريع الأجهزة: استخدام المفوضين الخاصين بالمنصة (على سبيل المثال، CoreML iOS)
- معالجة الدُفعات: معالجة صور متعددة عندما يكون ذلك ممكناً
المعايير
قام فريق Ultralytics بقياس أداء نماذج YOLO11 ومقارنة السرعة والدقة بين PyTorch و ExecuTorch.
الأداء
النموذج | التنسيق | الحالة | الحجم (ميجابايت) | metrics/mAP50-95(B) | وقت الاستدلال (مللي ثانية / صورة) |
---|---|---|---|---|---|
YOLO11n | PyTorch | ✅ | 5.4 | 0.5060 | 337.67 |
YOLO11n | إكسيكوتورش | ✅ | 11 | 0.5080 | 167.28 |
YOLO11s | PyTorch | ✅ | 19 | 0.5770 | 928.80 |
YOLO11s | إكسيكوتورش | ✅ | 37 | 0.5780 | 388.31 |
ملاحظة
لا يشمل وقت الاستدلال المعالجة المسبقة/اللاحقة.
استكشاف الأخطاء وإصلاحها
مشكلات شائعة
إشكالية: Python version error
الحل: يتطلب ExecuTorch Python 3.10 أو أعلى. قم بترقية تثبيت Python :
```bash
# Using conda
conda create -n executorch python=3.10
conda activate executorch
```
إشكالية: Export fails during first run
الحل: قد يحتاج ExecuTorch إلى تنزيل المكونات وتجميعها عند الاستخدام الأول. تأكد من أن لديك:
```bash
pip install --upgrade executorch
```
إشكالية: Import errors for ExecuTorch modules
الحل: تأكد من تثبيت ExecuTorch بشكل صحيح:
```bash
pip install executorch --force-reinstall
```
لمزيد من المساعدة في استكشاف الأخطاء وإصلاحها، تفضل بزيارة مشكلاتUltralytics GitHub أو وثائق ExecuTorch.
ملخص
يتيح تصدير نماذج YOLO11 إلى تنسيق ExecuTorch إمكانية النشر الفعال على الأجهزة المحمولة والأجهزة المتطورة. وبفضل تكامل PyTorch ودعمه عبر المنصات والأداء المحسّن، يعد ExecuTorch خيارًا ممتازًا لتطبيقات الذكاء الاصطناعي المتطورة.
الوجبات الرئيسية:
- يوفر ExecuTorch نشر حافة PyTorch مع أداء ممتاز
- التصدير بسيط مع
format='executorch'
المعلمة - تم تحسين النماذج لوحدات المعالجة المركزية المحمولة عبر الواجهة الخلفية XNNPACK
- يدعم أنظمة iOS و Android ومنصات Linux المدمجة
- يتطلب Python 3.10+ ومترجم FlatBuffers
الأسئلة الشائعة
كيف يمكنني تصدير نموذج YOLO11 إلى تنسيق ExecuTorch؟
قم بتصدير نموذج YOLO11 إلى ExecuTorch باستخدام إما Python أو CLI:
```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
```
أو
```bash
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
- لينكس المدمج: Raspberry Pi و NVIDIA Jetson وأجهزة ARM الأخرى
- سطح المكتب: Linux وmacOS وWindows (للتطوير)
كيف تقارن ExecuTorch بـ TFLite للنشر على الأجهزة المحمولة؟
يعد كل من ExecuTorch و TFLite ممتازين للنشر المتنقل:
- ExecuTorch: تكامل أفضل مع PyTorch وسير عمل PyTorch الأصلي، ونظام بيئي متنامٍ
- TFLite: أكثر نضجًا، ودعم الأجهزة على نطاق أوسع، والمزيد من أمثلة النشر
اختر ExecuTorch إذا كنت تستخدم PyTorch بالفعل وتريد مسار نشر أصلي. اختر TFLite للحصول على أقصى قدر من التوافق والأدوات الناضجة.
هل يمكنني استخدام نماذج ExecuTorch مع تسريع GPU
نعم! يدعم ExecuTorch تسريع الأجهزة من خلال العديد من الدعامات الخلفية:
- GPU الهاتف المحمول: عن طريق مندوبي Vulkan أو Metal أو OpenCL
- NPU/DSP: عن طريق المندوبين الخاصين بالمنصة
- افتراضي: XNNPACK للاستدلال المحسّن CPU
ارجع إلى وثائق ExecuTorch للاطلاع على الإعداد الخاص بالجهة الخلفية.