Verwenden des Fischauges auf dem Raspberry Pi 3: Einführung vorgefertigter DL-Modelle für die Bildverarbeitung

Guten Tag,

in der Fortsetzung einer Reihe von Artikeln: die erste und zweite über die Verwendung einer Fischaugen-Kamera mit Raspberry Pi 3 und ROS Ich möchte über die Verwendung von vorgefertigten Deep-Learning-Modellen für das Computer-Sehen mit einer Fischaugen-Kamera auf dem Raspberry Pi 3 sprechen.

Bildklassifizierung


Wie in den vorherigen Artikeln werden wir Ubuntu 16.04 verwenden. Für die Arbeit benötigen wir die Keras-Bibliothek. Es kann unter Ubuntu installiert werden, indem Sie den Anweisungen hier folgen.

Wir werden auf die Seite gehen und den DOWNLOAD THE CODE Button drücken! Ende der Seite. Sie erhalten eine E-Mail mit der Quelle.

Laden Sie das Archiv herunter, entpacken Sie es und wechseln Sie in den Ordner. Führen Sie zunächst das Objektklassifizierungsskript basierend auf dem vorab trainierten GoogleNet-Modell aus:

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 

Wir bekommen diese Schlussfolgerung im Terminal

 [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 

Bild

Es verwendet das Deep Neural Network (DNN) -Modul von OpenCV 3.3. Hier können Sie darüber lesen.

Versuchen wir nun, Objekte mit dem vorgeübten Squeezenet-Modell zu klassifizieren:

 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 

Bild

Meine Klassifizierung dauerte 0,86 Sekunden.

Lass uns jetzt das cobra.png Bild ausprobieren:

 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 

Fazit:

 [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 

Bild

Objekterkennung


Versuchen Sie nun, Objekte mit dem Raspberry Pi mit einer Fischaugen-Kamera zu erkennen. Wir werden auf die Seite gehen und den DOWNLOAD THE CODE Button drücken! Ende der Seite. Sie erhalten eine E-Mail mit der Quelle.

Ähnlich wie beim Klassifizieren, herunterladen, entpacken, in den Ordner gehen. Führen Sie das Skript zum Erkennen von Objekten aus:

 python pi_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel 

Fazit:

 [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 

Beim Ausführen des Skripts kann der folgende Fehler auftreten:

 Error: AttributeError: 'NoneType' object has no attribute 'shape' (comment to post) 

Um das Problem zu lösen, öffnen Sie die Datei pi_object_detection.py und kommentieren Sie Zeile 74 aus:

 vs = VideoStream(src=0).start() 

und Kommentarzeile 75

 vs = VideoStream(usePiCamera=True).start() 

Bild

Bild

Wir sehen, dass das Skript einige Objekte erkennt, obwohl nicht alle Objekte korrekt erkannt werden. Meiner Beobachtung nach erkennt das Skript Objekte recht schnell (leider konnten keine fps behoben werden).

Wir können auch das Skript real_time_object_detection.py ausführen. Wiederholen Sie im Fehlerfall die Prozedur für das Skript pi_object_detection.py: Kommentieren Sie Zeile 38 aus und entfernen Sie das Kommentarzeichen in Zeile 39. Ergebnis

Bild

Das ist alles für jetzt. Viel Glück an alle und bis bald!

Source: https://habr.com/ru/post/de481066/


All Articles