So füttern wir das Netzwerk
Oft stellt sich die Frage, welche Bilder verwendet werden können und wie sie aufgenommen werden sollen. Diese Frage ist nicht einfach zu beantworten, da dies von Fall zu Fall unterschiedlich sein kann. Als Beispiel können zwei Szenarien mit Münzen als Ausgangspunkt in Betracht gezogen werden. Wenn die Münzen miteinander verglichen werden und eine tiefergehende Analyse durchgeführt werden soll, ist es ratsam, einheitliche Bilder aufzunehmen: Bilder mit wenig Rauschen, d.h. mit gleichem Abstand, gleicher Rotation, gleicher Beleuchtung und gleichem Hintergrund. Ist das Ziel jedoch eine Anwendung, die eine Erkennung von Bildern aus unterschiedlichen Quellen ermöglichen soll, z. B. eine App oder ein Webtool, so ist es besser, Bilder in unterschiedlichen Qualitäten, Beleuchtungen und von unterschiedlichen Kameras zu sammeln, um das System robust gegen diese Art von Rauschen zu gestalten. Der tatsächliche Anwendungszweck sollte durch die Daten wiedergegeben werden.
Die Eingangsgröße
Die Eingangsgröße spielt eine wichtige Rolle und es ist theoretisch möglich, jede beliebige Bildgröße für das spätere Convolutional Neural Network (CNN) zu verwenden, dennoch gibt es einige Punkte zu beachten. Eine wichtige Frage, die immer wieder auftaucht, ist, welche Bildgröße und Auflösung überhaupt ausreichend sind. Schaut man sich bekannte CNN-Architekturen wie VGG16 oder ResNet50 an, liegt der Input bei 224x224x3 (die ersten beiden Werte geben die Höhe und Breite in Pixel, der dritte Wert gibt die Anzahl der Farbkanäle an). Im Vergleich zu einer Aufnahme mit einem Smartphone oder einer professionellen Kamera ist das eine relativ geringe Auflösung. Die Wahl dieser Größe ist eher pragmatisch als direkt begründet. Die Reduktion auf 224x224x3 erlaubt es einerseits, nicht benötigte Informationen zu eliminieren und sich auf das zu konzentrieren, was wirklich relevant ist. Andererseits ist die Reduzierung der Parameter von Bedeutung: Ein 224x224x1-Bild hat bereits 50176 Pixel, ein 512x512x1-Bild hat 262114 Pixel, also 422% mehr, ohne Berücksichtigung der Farbkanäle und weiterer Werte. Die Größe hat auch einen bedeutenden Einfluss auf die Laufzeit des Trainings, da der Grafikspeicher einer Grafikkarte begrenzt ist. An dieser Stelle sei auch erwähnt, dass das Training mit einem Prozessor zwar auch möglich ist, aber mit einer Grafikkarte deutlich schneller geht und daher auch empfohlen wird.[1] Je größer die Bilder sind, desto weniger Bilder können zur gleichen Zeit in den Speicher geladen werden.
Abb. 1: Detailaufnahme eines Staters der Coriosolites mit der Bildgröße 224 × 224 Pixel (Foto: Jersey Heritage).
Die Bilder sollten daher vor der Eingabe in das Netzwerk einheitlich skaliert werden, da ein Netzwerk eine festgelegte Eingabe besitzt. Beim Skalieren der Bilder ist besonders darauf zu achten, dass die Proportionen nicht verloren gehen und erhalten bleiben. Je nach Verwendungszweck können die Bilder auf das relevante Objekt zugeschnitten werden, um weiteres Rauschen von anderen Elementen zu entfernen. Abbildung 2 zeigt ein Beispiel für ein solches Verfahren, bei dem das Bild auf das wesentliche Teil zugeschnitten und dann skaliert wird.
Abb. 2: Objekterkennung und Skalierung der Eingabe (Foto: Jersey Heritage. Grafik: C. Deligio/Big Data Lab).
Wenn ein Bild die Größe 224x224x3 hat, geben – wie im vorherigen Abschnitt erwähnt – die ersten beiden Werte die Höhe und Breite in Pixel an, der dritte Wert die Anzahl der Farbkanäle. Ein typisches Farbbild, z. B. im JPG-Format, hat drei Farbkanäle: Rot, Grün und Blau (RGB). Im Vergleich dazu hat ein Schwarzweißbild nur einen Kanal. Aber wie sieht das als Input für unser Modell aus? Während wir das Bild als reales Bild sehen, ist es für den Computer eine Matrix von Pixelwerten. Für jeden Farbkanal gibt es eine Matrix. Die Werte der Matrix liegen im Bereich zwischen 0 und 255, wobei 255 die stärkste Intensität der Farbe darstellt und 0 keine. Bevor die Bilder zur Eingabe genutzt werden, ist es üblich, die Werte zu normalisieren und diese durch 255 zu teilen, damit sie im Bereich von 0 bis 1 liegen (Abb. 3). Mit kleineren Zahlen ist die Komplexität der Berechnungen geringer.
Die Wahl der Größe und der Farbkanäle ist dann wichtig, wenn Transfer Learning eingesetzt werden soll, d. h. wenn ein sogenanntes pre-trained model, also ein vortrainiertes Modell, weiter auf die eigene Aufgabe verfeinert werden soll. Vortrainierte Modelle, wie sie von Keras Applications zur Verfügung gestellt werden, sind in der Regel auf dem ImageNet-Datensatz mit RGB-Bildern trainiert worden. Sie erwarten also drei Farbkanäle. Möchte man nun Schwarz-Weiß-Bilder verwenden, ist hier eine Anpassung bzw. ein kleiner Umweg notwendig. Häufig wird der Schwarz-Weiß-Kanal einfach verdreifacht. Es muss also darauf geachtet werden, dass die Bilder mit dem Input des Modells übereinstimmen.
Abb. 3: Vereinfachte Darstellung der Matrix eines Kanals (Grafik: C. Deligio/Big Data Lab).
Augmentierung der Daten
Die Größe des Datensatzes und die Darstellung der verschiedenen zu untersuchenden Klassen sowie deren Qualität haben einen starken Einfluss auf die Leistungsfähigkeit des Modells. Im Idealfall handelt es sich um einen Datensatz, bei dem die Klassen gleichmäßig vertreten sind. In der Realität ist dies jedoch oft nicht gegeben. Im Fall unserer keltischen Münzen gibt es beispielsweise einige Varianten, Typen und Serien, die aufgrund der hohen Anzahl der ihnen zugeordneten Münzen sehr gut repräsentiert sind, und andere, die nur durch eine einzige Münze repräsentiert werden.
Um den Datensatz künstlich zu erweitern, werden daher sogenannte Augmentationen angewendet. Dazu gehören Drehungen, Spiegelungen, Zooms und vieles mehr. Mit Hilfe von Augmentationen kann die Anzahl der Münzen unter anderem für Klassen mit wenigen Repräsentanten vervielfacht werden. Aber die Verwendung von Augmentationen ist auch nützlich, um die Robustheit des Modells gegenüber dem Rauschen zu erhöhen. Mit anderen Worten, es werden dem Modell mehr mögliche Szenarien zur Verfügung gestellt, als der Datensatz zulässt. Bei der Verwendung von Augmentationen muss jedoch darauf geachtet werden, dass keine relevanten Merkmale verloren gehen. Wenn beispielsweise der einzige Unterschied zwischen zwei Klassen darin besteht, ob der Kopf nach links oder nach rechts blickt, ist eine Spiegelung nicht zu empfehlen, da diese den Unterschied zwischen beiden Klassen aufheben würde.