Wie funktionieren Faltungsschichten in Deep Learning Neuronalen Netzen?

Tweet Teilen Teilen

Zuletzt aktualisiert am 17. April 2020

Faltungsschichten sind die Hauptbausteine, die in Faltungs-Neuronalen Netzen verwendet werden.

Eine Faltung ist die einfache Anwendung eines Filters auf einen Eingang, der zu einer Aktivierung führt. Die wiederholte Anwendung desselben Filters auf eine Eingabe führt zu einer Aktivierungskarte, die als Feature-Map bezeichnet wird und die Positionen und die Stärke eines erkannten Features in einer Eingabe wie einem Bild angibt.

Die Innovation des Faltungs-Neuronalen Netzwerke ist die Fähigkeit, automatisch eine große Anzahl von Filtern parallel zu einem Trainingsdatensatz unter den Einschränkungen eines bestimmten prädiktiven Modellierungsproblems, wie z. B. der Bildklassifizierung, parallel zu lernen. Das Ergebnis sind hochspezifische Funktionen, die überall auf Eingabebildern erkannt werden können.

In diesem Lernprogramm erfahren Sie, wie Faltungen im neuronalen Faltungsnetzwerk funktionieren.

Nach Abschluss dieses Lernprogramms Sie werden wissen:

  • Faltungs-Neuronale Netze wenden einen Filter auf eine Eingabe an, um eine Feature-Map zu erstellen, die das Vorhandensein erkannter Features in der Eingabe zusammenfasst.
  • Filter können handgefertigt werden B. Liniendetektoren, aber die Innovation von Faltungs-Neuronalen Netzen besteht darin, die Filter während des Trainings im Kontext eines bestimmten Vorhersageproblems zu lernen.
  • Berechnen der Merkmalskarte für ein- und zweidimensionale Faltungsnetze Ebenen in einem Faltungsnetzwerk.

Starten Sie Ihr Projekt mit meinem neuen Buch Deep Learning für Computer Vision, das schrittweise Anleitungen und die Python-Quellcodedateien für alle Beispiele enthält.

Fangen wir an.

A Gentle Einführung in Faltungsschichten für Deep Learning Neuronale Netze
Foto von Mendhak, einige Rechte vorbehalten.

Tutorial-Übersicht

Dieses Tutorial ist in vier Teile unterteilt. Dies sind:

  1. Faltung in Faltungs-Neuronalen Netzen
  2. Faltung in Computer Vision
  3. Leistung gelernter Filter
  4. Arbeitsbeispiel für Faltungsebenen

Möchten Sie Ergebnisse mit Deep Learning für Computer Vision?

Nehmen Sie meine Jetzt kostenlos 7-tägiger E-Mail-Crashkurs (mit Beispielcode).

Klicken Sie hier, um sich anzumelden und eine kostenlose PDF-E-Book-Version des Kurses zu erhalten.

Laden Sie Ihr KOSTENLOSES Mini- herunter Kurs

Faltung in Faltungs-Neuronalen Netzen

Das Faltungs-Neuronale Netz, kurz CNN Ein spezielles Typ eines neuronalen Netzwerkmodells, das für die Arbeit mit zweidimensionalen Bilddaten entwickelt wurde, obwohl sie mit eindimensionalen und dreidimensionalen Daten verwendet werden können.

Zentral für das Faltungs-Neuronale Netzwerk ist die Faltungsschicht, die gibt dem Netzwerk seinen Namen. Diese Schicht führt eine Operation aus, die als „Faltung“ bezeichnet wird.

Im Kontext eines Faltungsnetzwerks ist eine Faltung eine lineare Operation, bei der ein Satz von Gewichten mit der Eingabe multipliziert wird, ähnlich wie bei einer herkömmlichen neurales Netzwerk. Da die Technik für zweidimensionale Eingaben ausgelegt ist, wird die Multiplikation zwischen einem Array von Eingabedaten und einem zweidimensionalen Array von Gewichten durchgeführt, die als Filter oder Kernel bezeichnet werden.

