انتقل إلى المحتوى

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

This comprehensive guide provides a detailed walkthrough for deploying Ultralytics YOLO11 on Raspberry Pi devices. Additionally, it showcases performance benchmarks to demonstrate the capabilities of YOLO11 on these small and powerful devices.



شاهد: تحديثات وتحسينات Raspberry Pi 5.

ملاحظه

تم اختبار هذا الدليل مع أجهزة Raspberry Pi 4 وRaspberry Pi 5 التي تعمل بأحدث نظام تشغيل Raspberry Pi OS Bookworm (دبيان 12). من المتوقع أن يعمل استخدام هذا الدليل مع أجهزة Raspberry Pi الأقدم مثل Raspberry Pi 3 طالما أن نظام تشغيل Raspberry Pi OS Bookworm نفسه مثبت.

ما هو Raspberry Pi؟

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

مقارنة بين سلسلة Raspberry Pi

راسبيري باي 3راسبيري باي 4راسبيري باي 5
CPUBroadcom BCM2837, Cortex-A53 64Bit SoC، Broadcom BCM2837، Cortex-A53 64Bit SoCBroadcom BCM2711, Cortex-A72 64Bit SoC، Broadcom BCM2711، Cortex-A72 64Bit SoCBroadcom BCM2712, Cortex-A76 64Bit SoC، Broadcom BCM2712، Cortex-A76 64Bit SoC
CPU الحد الأقصى للتردد1.4 جيجا هرتز1.8 جيجا هرتز2.4 جيجا هرتز
GPUفيديوكور IVفيديوكور السادسVideoCore VII
GPU الحد الأقصى للتردد400 ميجا هرتز500 ميجا هرتز800 ميجا هرتز
ذاكرة1 جيجا بايت LPDDR2 SRDرام 2 SDرام1 جيجا بايت، 2 جيجا بايت، 4 جيجا بايت، 8 جيجا بايت LPDDR4-3200 SDRAM4 جيجا بايت، 8 جيجا بايت LPDDR4X-4267 SDRAM
PCIeغير متاحغير متاح1xPCIe 2.0 واجهة 2.0
الحد الأقصى لسحب الطاقة2.5 أمبير @ 5 فولت3 أمبير@5 فولت5 أمبير @ 5 فولت (ممكّن PD)

ما هو نظام تشغيل Raspberry Pi OS؟

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

نظام التشغيل فلاش Raspberry Pi OS إلى Raspberry Pi

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

الإعداد Ultralytics

There are two ways of setting up Ultralytics package on Raspberry Pi to build your next Computer Vision project. You can use either of them.

ابدأ مع عامل ميناء

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

نفّذ الأمر أدناه لسحب حاوية Docker وتشغيلها على Raspberry Pi. يستند هذا الأمر إلى صورة أرم 64v8/debian docker التي تحتوي على صورة ديبيان 12 (دودة الكتب) في بيئة Python3.

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

بعد الانتهاء من ذلك، انتقل إلى قسم استخدام NCNN على Raspberry Pi.

ابدأ بدون عامل ميناء

أقام Ultralytics حزمة

Here we will install Ultralytics package on the Raspberry Pi with optional dependencies so that we can export the PyTorch models to other different formats.

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

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. أقام ultralytics حزمة النقطة مع التبعيات الاختيارية

    pip install ultralytics[export]
    
  3. أعد تشغيل الجهاز

    sudo reboot
    

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

من بين جميع تنسيقات تصدير النماذج التي يدعمها Ultralytics, NCNN يوفر أفضل أداء استدلالي عند العمل مع أجهزة Raspberry Pi لأن NCNN مُحسّن للغاية للمنصات المحمولة/المضمنة (مثل بنية ARM). لذلك توصيتنا هي استخدام NCNN مع Raspberry Pi.

تحويل النموذج إلى NCNN وتشغيل الاستدلال

يتم تحويل نموذج YOLO11n بصيغة PyTorch إلى NCNN لتشغيل الاستدلال بالنموذج المُصدَّر.

مثل

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

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

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

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

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

بقشيش

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

مقاييس Raspberry Pi 5 YOLO11 المعيارية

YOLO11 benchmarks were run by the Ultralytics team on nine different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on a Raspberry Pi 5 at FP32 precision with default input image size of 640.

رسم بياني للمقارنة

لقد قمنا فقط بتضمين معايير قياس الأداء لطرازي YOLO11n و YOLO11s لأن أحجام الطرز الأخرى كبيرة جدًا بحيث لا يمكن تشغيلها على Raspberry Pis ولا تقدم أداءً لائقًا.

YOLO11 benchmarks on RPi 5

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

يمثل الجدول أدناه النتائج المعيارية لنموذجين مختلفين (YOLO11n، YOLO11s) عبر تسعة تنسيقات مختلفة (PyTorch ، TorchScript ، ، ONNX ، OpenVINO ، TF SavedModel ، TF ،GraphDef ، TF لايت، PaddlePaddle ، NCNN)، تعمل على جهاز Raspberry Pi 5، مما يعطينا الحالة والحجم ومقياس mAP50-95(B) وزمن الاستدلال لكل مجموعة.

اداء

