Ultralytics YOLO27:

دليل البدء السريع: Raspberry Pi مع Ultralytics YOLO26#

إن Raspberry Pi هو حاسوب صغير ميسور التكلفة يشغّل Ultralytics YOLO26 لإجراء كشف الأجسام في الوقت الفعلي على الحافة — من دون الحاجة إلى GPU. يوضّح لك هذا الدليل خطوات نشر YOLO26 على Raspberry Pi 4 و5: كتابة نظام التشغيل على البطاقة، وتثبيت Ultralytics، والتصدير إلى NCNN لتحقيق أسرع استدلال على ARM، وتشغيل التنبؤات من بث كاميرا مباشر. كما يتضمن معايير أداء عبر ثمانية تنسيقات تصدير، لتتمكن من اختيار أفضل مفاضلة بين السرعة والدقة لجهازك.

انتقل إلى إعداد Ultralytics، أو التصدير إلى NCNN وتشغيل الاستدلال، أو المعايير، أو الاستدلال من الكاميرا.



Watch: Raspberry Pi 5 updates and improvements.
ملاحظة

اختُبر هذا الدليل باستخدام Raspberry Pi 4 وRaspberry Pi 5 اللذين يعملان بأحدث إصدار من Raspberry Pi OS Bookworm (Debian 12). ومن المتوقع أن يعمل هذا الدليل مع أجهزة Raspberry Pi الأقدم، مثل Raspberry Pi 3، ما دام نظام Raspberry Pi OS Bookworm نفسه مثبتًا.

ما هو Raspberry Pi؟#

Raspberry Pi هو حاسوب صغير ميسور التكلفة أحادي اللوحة. وقد أصبح شائعًا لمجموعة واسعة من المشاريع والتطبيقات، بدءًا من أتمتة المنازل للهواة ووصولًا إلى الاستخدامات الصناعية. وتستطيع لوحات Raspberry Pi تشغيل مجموعة متنوعة من أنظمة التشغيل، كما توفر منافذ GPIO (الإدخال/الإخراج للأغراض العامة) التي تتيح التكامل بسهولة مع المستشعرات والمشغلات ومكونات الأجهزة الأخرى. وتأتي هذه اللوحات بطُرز مختلفة ذات مواصفات متباينة، لكنها تشترك جميعًا في فلسفة التصميم الأساسية نفسها، وهي انخفاض التكلفة وصغر الحجم وتعدد الاستخدامات.

مقارنة سلسلة Raspberry Pi#

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837، وحدة SoC ‏Cortex-A53‏ 64BitBroadcom BCM2711، وحدة SoC ‏Cortex-A72‏ 64BitBroadcom BCM2712، وحدة SoC ‏Cortex-A76‏ 64Bit
الحد الأقصى لتردد CPU1.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
الحد الأقصى لتردد GPU400Mhz500Mhz800Mhz
الذاكرةذاكرة LPDDR2 SDRAM بسعة 1GBذاكرة LPDDR4-3200 SDRAM بسعات 1GB و2GB و4GB و8GBذاكرة LPDDR4X-4267 SDRAM بسعتي 4GB و8GB
PCIeغير متاحغير متاحواجهة PCIe 2.0 ‏1x
الحد الأقصى لاستهلاك الطاقة2.5A@5V3A@5V5A@5V (مع تمكين PD)

ما هو Raspberry Pi OS؟#

Raspberry Pi OS (المعروف سابقًا باسم Raspbian) هو نظام تشغيل شبيه بـ Unix يستند إلى توزيعة Debian GNU/Linux، ومخصص لعائلة حواسيب Raspberry Pi المدمجة أحادية اللوحة التي توزعها مؤسسة Raspberry Pi. وقد حُسّن Raspberry Pi OS بدرجة كبيرة للعمل على Raspberry Pi المزودة بوحدات CPU من نوع ARM، ويستخدم بيئة سطح مكتب LXDE معدلة مع مدير النوافذ المتراصة Openbox. ويخضع Raspberry Pi OS للتطوير النشط، مع التركيز على تحسين استقرار وأداء أكبر عدد ممكن من حزم Debian على Raspberry Pi.

