Objekterkennung mit YOLO (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)

Einführung

Wie der Name schon sagt, ist YOLO (You Only Look Once) ein epochaler Algorithmus, der ein Objekt erkennt und erkennt, indem er es einmal wie ein Mensch betrachtet. Im Vergleich zu herkömmlichen Methoden ist es schneller in der Verarbeitung, unterscheidet stärker zwischen Objekt- und Hintergrunderkennung und ist leicht zu verallgemeinern. Dieses Mal werden wir YOLO und Python verwenden, um Objekte auf dem Foto zu erkennen, bei denen Objekte mit Tiny YOLO und R in den Unterrichtsmaterialien erkannt werden.

Lehrmaterial

[Informationsabteilung der High School "Information II" Lehrmaterialien für Lehrer (Hauptband): Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00742.html "Informationsabteilung der High School Unterrichtsmaterialien "Information II" für die Lehrerausbildung (Hauptteil): Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie ") Kapitel 3 Informations- und Datenwissenschaft, zweite Hälfte (PDF: 7,6 MB)

Umgebung

Teile, die in den Unterrichtsmaterialien aufgenommen werden sollen

Lernen 18 Text Mining und Bilderkennung: "3. Objekterkennung mit TinyYOLO"

Implementierungsbeispiel und Ergebnis in Python

Dieses Mal wird Darknet aus dem Github-Repository geklont und die Bilderkennung wird unter Verwendung der trainierten Gewichtsdaten yolov3.weights von YOLOv3 durchgeführt. Dieses Mal ist es als Implementierungsbeispiel in Python geschrieben, aber um YOLOv3 mit Darknet auszuführen, möchte ich mich auf die Ausführung von Befehlen konzentrieren, damit Objekte in einer Form erkannt werden können, die nicht so viel wie möglich von mir selbst codiert.

!git clone https://github.com/pjreddie/darknet

Das Ausführungsergebnis ist wie folgt

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.

Nachdem Sie einen Git-Klon haben, wechseln Sie in das Darknet-Verzeichnis und führen Sie make aus.

import os

os.chdir('darknet')
!make

Laden Sie nach Abschluss der Herstellung die trainierten Gewichtsdaten yolov3.weights von YOLOv3 in dasselbe Verzeichnis herunter. Diesmal habe ich den Befehl wget verwendet.

!wget https://pjreddie.com/media/files/yolov3.weights

Ich möchte YOLO verwenden, um Objekte zu erkennen, aber dieses Mal möchte ich giraffe.jpg im Datenverzeichnis verwenden, um Objekte zu erkennen.

!./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%

Giraffe und Zebra wurden nachgewiesen. Werfen wir einen Blick auf das tatsächlich erkannte Bild.

from IPython.display import Image

Image("predictions.jpg ")

無題01.png

Ich konnte es erfolgreich erkennen.

Quellcode

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

Recommended Posts

Objekterkennung mit YOLO (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Datenanalyse durch Clustering mit der k-means-Methode (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen I / Information II der Informationsabteilung der High School] Zusammenfassung der Unterrichtsmaterialien für die Lehrerausbildung durch Python
Text Mining von word2vec usw. von Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Binäre Klassifizierung nach Entscheidungsbaum nach Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Klassifizierung nach der k-Nachbarschaftsmethode (kNN) nach Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen der High School Information Department I] Unterrichtsmaterialien für die Lehrerausbildung: Datenformat und Visualisierung (Python)
Hauptkomponentenanalyse mit Python (Scikit-Lernversion, Pandas & Numpy-Version) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen zu Richtlinien für das Lernen an Gymnasien I] Unterrichtsmaterialien für die Lehrerausbildung: Implementierung der Huffman-Methode durch Python
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen