Détection d'objets à l'aide de YOLO (python) (matériel didactique [Information du département d'information du lycée II] pour la formation des enseignants)

introduction

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 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)

environnement

Parties à reprendre dans le matériel pédagogique

Apprentissage 18 Text mining et reconnaissance d'images: "3. Détection d'objets avec TinyYOLO"

Exemple d'implémentation et résultat en python

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 ")

無題01.png

J'ai pu le détecter avec succès.

Code source

https://gist.github.com/ereyester/46a25e70c866c581320a66a77153aa2d

Recommended Posts

Détection d'objets à l'aide de YOLO (python) (matériel didactique [Information du département d'information du lycée II] pour la formation des enseignants)
Analyse des données par regroupement à l'aide de la méthode k-means (python) ([High school information department information II] pédagogique pour la formation des enseignants)
[Information I / Information II du Département d'Information du Lycée] Résumé du matériel pédagogique pour la formation des enseignants par python
Exploration de texte par word2vec etc. par python ([High School Information Department Information II] matériel pédagogique pour la formation des enseignants)
Classification binar par arbre de décision par python ([High school information department information II] pédagogique pour la formation des enseignants)
Classification par méthode k-voisinage (kNN) par python ([High school information department information II] matériel pédagogique pour la formation des enseignants)
[Information du département d'information du lycée I] Matériel pédagogique pour la formation des enseignants: Format des données et visualisation (python)
Analyse des composants principaux avec python (version Scikit-learn, version pandas et numpy) ([High school information department information II] didacticiel pour la formation des enseignants)
[Informations sur les lignes directrices d'apprentissage du lycée I] Matériel pédagogique pour la formation des enseignants: mise en œuvre de la méthode Huffman par python
J'ai essayé la détection d'objets en utilisant Python et OpenCV