كتابة Raspberry Pi OS على Raspberry Pi#

أول ما ينبغي فعله بعد الحصول على Raspberry Pi هو كتابة Raspberry Pi OS على بطاقة micro-SD، ثم إدخالها في الجهاز وتشغيل النظام. اتبع وثائق البدء من Raspberry Pi التفصيلية لإعداد جهازك للاستخدام لأول مرة.

إعداد Ultralytics#

يمكنك إعداد حزمة Ultralytics على Raspberry Pi بطريقتين لمشروعك التالي في الرؤية الحاسوبية:

البدء باستخدام Docker#

أسرع طريقة للبدء باستخدام Ultralytics YOLO26 على Raspberry Pi هي التشغيل باستخدام صورة Docker مُنشأة مسبقًا لـ Raspberry Pi.

نفّذ الأمر أدناه لسحب حاوية Docker وتشغيلها على Raspberry Pi. ويستند ذلك إلى صورة Docker ‏arm64v8/ubuntu، التي تشغّل Ubuntu 24.04 في بيئة Python3.

t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t

تتضمن صورة Docker حزمة Ultralytics مسبقًا، لذا يمكنك الانتقال مباشرةً إلى تصدير نموذجك إلى NCNN.

البدء من دون Docker#

تثبيت حزمة Ultralytics#

سنثبت هنا حزمة Ultralytics على Raspberry Pi. وتُثبت تبعيات التصدير لتنسيقات مثل NCNN تلقائيًا عند تصدير نموذج PyTorch لأول مرة، لذا لا نحتاج هنا إلا إلى الحزمة الأساسية.

  1. تحديث قائمة الحزم وتثبيت pip والترقية إلى أحدث إصدار

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
  2. تثبيت حزمة pip‏ ultralytics

    pip install ultralytics
  3. إعادة تشغيل الجهاز

    sudo reboot

استخدام NCNN على Raspberry Pi#

من بين جميع تنسيقات تصدير النماذج التي يدعمها Ultralytics، يوفّر NCNN أفضل أداء للاستدلال على أجهزة Raspberry Pi، لأنه مُحسّن بدرجة كبيرة للمنصات المحمولة والمدمجة، مثل بنية ARM. حوّل نموذج YOLO26n PyTorch إلى NCNN، ثم شغّل الاستدلال باستخدام النموذج المُصدَّر:

مثال
from ultralytics import YOLO

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

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolo26n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
نصيحة

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

تحسينات أداء YOLO26 مقارنةً بـ YOLO11#

صُمم YOLO26 خصيصًا للعمل على الأجهزة محدودة الموارد مثل Raspberry Pi 5. وبالمقارنة مع YOLO11n، يحقق YOLO26n زيادة قدرها ~15% في FPS ‏(6.79 → 7.79)، مع توفير mAP أعلى أيضًا ‏(40.1 مقابل 39.5) عند حجم إدخال 640 باستخدام نماذج مُصدَّرة إلى ONNX على Raspberry Pi 5. يعرض الجدول والمخطط أدناه هذه المقارنة.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
الأداء
النموذجmAP50-95(B)زمن الاستدلال (مللي ثانية/صورة)
YOLO26n40.1128.42
YOLO26s47.8352.84
YOLO26m52.5993.78
YOLO26l54.41259.46
YOLO26x56.92636.26

أُجريت المعايير باستخدام Ultralytics 8.4.14.

معايير YOLO26 على Raspberry Pi 5#

أجرى فريق Ultralytics معايير YOLO26 باستخدام ثمانية تنسيقات مختلفة للنماذج، لقياس السرعة والدقة: PyTorch وTorchScript وONNX وOpenVINO وMNN وNCNN وExecuTorch وLiteRT. أُجريت المعايير على Raspberry Pi 5 بدقة FP32 الدقة وحجم صورة إدخال افتراضي قدره 640.

