Ballerkennung am Tischkicker mittels Deep Learning in Videos
Das übergeordnete Ziel meiner Masterarbeit war es, eine Reihe von Deep Learning-Modellen zu entwickeln und zu evaluieren. Diese Modelle sollten in der Lage sein, rote und weiße Tischkickerbälle präzise semantisch zu segmentieren. Segmantische Segmentierung bedeutet, die Bildpunkte (Pixel) einer Bilddatei verschiedenen Klassen zuzuordnen, je nachdem, zu welchem größeren Bildelement der Bildpunkt gehört. Beispielsweise gehört ein weißer Bildpunkt entweder zum Bildelement "weißer Ball" oder zu einem anderen, zufällig weißen Objekt.
Als Ausgangspunkt diente dabei ein vortrainiertes Swin-Transformer-Modell. Basierend auf dem oben beschriebenen Ziel ergab sich folgende spezifische Forschungsfrage: „Welche Auswirkungen haben verschiedene Anpassungen der Trainingsdaten und der Hyperparameter auf die Ergebnisse der Modelle?“
Mit dieser Frage wollte ich untersuchen, wie sich unterschiedliche Modifikationen sowohl an den Eingabedaten als auch an den Modelleinstellungen auf die Leistung und Genauigkeit meiner Segmentierungsmodelle auswirken. In den folgenden Abschnitten werde ich euch die verschiedenen Ansätze und ihre Ergebnisse im Detail vorstellen. Dabei lässt sich anhand der Abbildungen gut verfolgen, welche Auswirkungen die jeweils hinzugefügten Schritte bzw. Veränderungen der Anzahl von Trainingsiterationen etc. hatten.
Verwandte Arbeiten
Es ist wichtig zu betonen, dass es nach meinem Kenntnisstand keine direkt vergleichbare Arbeit gibt, die ein Semantic Segmentation Swin-Transformer Modell speziell für Tischkickerfußbälle einsetzt. Allerdings gibt es einige verwandte Projekte und Arbeiten, die erwähnenswert sind.
Zunächst möchte ich die vorausgegangene Abschlussarbeit von meinem Betreuer Alexander Mayer hervorheben. Er entwickelte ein automatisiertes Aufzeichnungssystem mit Bildauswertung, das auf OpenCV und neuronalen Netzen basiert, wobei er Tensorflow mit einem Keras-Frontend einsetzte.
Darüber hinaus existieren verschiedene Projekte mit ähnlichen Zielsetzungen, die jedoch andere Backbone-Modelle verwenden. Einige dieser Projekte basieren auf Fußball-Daten, was thematisch in die Richtung meiner Arbeit geht.
Schließlich gibt es noch das Video-Swin-Transformer-Modell von MMDetection, das zwar auf der Swin-Transformer-Architektur basiert, aber für Videoanalysen konzipiert ist und nicht speziell für die semantische Segmentierung von Tischkickerbällen entwickelt wurde.
Diese verwandten Arbeiten bilden den Kontext für meine Forschung und unterstreichen gleichzeitig die Einzigartigkeit meines spezifischen Ansatzes.
Die Datensatzgrundlage
Folgende Bilder wurden als Datensatzgrundlage verwendet:
- Bilder vom Tischkicker
- Rote und weiße Tischkickerbälle
- Freie Sicht auf den Ball
- Teilweise verdeckte Bälle
- Weißer Ball vor weißem Hintergrund
Initiale Bilder
Damit wurde das verwendete Modell trainiert und auf ein Bild des Tischkickers mit einem Ball angewendet.
Beispielbild:
In den nachfolgenden Bildern ist segmentierter erkannter Hintergrund rot, während die Ballbereiche gelb eingefärbt sind.
Die Ausgangslage war wie folgt:
Zu Beginn gab es keine Markierung für den Ball. Die Bilder wurden komplett rot segmentiert. Das bedeutet: Overfitting/Überanpassung auf dem Hintergrund; das heißt: eine Überbewertung des Hintergrundes. Als Ursache vermute ich, dass die Trainingsdaten nicht ausgewogen genug waren.
Deswegen wurden die Daten-Augmentationen Mosaic (Bildausschnittkombinatorik) und Crop (Bildbeschneidungen) hinzugefügt. Das führt zu einer größeren mittigen Markierung: Diese mittige Markierung befand sich in jedem Testbild des Modells. Eine Markierung dieser Art wird Default-Markierung genannt. Darunter versteht man die Standardvorhersage des Modells, die es trifft, wenn es ansonsten keine differenzierte Aussage treffen kann. Das Modell meinte also, es könne irgendwelche Merkmale des Balles erkennen und vom Hintergrund differenzieren.
Potentielle Gründe für diese Default-Vorhersage:
- Unausgewogene Trainingsdaten
- Zu komplexe oder zu einfache Modellarchitektur
- Ungeeignete Verlustfunktion
Deswegen wurden mehr Trainingsdaten hinzugefügt. Für schnelleres Training wurden die Trainingsbilder in Graustufen umgewandelt. Trainingsbilder mit einem weißen statt einem roten Ball wurden vorerst herausgenommen, um die Erkennungsaufgabe auf den roten Ball zu konzentrieren. Diese Schritte konnten zwar die Segmentierung nicht auf die eigentliche Position des Balles lenken, aber führten trotzdem zu einer kleineren Default-Markierung als zuvor. Das Fazit daraus: Nur Änderungen an der Datenmenge und den Daten-Augmentationen reichen nicht aus, damit das Modell den Ball richtig erkennt.
Als Folge wurde ein Tile Preprocessing (wörtlich: Kachel-Vorverarbeitung) genannter Ansatz eingebracht, welcher Bilder abhängig der Einstellung in gleich große Teile schneidet:
Diese Abbildung zeigt den Prozess der Bildunterteilung durch die Tile-Funktion für zwei verschiedene Gittergrößen: Links oben ist ein 2x2-Gitter, das das Bild in vier gleich große Segmente unterteilt. Rechts oben dagegen ein 3x3-Gitter, das das Bild in neun gleich große Segmente unterteilt. Links unten und rechts unten ist das Ergebnis der Tile-Funktionen zu sehen, das eins der ausgewählten Segmente aus einem Beispielbild zeigt. Diese Beispiele sind aus Beispielen von Roboflow zusammengefügt.
Mit dem Tile-Preprocessing 3x3 habe ich mehrere Modelle unterschiedlich lange trainiert: Das erste Modell wurde nur für 40 Iterationen trainiert.
Hier sind die ersten richtig gesetzten Segmentierungen auf dem roten Ball zu sehen, wobei aber auch viele Artefaktmarkierungen vorhanden sind.
Bei dem nächsten Modell, das in 100 Iterationen trainiert wurde, sind die Artefaktmarkierungen verschwunden. Trotzdem sind hier die Markierungen auf dem roten Ball deutlicher zu sehen sowie das False Positive einer weißen Spielfeldmarkierung anhand einer kleinen Markierung auf dem testweise eingebrachten weißen Ball. Die Markierungen des Balles sind aber noch sehr unregelmäßig.
Das nächste Modell wurde mit 150 Iterationen trainiert. Hier kam es zu dem Problem, dass das Modell den Hintergrund wieder bevorzugt segmentiert hat und keine Markierung des Balles zu sehen ist. Die erste Überlegung war, dass es sich hierbei um ein Overfitting des Hintergrundes handelt.
Da aber bei dem Modell mit 200 Trainingsiterationen wieder der Ball markiert wurde, scheint es bei dem Modell mit 150 Iterationen eine andere Erklärung zu geben.
Das Ergebnis der 150 Iterationen deutet darauf hin, dass es sich hierbei um ein nicht-lineares Trainingsverhalten handelt. Die Gewichtskonfiguration des Modells könnte zum Beispiel in einem Sattelpunkt oder einem lokalen Minimum der Verlustfunktion konvergiert sein. Fazit daraus: Der Tile-Ansatz ist hilfreich bei Small Object Detection und der Trainingsprozess ist nicht linear.
Nachdem nun der rote Ball richtig erkannt wurde und auch segmentiert wurde, wurden die Trainingsbilder mit dem weißen Ball wieder zum Datensatz hinzugefügt. Nun war es das Ziel, auch den weißen Ball zu erkennen und zu segmentieren. Mit dem weißen Ball wurde ein Modell mit dem Schritt Grayscaling Preprocessing (Graustufen-Vorverarbeitung) trainiert:
Hier ergab sich eine leicht verbesserte Markierung des weißen Balles, aber es traten auch wieder False Positive-Markierungen für den Ball auf der weißen runden Spielfeldmarkierung auf. Um die Auswirkungen der Farbinformationen zu testen, wurde das Graustufenumwandlung des Datensatzes wieder revidiert und zuerst ein Modell in 200 Iterationen trainiert. Hier ergaben sich dann passendere Segmentierungsmasken der roten Bälle, aber der weiße Ball wurde nicht als Ball erkannt.
Dieses Problem konnte bei einem weiteren Modell mit 400 Trainingsiterationen behoben werden. Hier wurden der weiße Balle wieder als Ball erkannt, obwohl die Segmentierung des Balles nicht vollständig war.
Somit scheinen Modelle mit Farbinformationen eine höhere Anzahl an Trainingsiterationen zu benötigen, um auch den weißen Ball zu markieren. Sie ergeben aber in diesem Beispiel schönere Segmentierungsmasken auf den roten Bällen. Trotzdem wurden weitere Modelle mit Grayscaling trainiert, da diese bei der Videoverarbeitung auch genutzt werden sollte.
Größere Eingabebilder
Mit größerem GPU-Speicher war es auch möglich, größere Eingabebilder zu nutzen. Die Bilder der Trainingsdatensätze hatten eine maximale Breite bzw. maximale Länge von 1024 Pixeln.
Die größeren Eingabebilder haben zu besseren Segmentierungen auf dem weißen Ball geführt. Die False Positives konnten mit der Erhöhung der Iterationszahl reduziert werden. Die Tendenz zur Übersegmentierung bleibt aber erhalten. Es gilt, eine Balance zwischen zuverlässiger Ballerkennung und präziser Segmentierung zu finden, ohne dabei die Tendenz zur Übersegmentierung zu verstärken. Das Modell nach 300 Iterationen wird als Checkpoint für weitere Modelle genutzt. Dieser Checkpoint hatte auf den großen Originalbildern aber eine sehr schlechte Performance.
Das Modell erkannte den weißen Ball gar nicht und auch den roten Ball nur in seltenen Fällen. Auf Bildern mit Tile 2x2 gab es wiederum eine leicht verbesserte Performance bei der Erkennung der unterschiedlichen Bällen. Trotzdem zeigte das Modell noch immer eine deutliche Leistungseinbuße im Vergleich zu Bildern mit Tile 3x3.
Der Übergang von der Verwendung von Bildausschnitten auf die Originalbilder erfordert eine komplexere Anpassung.
Verlustfunktionen und Klassengewichte
Als nächstes wurde die Verlustfunktion der Modelle betrachtet. Die Verlustfunktion der bisherigen Modelle war die Cross Entropy Loss (CEL). Die CEL hat den Nachteil, dass sie unterrepräsentierte Klassen vernachlässigt, was hier mit der Anzahl der Ballpixel im Vergleich zu den Hintergrundpixeln der Fall ist. Deswegen wurden der CEL Klassengewichte hinzugefügt:
- Für den Hintergrund Klassengewicht 0.1. Das bedeutet, Fehler dieser Klasse werden weniger bestraft.
- Für den Ball Klassengewicht 1.0. Diese Klasse wird normal behandelt, also ohne zusätzliche Aktionen.
Mit diesen Klassengewichten und dem Checkpoint erkannte mein neu trainiertes Modell sowohl den roten als auch den weißen Ball. Leider führte dies auch zu einem erhöhten Auftreten von falsch als Ball klassifizierten Objekten und zu übergroßen Segmentierungen.
Mit einem längeren Training konnten diese Probleme reduziert werden.
Dann wurden alternative Verlustfunktionen eingesetzt:
Focal Loss
Die Focal Loss (FL) ist eine Erweiterung der CEL, welche speziell entwickelt wurde um Probleme mit Klassenungleichgewichten zu adressieren. Sie modifiziert die Standard-CEL, indem sie den Einfluss leicht zu klassifizierender Beispiele reduziert und schwierigere Fälle stärker gewichtet.
Das Checkpoint-Modell mit der FL-Function erkannte und segmentierte den roten Ball mit übergroßen Segmentierungen, ignorierte aber den weißen Ball in den Testbildern. Es wurden auch teilweise verdeckte Bälle in den Testbildern erkannt.
Dice Loss
Dice Loss (DL) ist eine Verlustfunktion, die speziell für Segmentierungsaufgaben entwickelt wurde. Sie basiert auf dem Dice-Koeffizienten, der die Ähnlichkeit zwischen vorhergesagten und tatsächlichen Segmentierungen misst.
Bei dem ersten Checkpoint-Modell mit der DL und dem Checkpoint wurden sowohl die roten als auch die weißen Bälle in den Testbildern erkannt. Die Segmentierungen waren aber viel zu groß. Vereinzelt waren auch noch Ballmaskierungen anderer Objekte in den Testbildern zu sehen.
Längeres Training hat die Segmentierungen dann verkleinert. Zusätzlich sind dadurch auch die vereinzelten falschen Segmentierungen verschwunden.
Da der DL bessere Ergebnisse erbrachte als die FL, wollte ich den DL auch ohne den selbstrainierten Checkpoint testen. Dieses Modell erreichte ähnlich gute Ergebnisse wie das vorherige Modell (mit erhöhter Iterationsanzahl) nach viel weniger Trainingsiterationen. Mit der DL-Funktion wird also der selbsttrainierte Checkpoint nicht benötigt.
Es werden beide Ballfarben zuverlässig erkannt, aber die Segmentierungen sind nicht passend. Sie sind einfach noch zu groß.
Kombinationen von Verlustfunktionen
Es ist möglich, mehr als eine Verlustfunktion bei einem Modell zu benutzen, in dem diese kombiniert werden. In diesem Fall habe ich zwei Verlustfunktionen miteinander kombiniert.
Dice Loss mit Cross Entropy Loss
Hier wurden die DL und die CEL miteinander kombiniert, wobei bei dem ersten Versuch das Modell den Hintergrund auswendig gelernt hatte und somit keine Markierung auf den Bällen vorhanden waren. Erst nachdem bei der CEL wieder Klassengewichte hinzugefügt wurden, erkannte das Modell die Bälle, wobei es aber trotzdem zu einigen Falschmarkierungen von Nicht-Ball-Objekten kam.
Dice Loss mit Focal Loss
Hier habe ich die DL und die FL miteinander kombiniert und es war zu sehen, dass das Problem der Erkennung der weißen Bälle, die die FL in vorherigen Versuchen komplett ignoriert hatte, wieder auftauchten und nur eine teilweise Erkennung der weißen Bälle vorhanden waren.
Nachdem dann bei der FL Klassengewichte hinzugefügt wurden, verbesserte sich die Erkennung des weißen Balles deutlich.
Beide Modelle zeigten aber ein erhöhtes Auftreten von fälschlicherweise als Ball markierten Objekten. Die DL konnten trotz ihrer einzeln gezeigten guten Performance die Schwächen der FL und der CEL nicht ausgleichen. Erst die Hinzufügung von Klassengewichten konnten eine weitere Verbesserung der Ergebnisse bringen. Die Kombination der FL und der CEL wurde nicht durchgeführt, da beide Verlustfunktionen eine schlechte Performance bei der Einzelanwendung zeigten und die FL eine Erweiterung der CEL ist.
Fazit
Aus den Beobachtungen über die verschiedenen Modelle und Kombinationen habe ich folgende Erkenntnisse ziehen können:
- Das Trainingsverhalten ist nicht linear.
- Farbinformationen bedeuten längeres Training, können aber auch zu besseren Ergebnissen führen.
- Die Lernrate sollte auch bei der Hyperparameter–Optimierung miteinbezogen werden.
- Die Wahl der Verlustfunktion kann besonders bei unausgewogenen Klassen einen erheblichen Unterschied bei der Modellleistung machen.
- Der Datensatz ist für diese Modellarchitektur zu einfach
- Visuelle Analyse zur Bewertung der Modelle ist wichtig
Folgende Ansätze habe ich für die weitere Verbesserung identifizieren können:
- Die Verminderung der False Positives durch verschiedene Ansätze ist ein wichtiges Ziel
- Die Hyperparameter-Optimierung kann noch eine wichtige Stellschraube sein
- Eine Vergrößerung des Datensatzes und der Datenvariationen ist zu verfolgen