Ich glaube, dass Freunde wie der Autor, die Technologie lieben und ein starkes Interesse an KI haben, mit Faltungs-Neuronalen Netzen vertraut sein müssen und schon lange von einem so „fortgeschrittenen“ Namen verwirrt sein müssen. Der Autor wird heute von Grund auf in die Welt der Faltungs-Neuronalen Netze eintauchen ~ teilen Sie es mit Ihnen!
Bevor wir in das Faltungs-Neuronale Netzwerk eintauchen, schauen wir uns zunächst die Prinzipien von Bildern an.
Bilder werden in Computern durch Zahlen (0-255) dargestellt. Jede Zahl repräsentiert die Helligkeits- oder Farbinformationen eines Pixels im Bild. Darunter:
„Wie verstehen Sie hier die „8-Bit-Binärzahl“?“
Im RGB-Farbmodell kann jeder Farbkanal (Rot, Grün, Blau) 256 verschiedene Helligkeitsstufen haben, jeder Kanal stellt eine 8-Bit-Binärdarstellung dar. Der Maximalwert der 8-Bit-Binärzahl ist 11111111, was bei der Konvertierung in eine Dezimalzahl 255 ist.
CNN berichtete über ein im Lebenslauf bekanntes Anwendungsszenario. Nehmen wir als Beispiel die Originalbildgröße 10x10, wie in der Abbildung unten gezeigt, hat die linke Hälfte größere Pixelwerte und ist ein heller Bereich, die rechte Hälfte hat kleinere Pixelwerte und ist ein Tiefenbereich. Die Trennlinie in der Mitte ist die zu erkennende Kante.
„Wie erkennt man also Kanten?“ Zu diesem Zeitpunkt wird der Filter (auch Kernel genannt) angezeigt, wie in der Abbildung unten gezeigt. Die Kernelgröße beträgt 3x3.
Der Filter gleitet über das Eingabebild, stoppt für einen Moment in jedem Bereich, multipliziert und addiert die entsprechenden Elemente und gleitet dann zu anderen Bereichen, um die Berechnung fortzusetzen, bis er zum letzten Bereich des Originalbilds gleitet. Dieser Vorgang wird als „Faltung“ bezeichnet.
Wie Sie auf dem Bild oben sehen können, weist das Ausgabeergebnis eine helle Farbe in der Mitte und eine dunkle Farbe auf beiden Seiten auf, was darauf hinweist, dass die Grenzen des Originalbilds verschoben wurden reflektiert. „Daraus kann geschlossen werden, dass die Kantenerkennung durch die Faltungsoperation des Eingabebildes und des entsprechenden Filters erfolgt.“ Darüber hinaus beinhaltet das Gleiten hier auch ein Grundkonzept, „Schritt“. Ein Schritt von 1 bedeutet, dass Sie jedes Mal, wenn Sie einen Frame verschieben, in insgesamt 8x8-Bereichen bleiben, sodass das endgültige Ausgabeergebnis eine 8x8-Matrix ist.
„Was genau ist ein Faltungs-Neuronales Netzwerk?“
Nach der obigen Analyse des spezifischen Zielerkennungsszenarios der Kantenerkennung ist es für uns nicht schwer zu verstehen, dass CNN (Faltungs-Neuronales Netzwerk) verschiedene Filter kontinuierlich verwendet Extrahiert Bildmerkmale, vom lokalen zum gesamten Bild, und identifiziert dann das Ziel.
In neuronalen Netzen ist jede Zahl in diesen Filtern ein Parameter, der durch Training mit einer großen Datenmenge (also dem Prozess des Deep Learning) ermittelt werden kann.
Grundlegende Konzepte in CNN
Faltung ist eine integrale Transformationsmethode in der mathematischen Analyse, die in der Bildverarbeitung als diskrete Form der Faltung verwendet wird. Im Faltungs-Neuronalen Netzwerk CNN ist die Implementierung der Faltungsschicht im Wesentlichen die in der Mathematik definierte Kreuzkorrelationsberechnung (Kreuzkorrelation). Der spezifische Berechnungsprozess ist in der folgenden Abbildung dargestellt.
Unter ihnen:
Bild (a): Die Größe des linken Bildes beträgt 3 × 3, was darauf hinweist, dass die Eingabedaten ein zweidimensionales Array mit einer Dimension von 3 × 3 sind. Die Größe des mittleren Bilds beträgt 2 × 2, was eine Zwei anzeigt -dimensionales Array mit einer Dimension von 2×2, auch bekannt als „Faltungskern“. Die obere linke Ecke des Faltungskerns wird an der oberen linken Ecke (0,0) der Eingabedaten ausgerichtet, und die entsprechenden Positionsdaten der beiden werden multipliziert und dann addiert, um das erste Ergebnis der Faltungsausgabe 25 zu erhalten.
In Analogie dazu sind die Abbildungen (b), (c) und (d) die zweiten, dritten und vierten Ausgabeergebnisse der Faltungsausgabe.
(2) Bildfaltungsoperation
Was genau ist also die Bildfaltungsoperation? Wie in der folgenden Abbildung dargestellt, ist der Farbbildfaltungsprozess dargestellt.
Für Kanal 1 (Rot), Kanal 2 (Grün) und Kanal 3 (Blau) von Farbbildern verwenden Sie jeweils Kernel1, Kernel2 und Kernel3. Jeder Faltungskern gleitet über das entsprechende monochrome Bild, führt eine Punkt-für-Punkt-Multiplikationsoperation für den Pixelwert innerhalb eines kleinen Bereichs (Kernelgröße) an jeder Position und dem entsprechenden Element des Faltungskerns durch und addiert dann diese Produkte. Erhalten Sie a Wert. Addieren Sie dann die von jedem Kanal erhaltenen Werte und addieren Sie die Gesamtverzerrung, um einen Wert in der entsprechenden Feature-Map zu erhalten.
Der dreidimensionale Effekt ist in der folgenden Abbildung dargestellt:
Im oben erwähnten Beispiel der Kantenerkennung können Sie sehen, dass die ursprüngliche Bildgröße 10 x 10 beträgt und nach dem Filtern auch so ist 8x8. Wenn Sie eine weitere Faltungsoperation durchführen, ist es 6x6 ... In diesem Fall gibt es zwei Nachteile:
Wie im Bild unten gezeigt, wird der rote Schatten in der oberen linken Ecke nur von einer Ausgabe berührt, während das mittlere Pixel (markiert durch ein lila Kästchen) viele 3x3-Bereiche überlappt. Daher werden Pixel in Ecken oder Randbereichen in der Ausgabe weniger verwendet und es kann leicht passieren, dass viele Informationen über die Randposition des Bildes verloren gehen.
Um dieses Problem zu lösen, verwenden wir normalerweise die Padding-Methode. Füllen Sie vor der Faltungsoperation zunächst den Rand des Originalbilds mit einer Pixelebene Die Größe beträgt 12 x 12 und die Größe des Bildes nach der Multiplikation beträgt 8 x 8, was der Größe des Originalbilds entspricht. Dadurch können die Pixel im Randbereich des Originalbilds mehrfach verwendet werden.
Wählen Sie, wie viele Pixel gefüllt werden sollen. Normalerweise gibt es zwei Optionen:
In der Einleitung wurde das Konzept des Stride erwähnt, das die Länge jeder Folie des Filterfilters in horizontaler und vertikaler Richtung im Originalbild darstellt, auch Schrittlänge genannt.
Angenommen, s stellt die Schrittlänge dar, p stellt die Fülllänge dar, die ursprüngliche Bildgröße ist nxn und die Filtergröße ist fxf, dann ist die gefaltete Bildgröße:
Die Essenz von Pooling ist eine Dimensionsreduktion.
Die Rolle der Pooling-Schicht im Faltungsnetzwerk: Reduzieren Sie die Anzahl der Parameter der Feature-Map, erhöhen Sie die Berechnungsgeschwindigkeit und erhöhen Sie das Empfangsfeld, was eine Downsampling-Operation darstellt.
Pooling, das häufig bei der Objekterkennung verwendet wird: Max Pooling und Average Pooling.
(1) Max Pooling
bedeutet, dass der Maximalwert innerhalb des Filtergleitbereichs ohne Faltungsoperation genommen wird. Eine große Zahl bedeutet, dass bestimmte Merkmale erkannt und andere Werte ignoriert werden können, wodurch die Auswirkungen von Rauschen verringert und die Robustheit des Modells verbessert werden. „Darüber hinaus sind die für das Max-Pooling erforderlichen Hyperparameter nur die Filtergröße f und die Schrittlänge s. Es besteht keine Notwendigkeit, andere Parameter zu trainieren, und der Berechnungsaufwand ist gering.“
Das heißt, im Filter wird der Durchschnittswert innerhalb des Filtergleitbereichs berechnet.5.Shape
Beim Umgang mit mehrdimensionalen Daten, insbesondere Bilddaten, gibt es Unterschiede zwischen Tensorflow- und Pytorch-Daten Shape.TensorFlow:(batch_size, height, width, in_channels)
Pytorch:(batch_size, in_channels, height, width)wobei:
Wie im Bild oben gezeigt:
out_height = (height - kernel_height + 1) / strideout_width = (width - kernel_width + 1) / stride
Für ein 8x8-Bild und einen 3x3-Faltungskern beträgt die Ausgabegröße (8 - 3 + 1) / 1 = 6, sodass die Ausgabeform [6, 6, 5] ist, was eine 6x6-Feature-Map mit 5 Ausgabekanälen anzeigt .
Die Anzahl der Eingabekanäle (in_channels) des Faltungskerns wird durch die Anzahl der Kanäle des Eingabebildes bestimmt. Beispiel: Ein Bild im RGB-Format hat eine Anzahl von Eingabekanälen von 3.
Die Anzahl der Kanäle der Ausgabematrix (out_channels) wird durch die Anzahl der Ausgabekanäle des Faltungskerns bestimmt, also wie viele verschiedene Filter der Faltungskern hat. In diesem Beispiel verfügt der Faltungskern über 5 Filter, sodass die Ausgabe über 5 Kanäle verfügt.
Nicht alle Zuordnungsbeziehungen können durch lineare Beziehungen genau ausgedrückt werden. Daher werden Aktivierungsfunktionen benötigt, um nichtlineare Abbildungen darzustellen.
Die Aktivierungsfunktion ist ebenfalls eine nichtlineare Abbildung. Wenn das neuronale Netzwerk nur durch lineare Operationen gestapelt wird, kann es keinen komplexen Ausdrucksraum bilden und es wird schwierig sein, hochsemantische Informationen zu extrahieren. Daher ist es notwendig, nichtlineare Zuordnungsbeziehungen hinzuzufügen.
(1) Sigmoid-Funktion
Die Sigmoid-Funktion komprimiert die Merkmale in das (0,1)-Intervall. Das 0-Ende ist der Hemmungszustand, das 1-Ende ist der Aktivierungszustand und das Die Steigung im mittleren Teil ist am größten.
(2) Relu-Funktion
Rectified Linear Unit (ReLU). Wird normalerweise verwendet, um das Phänomen des verschwindenden Gradienten zu lindern.
In dem Teil kleiner als 0 sind der Wert und der Gradient 0, und die Ableitung größer als 0 ist 1, wodurch das Problem des Verschwindens des Gradienten vermieden wird, das dadurch verursacht wird, dass der Gradient in der Sigmoid-Funktion nahe bei 0 liegt.
(3) Softmax-Funktion
Der am häufigsten verwendete Klassifikator für mehrere Objektkategorien ist die Softmax-Funktion.
Bei bestimmten Klassifizierungsaufgaben ist die Eingabe der Softmax-Funktion häufig die Punktzahl mehrerer Kategorien und die Ausgabe ist die Wahrscheinlichkeit, die jeder Kategorie entspricht. Die Wahrscheinlichkeitswerte aller Kategorien liegen zwischen 0 und 1 Summe ist 1. Die Formel der Softmax-Funktion lautet wie folgt:
wobei Vi die Punktzahl der i-ten Kategorie darstellt, C die Gesamtzahl der klassifizierten Kategorien darstellt und die Ausgabe Si die Wahrscheinlichkeit der i-ten Kategorie ist.
CNN-Gesamtstruktur
Wie in der folgenden Abbildung dargestellt, ist die Faltungsschicht die erste Schicht des Faltungsnetzwerks, gefolgt von anderen Faltungsschichten oder Pooling-Schichten, und die letzte Schicht ist eine vollständig verbundene Schicht. Spätere Ebenen identifizieren größere Teile des Bildes und frühere Ebenen konzentrieren sich normalerweise auf einfache Merkmale (wie Farbe und Kanten). Während die Bilddaten die Schichten im CNN durchlaufen, beginnen sie, größere Elemente oder Formen von Objekten zu identifizieren, bis sie schließlich das beabsichtigte Objekt identifizieren.
Unter ihnen:
Eingabeschicht: Empfängt Originalbilddaten als Eingabe in das Netzwerk.Das obige ist der detaillierte Inhalt vonSie können die Prinzipien von Faltungs-Neuronalen Netzen auch ohne Grundlagen verstehen! Super detailliert!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!