Utilisation de l'oeil de poisson sur le Raspberry Pi 3: lancement de modèles DL pré-formés pour la vision par ordinateur

Bon après-midi

dans la suite d'une série d'articles: le premier et le deuxième sur l'utilisation d'une caméra fish eye avec Raspberry Pi 3 et ROS, je voudrais parler de l'utilisation de modèles d'apprentissage en profondeur pré-formés pour la vision par ordinateur avec une caméra Fish eye sur le Raspberry Pi 3. Qui se soucie, s'il vous plaît, sous le chat.

Classification d'image


Comme dans les articles précédents, nous utiliserons Ubuntu 16.04. Pour le travail, nous aurons besoin de la bibliothèque Keras. Il peut être installé sur Ubuntu en suivant les instructions d'ici .

Nous allons aller à la page et appuyer sur le bouton TÉLÉCHARGER LE CODE! bas de la page. Vous recevrez un e-mail avec la source.

Téléchargez l'archive, décompressez-la et accédez au dossier. Tout d'abord, exécutez le script de classification d'objets basé sur le modèle GoogleNet pré-formé:

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 

Nous obtenons cette conclusion dans le 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 

image

Il utilise le module Deep Neural Network (DNN) d'OpenCV 3.3. Vous pouvez en lire plus ici .

Essayons maintenant de classer les objets avec le modèle Squeezenet pré-formé:

 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 

image

Ma classification a fonctionné pendant 0,86 sec.

Essayons maintenant sur l'image 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 

Conclusion:

 [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 

image

DĂ©tection d'objets


Essayez maintenant de détecter des objets avec le Raspberry Pi avec une caméra fish eye. Nous allons aller à la page et appuyer sur le bouton TÉLÉCHARGER LE CODE! bas de la page. Vous recevrez un e-mail avec la source.

Semblable à la classification, téléchargez, décompressez, allez dans le dossier. Exécutez le script de détection des objets:

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

Conclusion:

 [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 

Lors de l'exécution du script, nous pouvons obtenir l'erreur suivante:

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

Pour résoudre le problème, ouvrez le fichier pi_object_detection.py et commentez la ligne 74:

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

et décommenter la ligne 75

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

image

image

Nous voyons que le script détecte certains objets, bien que tous les objets ne soient pas correctement reconnus. Selon mes observations, le script détecte les objets assez rapidement (malheureusement, fps n'a pas pu être corrigé).

Nous pouvons également exécuter le script real_time_object_detection.py. En cas d'erreur, répétez la procédure pour le script pi_object_detection.py: commentez la ligne 38 et décommentez la ligne 39. Résultat

image

C'est tout pour l'instant. Bonne chance Ă  tous et Ă  bientĂ´t!

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


All Articles