مخطط المقارنة#

أدرجنا معايير نماذج YOLO26n وYOLO26s فقط، لأن أحجام النماذج الأخرى كبيرة جدًا بحيث لا يمكن تشغيلها على أجهزة Raspberry Pi، كما أنها لا توفر أداءً مناسبًا.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.108

جدول المقارنة التفصيلي#

يمثل الجدول أدناه نتائج المعايير لنموذجين مختلفين (YOLO26n وYOLO26s) عبر ثمانية تنسيقات مختلفة (PyTorch وTorchScript وONNX وOpenVINO وMNN وNCNN وExecuTorch وLiteRT)، تعمل على Raspberry Pi 5، ويعرض الحالة والحجم ومقياس mAP50-95(B) وزمن الاستدلال لكل تركيبة.

الأداء
التنسيقالحالةالحجم على القرص (MB)mAP50-95(B)زمن الاستدلال (مللي ثانية/صورة)
PyTorch5.30.4760299.09
TorchScript9.80.4734353.20
ONNX9.50.4734125.99
OpenVINO9.60.4734104.55
MNN9.40.474991.87
NCNN9.40.478467.03
ExecuTorch9.40.4772144.83
LiteRT9.80.4730123.30

أُجريت المعايير باستخدام Ultralytics 8.4.108

ملاحظة

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

إعادة إنتاج نتائجنا#

لإعادة إنتاج معايير Ultralytics أعلاه على جميع تنسيقات التصدير، شغّل هذا الرمز:

مثال
from ultralytics import YOLO

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

# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)

لاحظ أن نتائج المعايير قد تختلف استنادًا إلى تكوين الأجهزة والبرامج الدقيق للنظام، بالإضافة إلى حمل النظام الحالي وقت إجراء المعايير. وللحصول على النتائج الأكثر موثوقية، استخدم مجموعة بيانات تحتوي على عدد كبير من الصور، مثل data='coco.yaml' (5000 صورة للتحقق).

يُجرى تصدير LiteRT خارج الجهاز

لا تتضمن litert-converter عجلة aarch64 لنظام Linux، لذا لا يُدعم تصدير format=litert إلا على Linux x86_64 وmacOS، وليس على Raspberry Pi نفسه. صدّر نموذج .tflite على جهاز Linux x86_64 أو جهاز Mac، وانسخه إلى Raspberry Pi، واستخدم Pi لإجراء الاستدلال.

استخدام كاميرا Raspberry Pi#

عند استخدام Raspberry Pi في مشاريع الرؤية الحاسوبية، قد يكون من الضروري التقاط بثوث فيديو في الوقت الفعلي لإجراء الاستدلال. يتيح موصل MIPI CSI المدمج في Raspberry Pi توصيل وحدات كاميرا Raspberry Pi الرسمية. وقد استخدمنا في هذا الدليل وحدة كاميرا Raspberry Pi 3 لالتقاط بثوث الفيديو وإجراء الاستدلال باستخدام نماذج YOLO26.

نصيحة
ملاحظة

يستخدم Raspberry Pi 5 موصلات CSI أصغر من تلك الموجودة في Raspberry Pi 4 (15 سنًا مقابل 22 سنًا)، لذا ستحتاج إلى كابل محول من 15 سنًا إلى 22 سنًا لتوصيل كاميرا Raspberry Pi.

اختبار الكاميرا#

نفّذ الأمر التالي بعد توصيل الكاميرا بـ Raspberry Pi. من المفترض أن ترى بث فيديو مباشرًا من الكاميرا لمدة 5 ثوانٍ تقريبًا.

rpicam-hello
نصيحة

الاستدلال باستخدام الكاميرا#

توجد طريقتان لاستخدام كاميرا Raspberry Pi لإجراء الاستدلال على نماذج YOLO26.

