[PYTHON] Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~

introduction

Lors de la détection d'objets avec RaspberryPi, j'ai comparé la vitesse de détection et la précision de détection de chaque source de YOLO (vous ne regardez qu'une seule fois), qui est l'une des principales méthodes de détection d'objets, je vais donc la résumer.

Concernant le mécanisme de YOLO, il était facile à comprendre [Histoire de la méthode de détection d'objets: Introduction de YOLO].

Ce que je veux faire avec Raspberry Pi

En plus d'en faire une caméra pour animaux de compagnie pour chats, je souhaite distinguer quatre chats! Le modèle est différent pour les quatre! Je ne pense qu'à ce qu'il faut distinguer et ce qu'il faut faire, comme surveiller l'état du chat et contrôler la télécommande du climatiseur, ou regarder la quantité d'activité et l'utiliser pour la gestion de la santé.

environnement

![RaspberryPi-RaspberryPi4 ModelB (4 Go)](https://img.shields.io/badge/Raspberry Pi-RaspberryPi4 ModelB (4 Go) - vert clair)![OS-Raspbian 32 bits (version 2020.5.27)](https :: //img.shields.io/badge/OS-Raspbian 32bit (version 2020.5.27) - vert clair)

résultat

La cible de l'évaluation est le jeu de données COCO (80 classes), site de l'auteur YOLO: YOLO: Real-Time Object Detection et [AlexeyAB](https :: //github.com/AlexeyAB/darknet) utilise les poids du modèle entraîné distribué. Chaque modèle a un "Tiny" qui donne la priorité au temps de détection.

Voici le résultat de Source x Model. L'explication, l'image du résultat et l'impression seront décrites plus loin.

La source Model Temps de détection Précision de détection
pjreddie v2 477 secondes
pjreddie v2-Tiny 42 secondes ×
AlexeyAB v2 33 secondes
AlexeyAB v2-Tiny 6.6 secondes
AlexeyAB v3 74 secondes
AlexeyAB v3-Tiny 6.7 secondes
AlexeyAB v4 152 secondes
AlexeyAB v4-Tiny 7.8 secondes
keras-yolo3 v3 12 secondes
keras-yolo3 v3-Tiny 0.75 secondes
Tensorflow-YOLOv3 v3 8.9 secondes
Tensorflow-YOLOv3 v3-Tiny 3.4 secondes
yolov3-tf2 v3 5.6 secondes
yolov3-tf2 v3-Tiny 0.67 secondes

La précision de détection est subjective, mais elle est basée sur le taux de reconnaissance de l'objet principal dans chaque image. ◎ (90% -100%), 〇 (70% -90%), △ (50% -70%), × (méconnaissable).

Explication, image du résultat, impression pour chaque source

pjreddie/darknet https://pjreddie.com/ https://github.com/pjreddie/darknet

gcc-8.3.0 (Raspbian 8.3.0-6+rpi1)

Model dog person
v2 predictions_v2_dog.jpg predictions_v2_person.jpg
v2-tiny predictions_v2t_dog.jpg predictions_v2t_person.jpg

AlexeyAB/darknet https://github.com/AlexeyAB/darknet

gcc-8.3.0 (Raspbian 8.3.0-6+rpi1)

Model dog person
v2 predictions_v2_dog.jpg predictions_v2_person.jpg
v2-tiny predictions_v2t_dog.jpg predictions_v2t_person.jpg
v3 predictions_v3_dog.jpg predictions_v3_person.jpg
v3-tiny predictions_v3t_dog.jpg predictions_v3t_person.jpg
v4 predictions_v4_dog.jpg predictions_v4_person.jpg
v4-tiny predictions_v4t_dog.jpg predictions_v4t_person.jpg

qqwweee/keras-yolo3 https://github.com/qqwweee/keras-yolo3

Keras-2.2.5tensorflow-1.13.1Python-3.7.3

Model dog person
v3 out_v3_dog.jpg out_v3_person.jpg
v3-tiny out_v3t_dog.jpg out_v3t_person.jpg

neuralassembly/Tensorflow-YOLOv3 https://github.com/neuralassembly/Tensorflow-YOLOv3 Essayez la détection d'objet avec YOLO v3-Tiny / YOLO v3 sur Raspberry Pi

--Série Tensorflow 1

tensorflow-1.13.1Python-3.7.3

Model dog person
v3 image_output_v3_dog.png image_output_v3_person.png
v3-tiny image_output_v3t_dog.png image_output_v3t_person.png

zzh8829/yolov3-tf2 https://github.com/zzh8829/yolov3-tf2

--tensorflow2 system (en utilisant tf.keras)

tensorflow-2.2.0Python-3.7.3

Model dog person
v3 output_v3_dog.jpg output_v3_person.jpg
v3-tiny output_v3t_dog.jpg output_v3t_person.jpg

Résumé

――Pour satisfaire "Je veux juger une fois par seconde", la précision de détection baisse un peu, mais c'est difficile uniquement avec Python v3-tiny. ――Lorsque je l'utilise, le nombre de classes sera petit, j'espère donc que cela améliorera la précision.

Notre objectif

référence

Utilisation de Darknet avec Raspberry Pi Traduction de papier YOLOv3

qqwweee/keras-yolo3

zzh8829/yolov3-tf2

Recommended Posts

Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~
Essayez la détection d'objets avec Raspberry Pi 4 + Coral
Visualisons la pièce avec tarte aux râpes, partie 1
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
Analyse d'image avec l'API Object Detection à essayer en 1 heure
Essayez de déplacer 3 servos avec Raspeye
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Faisons une chemise IoT avec Lambda, Kinesis, Raspberry Pi [Partie 1]
Essayez de pêcher le Wakasagi avec Raspberry Pi
Comment mettre OpenCV dans Raspberry Pi et collecter facilement des images des résultats de détection de visage avec Python
Essayez la comparaison de vitesse de l'API BigQuery Storage
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Essayez de générer une image avec aliénation
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
Essayez de séparer l'arrière-plan et l'objet en mouvement de la vidéo avec OpenCV
[Vérification] Essayez d'aligner le groupe de points avec la fonction d'optimisation de pytorch Partie 1
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Connectez-vous à MySQL avec Python sur Raspberry Pi
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Mesurer la température du processeur de Raspeye avec Python
[Cloud 9] Essayez de créer un environnement avec django 1.11 de Python 3.4 sans même comprendre 1 mm
Détection de panneau d'arrêt Développement de la partie de visualisation part5 Afficher ce qui a été détecté lorsqu'un objet a été détecté
IoT facile pour démarrer avec Raspeye et MESH
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Détecter l'état de port du masque avec OpenCV et Raspberry Pi
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi
Essayez d'obtenir le contenu de Word avec Golang
Faire un rappel de parapluie avec Raspberry Pi Zero W
Exploitons GPIO de Raspeye avec Python CGI
Jusqu'à ce que vous annotiez votre propre jeu de données et détectiez un objet avec EfficientDet ~ Détection de visage de personnage ~
Notez ce que vous voulez faire à l'avenir avec Razpai
J'ai essayé de créer une caméra de surveillance à détection de mouvement avec OpenCV en utilisant une caméra WEB avec Raspberry Pi
GPGPU avec Raspberry Pi
DigitalSignage avec Raspberry Pi
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
Application de la conversion affine par tenseur - de la détection de base à la détection d'objet -
Mettre à jour Raspberry Pi Python vers 3.7 ou version ultérieure avec pyenv
Jouez avec le module de caméra Raspberry Pi Zero WH Partie 1
Une introduction à l'orientation des objets - changeons l'état interne d'un objet
J'ai essayé d'exécuter Movidius NCS avec python de Raspberry Pi3
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
Fabriquez un climatiseur intégré à un ordinateur personnel "airpi" avec Raspberry Pi 3!
Production de système de contrôle de température avec tarte aux framboises et ESP32 (1)
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Tentative d'ajuster automatiquement la vitesse des vidéos accélérées (partie 2)
Connectez Raspberry Pi à Alibaba Cloud IoT Platform avec «Python»
J'ai envoyé les données de Raspberry Pi à GCP (gratuit)
Essayez d'extraire les caractéristiques des données de capteur avec CNN
Liste des choses que vous devrez peut-être faire pour développer OBD Linux sur Raspeye avec Buildroot
Mesurez la température, l'humidité, etc. avec SensorTag et envoyez-le à Ambient via Raspberry Pi 3 pour le représenter graphiquement Partie 2