Eine kurze Anleitung zum Convolutional Neural Network(CNN)

EINLEITUNG:

 Manan Parekh
Manan Parekh

Folgen

Jul 16, 2019 · 5 min lesen

Convolutional Neural Network (CNN oder ConvNet) ist eine Klasse von tiefen neuronalen Netzen, die hauptsächlich zur Bilderkennung, Bildklassifizierung, Objekterkennung usw. verwendet wird.

Die Fortschritte in der Computer Vision mit Deep Learning wurden mit der Zeit konstruiert und perfektioniert, hauptsächlich über einen bestimmten Algorithmus — ein Convolutional Neural Network.

Google verwendet es für die Fotosuche, Facebook für ihre automatischen Tagging-Algorithmen, Amazon für ihre Produktempfehlungen und die Liste geht weiter und weiter …

Mit Hilfe von CNN können Sie viele coole Sachen machen, wie Ich habe ein handgeschriebenes Ziffernerkennungsmodell erstellt, das die Ziffer im Bild mit 98 vorhersagt.82% genauigkeit.

Bonus:

Code -> https://github.com/UPPERCASEGUY/CNN-implementation

Sie können auch Ihre coolen Modelle mit wenig Hilfe in Konzepten in Bezug auf CNN erstellen. Dieser Blog wird anfangen, Ihre Konzepte über CNNs zu entwickeln, und Sie können loslegen!

CONVOLUTIONAL NEURAL NETWORKS:

Bildklassifizierung ist die Aufgabe, ein Eingabebild zu nehmen und eine Klasse oder eine Wahrscheinlichkeit von Klassen auszugeben, die das Bild am besten beschreibt. In CNN nehmen wir ein Bild als Eingabe, legen Wert auf seine verschiedenen Aspekte / Merkmale im Bild und können uns voneinander unterscheiden. Die in CNN erforderliche Vorverarbeitung ist im Vergleich zu anderen Klassifizierungsalgorithmen viel geringer.

Eine klassische CNN Klassifizierung zwischen einem Hund und einer Katze

ARCHITEKTUR:

matrixdarstellung eines Bildes.

Computer können die Dinge nicht so sehen wie wir, für Computer ist das Bild nichts anderes als eine Matrix.

Ein CNN hat typischerweise drei Schichten: eine Faltungsschicht, eine Pooling-Schicht und eine vollständig verbundene Schicht.

Verschiedene Ebenen in einem CNN

Faltungsebene:

Ich bin mir ziemlich sicher, dass Sie in Ihrem Leben schon einmal auf das Wort ‚Faltung‘ gestoßen sind und hier ändert sich seine Bedeutung nicht. Ja! sie haben Recht, bei dieser Ebene geht es darum, Objekte übereinander zu falten. Die Faltungsschicht ist der Kernbaustein von CNN. Es trägt den Hauptteil der Rechenlast des Netzwerks.

Das Hauptziel der Faltung besteht darin, Merkmale wie Kanten, Farben und Ecken aus der Eingabe zu extrahieren. Wenn wir tiefer in das Netzwerk eindringen, beginnt das Netzwerk, komplexere Merkmale wie Formen, Ziffern und Gesichtsteile zu identifizieren.

Faltung eines 5x5x1-Bildes mit einem 3x3x1-Kernel, um ein 3x3x1-Faltungsmerkmal zu erhalten

Diese Ebene führt ein Punktprodukt zwischen zwei Matrizen aus, wobei eine Matrix (bekannt als Filter / Kernel) die Menge der erlernbaren Parameter und die andere Matrix der eingeschränkte Teil des Bildes ist.

Wenn das Bild RGB ist, hat der Filter eine geringere Höhe und Breite als das Bild, aber die gleiche Tiefe (Höhe x Breite x 3) wie das Bild.

Für RGB-Bilder kann der faltende Teil wie folgt visualisiert werden:

Faltungsoperation auf einer MxNx3-Bildmatrix mit einem 3x3x3-Kernel

Am Ende des Faltungsvorgangs haben wir eine vorgestellte Matrix, die geringere Parameter (Abmessungen) als das tatsächliche Bild sowie klarere Merkmale als das tatsächliche Bild aufweist. So, jetzt werden wir von nun an mit unserer vorgestellten Matrix arbeiten.

Pooling-Ebene:

Diese Schicht dient ausschließlich dazu, die zur Verarbeitung der Daten erforderliche Rechenleistung zu verringern. Dies geschieht, indem die Abmessungen der vorgestellten Matrix noch weiter verringert werden. In dieser Schicht versuchen wir, die dominanten Merkmale aus einer begrenzten Menge von Nachbarschaft zu extrahieren. Lassen Sie es uns an einem Beispiel deutlich machen.

pooling layer

Die orangefarbene Matrix ist unsere vorgestellte Matrix, die braune ist ein Pooling-Kernel und wir erhalten unsere blaue Matrix als Ausgabe, nachdem das Pooling abgeschlossen ist. Hier nehmen wir also das Maximum unter allen Zahlen, die sich in der Pooling-Region befinden, und verschieben die Pooling-Region jedes Mal, um eine andere Nachbarschaft der Matrix zu verarbeiten.

Es gibt zwei Arten von Pooling-Techniken: AVERAGE-Pooling und MAX- Pooling.

Der Unterschied zwischen diesen beiden ist, dass wir beim AVERAGE-Pooling den Durchschnitt aller Werte der Pooling-Region und beim MAX-Pooling nur das Maximum unter allen Werten innerhalb der Pooling-Region nehmen.

Nach dem Pooling der Ebene haben wir also eine Matrix, die die Hauptmerkmale des Bildes enthält, und diese Matrix hat noch geringere Abmessungen, was im nächsten Schritt sehr hilfreich sein wird.

Vollständig verbundene Ebene:

Bis jetzt haben wir nichts über die Klassifizierung verschiedener Bilder getan, was wir getan haben, ist einige Merkmale in einem Bild hervorgehoben und reduziert die Abmessungen des Bildes drastisch.

Vollständig verbundene Ebene innerhalb von CNN

Von nun an werden wir den Klassifizierungsprozess durchführen.

Nachdem wir unser Eingabebild in eine geeignete Form für unsere mehrstufige, vollständig verbundene Architektur konvertiert haben, werden wir das Bild in einen Spaltenvektor reduzieren. Die abgeflachte Ausgabe wird einem Feed-Forward-neuronalen Netzwerk zugeführt und Backpropagation auf jede Iteration des Trainings angewendet. Über eine Reihe von Epochen hinweg kann das Modell dominierende und bestimmte Low-Level-Merkmale in Bildern unterscheiden und klassifizieren.

ZUSAMMENFASSUNG:

  1. Geben Sie das Eingabebild in die Faltungsebene ein.
  2. Nehmen Sie Faltung mit vorgestellten Kernel / Filter.
  3. Wenden Sie die Pooling-Ebene an, um die Abmessungen zu reduzieren.
  4. Fügen Sie diese Ebenen mehrmals hinzu.
  5. Reduzieren Sie den Ausgang und die Einspeisung in eine vollständig verbundene Ebene.
  6. Trainiere nun das Modell mit Backpropagation mittels logistischer Regression.

Und Sie haben Ihr Convolutional Neural Network erstellt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.