ملخص سريع: تجمع تقنية التعرف على الصور على جهاز Raspberry Pi بين مكونات طرفية بأسعار معقولة ومكتبات رؤية حاسوبية قوية مثل OpenCV وTensorFlow Lite لاكتشاف وتصنيف الأشياء في الوقت الفعلي. وباستخدام نماذج مُدرَّبة مسبقًا مثل COCO أو YOLOv8، يستطيع المطورون بناء تطبيقات تُحدد العناصر اليومية، وتتتبع الحركة، وتُفعِّل استجابات الأجهزة - كل ذلك على جهاز $50. تُمكّن هذه التقنية الكاميرات الذكية، وأنظمة المراقبة الآلية، ومشاريع الذكاء الاصطناعي المُدمجة دون الحاجة إلى الحوسبة السحابية.
لقد تحوّل جهاز Raspberry Pi من مجرد لوحة هواة إلى منصة حوسبة طرفية حقيقية. فمع طرازات مثل Raspberry Pi 5 المزودة بمعالج Cortex-A76 بتردد 2.4 جيجاهرتز، باتت هذه الأجهزة الصغيرة قادرة على معالجة مهام التعرف على الصور في الوقت الفعلي، والتي كانت تتطلب في السابق أجهزة حاسوب مكتبية متطورة.
لكن الأمر المهم هو أن الحوسبة الطرفية ليست مجرد مصطلح رائج. تشير تقديرات مؤسسة IDC إلى أن إنفاق المؤسسات ومزودي الخدمات على الحوسبة الطرفية سيصل إلى حوالي 1.4 تريليون و380 مليار دولار بحلول عام 2028. تتجه المؤسسات نحو تقريب الحوسبة من مصادر البيانات، ويُعد جهاز Raspberry Pi خيارًا مثاليًا في هذا السوق المتنامي.
يشرح هذا الدليل كيفية بناء أنظمة التعرف على الصور على جهاز Raspberry Pi باستخدام أطر عمل مثبتة ونماذج مدربة مسبقًا. سواء كان الهدف هو اكتشاف الأجسام، أو تحديد الحيوانات، أو مهام التصنيف المخصصة، فإن العملية تتبع نمطًا ثابتًا: تثبيت مكتبة الرؤية، وتحميل نموذج مدرب مسبقًا، والتقاط مدخلات الكاميرا، ومعالجة الإطارات في الوقت الفعلي.
فهم التعرف على الصور على الأجهزة الطرفية
تتضمن تقنية التعرف على الصور تعليم أجهزة الكمبيوتر تحديد الأشياء والأشخاص والحيوانات والمشاهد داخل الصور الرقمية أو مقاطع الفيديو. كانت الأساليب التقليدية تتطلب إرسال البيانات إلى خوادم سحابية للمعالجة. أما الحوسبة الطرفية فتُحوّل عبء العمل هذا إلى الأجهزة المحلية.
يتولى جهاز Raspberry Pi هذه المهمة من خلال تشغيل عملية الاستدلال، أي تطبيق شبكة عصبية مُدرَّبة مسبقًا على صور جديدة. يتطلب تدريب هذه الشبكات قدرة حاسوبية كبيرة، لكن تشغيلها (الاستدلال) أقل تطلبًا بكثير. هذا التميّز يجعل Raspberry Pi خيارًا عمليًا للتطبيقات الواقعية.
ثلاثة مكونات تجعل هذا الأمر يعمل: الأجهزة (Raspberry Pi بالإضافة إلى الكاميرا)، ومكتبة البرامج (OpenCV أو TensorFlow Lite)، والنموذج المدرب مسبقًا (أوزان الشبكة العصبية التي تشفر الأنماط المتعلمة).
تحقق النماذج الحديثة المدربة مسبقًا دقةً مذهلة. ووفقًا لأبحاث تحسين TensorFlow، تحافظ النماذج المُكمّمة على دقة عالية باستخدام تقنيات التكميم. ويحقق التدريب المُراعي للتكميم (QAT) والتقليم مع التكميم (PQAT) ضغطًا كبيرًا مع الحفاظ على الدقة.
تُعدّ هذه الأرقام مهمة لأنّ النماذج الأصغر حجماً تُحمّل بشكل أسرع، وتستهلك ذاكرة أقل، وتعمل بسرعة أكبر على الأجهزة ذات الموارد المحدودة. ويستفيد جهاز Raspberry Pi بشكل مباشر من هذه التحسينات.