تشغيل الاستدلال باستخدام كاميرا Raspberry Pi

يمكننا استخدام picamera2، المثبت مسبقًا مع Raspberry Pi OS، للوصول إلى الكاميرا وإجراء الاستدلال على نماذج YOLO26.

مثال
import cv2
from picamera2 import Picamera2

from ultralytics import YOLO

# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()

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

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLO26 inference on the frame
    results = model(frame)

    # Visualize the results on the frame
    annotated_frame = results[0].plot()

    # Display the resulting frame
    cv2.imshow("Camera", annotated_frame)

    # Break the loop if 'q' is pressed
    if cv2.waitKey(1) == ord("q"):
        break

# Release resources and close windows
cv2.destroyAllWindows()
نصيحة

راجع مستندنا حول مصادر الاستدلال إذا كنت تريد تغيير نوع إدخال الصورة/الفيديو.

أفضل الممارسات عند استخدام Raspberry Pi#

هناك بعض أفضل الممارسات التي ينبغي اتباعها لتحقيق أقصى أداء على أجهزة Raspberry Pi التي تشغّل YOLO26.

  1. استخدام SSD

    عند استخدام Raspberry Pi على نحو متواصل على مدار الساعة طوال أيام الأسبوع، يُوصى باستخدام SSD للنظام، لأن بطاقة SD لن تتحمل عمليات الكتابة المستمرة وقد تتلف. ومع موصل PCIe المدمج في Raspberry Pi 5، يمكنك الآن توصيل محركات SSD باستخدام محول مثل NVMe Base for Raspberry Pi 5.

  2. الكتابة من دون واجهة رسومية

    عند كتابة Raspberry Pi OS على البطاقة، يمكنك اختيار عدم تثبيت بيئة سطح المكتب (Raspberry Pi OS Lite)، ما يوفر قدرًا من ذاكرة RAM على الجهاز ويترك مساحة أكبر لمعالجة الرؤية الحاسوبية.

  3. رفع تردد Raspberry Pi

    إذا كنت تريد زيادة طفيفة في الأداء أثناء تشغيل نماذج Ultralytics YOLO26 على Raspberry Pi 5، يمكنك كسر سرعت وحدة المعالجة المركزية (CPU) من ترددها الأساسي البالغ 2.4 جيجاهرتز إلى 3.0 جيجاهرتز ووحدة معالجة الرسومات (GPU) من 800 ميجاهرتز إلى 1 جيجاهرتز. إذا أصبح النظام غير مستقر أو تعرض للتعطل، فقم بخفض قيم كسر السرعة بزيادات قدرها 100 ميجاهرتز. تأكد من توفر تبريد مناسب، حيث يؤدي كسر السرعة إلى زيادة توليد الحرارة وقد يودّي إلى الاختناق الحراري.

    أ. ترقية البرنامج

    sudo apt update && sudo apt dist-upgrade

    ب. فتح ملف الإعدادات لتحريره

    sudo nano /boot/firmware/config.txt

    ج. إضافة الأسطر التالية في الأسفل

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1

    د. الحفظ والخروج بالضغط على CTRL + X، ثم Y، والضغط على ENTER

    هـ. إعادة تشغيل Raspberry Pi

الخطوات التالية#

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

الشكر والاقتباسات#

أُنشئ هذا الدليل في الأصل بواسطة Daan Eeltink لصالح Kashmir World Foundation، وهي منظمة مكرسة لاستخدام YOLO في الحفاظ على الأنواع المهددة بالانقراض. ونقرّ بعملهم الرائد وتركيزهم التعليمي في مجال تقنيات كشف الأجسام.