Der Filter ist kleiner als Die Eingabedaten und die Art der Multiplikation, die zwischen einem filtergroßen Patch der Eingabe und dem Filter angewendet wird, sind ein Punktprodukt. Ein Punktprodukt ist die elementweise Multiplikation zwischen dem filtergroßen Patch des Eingangs und des Filters, die dann summiert wird und immer einen einzelnen Wert ergibt. Da dies zu einem einzelnen Wert führt, wird die Operation häufig als „Skalarprodukt“ bezeichnet.

Die Verwendung eines Filters, der kleiner als die Eingabe ist, ist beabsichtigt, da derselbe Filter (Satz von Gewichten) verwendet werden kann mehrmals mit dem Eingabearray an verschiedenen Punkten der Eingabe multipliziert. Insbesondere wird der Filter systematisch auf jeden überlappenden Teil oder Filterbereich der Eingabedaten von links nach rechts und von oben nach unten angewendet.

Diese systematische Anwendung desselben Filters auf ein Bild ist eine leistungsstarke Idee . Wenn der Filter einen bestimmten Merkmalstyp in der Eingabe erkennen soll, bietet die systematische Anwendung dieses Filters auf das gesamte Eingabebild dem Filter die Möglichkeit, dieses Merkmal an einer beliebigen Stelle im Bild zu erkennen. Diese Fähigkeit wird üblicherweise als Übersetzungsinvarianz bezeichnet, z. Das allgemeine Interesse daran, ob das Feature vorhanden ist und nicht dort, wo es vorhanden war.

Die Invarianz zur lokalen Übersetzung kann eine sehr nützliche Eigenschaft sein, wenn wir uns mehr darum kümmern ob eine Funktion vorhanden ist, als genau dort, wo sie sich befindet.Wenn wir beispielsweise bestimmen, ob ein Bild ein Gesicht enthält, müssen wir die Position der Augen nicht pixelgenau kennen, sondern nur wissen, dass sich auf der linken Seite des Gesichts ein Auge und auf der rechten Seite ein Auge befindet Seite des Gesichts.

– Seite 342, Deep Learning, 2016.

Die Ausgabe aus der Multiplikation des Filters mit dem Eingabearray Einmal ist ein einzelner Wert. Da der Filter mehrmals auf das Eingabearray angewendet wird, ist das Ergebnis ein zweidimensionales Array von Ausgabewerten, die eine Filterung der Eingabe darstellen. Daher wird das zweidimensionale Ausgabearray aus dieser Operation als „Feature-Map“ bezeichnet.

Sobald eine Feature-Map erstellt wurde, können wir jeden Wert in der Feature-Map durch eine Nichtlinearität übergeben, z ReLU, ähnlich wie bei den Ausgängen einer vollständig verbundenen Schicht.

Beispiel eines Filters Auf eine zweidimensionale Eingabe angewendet, um eine Feature-Map zu erstellen

Wenn Sie aus einem digitalen Signalverarbeitungsfeld oder einem verwandten Bereich der Mathematik stammen, verstehen Sie die Faltungsoperation auf einer Matrix möglicherweise als etwas anderes . Insbesondere wird der Filter (Kernel) umgedreht, bevor er auf den Eingang angewendet wird. Technisch gesehen ist die Faltung, wie sie bei der Verwendung von Faltungs-Neuronalen Netzen beschrieben wird, tatsächlich eine „Kreuzkorrelation“. Dennoch wird sie beim tiefen Lernen als „Faltungs“ -Operation bezeichnet.

Viele Bibliotheken für maschinelles Lernen implementieren Kreuzkorrelation, nennen sie jedoch Faltung.

– Seite 333, Deep Learning, 2016.

Zusammenfassend haben wir eine Eingabe, z. B. ein Bild mit Pixelwerten, und wir haben einen Filter, der eine Reihe von Gewichten darstellt, und der Filter wird systematisch auf die Eingabedaten angewendet, um eine Feature-Map zu erstellen

Faltung in Computer Vision

