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.
[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)
Lernen 18 Text Mining und Bilderkennung: "3. Objekterkennung mit TinyYOLO"
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 ")
Ich konnte es erfolgreich erkennen.
https://gist.github.com/ereyester/46a25e70c866c581320a66a77153aa2d
Recommended Posts