لمزيد من المعلومات حول أنشطة Kashmir World Foundation، يمكنك زيارة موقعهم الإلكتروني.

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

  • لإعداد Ultralytics YOLO26 على Raspberry Pi من دون Docker، اتبع الخطوات التالية:

    1. حدّث قائمة الحزم وثبّت pip:
      sudo apt update
      sudo apt install python3-pip -y
      pip install -U pip
    2. ثبّت حزمة Ultralytics:
      pip install ultralytics
    3. أعد تشغيل الجهاز لتطبيق التغييرات:
      sudo reboot

    للاطلاع على التعليمات التفصيلية، راجع قسم البدء من دون Docker.

  • يُحسَّن تنسيق NCNN الخاص بـ Ultralytics YOLO26 بدرجة كبيرة للمنصات المحمولة والمدمجة، مما يجعله مثاليًا لتشغيل مهام الذكاء الاصطناعي على أجهزة Raspberry Pi. يحقق NCNN أقصى أداء للاستدلال من خلال الاستفادة من بنية ARM، موفرًا معالجة أسرع وأكثر كفاءة مقارنةً بالتنسيقات الأخرى. لمزيد من التفاصيل حول تنسيقات التصدير المدعومة، راجع خيارات تصدير النموذج.

  • يمكنك تحويل نموذج YOLO26 المُدرَّب باستخدام PyTorch إلى تنسيق NCNN باستخدام أوامر Python أو CLI:

    مثال
    from ultralytics import YOLO
    
    # Load a YOLO26n PyTorch model
    model = YOLO("yolo26n.pt")
    
    # Export the model to NCNN format
    model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
    
    # Load the exported NCNN model
    ncnn_model = YOLO("yolo26n_ncnn_model")
    
    # Run inference
    results = ncnn_model("https://ultralytics.com/images/bus.jpg")

    لمزيد من التفاصيل، راجع قسم استخدام NCNN على Raspberry Pi.

  • تشمل الفروقات الرئيسية ما يلي:

    • وحدة المعالجة المركزية: يستخدم Raspberry Pi 4 شريحة Broadcom BCM2711، وهي SoC من نوع Cortex-A72 ‏64-bit، بينما يستخدم Raspberry Pi 5 شريحة Broadcom BCM2712، وهي SoC من نوع Cortex-A76 ‏64-bit.
    • الحد الأقصى لتردد وحدة المعالجة المركزية: يبلغ التردد الأقصى في Raspberry Pi 4 مقدار 1.8GHz، بينما يصل في Raspberry Pi 5 إلى 2.4GHz.
    • الذاكرة: يوفر Raspberry Pi 4 ذاكرة LPDDR4-3200 SDRAM بسعة تصل إلى 8GB، بينما يتميز Raspberry Pi 5 بذاكرة LPDDR4X-4267 SDRAM، ومتاحة بإصدارَي 4GB و8GB.

    تسهم هذه التحسينات في تحقيق نتائج أفضل في اختبارات أداء نماذج YOLO26 على Raspberry Pi 5 مقارنةً بـ Raspberry Pi 4. راجع جدول مقارنة سلسلة Raspberry Pi لمزيد من التفاصيل.

  • توجد طريقتان لإعداد كاميرا Raspberry Pi للاستدلال باستخدام YOLO26:

    1. باستخدام picamera2:

      import cv2
      from picamera2 import Picamera2
      
      from ultralytics import YOLO
      
      picam2 = Picamera2()
      picam2.preview_configuration.main.size = (1280, 720)
      picam2.preview_configuration.main.format = "RGB888"
      picam2.preview_configuration.align()
      picam2.configure("preview")
      picam2.start()
      
      model = YOLO("yolo26n.pt")
      
      while True:
          frame = picam2.capture_array()
          results = model(frame)
          annotated_frame = results[0].plot()
          cv2.imshow("Camera", annotated_frame)
      
          if cv2.waitKey(1) == ord("q"):
              break
      
      cv2.destroyAllWindows()
    2. باستخدام بث TCP:

      rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      results = model("tcp://127.0.0.1:8888")

    للاطلاع على تعليمات الإعداد التفصيلية، تفضل بزيارة قسم الاستدلال باستخدام الكاميرا.

التعليقات