Die Idee, die Faltungsoperation auf Bilddaten anzuwenden, ist nicht neu oder nur für Faltungsnetzwerke gültig. Dies ist eine übliche Technik, die in der Bildverarbeitung verwendet wird.

In der Vergangenheit wurden Filter von Experten für Bildverarbeitung von Hand entworfen, die dann auf ein Bild angewendet wurden, um eine Feature-Map oder eine Ausgabe aus der Anwendung des Filters zu erhalten Die Analyse des Bildes ist in gewisser Weise einfacher.

Im Folgenden finden Sie beispielsweise einen handgefertigten 3 × 3-Elementfilter zum Erkennen vertikaler Linien:

1
2
3

0,0, 1,0, 0,0
0,0, 1,0, 0,0
0.0, 1.0, 0.0

Anwenden dieses Filters auf eine Das Bild führt zu einer Feature-Map, die nur vertikale Linien enthält. Es ist ein vertikaler Liniendetektor.

Sie können dies an den Gewichtswerten im Filter erkennen. Alle Pixelwerte in der vertikalen Mittellinie werden positiv und alle auf beiden Seiten negativ aktiviert. Durch systematisches Ziehen dieses Filters über Pixelwerte in einem Bild können nur vertikale Linienpixel hervorgehoben werden.

Ein horizontaler Liniendetektor kann ebenfalls erstellt und auch auf das Bild angewendet werden, z. B.:

1
2
3

0,0, 0,0, 0,0
1,0, 1,0, 1,0
0,0, 0,0, 0,0

Kombinieren der Ergebnisse beider Filter, z Wenn Sie beide Feature-Maps kombinieren, werden alle Linien in einem Bild hervorgehoben.

Eine Reihe von zehn oder sogar Hunderten anderer kleiner Filter kann entworfen werden, um andere Features im Bild zu erkennen.

Die Innovation bei der Verwendung der Faltungsoperation in einem neuronalen Netzwerk besteht darin, dass die Werte des Filters Gewichte sind, die während des Trainings des Netzwerks gelernt werden müssen.

Das Netzwerk lernt, welche Arten von Merkmalen zu verwenden sind Auszug aus der Eingabe. Insbesondere beim Training unter stochastischem Gradientenabstieg muss das Netzwerk lernen, Merkmale aus dem Bild zu extrahieren, die den Verlust für die spezifische Aufgabe minimieren, für deren Lösung das Netzwerk trainiert wird, z. Extrahieren Sie Funktionen, die für die Klassifizierung von Bildern als Hunde oder Katzen am nützlichsten sind.

In diesem Zusammenhang können Sie sehen, dass dies eine leistungsstarke Idee ist.

Leistung erlernter Filter

Das Erlernen eines einzelnen Filters für eine maschinelle Lernaufgabe ist eine leistungsstarke Technik.

Faltungs-Neuronale Netze erreichen in der Praxis jedoch viel mehr

Mehrere Filter

Faltungs-Neuronale Netze lernen keinen einzigen Filter. Tatsächlich lernen sie für eine bestimmte Eingabe mehrere Merkmale parallel.

Beispielsweise lernt eine Faltungsschicht häufig 32 bis 512 Filter parallel für eine bestimmte Eingabe.

Dies gibt dem Modell 32 oder sogar 512 verschiedene Möglichkeiten zum Extrahieren von Merkmalen aus einer Eingabe oder viele verschiedene Möglichkeiten zum „Lernen des Sehens“ und nach dem Training viele verschiedene Möglichkeiten zum „Sehen“ der Eingabedaten.

Diese Vielfalt ermöglicht eine Spezialisierung, z nicht nur Linien, sondern auch die spezifischen Linien, die in Ihren spezifischen Trainingsdaten angezeigt werden.

Mehrere Kanäle

Farbbilder haben mehrere Kanäle, normalerweise einen für jeden Farbkanal, z. B. Rot, Grün, und blau.

Aus Datenperspektive bedeutet dies, dass ein einzelnes Bild, das als Eingabe für das Modell bereitgestellt wird, tatsächlich drei Bilder sind.

