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.

Rote und weiße Tischkickerbälle teilverdeckt und vor verschiedenen Hintergründen
Rote und weiße Tischkickerbälle teilverdeckt und vor verschiedenen Hintergründen

Beispielbild:

Das Kamerabild zeigt in der Aufnahme das gesamte Spielfeld und damit deutlich mehr als nur den unmittelbaren Ballbereich
Das Kamerabild zeigt in der Aufnahme das gesamte Spielfeld und damit deutlich mehr als nur den unmittelbaren Ballbereich

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.

Im Bildzentrum wird eine nicht ballgebundene Standardmarkierung, die sogenannte Default-Markierung, erkannt
Im Bildzentrum wird eine nicht ballgebundene Standardmarkierung, die sogenannte Default-Markierung, erkannt

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:

Beim Tile-Preprocessing wird das Bild in gleichförmige Unterbilder aufgeteilt
Beim Tile-Preprocessing wird das Bild in gleichförmige Unterbilder aufgeteilt

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.

Bildsegmentierung mit Tile-Preprocessing 3x3 nach 40 Iterationen
Bildsegmentierung mit Tile-Preprocessing 3x3 nach 40 Iterationen

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.

Bildsegmentierung mit Tile-Preprocessing 3x3 nach 100 Iterationen
Bildsegmentierung mit Tile-Preprocessing 3x3 nach 100 Iterationen

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.

Bildsegmentierung mit Tile-Preprocessing 3x3 nach 150 Iterationen
Bildsegmentierung mit Tile-Preprocessing 3x3 nach 150 Iterationen

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.

Bildsegmentierung mit Tile-Preprocessing 3x3 nach 200 Iterationen
Bildsegmentierung mit Tile-Preprocessing 3x3 nach 200 Iterationen

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:

Bildsegmentierung mit Grayscaling Preprocessing für den weißen Ball
Bildsegmentierung mit Grayscaling Preprocessing für den weißen Ball

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.

Bildsegmentierung ohne Grayscaling nach 200 Iterationen mit beidfarbigen Bällen, wobei nur die roten Bälle korrekt segmentiert werden
Bildsegmentierung ohne Grayscaling nach 200 Iterationen mit beidfarbigen Bällen, wobei nur die roten Bälle korrekt segmentiert werden

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.

Bildsegmentierung ohne Grayscaling nach 400 Iterationen mit beidfarbigen Bällen mit beidfarbigen Bällen und unvollständiger, aber korrekter Segmentierung
Bildsegmentierung ohne Grayscaling nach 400 Iterationen mit beidfarbigen Bällen mit beidfarbigen Bällen und unvollständiger, aber korrekter Segmentierung

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.

Bildsegmentierung auf größeren Bildern nach 200 Iterationen
Bildsegmentierung auf größeren Bildern nach 200 Iterationen

Bildsegmentierung auf größeren Bildern nach 300 Iterationen
Bildsegmentierung auf größeren Bildern nach 300 Iterationen

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.

Der gewählte Checkpoint des Modells hat Schwierigkeiten mit der Erkennung der Bälle
Der gewählte Checkpoint des Modells hat Schwierigkeiten mit der Erkennung der Bälle

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.

Das Hinzufügen von Klassengewichten steigern die Erkennungsrate zulasten der Genauigkeit und Segmentierungsgenauigkeit
Das Hinzufügen von Klassengewichten steigern die Erkennungsrate zulasten der Genauigkeit und Segmentierungsgenauigkeit

Mit einem längeren Training konnten diese Probleme reduziert werden.

Zusätzliche Trainingsiterationen reduzieren die False-Positives und erhöhen die Segmentierungsgenauigkeit
Zusätzliche Trainingsiterationen reduzieren die False-Positives und erhöhen die Segmentierungsgenauigkeit

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.

Der Einsatz von Focal Loss löst die Probleme mit der Weiß-Ballerkennung nicht
Der Einsatz von Focal Loss löst die Probleme mit der Weiß-Ballerkennung nicht

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.

Die Segmentierung mit Dice Loss und Checkpoint-Modell sprengt den eigentlichen Ballbereich
Die Segmentierung mit Dice Loss und Checkpoint-Modell sprengt den eigentlichen Ballbereich

Längeres Training hat die Segmentierungen dann verkleinert. Zusätzlich sind dadurch auch die vereinzelten falschen Segmentierungen verschwunden.

Eine Steigerung der Trainingsdauer erhöht die Segmentierungsgenauigkeit
Eine Steigerung der Trainingsdauer erhöht die Segmentierungsgenauigkeit

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.

Dice Loss führt zur korrekten Erkennung der Bälle, segmentiert diese allerdings zu groß
Dice Loss führt zur korrekten Erkennung der Bälle, segmentiert diese allerdings zu groß

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.

Segmentierungsergebnisse der DL-FL-Kombination ohne FL-Klassengewichte
Segmentierungsergebnisse der DL-FL-Kombination ohne FL-Klassengewichte

Nachdem dann bei der FL Klassengewichte hinzugefügt wurden, verbesserte sich die Erkennung des weißen Balles deutlich.

Segmentierungsergebnisse der DL-FL-Kombination mit FL-Klassengewichte
Segmentierungsergebnisse der DL-FL-Kombination mit FL-Klassengewichte

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