تنسيقحالةالحجم على القرص (ميغابايت)mAP50-95 (ب)وقت الاستدلال (مللي ثانية / im)
PyTorch5.40.61524.828
TorchScript10.50.6082666.874
ONNX10.20.6082181.818
OpenVINO10.40.6082530.224
TF SavedModel25.80.6082405.964
TF GraphDef10.30.6082473.558
TF لايت10.30.6082324.158
PaddlePaddle20.40.6082644.312
NCNN10.20.610693.938
تنسيقحالةالحجم على القرص (ميغابايت)mAP50-95 (ب)وقت الاستدلال (مللي ثانية / im)
PyTorch18.40.75261226.426
TorchScript36.50.74161507.95
ONNX36.30.7416415.24
OpenVINO36.40.74161167.102
TF SavedModel91.10.7416776.14
TF GraphDef36.40.74161014.396
TF لايت36.40.7416845.934
PaddlePaddle72.50.74161567.824
NCNN36.20.7419197.358

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

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

مثل

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco8.yaml imgsz=640

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

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

When using Raspberry Pi for Computer Vision projects, it can be essentially to grab real-time video feeds to perform inference. The onboard MIPI CSI connector on the Raspberry Pi allows you to connect official Raspberry PI camera modules. In this guide, we have used a Raspberry Pi Camera Module 3 to grab the video feeds and perform inference using YOLO11 models.

ملاحظه

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

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

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

rpicam-hello

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

هناك طريقتان لاستخدام كاميرا Raspberry Pi للاستدلال على نماذج YOLO11.

استخدام

يمكننا استخدام picamera2الذي يأتي مثبتًا مسبقًا مع نظام التشغيل Raspberry Pi OS للوصول إلى طرازي YOLO11 للكاميرا والاستدلال.

مثل

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 YOLO11 model
model = YOLO("yolo11n.pt")

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

    # Run YOLO11 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()

نحتاج إلى بدء دفق TCP مع rpicam-vid من الكاميرا المتصلة حتى نتمكن من استخدام عنوان URL للدفق هذا كمدخل عندما نقوم بالاستدلال لاحقًا. نفّذ الأمر التالي لبدء دفق TCP.

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

اعرف المزيد عن rpicam-vid الاستخدام على وثائق Raspberry Pi الرسمية

مثل

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo11n.pt source="tcp://127.0.0.1:8888"

بقشيش

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

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

هناك بعض أفضل الممارسات التي يجب اتباعها لتمكين أقصى أداء على أجهزة Raspberry Pis التي تعمل بنظام YOLO11.

  1. استخدم قرص SSD

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

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

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

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

Congratulations on successfully setting up YOLO on your Raspberry Pi! For further learning and support, visit Ultralytics YOLO11 Docs and Kashmir World Foundation.

شكر وتقدير واستشهادات

تم إنشاء هذا الدليل في البداية بواسطة Daan Eeltink لمؤسسة كشمير العالمية ، وهي منظمة مكرسة لاستخدام YOLO للحفاظ على الأنواع المهددة بالانقراض. نحن نقدر عملهم الرائد وتركيزهم التعليمي في مجال تقنيات الكشف عن الأشياء.

لمزيد من المعلومات حول أنشطة مؤسسة كشمير العالمية ، يمكنك زيارة موقع الويب الخاص بهم.

الأسئلة المتداولة

كيف يمكنني إعداد Ultralytics YOLO11 على جهاز Raspberry Pi دون استخدام Docker؟

لإعداد Ultralytics YOLO11 على جهاز Raspberry Pi بدون Docker، اتبع الخطوات التالية:

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

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

لماذا يجب أن أستخدم تنسيق NCNN الخاص بـ Ultralytics YOLO11 على Raspberry Pi لمهام الذكاء الاصطناعي؟

Ultralytics YOLO11's NCNN format is highly optimized for mobile and embedded platforms, making it ideal for running AI tasks on Raspberry Pi devices. NCNN maximizes inference performance by leveraging ARM architecture, providing faster and more efficient processing compared to other formats. For more details on supported export options, visit the Ultralytics documentation page on deployment options.

كيف يمكنني تحويل نموذج YOLO11 إلى تنسيق NCNN للاستخدام على Raspberry Pi؟

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

مثل

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

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

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

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

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

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

ما هي اختلافات الأجهزة بين Raspberry Pi 4 وRaspberry Pi 5 ذات الصلة بتشغيل YOLO11؟

تشمل الاختلافات الرئيسية ما يلي:

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

These enhancements contribute to better performance benchmarks for YOLO11 models on Raspberry Pi 5 compared to Raspberry Pi 4. Refer to the Raspberry Pi Series Comparison table for more details.

كيف يمكنني إعداد وحدة كاميرا Raspberry Pi Module للعمل مع Ultralytics YOLO11؟

هناك طريقتان لإعداد كاميرا Raspberry Pi للاستدلال على YOLO11:

  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("yolo11n.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("yolo11n.pt")
    results = model("tcp://127.0.0.1:8888")
    

للحصول على إرشادات الإعداد التفصيلية، قم بزيارة قسم الاستدلال بالكاميرا.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 1 شهر

التعليقات