Ein Filter muss immer dieselbe Nummer haben von Kanälen als Eingang, oft als „Tiefe“ bezeichnet. Wenn ein Eingabebild 3 Kanäle hat (z. B. eine Tiefe von 3), muss ein auf dieses Bild angewendeter Filter auch 3 Kanäle haben (z. B. eine Tiefe von 3). In diesem Fall wäre ein 3 × 3-Filter tatsächlich 3 × 3 × 3 oder für Zeilen, Spalten und Tiefe. Unabhängig von der Tiefe der Eingabe und der Tiefe des Filters wird der Filter unter Verwendung einer Punktproduktoperation, die zu einem einzelnen Wert führt, auf die Eingabe angewendet.

Dies bedeutet, dass, wenn eine Faltungsschicht 32 Filter hat, Diese 32 Filter sind nicht nur zweidimensional für die zweidimensionale Bildeingabe, sondern auch dreidimensional und haben spezifische Filtergewichte für jeden der drei Kanäle. Jeder Filter führt jedoch zu einer einzelnen Feature-Map. Dies bedeutet, dass die Tiefe der Ausgabe beim Anwenden der Faltungsschicht mit 32 Filtern 32 für die 32 erstellten Feature-Maps beträgt.

Mehrere Schichten

Faltungsschichten werden nicht nur auf Eingabedaten angewendet , z.B Rohpixelwerte, können aber auch auf die Ausgabe anderer Ebenen angewendet werden.

Das Stapeln von Faltungsschichten ermöglicht eine hierarchische Zerlegung der Eingabe.

Berücksichtigen Sie die Filter, die funktionieren Direkt auf den Rohpixelwerten wird gelernt, Merkmale auf niedriger Ebene wie Linien zu extrahieren.

Die Filter, die auf der Ausgabe der ersten Zeilenebenen arbeiten, können Merkmale extrahieren, die Kombinationen von Merkmalen auf niedrigerer Ebene sind. B. Features, die mehrere Linien umfassen, um Formen auszudrücken.

Dieser Prozess wird fortgesetzt, bis sehr tiefe Schichten Gesichter, Tiere, Häuser usw. extrahieren.

Genau das sehen wir in der Praxis. Die Abstraktion von Features zu höheren und höheren Ordnungen, wenn die Tiefe des Netzwerks zunimmt.

Arbeitsbeispiel für Faltungsschichten

Die Keras-Deep-Learning-Bibliothek bietet eine Reihe von Faltungsschichten.

Wir können die Faltungsoperation besser verstehen, indem wir uns einige Beispiele mit erfundenen Daten und handgefertigten Filtern ansehen.

In diesem Abschnitt betrachten wir sowohl eine eindimensionale Faltungsschicht als auch Ein Beispiel für eine zweidimensionale Faltungsschicht, um sowohl die Faltungsoperation zu konkretisieren als auch ein Beispiel für die Verwendung der Keras-Schichten zu liefern.

Beispiel für eine 1D-Faltungsschicht

Wir können eine Eins definieren. dimensionale Eingabe mit acht Elementen, alle mit dem Wert 0.0, mit einer Erhebung von zwei Elementen in der Mitte mit den Werten 1.0.

1

Die Eingabe in Keras muss für eine 1D-Faltungsschicht dreidimensional sein.

Die erste Dimension bezieht sich auf jede Eingabeprobe. In diesem Fall haben wir nur eine Probe. Die zweite Dimension bezieht sich auf die Länge jeder Probe; In diesem Fall beträgt die Länge acht. Die dritte Dimension bezieht sich auf die Anzahl der Kanäle in jeder Probe; In diesem Fall haben wir nur einen einzigen Kanal.

Daher ist die Form des Eingabearrays.

1
2
3

# Eingabe definieren data
data = asarray ()
data = data.reshape (1, 8, 1)

Wir definieren ein Modell, das erwartet, dass Eingabebeispiele die Form haben.

Das Modell verfügt über einen einzelnen Filter mit die Form von 3 oder drei Elementen breit. Keras bezeichnet die Form des Filters als kernel_size.

1
2
3