حوّل بيانات الكاميرا إلى برامج ذكاء اصطناعي باستخدام AI Superior
متفوقة الذكاء الاصطناعي تساعد الشركات على بناء حلول ذكاء اصطناعي مخصصة ودمجها في أنظمة حقيقية. تشمل أعمالها رؤية الحاسوب، ومعالجة الصور، والتحليلات التنبؤية، وذكاء الأعمال، ومعالجة اللغات الطبيعية، وحلول البيانات الضخمة.
بالنسبة لمشاريع Raspberry Pi، يمكن لهذا أن يدعم الكشف القائم على الكاميرا، والتعرف على الأشياء، وتجارب الذكاء الاصطناعي الطرفي، أو النماذج الأولية التي تحتاج إلى إعداد برامج ونماذج أقوى.
هل تحتاج إلى تصميم نظام رؤية حاسوبية لنموذج أولي؟
يمكن أن تساعدك تقنية الذكاء الاصطناعي المتفوقة في:
- بناء نماذج مخصصة للتعرف على الصور
- اكتشاف الأجسام من صور الكاميرا
- اختبار النماذج الأولية من خلال إثبات المفهوم أو العمل على الحد الأدنى من المنتج القابل للتطبيق
- إعداد أدوات الذكاء الاصطناعي لتكامل الأنظمة
👉 تواصل مع شركة AI Superior لمناقشة مشروعك.
متطلبات الأجهزة وإعداد الكاميرا
يُجنّب البدء بالأجهزة المناسبة حدوث اختناقات مزعجة لاحقًا. يُنصح بشدة باستخدام Raspberry Pi 4 Model B أو أحدث، حيث تُحدث قوة المعالجة الإضافية فرقًا ملحوظًا عند تشغيل خوارزميات الرؤية.
مكونات الأجهزة الموصى بها
| عنصر | مواصفة | غاية |
|---|---|---|
| راسبيري باي | Raspberry Pi 4 Model B (4GB+) أو Raspberry Pi 5 | وحدة المعالجة الرئيسية، تتولى عملية الاستدلال |
| آلة تصوير | كاميرا باي الرسمية الإصدار الثاني أو كاميرا باي الإصدار الثالث | التقاط الصور، فيديو بدقة تصل إلى 1080 بكسل |
| تخزين | بطاقة ذاكرة microSD بسعة 32 جيجابايت أو أكثر (الفئة 10) | نظام التشغيل والمكتبات وتخزين النماذج |
| مزود الطاقة | شاحن USB-C رسمي بقوة 15 واط (لأجهزة Raspberry Pi 4/5) | توفير طاقة مستقرة أثناء المعالجة |
| تبريد | مشتتات حرارية أو مروحة نشطة | أداء مستدام دون تباطؤ |
تتصل الكاميرا عبر منفذ كابل CSI المخصص على لوحة Raspberry Pi. توفر هذه الواجهة نطاقًا تردديًا أعلى وزمن استجابة أقل من كاميرات الويب USB، مع العلم أن كاميرات USB تعمل عند الحاجة.
منذ إصداري نظامي التشغيل Raspberry Pi OS "Bullseye" و"Bookworm" (وجميع الإصدارات اللاحقة في عام 2026)، تم استبدال حزمة برامج الكاميرا القديمة بمكتبة libcamera. لم يعد هناك خيار "الكاميرا" في تبويب "الواجهات" ضمن raspi-config لوحدات الكاميرا الحديثة.
تحقق من وظيفة الكاميرا من خلال التقاط صورة تجريبية:
| libcamera-still -o test.jpg |
يجب أن يلتقط هذا الأمر صورة واحدة باسم test.jpg في المجلد الحالي. في حال ظهور أخطاء، تحقق من اتجاه كابل الشريط - الجانب الأزرق مواجه لمنفذ الإيثرنت في معظم طرازات Raspberry Pi.
تثبيت مكتبة OpenCV لاكتشاف الأجسام
لا تزال مكتبة OpenCV (Open Computer Vision) المكتبة الأكثر استخدامًا على نطاق واسع لمهام الرؤية الحاسوبية على جهاز Raspberry Pi. وقد تحسنت عملية التثبيت بشكل كبير، على الرغم من أنها لا تزال تتطلب عناية فائقة بالمتطلبات.
تُسهّل إصدارات نظام التشغيل Raspberry Pi الحديثة تثبيت مكتبة OpenCV من خلال مدير الحزم. ابدأ بتحديث النظام:
| sudo apt-get update && sudo apt-get upgrade -y |
ثم قم بتثبيت مكتبة OpenCV مع روابط بايثون:
| sudo apt-get install python3-opencv -y |
تتجنب هذه الطريقة عملية التجميع من المصدر، والتي كانت تستغرق سابقًا أكثر من ساعة وتفشل غالبًا على اللوحات ذات الذاكرة المحدودة. أما طريقة مدير الحزم فتُنجز عادةً في غضون 5-10 دقائق.
تحقق من التثبيت عن طريق استيراد مكتبة OpenCV في بايثون:
| python3 -c “import cv2; print(cv2.__version__)” |
يجب أن يُظهر هذا الأمر رقم الإصدار المُثبّت دون أخطاء. يوفر الإصدار 4.5 أو أحدث وحدة الشبكة العصبية العميقة (DNN) اللازمة لاكتشاف الأجسام.
فهم وحدة الشبكات العصبية العميقة في مكتبة OpenCV
تربط وحدة الشبكات العصبية العميقة (DNN) في مكتبة OpenCV بين تقنيات رؤية الحاسوب الكلاسيكية والتعلم العميق الحديث. وبحلول نوفمبر 2025، أصبحت الوحدة تدعم العديد من بنى الشبكات، وتطورت لتصبح أداة جاهزة للاستخدام في بيئات الإنتاج.
تتولى الوحدة عدة مهام حاسمة: تحميل النماذج المدربة مسبقًا من أطر عمل مختلفة (TensorFlow، PyTorch، Caffe)، ومعالجة الصور المدخلة مسبقًا لتتوافق مع توقعات النموذج، وتشغيل الاستدلال بكفاءة، وتحليل مخرجات الكشف.
تتضمن المعالجة المسبقة للإدخال عادةً تغيير حجم الصور إلى بُعد ثابت (عادةً 640 بكسل لكاشفات YOLO)، وتطبيع قيم البكسل، وضبط ترتيب قنوات الألوان. تتطلب النماذج المختلفة معالجة مسبقة مختلفة، لذا فإن التوثيق مهم.
العمل مع النماذج المدربة مسبقًا
تُغني النماذج المدربة مسبقًا عن الحاجة إلى جمع بيانات التدريب وقضاء أيام أو أسابيع في تدريب الشبكات. وتتفوق العديد من عائلات النماذج على أجهزة Raspberry Pi.
نماذج مجموعة بيانات COCO
قامت مجموعة بيانات COCO (الأشياء الشائعة في سياقها) بتدريب الشبكات للتعرف على 80 فئة من الأشياء اليومية، بما في ذلك الأشخاص والسيارات والأكواب والكلاب ولوحات المفاتيح. توفر نماذج COCO نقاط انطلاق ممتازة للكشف العام.
يمثل MobileNet SSD (كاشف اللقطة الواحدة) الطرف الأخف وزنًا من هذا الطيف. تعمل هذه النماذج بسرعة على Raspberry Pi ولكنها تُضحي ببعض الدقة. يستخدم التصميم الالتفافات القابلة للفصل العميق لتقليل العمليات الحسابية مع الحفاظ على أداء معقول.
قم بتنزيل نموذج MobileNet SSD COCO المدرب مسبقًا:
| wget https://github.com/chuanqi305/MobileNet-SSD/raw/master/mobilenet_iter_73000.caffemodel wget https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/master/deploy.prototxt |
تُعدّ نماذج YOLO (أنت تنظر مرة واحدة فقط) خيارًا شائعًا آخر. يوازن YOLOv8 Nano بين السرعة والدقة بكفاءة. تعالج هذه البنية الصور في تمريرة واحدة، مما يجعلها أسرع من طرق اقتراح المناطق.
TensorFlow Lite للاستدلال الأمثل
يستهدف TensorFlow Lite الأجهزة المحمولة والمدمجة بتنسيقات نماذج محسّنة ووقت تشغيل مُحسّن. يتم تحويل النماذج إلى تنسيق .tflite الذي يعمل بكفاءة على معالجات ARM.
قم بتثبيت بيئة تشغيل TensorFlow Lite:
| pip3 install tflite-runtime |
تستخدم نماذج TensorFlow Lite تقنية التكميم لتقليل الحجم وتحسين السرعة. يعمل النموذج المُكمّم ذو 8 بت أسرع من النموذج ذي الفاصلة العائمة بمقدار 2-4 مرات مع أدنى حد من فقدان الدقة.
يتضمن تنزيل نموذج TensorFlow Lite المدرب مسبقًا عادةً الحصول على كل من ملف النموذج (.tflite) وملف التصنيف الذي يربط معرفات الفئات الرقمية بأسماء يسهل على الإنسان قراءتها.
بناء نظام للكشف عن الأجسام في الوقت الحقيقي
والآن ننتقل إلى الجزء العملي - دمج الأجهزة والمكتبات والنماذج في نظام كشف فعال. يتبع الكود نمطًا ثابتًا بغض النظر عن النموذج الذي تختاره.
بنية برنامج الكشف الأساسي
ابدأ باستيراد المكتبات اللازمة وتحميل أسماء الفئات. تستخدم مجموعة بيانات COCO ملفًا نصيًا يحتوي على اسم فئة واحد في كل سطر:
| استيراد مكتبة cv2 استيراد numpy كـ np أسماء الفئات = [] with open('coco.names', 'rt') as f: classNames = f.read().rstrip('\n').split('\n') |
بعد ذلك، قم بتحميل النموذج المدرب مسبقًا. تدعم وحدة الشبكات العصبية العميقة (DNN) في مكتبة OpenCV صيغًا متعددة:
| net = cv2.dnn.readNetFromTensorflow('frozen_inference_graph.pb', 'ssd_mobilenet_v3.pbtxt') net.setPreferableBackend(cv2.dnn.DNN_BACKEND_DEFAULT) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU) |
قم بضبط معلمات المعالجة المسبقة للإدخال. تعتمد هذه القيم على النموذج - راجع الوثائق:
| net.setInputSize(320, 320) net.setInputScale(1.0 / 127.5) net.setInputMean((127.5, 127.5, 127.5)) net.setInputSwapRB(True) |
قم بتهيئة الكاميرا وضبط الدقة:
| cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) |
تقوم الحلقة الرئيسية بالتقاط الإطارات، وتشغيل عملية الكشف، وعرض النتائج:
| بينما صحيح: نجاح، الإطار = cap.read() في حال عدم النجاح: استراحة classIds, confidences, boxes = net.detect(frame, confThreshold=0.5, nmsThreshold=0.4) إذا كان طول (classIds) أكبر من صفر: for classId, confidence, box in zip(classIds.flatten(), confidences.flatten(), boxes): cv2.rectangle(frame, box, color=(0, 255, 0), thickness=2) label = f'{classNames[classId-1]}: {confidence*100:.1f}%'' cv2.putText(frame, label, (box[0], box[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) cv2.imshow('Object Detection', frame) إذا كان cv2.waitKey(1) & 0xFF == ord('q'): استراحة cap.release() cv2.destroyAllWindows() |
يشكّل هذا الهيكل الأساسي قاعدةً لتطبيقات أكثر تعقيدًا. تعمل عتبة الثقة (0.5 في هذا المثال) على تصفية عمليات الكشف، بحيث لا تظهر إلا الكائنات التي تبلغ ثقتها 50% أو أعلى. أما عتبة NMS (0.4) فتتحكم في كبح القيم غير القصوى، مما يؤدي إلى إزالة عمليات الكشف المكررة لنفس الكائن.
تحسين معايير الكشف
هناك معياران رئيسيان يتحكمان في المفاضلة بين السرعة والدقة: عتبة الثقة وعتبة NMS.
يؤدي خفض عتبة الثقة من 0.5 إلى 0.3 إلى زيادة عدد عمليات الكشف، ولكنه يزيد من عدد النتائج الإيجابية الخاطئة. أما رفعها إلى 0.7 فيقلل من النتائج الإيجابية الخاطئة، ولكنه يغفل عن بعض الأجسام الحقيقية التي يكون النموذج أقل ثقة بشأنها.
تحدد عتبة NMS مدى دمج المربعات المتداخلة. القيم المنخفضة (0.2-0.3) تُبقي فقط على أقوى اكتشاف عند تداخل المربعات بشكل كبير. أما القيم الأعلى (0.5-0.6) فتسمح بوجود مربعات متعددة لنفس الكائن، وهو أمر مفيد عند اكتشاف العناصر المحجوبة جزئيًا.
تؤثر دقة الإدخال بشكل كبير على الأداء. فمعالجة الصور بدقة 320×320 بكسل أسرع بمرتين تقريبًا من معالجة الصور بدقة 640×640 بكسل، ولكن الصور الأصغر حجمًا قد لا تُظهر الأجسام الصغيرة أو البعيدة. لذا، يُنصح بتجربة دقة عرض مختلفة للعثور على التوازن الأمثل لحالات الاستخدام المختلفة.
اكتشاف أجسام محددة وتصفية النتائج
لا تحتاج معظم التطبيقات إلى اكتشاف جميع فئات COCO الثمانين. يُحسّن التصفية لعناصر محددة الأداء ويقلل من النتائج الإيجابية الخاطئة.
قم بتعديل حلقة الكشف للتحقق من أسماء الفئات:
| target_objects = ['person', 'cup', 'cell phone'] إذا كان طول (classIds) أكبر من صفر: for classId, confidence, box in zip(classIds.flatten(), confidences.flatten(), boxes): className = classNames[classId-1] إذا كان اسم الفئة موجودًا في الكائنات المستهدفة: cv2.rectangle(frame, box, color=(0, 255, 0), thickness=2) label = f'{className}: {confidence*100:.1f}%'' cv2.putText(frame, label, (box[0], box[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) |
هذا الكود يرسم مربعات حول الأشخاص والأكواب والهواتف المحمولة فقط - متجاهلاً السيارات والكلاب وكل شيء آخر يكتشفه النموذج.
تُمكّن خاصية تتبع عدد مرات الكشف تطبيقات المراقبة. احسب عدد مرات ظهور عناصر محددة:
| detection_counts = {obj: 0 for obj in target_objects} إذا كان طول (classIds) أكبر من صفر: for classId, confidence, box in zip(classIds.flatten(), confidences.flatten(), boxes): className = classNames[classId-1] إذا كان اسم الفئة موجودًا في الكائنات المستهدفة: detection_counts[className] += 1 # ارسم مربعات كما في السابق print(f”عدد عمليات الكشف عن الإطارات الحالية: {detection_counts}”) |
يؤدي دمج خاصية اكتشاف الأجسام مع التحكم عبر منافذ الإدخال/الإخراج العامة (GPIO) إلى استجابات مادية. فعندما يكتشف النظام كوبًا، يتم تنشيط محرك سيرفو أو مؤشر LED.
| استورد RPi.GPIO باسم GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) إذا كان طول (classIds) أكبر من صفر: for classId in classIds.flatten(): إذا كان اسم الفئة[classId-1] يساوي 'cup': GPIO.output(18, GPIO.HIGH) time.sleep(0.5) GPIO.output(18, GPIO.LOW) |
يمتد هذا النمط الأساسي إلى تطبيقات لا حصر لها: أجهزة تغذية الحيوانات الأليفة الأوتوماتيكية التي يتم تفعيلها عند اكتشاف قطة، وكاميرات المراقبة التي تنبه عند اكتشاف شخص، أو أنظمة الجرد التي تحسب العناصر.
مواضيع متقدمة وضبط الأداء
يتطلب تجاوز مرحلة الكشف الأساسي فهم نقاط الضعف في الأداء وتقنيات التحسين.
تعدد الخيوط لتحسين معدل الإطارات في الثانية
يتم تشغيل عملية التقاط الكاميرا والاستدلال بشكل متسلسل افتراضيًا. فبينما يعالج النموذج إطارًا واحدًا، تبقى الكاميرا في وضع الخمول. ويفصل تعدد الخيوط بين هاتين العمليتين.
أنشئ موضوعًا منفصلاً لالتقاط الصور بالكاميرا:
| من مكتبة threading استورد Thread قائمة الاستيراد frame_queue = queue.Queue(maxsize=2) دالة التقاط الإطارات(): بينما صحيح: نجاح، الإطار = cap.read() في حال عدم النجاح: استراحة إذا لم تكن قائمة انتظار الإطارات ممتلئة: frame_queue.put(frame) capture_thread = Thread(target=capture_frames, daemon=True) capture_thread.start() |
تقوم الحلقة الرئيسية بعد ذلك بسحب الإطارات من قائمة الانتظار بدلاً من قراءتها مباشرة من الكاميرا. وهذا يُبقي الكاميرا تعمل باستمرار بينما يقوم الاستدلال بمعالجة الإطارات بوتيرته الخاصة.
تحديد كمية النموذج وتقليمه
يؤدي تقليل دقة النموذج من 32 بت (عدد عشري) إلى 8 بت (عدد صحيح) إلى تحسين السرعة بشكل ملحوظ مع أدنى حد من فقدان الدقة. ويتولى TensorFlow Lite عملية التكميم أثناء تحويل النموذج.
بحسب بحثٍ حول تحسين نماذج TensorFlow، فإن التدريب المُراعي للكمية يُنتج نماذج INT8 تحافظ على دقة 94.72% في أعلى 1 مقارنةً بـ 95.23% لنماذج FP32 الأساسية، أي بفارق ضئيل لا يتجاوز 0.51 نقطة مئوية. وينخفض حجم النموذج بمقدار 17.66% نتيجةً للضغط.
يُحقق دمج تقنية التقليم مع التكميم (PQAT) ضغطًا كبيرًا مع الحفاظ على مستويات دقة معقولة. وتُترجم هذه التقنيات مباشرةً إلى تحميل واستدلال أسرع على جهاز Raspberry Pi.
استخدام مسرع USB من كورال
يُضيف مُسرّع Coral USB من جوجل معالجًا مُساعدًا مُخصصًا لوحدة معالجة Tensor TPU على جهاز Raspberry Pi. يُشغّل هذا المُسرّع نماذج TensorFlow Lite بسرعة تتراوح بين 10 و20 ضعفًا مقارنةً بالاستدلال باستخدام وحدة المعالجة المركزية فقط.
يتطلب برنامج Coral تنسيقات نماذج محددة (TensorFlow Lite الكمي المُجمَّع لـ Edge TPU). تتضمن عملية الإعداد تثبيت بيئة تشغيل Edge TPU وتحويل النماذج باستخدام أداة تجميع Coral.
أداء واقعي: نموذج MobileNet SSD الذي يحقق 5-7 إطارات في الثانية على معالج Raspberry Pi 4، يرتفع إلى 50-70 إطارًا في الثانية مع تسريع Coral. هذا يحوّل العروض التوضيحية التي بالكاد تعمل إلى أنظمة جاهزة للإنتاج.
التطبيقات العملية وأفكار المشاريع
تتيح تقنية التعرف على الصور على جهاز Raspberry Pi عشرات التطبيقات العملية. إليكم فئات مشاريع مجربة مع حالات استخدام واقعية.
أتمتة المنزل الذكي
يكتشف النظام دخول الأشخاص إلى الغرف ويتحكم تلقائيًا في الإضاءة، وأجهزة تنظيم الحرارة، والموسيقى. كما يتتبع الأنماط اليومية لتوقع الاحتياجات، حيث يتعلم النظام متى يدخل أفراد معينون من العائلة عادةً إلى غرف معينة.
يقوم نظام الكشف عن الحيوانات الأليفة بتشغيل أجهزة التغذية الآلية في الأوقات المناسبة. يميز النظام بين القطط والكلاب، ويقدم أنواع الطعام المناسبة. وبالتكامل مع ميزان الوزن، يراقب النظام كمية الطعام التي يتناولها الحيوان.
مراقبة الزراعة والحياة البرية
يستخدم المزارعون كاميرات Raspberry Pi لمراقبة المحاصيل، والكشف عن أعراض الأمراض أو الإصابات بالآفات. وتحدد النماذج المدربة على مجموعات بيانات أمراض النبات المشكلات قبل انتشارها.
تُحدد كاميرات مراقبة الحياة البرية التي تعمل بتقنية Raspberry Pi أنواع الحيوانات، وتُحصي أعدادها، وتتتبع أنماط حركتها. كما تُمكّن الألواح الشمسية والاتصال الخلوي من العمل بشكل مستقل لعدة أشهر في المواقع النائية.
مراقبة الجودة الصناعية
تستخدم خطوط الإنتاج أنظمة الرؤية للكشف عن عيوب المنتج. تقوم كاميرات Raspberry Pi بفحص العناصر عند نقاط التفتيش الحرجة، وتحديد أي خلل ليتم مراجعته من قبل المختصين.
تقوم أنظمة جرد المخزون في المستودعات بمسح الرفوف، وحساب الأصناف، وتحديد المنتجات الموضوعة في غير مكانها. ويساهم الجمع بين تقنية الكشف عن الأشياء وقراءة الرموز الشريطية في الحفاظ على مستويات المخزون بدقة.
تطبيقات إمكانية الوصول
تساعد أنظمة الرؤية المستخدمين ذوي الإعاقة البصرية من خلال الإعلان عن الأشياء المكتشفة عبر تحويل النص إلى كلام. يصف النظام المحيط على سبيل المثال: "شخص أمامك، كوب على اليسار، كرسي على اليمين".“
يمنع نظام تحديد الأدوية حدوث أي خلط بينها من خلال قراءة ملصقات عبوات الأقراص والتأكد من مطابقة محتوياتها للوصفات الطبية. وهذا يقلل من أخطاء الأدوية، خاصةً لدى كبار السن الذين يتناولون عدة وصفات طبية.
استكشاف الأخطاء وإصلاحها في المشكلات الشائعة
حتى الإعدادات البسيطة قد تواجه مشاكل. إليك كيفية تشخيص وإصلاح أكثر المشاكل شيوعاً.
لم يتم اكتشاف الكاميرا
إذا لم يتعرف النظام على الكاميرا، فتحقق من التوصيلات المادية أولاً. أوقف تشغيل جهاز Raspberry Pi، وأعد توصيل كابل الشريط، وتأكد من اتجاهه. في معظم الطرازات، يكون الجانب الأزرق مواجهًا لمنفذ الإيثرنت.
قم بتفعيل واجهة الكاميرا في إعدادات Raspberry Pi ضمن علامة التبويب "الواجهات". قد تتم إعادة ضبط هذا الإعداد أحيانًا بعد تحديثات نظام التشغيل.
اختبر باستخدام أمر التشخيص:
| vcgencmd get_camera |
يجب أن يُظهر الناتج "supported=1 detected=1". إذا كانت قيمة detected=0، فهذا يعني فشل اتصال الجهاز.
معدلات إطارات منخفضة
يشير معدل الإطارات المنخفض (أقل من 10 إطارات في الثانية) إلى وجود اختناقات في الأداء. تحقق من درجة حرارة المعالج أولاً:
| vcgencmd measure_temp |
تؤدي درجات الحرارة المستمرة التي تتجاوز 80 درجة مئوية إلى خفض الأداء بسبب الحرارة. لذا، يُنصح بإضافة مشتتات حرارية أو مروحة تبريد فعّالة للحفاظ على الأداء الأمثل.
قم بتقليل دقة الإدخال من 640×480 إلى 320×240. هذا يضاعف معدل الإطارات تقريبًا ولكنه يقلل من دقة اكتشاف الأجسام الصغيرة أو البعيدة.
أغلق العمليات الخلفية غير الضرورية. بيئة سطح مكتب Raspberry Pi تستهلك موارد كبيرة. تشغيل برامج الكشف في وضع سطر الأوامر (بدون واجهة رسومية) يحرر دورات المعالج.
النتائج الإيجابية الخاطئة والاكتشافات الفائتة
تشير النتائج الإيجابية الخاطئة المفرطة إلى أن عتبة الثقة منخفضة للغاية. ارفعها من 0.5 إلى 0.6 أو 0.7. سيؤدي ذلك إلى تصفية الاكتشافات الضعيفة التي يُحتمل أن تكون أخطاءً.
تشير حالات عدم الكشف إلى مشكلة معاكسة، وهي إما أن العتبة مرتفعة للغاية أو أن الإضاءة ضعيفة. لذا، يُنصح بتحسين ظروف الإضاءة قبل خفض العتبات إلى أقل من 0.4.
تُشكّل بعض الأشياء تحدياً حقيقياً للنماذج. فكوبٌ مُصوّر من زوايا غير معتادة قد لا يتطابق مع أنماط بيانات التدريب. النماذج المُدرّبة على مجموعات بيانات مُحدّدة (مثل COCO) لا تتعرّف إلا على تلك الفئات الثمانين بدقة.
مقارنة مكتبات رؤية الحاسوب
| مكتبة | نقاط القوة | نقاط الضعف | الأفضل لـ |
|---|---|---|---|
| OpenCV | وثائق شاملة وناضجة وممتازة | مساحة أكبر، عملية تركيب أبطأ | مشاريع الرؤية ذات الأغراض العامة |
| TensorFlow Lite | مُحسَّن للأجهزة المحمولة/الحافة، يدعم التكميم | يتطلب تحويل النموذج، عمليات محدودة | عمليات نشر الإنتاج التي تتطلب السرعة |
| تطبيق PyTorch للهواتف المحمولة | مجتمع بحثي مرن وقوي | أقل نضجًا على معالجات ARM، ونماذج أكبر حجمًا | تجربة بنى معمارية أحدث |
| ميديا بايب | خطوط أنابيب جاهزة، تتبع اليد/الوضعية | تخصيص أقل، خاص بجوجل | مهام محددة مثل التعرف على الإيماءات |
الاتجاهات المستقبلية في مجال الرؤية الطرفية
تواصل الحوسبة الطرفية نموها السريع. وتتوقع مؤسسة IDC أن يصل الإنفاق على الحوسبة الطرفية إلى 1.78 تريليون دولار بحلول عام 2040، مدفوعًا بمخاوف الخصوصية، وتقليل الحاجة إلى زمن الاستجابة، وتكاليف النطاق الترددي.
ستتعامل الأجهزة من فئة Raspberry Pi مع نماذج أكثر تعقيدًا مع تحسن كفاءة بنى الشبكات العصبية. وتعمل تقنيات مثل البحث عن بنية الشبكات العصبية على تصميم شبكات مثالية تلقائيًا وفقًا لقيود الأجهزة المحددة.
يُمكّن التعلم الموحد من تحسين النماذج مع الحفاظ على الخصوصية. تقوم أجهزة طرفية متعددة بتدريب النماذج بشكل تعاوني دون مشاركة البيانات الأولية - يتعلم كل جهاز محليًا ويشارك فقط تحديثات النموذج.
تحلّ محولات الرؤية وآليات الانتباه محل الشبكات الالتفافية في العديد من التطبيقات. وتختلف هذه البنى في قابليتها للتوسع، وقد تثبت كفاءتها العالية على معالجات ARM المستقبلية المصممة لعمليات المحولات.
الأسئلة الشائعة
هل يستطيع جهاز Raspberry Pi التعامل مع اكتشاف الأجسام في الوقت الفعلي؟
نعم، ولكن مع بعض القيود. تحقق طرازات Raspberry Pi 4 و5 معدل إطارات يتراوح بين 10 و20 إطارًا في الثانية مع الطرازات المُحسّنة مثل MobileNet SSD بدقة 320×320 بكسل. هذا كافٍ للعديد من التطبيقات، ولكنه لا يُتيح تشغيل فيديو سلس. استخدام مُسرّع Coral USB يزيد الأداء إلى أكثر من 50 إطارًا في الثانية، مما يُتيح التشغيل الفوري.
أي طراز من طرازات Raspberry Pi هو الأفضل للتعرف على الصور؟
يُعدّ جهاز Raspberry Pi 4 Model B بذاكرة وصول عشوائي (RAM) سعة 4 أو 8 جيجابايت الحد الأدنى الموصى به. يوفر جهاز Pi 5 أداءً أفضل بفضل معالجه الذي يعمل بتردد 2.4 جيجاهرتز. أما الطرازات الأقدم مثل Pi 3 فتواجه صعوبة في الاستدلال في الوقت الفعلي. بينما يفتقر جهاز Pi Zero إلى قوة معالجة كافية لتطبيقات الرؤية العملية.
ما مدى دقة النماذج المدربة مسبقًا على جهاز Raspberry Pi؟
تعتمد الدقة على النموذج وحالة الاستخدام. تحقق النماذج المدربة باستخدام مجموعة بيانات COCO، مثل MobileNet SSD، دقة متوسطة تتراوح بين 70 و75% على المعايير القياسية. أما نماذج YOLOv8 فتصل إلى دقة تتراوح بين 80 و85% مع الضبط المناسب. وتختلف الدقة في الواقع العملي بناءً على الإضاءة وموقع الكاميرا ومدى تطابق سيناريوهات الاختبار مع بيانات التدريب.
هل يمكنني تدريب نماذج مخصصة على جهاز Raspberry Pi؟
يُعدّ التدريب على Raspberry Pi غير عملي نظرًا لمحدودية موارد الحوسبة. يتطلب تدريب نماذج الرؤية الحديثة ساعات أو أيامًا على أجهزة مزودة بوحدات معالجة رسومية (GPU). بدلاً من ذلك، يُمكن تدريب النماذج على أجهزة سطح المكتب أو الحوسبة السحابية المزودة بوحدات معالجة رسومية، ثم نشر الأوزان المُدرّبة على Raspberry Pi للاستدلال. تُقلّل تقنيات التعلّم بالنقل من وقت التدريب من خلال البدء بأوزان مُدرّبة مسبقًا.
ما هي الكاميرا التي تعمل بشكل أفضل مع Raspberry Pi لاكتشاف الأجسام؟
توفر وحدة كاميرا Raspberry Pi الرسمية الإصدارين الثاني والثالث أفضل توافق وأداء. تتميز واجهة CSI بزمن استجابة أقل من USB. تتضمن وحدة الكاميرا 3 خاصية التركيز التلقائي ودعم HDR، مما يحسن من دقة الكشف في ظروف الإضاءة المختلفة. تعمل كاميرات الويب USB، ولكنها عادةً ما تقدم معدلات إطارات أقل وتتطلب موارد معالجة أكبر.
كيف يمكنني تقليل استهلاك الطاقة في التطبيقات التي تعمل بالبطاريات؟
قلل دقة الكاميرا ومعدل الإطارات - التقط الصور بمعدل 5-10 إطارات في الثانية بدلاً من 30. عطّل مخرج HDMI في حال تشغيل الجهاز بدون شاشة. استخدم وضع السكون بين عمليات الكشف لتطبيقات المراقبة التي لا تتطلب معالجة مستمرة. يستهلك Raspberry Pi Zero 2 W طاقة أقل من Pi 4 مع الحفاظ على قدرته على التعامل مع الطرازات خفيفة الوزن.
هل يمكن توصيل عدة كاميرات بجهاز Raspberry Pi واحد؟
يدعم Raspberry Pi 4 و 5 كاميرتين عبر منفذي CSI/DSI المزدوجين (يتطلب ذلك وحدة معالجة أو لوحة محول لمعظم طرازات Pi). يمكن إضافة مداخل إضافية لكاميرات USB، ولكن ذلك محدود بعرض نطاق USB وقدرة المعالجة. عمليًا، توقع استخدام كاميرتين أو ثلاث كحد أقصى مع انخفاض معدل الإطارات أو الدقة لكل كاميرا.
خاتمة
يحوّل نظام التعرف على الصور في Raspberry Pi جهاز الكمبيوتر $50 إلى نظام رؤية متطور. فمن خلال دمج مكتبات محسّنة مثل OpenCV وTensorFlow Lite مع نماذج مُدرّبة مسبقًا، يستطيع المطورون بناء تطبيقات كانت مستحيلة على الأجهزة المدمجة قبل بضع سنوات فقط.
يكمن السر في فهم المفاضلات. فالنماذج الأسرع تضحي ببعض الدقة، والدقة الأعلى تقلل من معدل الإطارات، واستهلاك طاقة البطارية يحد من خيارات المعالجة. ولكن ضمن هذه القيود، تظهر إمكانيات رائعة.
ابدأ ببرنامج الكشف الأساسي، وجرّب نماذج مختلفة، وحسّنها بناءً على الأداء الفعلي. يشير نمو سوق الحوسبة الطرفية إلى 1 تريليون/4 تريليون/378 مليار دولار بحلول عام 2040 إلى أن هذه المهارات ستظل ذات أهمية لسنوات قادمة.
هل أنت مستعد لبناء نظام الرؤية الخاص بك؟ أحضر جهاز Raspberry Pi 4، وقم بتوصيل وحدة الكاميرا، وابدأ عملية الكشف. الجزء الأصعب هو البدء، أما الباقي فهو مجرد كتابة الكود.