[PYTHON] So erstellen Sie mit YOLO in 3 Stunden ein Modell für die Objekterkennung

Ich werde Ihnen zeigen, wie Sie mit YOLO in 3 Stunden ein Modell für die Objekterkennung erstellen.

Es ist ein Durcheinander, aber ich zeige Ihnen, wie Sie ein Objekt sehr einfach erkennen können.

Das Werkzeug, mit dem diese Zeit erstellt wurde

Referenzierter Artikel (wirklich dankbar)

Wie erstelle ich ein Modell?

Was ist YOLO überhaupt? Was ist Objekterkennung? Antworten auf Fragen wie z. Dieser Artikel ist auch in den 3 Stunden der Erstellung enthalten. Bitte verzeihen Sie mir, obwohl es einige Stellen gibt, an denen er kaputt ist.

① Bereiten Sie Lehrerdaten vor und führen Sie mit labelImg Anmerkungsarbeiten durch

Bereiten Sie einfache Lehrerdaten vor. In meinem Fall wollte ich dieses Mal das Vinylhaus entdecken, also habe ich vorerst 30 Bilder vorbereitet. So was. Das Luftbild von Google Maps ist so schön![Screenshot 2019-12-20 20.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285361 /aa7b62c1-f85c-4b13-b543-35e0fe032768.png)

Wir werden Annotationsarbeiten (Beschriftungen) daran durchführen. Diesmal habe ich ein Tool namens labelImg verwendet. Es gibt andere Tools namens VoTT und BBox-Label-Tool, aber VoTT unterstützt YOLO. Wenn dies jedoch nicht funktioniert, ist es schwierig, von vorne zu beginnen, und die Einrichtung von BBox ist schwierig, wenn versucht wird, mehrere Klassen zu erstellen. Also habe ich mich für labelImg entschieden.

Führen Sie den folgenden Befehl aus, um labelImg einsatzbereit zu machen. Wenn Sie Python3 installiert haben, können Sie Zeile 3.4 überspringen.

git clone https://github.com/tzutalin/labelImg.git sudo apt install pyqt5-dev-tools sudo apt install python3-pip sudo pip3 install lxml cd labelImg make qt5py3

Erstellen Sie einen Ordner mit einem beliebigen Namen im labelimg-Ordner und verschieben Sie das vorbereitete Bild dorthin. (Vinyl usw. für Vinylhäuser) Ändern Sie dann predefined_class.txt in labelimg / data. Zunächst werden ungefähr 20 Klassen im Voraus geschrieben. Löschen Sie diesmal jedoch alle bereits geschriebenen Klassennamen und schreiben Sie den Klassennamen mit einem Zeilenumbruch mit Ihrem Lieblingsnamen. Ich habe eine Zeile mit Vinyl geschrieben.

python3 labelimg.py Führen Sie labelImg by aus. Schnitt für interne Arbeit. Grob gesagt

  1. Öffnen Sie das Verzeichnis, das Sie verwenden möchten
  2. Verwenden Sie Change Save Dir, um eine Textdatei anzugeben, die die Koordinateninformationen des Etiketts beschreibt (erstellte einen Ordner wie vinyl_txt im Ordner labelimg).
  3. Klicken Sie unter Speichern auf Pascal VOC und wechseln Sie zu YOLO
  4. Danach D-> Ziehen Sie die Maus, um das Objekt einzuschließen-> w drücken Sie, um die Etikettenposition zu bestätigen-> Speichern zum Speichern-> D, um das nächste Bild zu drücken ...

Ich werde es so beschriften. 30 Blatt ist ein Augenblick. Damit ist die Vorbereitung der Lehrerdaten abgeschlossen.

② Vorbereitung auf das Lernen

Wir werden uns auf das Lernen vorbereiten. Installieren Sie zur Verwendung von YOLO ein Framework namens darknet. Dieses Framework funktioniert ziemlich gut mit YOLO. (Wird es eher von YOLO-Entwicklern verwendet?) Installieren Sie mit dem folgenden Befehl.

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

Verschieben Sie anschließend die mit labelImg verwendeten Bilder nach darknet / data / images und die mit labelImg erstellten Textdateien nach darknet / data / label. In diesem Zustand / bei Darknet python3 process.py Ausführen. Dies trennt die Lehrerdaten in eine Lehrerdatei und eine Lerndatei.

Von hier aus werden wir verschiedene Arbeiten ausführen. Aufzählen.

Wenn /darknet/cfg/yolo-obj.cfg nicht vorhanden ist, kopieren Sie /darknet/cfg/yolov2-voc.cfg und bearbeiten Sie es. 3. Zeile: Batch = 64 setzen. Die Anzahl der Bilder, die für jeden Lernschritt verwendet werden. Sie können Zeile 6 auskommentieren und aktivieren 4. Zeile: Unterteilungen setzen = 8. Die Charge wird durch 8 geteilt. Sie können Zeile 7 auskommentieren und aktivieren