# create model
model = Sequential ()
model.add (Conv1D (1, 3, input_shape = (8, 1)))

Standardmäßig werden die Filter in einer Faltungsschicht initialisiert mit zufälligen Gewichten. In diesem erfundenen Beispiel werden die Gewichte für den einzelnen Filter manuell angegeben. Wir definieren einen Filter, der Unebenheiten erkennen kann, dh einen hohen Eingabewert, der von niedrigen Eingabewerten umgeben ist, wie wir in unserem Eingabebeispiel definiert haben.

Der Filter mit drei Elementen, den wir definieren, sieht wie folgt aus:

1

Die Faltungsschicht hat auch einen Bias-Eingabewert, der auch ein Gewicht erfordert, das wir auf Null setzen.

Daher Wir können die Gewichte unserer eindimensionalen Faltungsschicht zwingen, unseren handgefertigten Filter wie folgt zu verwenden:

Die Gewichte müssen in angegeben werden dreidimensionale Struktur in Bezug auf Zeilen, Spalten und Kanäle. Der Filter besteht aus einer einzelnen Zeile, drei Spalten und einem Kanal.

Wir können die Gewichte abrufen und bestätigen, dass sie korrekt eingestellt wurden.

1
2

# bestätigen, dass sie gespeichert wurden
print (model.get_weights ())

Schließlich können wir den einzelnen Filter auf unsere Eingabedaten anwenden.

Dies können wir erreichen, indem wir die Funktion pred () für das Modell aufrufen. Dadurch wird die Feature-Map direkt zurückgegeben: Dies ist die Ausgabe der systematischen Anwendung des Filters auf die Eingabesequenz.

1
2
3

# Filter auf Eingabedaten anwenden
yhat = model.predict (data)
print (yhat )

Das ganze Beispiel ist das vollständige Beispiel

Wenn Sie das Beispiel zuerst ausführen, werden die Gewichte des Netzwerks gedruckt. Dies ist die Bestätigung, dass unser handgefertigter Filter wie erwartet im Modell festgelegt wurde.

Als Nächstes wird der Filter auf das Eingabemuster angewendet und die Feature-Map berechnet und angezeigt. An den Werten der Feature-Map können wir erkennen, dass die Beule korrekt erkannt wurde.

1
2
3
4
5
6
7
8
9
10

],
],
], dtype = float32), array (, dtype = float32)]
]]

Schauen wir uns genauer an, was hier passiert ist.

Denken Sie daran, dass es sich bei der Eingabe um eine handelt Acht-Elemente-Vektor mit den Werten :.

Zuerst wurde der Drei-Elemente-Filter auf die ersten drei Eingänge des In angewendet durch Berechnen des Punktprodukts (Operator „.“), was zu einem einzelnen Ausgabewert in der Feature-Map von Null führte. >

1
2

von numpy import asarray
print (asarray (). dot (asarray ()))

In unserem manuellen Beispiel lautet dies wie folgt:

1

. = 0

Der Filter wurde dann entlang eines Elements von verschoben die Eingabesequenz und der Vorgang wurden wiederholt; Insbesondere wurde der gleiche Filter auf die Eingabesequenz bei den Indizes 1, 2 und 3 angewendet, was auch zu einer Nullausgabe in der Feature-Map führte.

1

. = 0

Wir sind systematisch, also wieder die Der Filter wird entlang eines weiteren Elements der Eingabe verschoben und an den Indizes 2, 3 und 4 auf die Eingabe angewendet. Diesmal ist die Ausgabe ein Wert von eins in der Feature-Map. Wir haben die Funktion erkannt und entsprechend aktiviert.

1

. = 1

Der Vorgang wird wiederholt, bis wir den gesamten berechnet haben Feature-Map.

1

Beachten Sie, dass die Feature-Map sechs Elemente enthält, während unsere Eingabe acht Elemente enthält. Dies ist ein Artefakt davon, wie der Filter auf die Eingabesequenz angewendet wurde. Es gibt andere Möglichkeiten, den Filter auf die Eingabesequenz anzuwenden, die die Form der resultierenden Feature-Map ändert, z. B. das Auffüllen. Diese Methoden werden in diesem Beitrag jedoch nicht behandelt.

