Nach dem ich die ersten 31 Modelle trainiert habe für die Erkennung von Antipersonenminen ist mein Datenbestand also die Trainingsdatensätze deutlich angewachsen. Das Ziel war es die false-positive zu reduzieren. Denn es wurden immer wieder Blätter erkannt die ähnlich zu eine PFM-1 Antipersonenmine waren und als solche fälschlicherweise erkannt wurden. Damit das YOLOv5 Netz lernt das Blätter nicht als Mine erkannt werden sollen wurde eine größere Anzahl von Bildern von Gras, Bäumen, Büschen, Himbeerplantagen etc. in die Trainingsdaten gemischt. Weiter wurde ein Datensatz dazu gemischt der synthetische Bilder von PFM-1 Minen zeigt aus der Sicht einer Drohne. So konnte dank diesem Datensatz die Perspektive auf die top-down Sicht einer Drohne auf die PFM-1 Minen erweitert werden. Weiter wurden bestehende Bildinformationen bereinigt und angereichert um typische Eigenschaften der PFM-1 Mine die zu stark in den Vordergrund getreten waren zu reduzieren um eine allgemeinere Erkennung zu ermöglichen. Denn es ist normal dass die PFM-1 Mine meistens nur in Teilen zu erkennen ist und dennoch erkannt werden muss. Wenn dann ein Merkmal überwiegt bei der Erkennung das eventuell verdeckt sein kann führt das zu einem nicht erkennen der Mine.
Zusammenfassend kann man sagen dass die so generierten Daten einen großen Erfolg hatten bei der Optimierung der Trainingsdaten und deutliche Verbesserung der Ergebnisse.
Vorbereitung der Trainingsdaten
Die Basis der Trainingsdaten bilden 326 PFM-1 Bilder die ich im Internet zusammen gesucht, in Blender gerendert habe und im Anschluss noch aufbereitet habe. Bei dem Aufbereitungsprozess habe ich diese mit Segment-Anything freigestellt und teilweise markante Marken von den Bildern der PFM-1 Minen entfernt.
Aus diesen so aufbereiteten Bildern habe ich durch Rotation und dem transparent machen von Teilen der Minen insgesamt 3.912 Bilder erstellt. Diese so genannten Vordergrundbilder wurden auf insgesamt 1.707 Backgroundbilder gelegt. Dabei wurden immer vier Vordergrundbilder auf ein Hintergrundbild platziert in einer Größe von 3% bis 5% des Hintergrundbildes. Die Position der einzelnen Vordergrundbilder wurde zufällig ermittelt. Ein dem YOLO Format entsprechende Label-Datei wurde für jedes Bild erstellt.
Die Hintergrundbilder waren aus unterschiedlichen Fotos zusammengestellt. So z. B. Bilder aus Wiesen, Kaufhäusern, Parkanlagen, Industrieanlagen, Strand, Aquarien usw. um auch ein entsprechendes Rauschen in das synthetisch generierte Bild für das Training des neuronalen Netzes zu bekommen.
Dazu kamen noch mit Stable-Diffusion generierte Background Bilder die mit Prompts wie Gothic-Industrial oder Warzone erstellt wurden. Aber auch Prompts zum Thema Tagebau / Industrieanlagen lieferten ganz Brauchbare Ergebnisse. Entsprechend waren die Hintergrundbilder sehr vielfältig und in Summe sind 1.707 Hintergrundbilder zum Einsatz gekommen.
Nach dem die Bilder erstellt waren, wurden diese weiter gesamthaft bearbeitet. Dazu zählte einmal die farbigen Bilder als Grauton Bilder abzuspeichern. Anschließend wurde über die Farbbilder und Grauton Bilder ein blurr Filter gelegt. So wurde eine leichte Unschärfe in die Trainingsbilder gebracht.
Die ca. 800 Drohnenbilder wurden lediglich in Graustufenbilder umgewandelt sowie mit dem blurr Filter bearbeitet. Hier wurden keine weiteren Anpassungen vorgenommen.
Das nachfolgende Bild zeigt vier PFM-1 Minen in einer Wiese. So in etwas sahen dann alle Bilder aus die für das Training verwendet wurden.
In Summe wurden mit diesem Verfahren 108.224 Datensätze bzw. 56,1 GB an Daten generiert. Diese wurden für das Training des YOLOv5m Netzes wie im folgenden Abschnitt genauer aufgezeigt aufgeteilt.
Übersicht der Trainingsdaten
Die Übersicht zeigt grob wie die Trainingsdaten strukturiert wurden ohne auf die Details der Erstellung dieser einzugehen. Insgesamt wurden die Trainingsdaten auf fünf Ordner aufgeteilt.
- 20230527_negative
- train (200 images)
- val (13 images)
- 20230529_training_data
- train (41.997 images)
- val (6.000 images)
- test (11.999 images)
- drone_rgb
- train (6.822 images)
- val (976 images)
- test (1.949 images)
- drone_gray_scale_rgb
- train (6.822 images)
- val (976 images)
- test (1.949 images)
- drone_blurred_rgb_gray_scale_rgb
- train (17.787 images)
- val (3.701 images)
- test ( 7.033 images)
Anschließend wurde das Model mit 200 EPOCH ca. 26 Stunden lang auf meiner NVIDIA A6000 trainiert.
Evaluierung
Das so trainierte Modell EXP35 hatte entsprechend der Datenaufbereitung noch nie echte Bilder der PFM-1 Mine gesehen sondern nur synthetisch erstellte Bilder. Erst bei der Evaluierung wurde der frei erhältliche Datensatz dem fertigen Modell gezeigt.
Evaluation Dataset: https://app.roboflow.com/synthetic-data/bing/2
Das Ergebnis der Evaluierung sah wie folgt aus und ich konnte initial einen 0.819 mAP erreichen:
Validation curves
|
Validation Batch Labels
FPM-1 Minendetektor Video
Das Video zeigt eine 3D gedruckte PFM-1 Antipersonenmine die ich an verschiedenen Orten gefilmt habe. Es wurde das EXP35 Netz hier verwendet für die Detektion der Mine. Gut zu erkennen ist in diesem Video das kaum Blätter noch als PFM-1 Mine erkannt werden.
Zusammenfassung
Mit der aktuellen Version des YOLOv5m Netzes in der Version EXP35 bin ich soweit zufrieden das meine Überlegungen bei der Optimierung der Trainingsdaten Erfolge zeigen. Noch ist es sicher ein weiter Weg bis zu einem richtig stabilen Netz aber die Grundlage ist geschaffen und der bis jetzt mit wirklich geringen Mitteln erreichte Erfolg stimmt mich Zuversicht. Ich bin gespannt wie weit ich hier noch kommen kann mit den synthetischen Daten. Das Ziel ist es ein neuronales Netz zu trainieren das eine Vielzahl an Minen erkennen kann und nicht nur die schwierig zu erkennende PFM-1 Mine.
Hallo, ich habe ihre Anleitung befolgt und bekomme im letzten Schritt leider immer folgende Meldung im Terminal: bash <(wget -qO-…
Hi Dennis, vielen Dank für den Hinweis, ich habe die URLs angepasst so das diese wieder gehen. Ich bin gespannt…
Ich weiss, es ist noch im Aufbau. Aber hier ist ein Broken Link: https://www.ai-box.eu/smurf_training_data_small.zip Freue mich drauf, die ganze Serie…