Neuronale Netze und Computer Vision

Inspiriert von der Biologie haben neuronale Netze (NN) die Fähigkeit, sich bis zu einem gewissen Grad anzupassen, um eine Vielzahl von Aufgaben zu erfüllen. Es gibt verschiedene Architekturen wie Convolutional Neural Networks (CNN) zum Extrahieren von Mustern aus Signalen (Bilder, Audio, Video usw.), Recurrent Neural Networks (RNN) für dynamisches zeitliches Verhalten und Generative Adversarial Networks (GAN) zum Erstellen neuer Inhalte Arten von NN.

Ein einfaches neuronales Netzwerk

Das einfachste Beispiel für einen NN ist ein vollständig verbundenes neuronales Feed-Forward-Netzwerk (FNN). Dies ist in der folgenden Abbildung dargestellt:

Werte, die von der Eingabeebene gesendet werden, werden in den ausgeblendeten Ebenen ausgewertet, und dann wird ein Wert aus der Ausgabe ausgegeben. Dies ist eine übliche Struktur, die für Klassifizierungsaufgaben verwendet wird. Das nächste Bild zeigt die Kreise und Pfeile:

Neuronale Netze sind im Kern nichts anderes als mathematische Gleichungen. Die ersten drei Kreise sind die Eingabevariablen, die ersten drei Pfeile sind die Gewichte, die diese Eingaben begleiten. Wir könnten die erste Schicht des NN als W3X2 + W2X1 + W1 ausdrücken. Diese Werte werden mit dem F, das eine Funktion darstellt, an den Knoten gesendet. Die Funktion hat einen Schwellwert. Zur Aktivierung werde ich aber nicht auf die mathematischen Details aller NN in diesem Beitrag eingehen. Nachdem das F den Wert ausgegeben hat, wird dieser mit C2 multipliziert und die Ausgabe des anderen Knotens und von C1 summiert. Am Ende gibt der letzte Knoten F, der Y-Hat ausgibt, einen Wert an, der auf seinen Berechnungen basiert, die darauf beruhen, was er als Eingabe darstellt. Ein NN ist also im Wesentlichen eine Reihe von mathematischen Berechnungen, die Ihnen etwas über ihre Eingabe erzählen.

Faltungsneurale Netze

Das vorherige Beispiel war das einfachste. CNNs sind in der Regel viel komplexer. Zum Beispiel ist die nächste Architektur wie die “Hallo Welt” für CNN:

Jede dieser Gruppen von Quadraten ist eine Datenverarbeitungsebene. Dies reduziert die Datenlast und extrahiert die Muster, die der NN zum Klassifizieren von Bildern benötigt. In dem Bild wird es zum Klassifizieren von Ziffern verwendet, aber die gleiche Architektur mit ein paar geringfügigen Änderungen kann verwendet werden, um fast alles zu klassifizieren. Früher klassifizierte ich deutsche Ampeln für eine Übung im Udacity Self Driving Car Nano. Den Code sowie eine Erklärung des gesamten Vorgangs finden Sie im folgenden Jupyter-Notizbuch auf Github:

https://github.com/ccerrato147/CarND-Traffic-Sign-Classifier-Project

Fühlen Sie sich frei, den Code zu teilen und mich zu kontaktieren, wenn Sie Hilfe bei einem Teil davon benötigen. Mein Handle für Twitter, GitHub und Skype ist ccerrato147.

Neuronale Netzwerkanwendungen

Das Folgende sind einige coole Projekte, die ich persönlich als inspirierend empfunden habe. Die meisten von ihnen haben Open-Source-Code, so dass Sie sie selbst einrichten können.

  1. Selbstfahrende Autos

Wie man ein autonomes Auto baut (Code enthalten)

2. Spiel-KI

https://towardsdatascience.com/building-a-deep-neural-network-to-play-fifa-18-dce54d45e675

3. Bildbearbeitung

https://towardsdatascience.com/background-removal-with-deep-learning-c4f2104b3157

4. Bildkomprimierung und -verbesserung

https://research.googleblog.com/2016/11/enhance-raisr-sharp-images-with-machine.html

5. Bilderzeugung

6. Stilübertragung

7. NEAT

Wenn Sie Fragen haben oder über AI sprechen möchten, kontaktieren Sie mich unter [email protected]

Autor: Carlos Cerrato ist ein Software Solutions Architect und Coder, der sich auf Cloud-native Anwendungen, kognitive Lösungen und technische Teamentwicklung spezialisiert hat. Derzeit arbeitet er bei IBM Watson in Cognitiva als Solutions Architect, CEO von Xourse, Partner und Berater von Xchematic und technischer Berater von Foundation Lab