Sie können sich das anders vorstellen Eingaben können wir das Merkmal mit mehr oder weniger Intensität und mit unterschiedlichen Gewichten im Filter erkennen, dass wir unterschiedliche Merkmale in der Eingabesequenz erkennen würden.

Beispiel für eine 2D-Faltungsschicht

Wir können das Beispiel für die Höckererkennung im vorherigen Abschnitt auf einen vertikalen Liniendetektor in einem zweidimensionalen Bild erweitern.

Wieder In diesem Fall können wir die Eingabe auf ein quadratisches 8 × 8-Pixel-Eingabebild mit einem einzelnen Kanal (z. B. Graustufen) mit einer einzelnen vertikalen Linie in der Mitte beschränken.

1
2
3
4
5
6
7
8

Die Eingabe in eine Conv2D-Ebene muss vierdimensional sein.

Die erste Dimension definiert die Samples. In diesem Fall gibt es nur eine einzige Stichprobe. Die zweite Dimension definiert die Anzahl der Zeilen. in diesem Fall acht. Die dritte Dimension definiert die Anzahl der Spalten, in diesem Fall wiederum acht, und schließlich die Anzahl der Kanäle, in diesem Fall eins.

Daher muss die Eingabe die vierdimensionale Form haben oder in dieser case.

Wir definieren die Conv2D mit einem einzelnen Filter, wie wir es im vorherigen Abschnitt mit dem Conv1D-Beispiel getan haben.

Der Filter ist zweidimensional und quadratisch mit der Form 3 × 3. Die Ebene erwartet, dass Eingabebeispiele die Form oder haben.

1
2
3

# create model
model = Sequential ()
model.add (Conv2D (1, (3,3), input_shape = (8,) 8, 1)))

Wir definieren eine Vertikale Zeilendetektorfilter zum Erkennen der einzelnen vertikalen Linie in unseren Eingabedaten.

Der Filter sieht wie folgt aus:

1
2
3

0, 1, 0
0, 1, 0
0, 1, 0

Wir können dies wie folgt implementieren:

Schließlich werden wir Wenden Sie den Filter auf das Eingabebild an. Dies führt zu einer Feature-Map, von der erwartet wird, dass die vertikale Linie im Eingabebild erkannt wird.

1
2
# Filter auf Eingabedaten anwenden
yhat = model.predict (data)

Die Form der Feature-Map-Ausgabe ist mit der Form vierdimensional. Wir werden eine einzelne Charge durchführen und wir haben einen einzelnen Filter (einen Filter und einen Eingangskanal), daher ist die Ausgangsform. Wir können den Inhalt der Einzel-Feature-Map wie folgt hübsch drucken:

1
2
3

für r im Bereich (yhat.shape):
# drucke jede Spalte in der Zeile
print (für c im Bereich () yhat.shape)])

All dies zusammenbinden Das vollständige Beispiel ist unten aufgeführt.

Wenn Sie das Beispiel zuerst ausführen, wird bestätigt, dass der handgefertigte Filter in den Ebenengewichten korrekt definiert wurde.

Als Nächstes wird die berechnete Feature-Map gedruckt. An der Skala der Zahlen können wir erkennen, dass der Filter tatsächlich die einzelne vertikale Linie mit starker Aktivierung in der Mitte der Feature-Map erkannt hat.

Schauen wir uns genauer an, was berechnet wurde. P. >

Zuerst wurde der Filter auf die obere linke Ecke des Bildes oder auf ein Bildfeld mit 3 × 3 Elementen angewendet. Technisch gesehen ist das Bildfeld dreidimensional mit einem einzelnen Kanal, und der Filter hat die gleichen Abmessungen. Wir können dies nicht in NumPy mit der Funktion dot () implementieren. Stattdessen müssen wir die Funktion tensordot () verwenden, damit wir über alle Dimensionen hinweg angemessen summieren können, zum Beispiel:

