مساء الخير
في استمرار لسلسلة من المقالات:
الأول والثاني حول استخدام كاميرا عين السمكة مع Raspberry Pi 3 و ROS ، أود التحدث عن استخدام نماذج Deep Learning المدربة مسبقًا لرؤية الكمبيوتر مع كاميرا Fish eye على Raspberry Pi 3. من يهتم ، أطلب القط.
تصنيف الصورة
كما في المقالات السابقة ، سوف نستخدم Ubuntu 16.04. للعمل ، سنحتاج إلى مكتبة Keras. يمكن تثبيته على أوبونتو باتباع التعليمات
الواردة من هنا .
سوف نذهب إلى
الصفحة واضغط على زر تنزيل الكود! أسفل الصفحة. سوف تتلقى رسالة بريد إلكتروني مع المصدر.
قم بتنزيل الأرشيف وفك ضغطه وانتقل إلى المجلد. أولاً ، قم بتشغيل البرنامج النصي لتصنيف الكائنات استنادًا إلى نموذج GoogleNet المدربين مسبقًا:
cd pi-deep-learning/ python pi_deep_learning.py --prototxt models/bvlc_googlenet.prototxt \ --model models/bvlc_googlenet.caffemodel --labels synset_words.txt \ --image images/barbershop.png
نحصل على هذا الاستنتاج في المحطة
[INFO] loading model... [ INFO:0] Initialize OpenCL runtime... [INFO] classification took 1.7103 seconds [INFO] 1. label: barbershop, probability: 0.78055 [INFO] 2. label: barber chair, probability: 0.2194 [INFO] 3. label: rocking chair, probability: 3.4663e-05 [INFO] 4. label: restaurant, probability: 3.7257e-06 [INFO] 5. label: hair spray, probability: 1.4715e-06

ويستخدم وحدة الشبكة العصبية العميقة (DNN) من OpenCV 3.3. يمكنك أن تقرأ عنها
هنا .
الآن ، دعونا نجرب تصنيف الكائنات باستخدام نموذج Squeezenet المُدرَّب مسبقًا:
python pi_deep_learning.py --prototxt models/squeezenet_v1.0.prototxt \ --model models/squeezenet_v1.0.caffemodel --labels synset_words.txt \ --image images/barbershop.png
[INFO] loading model... [ INFO:0] Initialize OpenCL runtime... [INFO] classification took 0.86275 seconds [INFO] 1. label: barbershop, probability: 0.80578 [INFO] 2. label: barber chair, probability: 0.15124 [INFO] 3. label: half track, probability: 0.0052873 [INFO] 4. label: restaurant, probability: 0.0040124 [INFO] 5. label: desktop computer, probability: 0.0033352

تصنيف بلدي عملت لمدة 0.86 ثانية.
لنجرب الآن على صورة cobra.png:
python pi_deep_learning.py --prototxt models/squeezenet_v1.0.prototxt \ --model models/squeezenet_v1.0.caffemodel --labels synset_words.txt \ --image images/cobra.png
الاستنتاج:
[INFO] classification took 0.87402 seconds [INFO] 1. label: Indian cobra, probability: 0.47972 [INFO] 2. label: leatherback turtle, probability: 0.16858 [INFO] 3. label: water snake, probability: 0.10558 [INFO] 4. label: common iguana, probability: 0.059227 [INFO] 5. label: sea snake, probability: 0.046393

كشف الكائن
الآن حاول اكتشاف الكائنات باستخدام Raspberry Pi باستخدام كاميرا عين السمكة. سوف نذهب إلى
الصفحة واضغط على زر تنزيل الكود! أسفل الصفحة. سوف تتلقى رسالة بريد إلكتروني مع المصدر.
على غرار التصنيف ، تنزيل ، فك الضغط ، انتقل إلى المجلد. قم بتشغيل البرنامج النصي لاكتشاف الكائنات:
python pi_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel
الاستنتاج:
[INFO] loading model... [INFO] starting process... [INFO] starting video stream... [ INFO:0] Initialize OpenCL runtime... libEGL warning: DRI3: failed to query the version libEGL warning: DRI2: failed to authenticate
عند تشغيل البرنامج النصي ، يمكننا الحصول على الخطأ التالي:
Error: AttributeError: 'NoneType' object has no attribute 'shape' (comment to post)
لحل المشكلة ، افتح الملف pi_object_detection.py وقم بالتعليق على السطر 74:
vs = VideoStream(src=0).start()
وخط عدم 75
vs = VideoStream(usePiCamera=True).start()


نرى أن البرنامج النصي يكتشف بعض الكائنات ، رغم أنه لم يتم التعرف على جميع الكائنات بشكل صحيح. وفقًا لملاحظاتي ، يكتشف البرنامج النصي الكائنات بسرعة كبيرة (لسوء الحظ ، لا يمكن إصلاح fps).
يمكننا أيضًا تشغيل البرنامج النصي real_time_object_detection.py. في حالة وجود خطأ ، كرر الإجراء الخاص بالبرنامج النصي pi_object_detection.py: comment out out line 38 and uncomment line 39. Result

هذا كل شيء الآن. حظا سعيدا للجميع ونراكم قريبا!