دليل البدء السريع: راسبيري باي مع Ultralytics YOLO11
يوفر هذا الدليل الشامل إرشادات مفصلة لنشر Ultralytics YOLO11 على أجهزة Raspberry Pi. بالإضافة إلى ذلك، فإنه يعرض معايير الأداء لتوضيح قدرات YOLO11 على هذه الأجهزة الصغيرة والقوية.
شاهد: تحديثات وتحسينات 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 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 64Bit SoC، Broadcom BCM2837، Cortex-A53 64Bit SoC | Broadcom BCM2711, Cortex-A72 64Bit SoC، Broadcom BCM2711، Cortex-A72 64Bit SoC | Broadcom 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 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 لبناء مشروعك القادم للرؤية الحاسوبية. يمكنك استخدام أي منهما.
ابدأ بـ Docker
أسرع طريقة للبدء في استخدام Ultralytics YOLO11 على Raspberry Pi هي التشغيل باستخدام صورة docker المبنية مسبقًا لـ Raspberry Pi.
نفّذ الأمر أدناه لسحب حاوية Docker وتشغيلها على Raspberry Pi. يستند هذا الأمر إلى صورة أرم 64v8/debian docker التي تحتوي على صورة ديبيان 12 (دودة الكتب) في بيئة Python3.
بعد الانتهاء من ذلك، انتقل إلى قسم استخدام NCNN على Raspberry Pi.
البدء بدون Docker
تثبيت الحزمة Ultralytics
هنا سنقوم بتثبيت الحزمة Ultralytics على جهاز Raspberry Pi مع التبعيات الاختيارية حتى نتمكن من تصدير PyTorch النماذج إلى تنسيقات مختلفة أخرى.
-
قم بتحديث قائمة الحزم، وتثبيت النقطة والترقية إلى الأحدث
-
التثبيت
ultralytics
حزمة النقطة مع التبعيات الاختيارية -
إعادة تشغيل الجهاز
استخدم 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")
نصيحة
للحصول على مزيد من التفاصيل حول خيارات التصدير المدعومة، يرجى زيارة صفحة التوثيقUltralytics الخاصة بخيارات النشر.
Raspberry Pi 5 YOLO11 Benchmarks
YOLO11 تم تشغيل المعايير من قبل فريق Ultralytics على تسعة نماذج مختلفة لقياس السرعة والدقة: PyTorch و TorchScript و ONNX و OpenVINO و TF SavedModel و TF GraphDef و TF لايت و PaddlePaddle و NCNN. تم تشغيل المعايير على جهاز Raspberry Pi 5 بدقة FP32 مع حجم إدخال افتراضي للصورة يبلغ 640.
رسم بياني للمقارنة
لقد قمنا فقط بتضمين معايير قياس الأداء لطرازي YOLO11n و YOLO11s لأن أحجام الطرز الأخرى كبيرة جدًا بحيث لا يمكن تشغيلها على Raspberry Pis ولا تقدم أداءً لائقًا.
جدول المقارنة التفصيلي
يمثل الجدول أدناه النتائج القياسية لنموذجين مختلفين (YOLO11n، YOLO11s) عبر تسعة تنسيقات مختلفة (PyTorch ، TorchScript ، ، ONNX ، OpenVINO ، TF SavedModel ، TF ،GraphDef ، TF لايت، PaddlePaddle ، NCNN)، تعمل على جهاز Raspberry Pi 5، مما يعطينا الحالة والحجم ومقياس mAP50-95(B) وزمن الاستدلال لكل مجموعة.
الأداء
التنسيق | الحالة | الحجم على القرص (ميغابايت) | mAP50-95(ب) | زمن الاستدلال (م/م) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.6100 | 405.238 |
TorchScript | ✅ | 10.5 | 0.6082 | 526.628 |
ONNX | ✅ | 10.2 | 0.6082 | 168.082 |
OpenVINO | ✅ | 10.4 | 0.6082 | 81.192 |
TF SavedModel | ✅ | 25.8 | 0.6082 | 377.968 |
TF GraphDef | ✅ | 10.3 | 0.6082 | 487.244 |
TF لايت | ✅ | 10.3 | 0.6082 | 317.398 |
PaddlePaddle | ✅ | 20.4 | 0.6082 | 561.892 |
MNN | ✅ | 10.1 | 0.6106 | 112.554 |
NCNN | ✅ | 10.2 | 0.6106 | 88.026 |
التنسيق | الحالة | الحجم على القرص (ميغابايت) | mAP50-95(ب) | زمن الاستدلال (م/م) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.7526 | 1011.60 |
TorchScript | ✅ | 36.5 | 0.7416 | 1268.502 |
ONNX | ✅ | 36.3 | 0.7416 | 324.17 |
OpenVINO | ✅ | 36.4 | 0.7416 | 179.324 |
TF SavedModel | ✅ | 91.1 | 0.7416 | 714.382 |
TF GraphDef | ✅ | 36.4 | 0.7416 | 1019.83 |
TF لايت | ✅ | 36.4 | 0.7416 | 849.86 |
PaddlePaddle | ✅ | 72.5 | 0.7416 | 1276.34 |
MNN | ✅ | 36.2 | 0.7409 | 273.032 |
NCNN | ✅ | 36.2 | 0.7419 | 194.858 |
تمت المقارنة المعيارية مع Ultralytics 8.3.39.8.39
إعادة إنتاج نتائجنا
لإعادة إنتاج معايير Ultralytics المذكورة أعلاه على جميع تنسيقات التصدير، قم بتشغيل هذا الرمز:
مثال على ذلك
لاحظ أن نتائج القياس المعياري قد تختلف بناءً على التكوين الدقيق للأجهزة والبرمجيات الخاصة بالنظام، بالإضافة إلى عبء العمل الحالي للنظام في وقت تشغيل المعايير. للحصول على نتائج أكثر موثوقية استخدم مجموعة بيانات تحتوي على عدد كبير من الصور، أي data='coco8.yaml' (4 val images), or
البيانات='coco.yaml'` (5000 صورة قيمة).
استخدام كاميرا Raspberry Pi
عند استخدام Raspberry Pi لمشاريع رؤية الكمبيوتر، يمكن أن يكون من الأساسي الحصول على موجزات فيديو في الوقت الفعلي لإجراء الاستدلال. يسمح لك موصل MIPI CSI المدمج في Raspberry Pi بتوصيل وحدات كاميرا Raspberry PI الرسمية. في هذا الدليل، استخدمنا في هذا الدليل وحدة كاميرا Raspberry Pi Module 3 لالتقاط موجزات الفيديو وإجراء الاستدلال باستخدام نماذج YOLO11 .
نصيحة
تعرّف على المزيد حول وحدات الكاميرا المختلفة التي تقدمها Raspberry Pi وكذلك كيفية البدء باستخدام وحدات كاميرا Raspberry Pi.
ملاحظة
يستخدم Raspberry Pi 5 موصلات CSI أصغر من Raspberry Pi 4 (15 سنًا مقابل 22 سنًا)، لذلك ستحتاج إلى كابل محول من 15 سنًا إلى 22 سنًا للتوصيل بكاميرا Raspberry Pi.
اختبار الكاميرا
نفّذ الأمر التالي بعد توصيل الكاميرا ب Raspberry Pi. يجب أن ترى بث فيديو مباشر من الكاميرا لمدة 5 ثوانٍ تقريباً.
نصيحة
اعرف المزيد عن rpicam-hello
الاستخدام على وثائق Raspberry Pi الرسمية
الاستدلال بالكاميرا
هناك طريقتان لاستخدام كاميرا 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
الاستخدام على وثائق Raspberry Pi الرسمية
نصيحة
راجع المستند الخاص بنا حول مصادر الاستدلال إذا كنت تريد تغيير نوع إدخال الصورة/الفيديو
أفضل الممارسات عند استخدام Raspberry Pi
هناك بعض أفضل الممارسات التي يجب اتباعها من أجل تمكين أقصى قدر من الأداء على Raspberry Pis الذي يعمل على YOLO11.
-
استخدام قرص SSD
عند استخدام Raspberry Pi للاستخدام المستمر على مدار الساعة طوال أيام الأسبوع، يوصى باستخدام SSD للنظام لأن بطاقة SD لن تكون قادرة على تحمل الكتابة المستمرة وقد تتعرض للكسر. مع موصل PCIe المدمج في Raspberry Pi 5، يمكنك الآن توصيل محركات أقراص الحالة الصلبة باستخدام محول مثل قاعدة NVMe لـ Raspberry Pi 5.
-
فلاش بدون واجهة المستخدم الرسومية
عند وميض نظام تشغيل Raspberry Pi OS، يمكنك اختيار عدم تثبيت بيئة سطح المكتب (Raspberry Pi OS Lite) وهذا يمكن أن يوفر قليلاً من ذاكرة الوصول العشوائي على الجهاز، مما يترك مساحة أكبر لمعالجة رؤية الكمبيوتر.
الخطوات التالية
تهانينا على الإعداد الناجح YOLO على جهاز Raspberry Pi الخاص بك! لمزيد من التعلم والدعم، تفضل بزيارة Ultralytics YOLO11 Docs ومؤسسة عالم كشمير.
الشكر والتقدير والاستشهادات
تم إنشاء هذا الدليل في البداية من قبل دان إيلتينك لصالح مؤسسة كشمير العالمية، وهي منظمة مكرسة لاستخدام YOLO للحفاظ على الأنواع المهددة بالانقراض. نحن نعترف بعملهم الرائد وتركيزهم التعليمي في مجال تقنيات الكشف عن الكائنات.
للمزيد من المعلومات عن أنشطة مؤسسة كشمير العالمية، يمكنك زيارة موقعها الإلكتروني.
الأسئلة الشائعة
كيف يمكنني إعداد Ultralytics YOLO11 على جهاز Raspberry Pi دون استخدام Docker؟
لإعداد Ultralytics YOLO11 على جهاز Raspberry Pi بدون Docker، اتبع الخطوات التالية:
- تحديث قائمة الحزم وتثبيتها
pip
: - قم بتثبيت الحزمة Ultralytics مع التبعيات الاختيارية:
- أعد تشغيل الجهاز لتطبيق التغييرات:
للحصول على تعليمات مفصلة، راجع قسم البدء بدون Docker.
لماذا يجب أن أستخدم Ultralytics YOLO11 ' NCNN على Raspberry Pi لمهام الذكاء الاصطناعي؟
Ultralytics YOLO11 NCNN مُحسّن للغاية للمنصات المحمولة والمضمّنة، مما يجعله مثاليًا لتشغيل مهام الذكاء الاصطناعي على أجهزة Raspberry Pi. يزيد من أداء الاستدلال إلى أقصى حد من خلال الاستفادة من بنية ARM، مما يوفر معالجة أسرع وأكثر كفاءة مقارنةً بالتنسيقات الأخرى. لمزيد من التفاصيل حول خيارات التصدير المدعومة، يرجى زيارة NCNN صفحة التوثيق الخاصة بخيارات النشرUltralytics .
كيف يمكنني تحويل نموذج 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")
لمزيد من التفاصيل، راجع قسم الاستخدام 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 جيجابايت.
تساهم هذه التحسينات في تحسين معايير الأداء لطرازات YOLO11 على Raspberry Pi 5 مقارنةً بـ Raspberry Pi 4. راجع جدول مقارنة سلسلة Raspberry Pi للمزيد من التفاصيل.
كيف يمكنني إعداد وحدة كاميرا Raspberry Pi Module للعمل مع Ultralytics YOLO11 ؟
هناك طريقتان لإعداد كاميرا Raspberry Pi للاستدلال YOLO11 :
-
استخدام
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()
-
استخدام دفق TCP:
للحصول على إرشادات الإعداد التفصيلية، قم بزيارة قسم الاستدلال بالكاميرا.