Diese Berechnung führt zu einem einzelnen Ausgabewert von 0,0, z. B. wurde das Merkmal nicht erkannt. Dies gibt uns das erste Element in der oberen linken Ecke der Feature-Map.

Manuell wäre dies wie folgt:

1
2
3

0, 1, 0 0, 0, 0
0, 1, 0. 0, 0, 0 = 0
0, 1, 0 0, 0, 0

Der Filter wird entlang einer Spalte nach links verschoben und der Vorgang wiederholt. Auch hier wird die Funktion nicht erkannt.

1
2
3

0, 1, 0 0, 0, 1
0, 1, 0. 0, 0, 1 = 0
0, 1, 0 0, 0, 1

Noch ein Schritt nach links in die nächste Spalte, und die Funktion wird zum ersten Mal erkannt, was zu einer starken Aktivierung führt.

1
2
3

0, 1, 0 0, 1, 1
0, 1, 0. 0, 1, 1 = 3
0, 1, 0 0, 1, 1

Dieser Vorgang wird wiederholt, bis die Kante des Filters an der Kante oder der letzten Spalte des Eingabebilds anliegt. Dies gibt das letzte Element in der ersten vollständigen Zeile der Feature-Map an.

1

Der Filter bewegt sich dann eine Zeile nach unten und zurück zur ersten Spalte und zum Der Prozess wird von links nach rechts verknüpft, um die zweite Zeile der Feature-Map zu erhalten. Und weiter, bis der untere Rand des Filters auf der unteren oder letzten Zeile des Eingabebilds liegt.

Wie im vorherigen Abschnitt können wir auch hier sehen, dass die Feature-Map eine 6 × 6-Matrix ist, die kleiner ist als das 8 × 8-Eingabebild, da der Filter nur eingeschränkt auf das Eingabebild angewendet werden kann.

Weiterführende Literatur

In diesem Abschnitt finden Sie weitere Ressourcen zu diesem Thema Ich möchte tiefer gehen.

Beiträge

  • Crashkurs in Faltungs-Neuronalen Netzen für maschinelles Lernen

Bücher

  • Kapitel 9: Faltungsnetzwerke, Deep Learning, 2016.
  • Kapitel 5: Deep Learning für Computer Vision, Deep Learning mit Python, 2017.

API

  • Keras Convolutional Layers API
  • numpy.asarray API

Zusammenfassung

In diesem Lernprogramm haben Sie festgestellt Funktionsweise von Faltungen im neuronalen Faltungsnetzwerk.

Insbesondere haben Sie Folgendes gelernt:

  • Faltungsneuronale Netze wenden einen Filter auf eine Eingabe an um eine Feature-Map zu erstellen, die das Vorhandensein erkannter Features in der Eingabe zusammenfasst.
  • Filter können handgefertigt werden, z. B. Zeilendetektoren. Die Innovation von Faltungs-Neuronalen Netzen besteht jedoch darin, die Filter während des Trainings im Kontext eines bestimmten Vorhersageproblems zu lernen.
  • Berechnen Die Feature-Map für ein- und zweidimensionale Faltungsschichten in einem neuronalen Faltungsnetzwerk.

Haben Sie Fragen?
Stellen Sie Ihre Fragen in den Kommentaren unten, und ich werde meine Fragen beantworten am besten zu beantworten.

Entwickeln Sie heute Deep Learning-Modelle für Vision!

Entwickeln Sie Ihre eigenen Visionsmodelle in Minuten

… mit nur wenigen Zeilen Python-Code

Entdecken Sie, wie in meinem neuen E-Book:
Deep Learning für Computer Vision

Es bietet Tutorials zum Selbststudium zu folgenden Themen:
Klassifizierung, Objekterkennung (yolo und rcnn), Gesichtserkennung (vggface und facenet) , Datenaufbereitung und vieles mehr …

Bringen Sie endlich Deep Learning in Ihre Vision-Projekte

Überspringen Sie die Akademiker. Nur Ergebnisse.

Sehen, was drin ist

Tweet Share Share

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.