Ändern Sie abschließend /darknet/cfg/obj.data wie folgt: classes=1 train = data/images/train.txt valid = data/images/test.txt labels = data/images/obj.names backup = backup/

https://pjreddie.com/media/files/darknet19_448.conv.23 Sie können loslegen, indem Sie herunterladen.

③ Lernen Sie mit Google Colabatory

Es lernt endlich. Im aktuellen Zustand ./darknet detector train cfg/obj.data cfg/yolo-obj.cfg darknet19_448.conv.23 Es ist in Ordnung, zum ersten Mal zu lernen, aber es kostet viel Zeit und Verzweiflung mit einer CPU. Daher lernen wir hier per GPU mit Google Colaboratory.

Google Colaboratory ist ein Tool, mit dem Sie die GPU kostenlos verwenden können. Es ist sehr benutzerfreundlich, da es im Grunde mit Tools für tiefes Lernen ausgestattet ist. KI-Anfänger sollten es unbedingt benutzen. (Nur wenn Sie keine Informationen verwenden, die nicht offengelegt werden können, weil sie Open Source sind.)

Laden Sie den Darknet-Ordner hoch, an dem Sie gearbeitet haben. Speichern Sie anschließend die mit Google Collaboration verbundene Datei wie folgt und führen Sie die in .ipynb beschriebenen Schritte aus. git clone https://github.com/foifoi1201/yolo.git

Wenn Ihr Beitrag korrekt ist, sollte dies die Modellerstellung abschließen. Der Rest basiert auf den heruntergeladenen .weights ./darknet detect cfg/obj.cfg obj_final.weights data/***.jpg Ich denke, dass es durch Ausführen erkannt werden kann.

Ergebnis!

Wenn Sie versuchen, innerhalb von 3 Stunden ein Objekterkennungsmodell mit 30 Lehrerdaten zu erstellen, sieht das Ergebnis folgendermaßen aus.

スクリーンショット 2019-12-21 2.42.53.png

Ich kann es bestätigen. .. ..

Die Objekterkennung mit YOLO ist sehr mühsam zu erstellen, und tatsächlich ist es möglicherweise nicht möglich, alles gut zu machen, wenn Sie dies auf diese Weise tun. Außerdem wird Google Colabatory ständig aktualisiert, sodass es möglich ist, dass dieselbe Erstellungsmethode im Laufe der Zeit nicht funktioniert. (Eigentlich scheint das Update auch dieses Mal durchgeführt worden zu sein, und es hat mehr Zeit als erwartet gedauert, um es zu erstellen. Vielen Dank für den Hinweis ...

Ich hoffe, es wird für dieselben KI-Anfänger wie mich hilfreich sein.

Recommended Posts

So erstellen Sie mit YOLO in 3 Stunden ein Modell für die Objekterkennung
So erstellen Sie ein Python-Paket mit VS Code
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So definieren Sie mehrere Variablen in einer Python for-Anweisung
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
So generieren Sie eine Abfrage mit dem IN-Operator in Django
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie ein Blender-Plug-In
Eine leichte Einführung in die Objekterkennung
Wie erstelle ich einen Crawler?
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Spigot (Papier) Einführung in die Erstellung eines Plug-Ins für 2020 # 01 (Umgebungskonstruktion)
So führen Sie einen Komponententest durch Teil 1 Entwurfsmuster zur Einführung
[Python] Wie man eine Klasse iterierbar macht
So zeichnen Sie ein Diagramm mit Matplotlib
So installieren Sie ein Paket mithilfe eines Repositorys
Wie bekomme ich Stacktrace in Python?
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
So verschieben Sie das BufferImageStim-Objekt in PsychoPy
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
Ich habe das Schaben mit Selen gelernt, um ein Vorhersagemodell für Pferderennen zu erstellen.
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
So machen Sie den Containernamen in Docker als Subdomain zugänglich
So führen Sie einen Schnellstart für Google Cloud Text-to-Speech .NET in Unity aus
Wie man ein Dialogsystem für Anfänger erstellt
So codieren Sie eine Drohne mithilfe der Bilderkennung
So erstellen Sie ein Spigot-Plug-In (für Java-Anfänger)
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Wenn Sie den Wert mithilfe von Auswahlmöglichkeiten in der Vorlage im Django-Modell anzeigen möchten
So erstellen Sie eine JSON-Datei in Python
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
So generieren Sie ein Python-Objekt aus JSON
So implementieren Sie eine Verlaufsauswahl in Houdini
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Machen Sie weiterhin Aktienprognose AI für 10 Stunden pro Tag 1. Monat
So schreiben Sie einen ShellScript Bash für Anweisung
So benachrichtigen Sie Discord-Kanäle in Python
Ich las "Wie man ein Hacking Lab macht"
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Tipps für eine gute Verwendung von Elastic Search
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Hochladen auf ein freigegebenes Laufwerk mit pydrive