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

دليل البدء السريع: راسبيري باي مع Ultralytics YOLOv8

يوفر هذا الدليل الشامل إرشادات مفصلة لنشر Ultralytics YOLOv8 على أجهزة Raspberry Pi. بالإضافة إلى ذلك، فإنه يعرض معايير الأداء لتوضيح قدرات YOLOv8 على هذه الأجهزة الصغيرة والقوية.



شاهد: تحديثات وتحسينات 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
وحده المعالجه المركزيه Broadcom BCM2837, Cortex-A53 64Bit SoC، Broadcom BCM2837، Cortex-A53 64Bit SoC Broadcom BCM2711, Cortex-A72 64Bit SoC Broadcom BCM2712, Cortex-A76 64Bit SoC
وحدة المعالجة المركزية ماكس التردد 1.4 جيجا هرتز 1.8 جيجا هرتز 2.4 جيجا هرتز
الجرافيك فيديوكور IV فيديوكور السادس VideoCore VII
أقصى تردد GPU 400 ميجا هرتز 500 ميجا هرتز 800 ميجا هرتز
ذاكرة 1 جيجا بايت LPDDR2 SRDرام 2 SDرام 1 جيجا بايت، 2 جيجا بايت، 4 جيجا بايت، 8 جيجا بايت LPDDR4-3200 SDRAM 4 جيجا بايت، 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

هناك طريقتان لإعداد الحزمة Ultralytics على Raspberry Pi لبناء مشروعك القادم للرؤية الحاسوبية. يمكنك استخدام أي منهما.

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

أسرع طريقة للبدء في استخدام Ultralytics YOLOv8 على 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

Out of all the model export formats supported by Ultralytics, NCNN delivers the best inference performance when working with Raspberry Pi devices because NCNN is highly optimized for mobile/ embedded platforms (such as ARM architecture). Therefor our recommendation is to use NCNN with Raspberry Pi.

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

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

مثل

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

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

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

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

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

بقشيش

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

معايير Raspberry Pi 5 مقابل Raspberry Pi 4 YOLOv8

YOLOv8 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 both Raspberry Pi 5 and Raspberry Pi 4 at FP32 precision with default input image size of 640.

ملاحظه

لقد قمنا فقط بتضمين معايير قياس الأداء للطرازين YOLOv8n و YOLOv8s لأن أحجام الطرز الأخرى أكبر من أن تعمل على جهاز Raspberry Pis ولا تقدم أداءً لائقًا.

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

اداء

نفيديا جيتسون النظام البيئي

نفيديا جيتسون النظام البيئي

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

The below table represents the benchmark results for two different models (YOLOv8n, YOLOv8s) across nine different formats (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN), running on both Raspberry Pi 4 and Raspberry Pi 5, giving us the status, size, mAP50-95(B) metric, and inference time for each combination.

اداء

تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 6.2 0.6381 508.61
TorchScript 12.4 0.6092 558.38
ONNX 12.2 0.6092 198.69
OpenVINO 12.3 0.6092 704.70
TF SavedModel 30.6 0.6092 367.64
TF GraphDef 12.3 0.6092 473.22
TF لايت 12.3 0.6092 380.67
PaddlePaddle 24.4 0.6092 703.51
NCNN 12.2 0.6034 94.28
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 21.5 0.6967 969.49
TorchScript 43.0 0.7136 1110.04
ONNX 42.8 0.7136 451.37
OpenVINO 42.9 0.7136 873.51
TF SavedModel 107.0 0.7136 658.15
TF GraphDef 42.8 0.7136 946.01
TF لايت 42.8 0.7136 1013.27
PaddlePaddle 85.5 0.7136 1560.23
NCNN 42.7 0.7204 211.26
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 6.2 0.6381 1068.42
TorchScript 12.4 0.6092 1248.01
ONNX 12.2 0.6092 560.04
OpenVINO 12.3 0.6092 534.93
TF SavedModel 30.6 0.6092 816.50
TF GraphDef 12.3 0.6092 1007.57
TF لايت 12.3 0.6092 950.29
PaddlePaddle 24.4 0.6092 1507.75
NCNN 12.2 0.6092 414.73
تنسيق حالة الحجم على القرص (ميغابايت) mAP50-95 (ب) وقت الاستدلال (مللي ثانية / im)
PyTorch 21.5 0.6967 2589.58
TorchScript 43.0 0.7136 2901.33
ONNX 42.8 0.7136 1436.33
OpenVINO 42.9 0.7136 1225.19
TF SavedModel 107.0 0.7136 1770.95
TF GraphDef 42.8 0.7136 2146.66
TF لايت 42.8 0.7136 2945.03
PaddlePaddle 85.5 0.7136 3962.62
NCNN 42.7 0.7136 1042.39

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

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

مثل

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

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

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

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

عند استخدام Raspberry Pi لمشاريع رؤية الكمبيوتر، يمكن أن يكون من الأساسي الحصول على موجزات فيديو في الوقت الفعلي لإجراء الاستدلال. يسمح لك موصل MIPI CSI المدمج في Raspberry Pi بتوصيل وحدات كاميرا Raspberry PI الرسمية. في هذا الدليل، استخدمنا في هذا الدليل وحدة كاميرا Raspberry Pi Module 3 لالتقاط موجزات الفيديو وإجراء الاستدلال باستخدام نماذج YOLOv8 .

ملاحظه

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

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

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

rpicam-hello

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

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

استخدام

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

مثل

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

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

    # Run YOLOv8 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 YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

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

بقشيش

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

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

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

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

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

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

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

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

تهانينا على الإعداد الناجح YOLO على جهاز Raspberry Pi الخاص بك! لمزيد من التعلم والدعم، تفضل بزيارة Ultralytics YOLOv8 Docs ومؤسسة عالم كشمير.

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

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

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



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (7), IvorZhu331 (1), lakshanthad (2)

التعليقات