Comme son nom l'indique, YOLO (You Only Look Once) est un algorithme historique qui reconnaît et détecte un objet simplement en le regardant une fois comme un être humain. Par rapport aux méthodes conventionnelles, il est plus rapide dans le traitement, a une distinction plus forte entre la reconnaissance d'objet et d'arrière-plan, et est facile à généraliser. Cette fois, nous utiliserons YOLO et python pour détecter des objets sur la photo où les objets sont détectés à l'aide de Tiny YOLO et R dans le matériel pédagogique.
[Matériel de formation des enseignants du Département de l'information du lycée "Information II" (volume principal): Ministère de l'éducation, de la culture, des sports, de la science et de la technologie](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00742.html "Département de l'information du lycée Matériel pédagogique "Information II" pour la formation des enseignants (partie principale): Ministère de l'éducation, de la culture, des sports, des sciences et de la technologie ") Chapter 3 Information and Data Science Second Half (PDF: 7.6MB)
Apprentissage 18 Text mining et reconnaissance d'images: "3. Détection d'objets avec TinyYOLO"
Cette fois, darknet est cloné à partir du référentiel github et la reconnaissance d'image est effectuée à l'aide des données de poids entraînées yolov3.weights de YOLOv3. Cette fois, il est écrit comme un exemple d'implémentation en python, mais pour exécuter YOLOv3 avec darknet, je voudrais me concentrer sur l'exécution de commandes afin que les objets puissent être détectés d'une manière que je ne code pas moi-même autant que possible.
!git clone https://github.com/pjreddie/darknet
Le résultat de l'exécution est le suivant
Cloning into 'darknet'...
remote: Enumerating objects: 5913, done.
remote: Total 5913 (delta 0), reused 0 (delta 0), pack-reused 5913
Receiving objects: 100% (5913/5913), 6.34 MiB | 9.93 MiB/s, done.
Resolving deltas: 100% (3918/3918), done.
Maintenant que vous avez un clone git, déplacez-vous vers le répertoire darknet et exécutez make.
import os
os.chdir('darknet')
!make
Une fois la création terminée, téléchargez les données de poids entraînées yolov3.weights de YOLOv3 dans le même répertoire. Cette fois, j'ai utilisé la commande wget.
!wget https://pjreddie.com/media/files/yolov3.weights
Je voudrais utiliser YOLO pour détecter des objets, mais cette fois je voudrais utiliser giraffe.jpg dans le répertoire de données pour détecter des objets.
!./darknet detect cfg/yolov3.cfg yolov3.weights data/giraffe.jpg
layer filters size input output
0 conv 32 3 x 3 / 1 608 x 608 x 3 -> 608 x 608 x 32 0.639 BFLOPs
1 conv 64 3 x 3 / 2 608 x 608 x 32 -> 304 x 304 x 64 3.407 BFLOPs
2 conv 32 1 x 1 / 1 304 x 304 x 64 -> 304 x 304 x 32 0.379 BFLOPs
3 conv 64 3 x 3 / 1 304 x 304 x 32 -> 304 x 304 x 64 3.407 BFLOPs
:
103 conv 128 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BFLOPs
104 conv 256 3 x 3 / 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BFLOPs
105 conv 255 1 x 1 / 1 76 x 76 x 256 -> 76 x 76 x 255 0.754 BFLOPs
106 yolo
Loading weights from yolov3.weights...Done!
data/giraffe.jpg: Predicted in 19.677707 seconds.
giraffe: 98%
zebra: 98%
Des girafes et des zèbres ont été détectés. Jetons un coup d'œil à l'image réelle détectée.
from IPython.display import Image
Image("predictions.jpg ")
J'ai pu le détecter avec succès.
https://gist.github.com/ereyester/46a25e70c866c581320a66a77153aa2d
Recommended Posts