Bilder enthalten viele wichtige Informationen. Während sie für unsere geübten Augen leicht zu erkennen sind, stellen sie eine echte Herausforderung für die Datenanalyse dar. Die Gesamtheit dieser Techniken ist unter dem Namen „Image Processing“ oder Bildverarbeitung bekannt. In diesem Artikel erfährst du mehr über die klassischen Algorithmen, Techniken und Werkzeuge zur Verarbeitung von Daten in Form von Bildern.
Was ist Image Processing?
Wie der Name schon sagt, geht es bei der Bildverarbeitung um die Bearbeitung von Bildern, was viele verschiedene Techniken beinhalten kann. Das Endergebnis kann ein anderes Bild, eine Variation oder einfach ein Parameter dieses Bildes sein. Dieses Ergebnis kann dann für eine weitere Analyse oder Entscheidungsfindung verwendet werden.
Sie ist der zentrale Teil der Computervision (oder „computer vision“), die eine entscheidende Rolle in vielen Beispielen aus der realen Welt wie Robotik,selbstfahrenden Autos und der Erkennung von Objekten spielt. Die Bildverarbeitung ermöglicht es uns, Tausende von Bildern auf einmal umzuwandeln und zu manipulieren und daraus nützliche Informationen zu extrahieren.
Aber was ist ein Image?
Ein Bild kann als eine 2D-Funktion F(x,y) dargestellt werden, wobei x und y Raumkoordinaten sind. Es handelt sich also um eine Tabelle von Pixeln, die in Spalten und Reihen angeordnet sind. Der Wert von F an einem Punkt x,y ist als die Intensität eines Bildes an diesem Punkt bekannt. Wenn x, y und der Wert der Amplitude endlich sind, spricht man von einem digitalen Bild.
Ein Bild kann auch in 3D dargestellt werden, dessen Koordinaten x, y und z sind. Die Pixel werden dann in Form einer Matrix angeordnet. Das nennt man ein RGB-Bild (oder RGB auf Englisch). Wenn das Bild in Graustufen vorliegt, gibt es nur einen Kanal: z = 1.
"Welche sind die klassischen Techniken der Bildbearbeitung?"
Historisch gesehen wurden Bilder mit mathematischen Analysemethoden bearbeitet, von denen wir im Folgenden einige vorstellen werden:
- Gaußsche Unschärfe oder Gaußsche Glättung ist das Ergebnis der Anwendung einer Gaußschen Funktion auf ein Bild, d. h. auf eine Matrix wie oben definiert. Sie wird verwendet, um das Bildrauschen zu reduzieren und Details abzuschwächen. Der visuelle Effekt dieser Unschärfetechnik ist ähnlich wie das Betrachten eines Bildes durch eine lichtdurchlässige Leinwand. Sie wird manchmal als Datenerhöhungstechnik für Deep Learning verwendet, auf das wir weiter unten noch genauer eingehen werden.
- Die Fourier-Transformation zerlegt ein Bild in seine Sinus- und Kosinuskomponenten. Sie hat viele Anwendungen, wie z. B. die Rekonstruktion von Bildern, die Komprimierung von Bildern oder die Filterung von Bildern. Da wir von Bildern sprechen, wollen wir die diskrete Fourier-Transformation in Betracht ziehen.
Betrachten wir eine Sinuskurve, sie besteht aus drei Elementen:
- Die Amplitude – verbunden mit dem Kontrast
- Die Raumfrequenz – verbunden mit der Helligkeit
- Die Phase – verbunden mit der Information über die Farbe
Die Kantenerkennung ist eine Bildverarbeitungstechnik, mit der die Grenzen von Objekten in Bildern gefunden werden können. Sie funktioniert, indem sie Diskontinuitäten in der Helligkeit erkennt. Genauer gesagt werden Kanten als lokale Maxima des Bildgradienten definiert, d. h. Bereiche, in denen es eine große Wertevariation zwischen zwei Pixelbereichen gibt. Der gängigste Algorithmus zur Erkennung von Rändern ist der Sobel-Algorithmus.
Image Processing mit neuronalen Netzen
Mit dem Aufkommen von neuronalen Netzen und erhöhter Rechenleistung wurde die Bildverarbeitung revolutioniert. Insbesondere Faltungsnetze, die auf den oben genannten Techniken basieren,zeichnen sich bei der Erkennung und Erkennung von Objekten oder Personen aus. Wie funktionieren sie?
Ein gefaltetes neuronales Netz, kurz CNN, besteht aus drei Hauptschichten:
- Die Faltungsschicht (CONV): Sie ist für die Durchführung der Faltungsoperation verantwortlich. Das Element, das an der Ausführung der Faltungsoperation beteiligt ist, wird als Kern/Filter (Matrix) bezeichnet. Der Kern führt horizontale und vertikale Verschiebungen durch, bis das gesamte Bild durchlaufen wird. Die Funktionsweise ist ähnlich wie bei der Konturenerkennungstechnik.
- Pooling-Schicht (POOL): Diese Schicht ist für die Verringerung der Dimensionalität verantwortlich. Sie verringert die Rechenleistung, die für die Verarbeitung der Daten benötigt wird. Es gibt zwei Arten von Pooling: Maximales Pooling und Mittleres Pooling. Maximales Pooling gibt den maximalen Wert des Bereichs zurück, der vom Kern auf dem Bild abgedeckt wird. Das durchschnittliche Pooling gibt den Mittelwert aller Werte des vom Kern abgedeckten Bereichs des Bildes zurück.
- Vollständig verbundene Schicht (FC): Die vollständig verbundene Schicht (FC) ist am Ende der CNN-Architekturen vorhanden. Sie ähnelt einer herkömmlichen Schicht in neuronalen Netzen und ermöglicht es, nach Anwendung einer Aktivierungsfunktion die vom Netz erwartete Ausgabe, z. B. eine Klassifizierung, zurückzugeben.
Durch das Hinzufügen von nicht linearen Funktionen („RELU“) innerhalb der Netzwerke oder durch spezielle Architekturen können komplexere Probleme gelöst werden. Es gibt viele Beispiele dafür: DenseNet, U-Net, VGG…
Generative Adversarial Networks
Da für das Workout komplexer Netzwerke manchmal nicht genügend gelabelte Daten zur Verfügung stehen, werden heute vor allem generative Modelle, sogenannte GANs für Generative Adversarial Networks, verwendet.
GANs bestehen aus zwei Modellen: Generator und Discriminator. Der Generator lernt, falsche Bilder zu erzeugen, die realistisch aussehen, um den Diskriminator zu täuschen, und der Diskriminator lernt,falsche Bilder von echten zu unterscheiden. Der Generator darf keine echten Bilder sehen und kann daher in der Startphase schlechte Ergebnisse produzieren, während der Diskriminator zwar echte Bilder sehen darf, diese aber mit den vom Generator erzeugten falschen Bildern vermischt werden, die er als echt oder falsch klassifizieren muss.
Ein gewisses Rauschen wird in den Generator eingebracht, damit er in der Lage ist,jedes Mal andere Beispiele und nicht denselben Bildtyp zu erzeugen. Auf der Grundlage der vom Diskriminator vorhergesagten Punktzahlen versucht der Generator, seine Ergebnisse zu verbessern. Nach einiger Zeit wird der Generator in der Lage sein, Bilder zu produzieren, die schwerer zu unterscheiden sind. Auch der Diskriminator wird besser, da er dem Generator mit jeder Runde immer realistischere Bilder entlockt.
Die beliebtesten GAN-Typen sind Deep Convolutional GAN (DCGAN), Conditional GAN (cGAN), StyleGAN, CycleGAN usw.
GANs eignen sich hervorragend für die Erzeugung und Manipulation von Bildern: Gesichtsalterung, Mischen von Fotos, Superauflösung, Malen von Fotos,Übersetzen von Kleidungsstücken.
Schlussfolgerung
Es gibt viele Techniken der Bildbearbeitung, und wie in vielen Fällen heutzutage, kann man mit neuronalen Netzen viele Informationen und sehr genaue Schlussfolgerungen erhalten. Python ist die Sprache der Wahl für diese Art von Aufgaben, mit Werkzeugen wie OpenCv, Scikit Image, Tensorflow oder Pytorch.
Die von DataScientest angebotenen Programme bieten dir zahlreiche Tools, mit denen du lernen kannst, wie du Daten in Bildform verarbeiten und die komplexesten neuronalen Netze nutzen kannst.