YOLO Vision 2026:

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

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

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

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

PyTorch ExecuTorch mobile inference framework

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

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

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

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

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

  • جاهز للتكميم: يدعم نظام ExecuTorch تقنيات التكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال؛ تقوم Ultralytics حالياً بتصدير نماذج FP32 عبر خلفية XNNPACK.

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

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

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

يمكن نشر نماذج ExecuTorch عبر منصات مختلفة للحافة والأجهزة المحمولة:

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

  • الأنظمة المضمنة: التشغيل على أجهزة Linux المضمنة مثل Raspberry Pi و NVIDIA Jetson وغيرها من الأنظمة القائمة على ARM بأداء محسّن.

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

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

المهام المدعومة#

يدعم تصدير ExecuTorch جميع مهام Ultralytics السبع. التجزئة الدلالية وتقدير العمق متاحان فقط مع YOLO26، وهي العائلة الوحيدة التي توفر تلك الرؤوس.

المهمةYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

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

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

التثبيت#

يتطلب تصدير ExecuTorch استخدام Python 3.10-3.13 و PyTorch >= 2.9.0 إلى جانب حزمة executorch:

التثبيت
# Install Ultralytics package
pip install ultralytics

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

الاستخدام#

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

يدعم تنسيق ExecuTorch أوضاع Export و Predict و Validate. قم بتصدير نموذجك، ثم قم بتحميل النموذج المصدر لتشغيل الاستدلال أو التحقق من دقته.

التصدير
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo26n_executorch_model'
التنبؤ
from ultralytics import YOLO

# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
التحقق
from ultralytics import YOLO

# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

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

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

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

الوسيطالنوعالافتراضيالوصف
formatstr'executorch'التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة.
imgszint أو tuple640حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون رقماً صحيحاً للصور المربعة أو صفاً (tuple) (height, width) لأبعاد محددة.
quantizeint أو strNoneتم إصلاح تصدير FP32. لا يدعم تصدير ExecuTorch تحويل الدقة إلى FP16 أو INT8 أو W8A16 في وقت التصدير.
batchint1يحدد حجم الاستدلال المفعلي لنموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدّر في نفس الوقت في وضع predict.
devicestrNoneيحدد الجهاز المراد التصدير إليه: وحدة معالجة الرسومات GPU (device=0)، وحدة المعالجة المركزية CPU (device=cpu)، MPS لشريحة Apple silicon (device=mps).

هيكل المخرجات#

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

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

استخدام نماذج ExecuTorch المصدرة#

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

تكامل الهاتف المحمول#

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

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

iOS#

مثال على تكامل 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/model.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#

Add the ExecuTorch Android AAR from Maven Central:

dependencies {
    implementation("org.pytorch:executorch-android:<version>")
}

مثال على تكامل 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/model.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 المضمنة، استخدم واجهة برمجة تطبيقات C++ لـ ExecuTorch:

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

using namespace ::executorch::extension;

// Load model
Module module("model.pte");

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

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

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

تحسين الأداء#

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

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

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

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

لاستدلال أسرع:

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

المقارنات المعيارية#

قام فريق Ultralytics بقياس أداء نماذج YOLO26، مقارناً السرعة والدقة بين PyTorch و ExecuTorch.

الأداء
النموذجالتنسيقالحالةالحجم (MB)metrics/mAP50-95(B)وقت الاستدلال (ms/im)
YOLO26nPyTorch5.30.4790314.80
YOLO26nExecuTorch9.40.4800142
YOLO26sPyTorch19.50.5730930.90
YOLO26sExecuTorch36.50.5780376.1
ملاحظة

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

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

المشكلات الشائعة#

المشكلة: 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 Issues أو ExecuTorch Documentation.

ملخص#

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

أبرز النقاط:

  • توفر ExecuTorch نشراً أصلياً للحافة عبر PyTorch مع أداء ممتاز
  • التصدير بسيط باستخدام معلمة format='executorch'
  • النماذج محسّنة لوحدات المعالجة المركزية للهواتف المحمولة عبر خلفية XNNPACK
  • تدعم منصات iOS و Android و Linux المضمنة
  • تتطلب Python 3.10-3.13 و PyTorch >= 2.9.0

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

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

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="executorch")

    أو

    yolo export model=yolo26n.pt format=executorch
  • يتطلب تصدير ExecuTorch ما يلي:

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

    ملاحظة: توفر حزمة executorch حزم جاهزة مسبقاً (مع خلفية XNNPACK)، لذلك لا توجد حاجة لأي خطوة تجميع إضافية أثناء التصدير.

  • يمكن تحميل نماذج ExecuTorch مباشرة باستخدام YOLO() للاستدلال والتحقق في Python (راجع أمثلة Predict/Validate أعلاه)، ويمكن أيضاً نشرها على أجهزة الجوال والحافة باستخدام مكتبات وقت تشغيل ExecuTorch.

  • يدعم ExecuTorch ما يلي:

    • Mobile: iOS و Android
    • Embedded Linux: Raspberry Pi و NVIDIA Jetson وأجهزة ARM الأخرى
    • Desktop: Linux و macOS و Windows (لأغراض التطوير)
  • كلا من ExecuTorch و LiteRT ممتازان للنشر على الأجهزة المحمولة:

    • ExecuTorch: تكامل أفضل مع PyTorch، سير عمل PyTorch أصلي، ونظام بيئي متنامٍ
    • LiteRT: أكثر نضجاً، ويدعم مجموعة أوسع من الأجهزة، ويحتوي على أمثلة نشر أكثر، كما يشغل نفس النموذج على Android وiOS والمتصفح.

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

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

    • Mobile GPU: عبر مفوضات Vulkan أو Metal أو OpenCL
    • NPU/DSP: عبر مفوضات خاصة بالمنصة
    • Default: XNNPACK للاستدلال المحسّن على CPU

    ارجع إلى ExecuTorch Documentation لإعداد الخلفية الخاصة.

التعليقات