Course
Eine Einführung in Convolutional Neural Networks (CNNs)
Was ist ein Convolutional Neural Network (CNN)?
Ein Convolutional Neural Network (CNN), auch bekannt als ConvNet, ist ein spezieller Typ von Deep-Learning-Algorithmus, der hauptsächlich für Aufgaben entwickelt wurde, die eine Objekterkennung erfordern, wie zum Beispiel die Klassifizierung, Erkennung und Segmentierung von Bildern. CNNs werden in einer Vielzahl von praktischen Szenarien eingesetzt, z. B. in autonomen Fahrzeugen, Sicherheitskamerasystemen und anderen.
KI-Anwendungen entwickeln
Lerne, wie man KI-Anwendungen mit der OpenAI API erstellt.
Die Bedeutung von CNNs
Es gibt mehrere Gründe, warum CNNs in der modernen Welt wichtig sind, die im Folgenden erläutert werden:
- CNNs unterscheiden sich von klassischen Algorithmen des maschinellen Lernens wie SVMs und Entscheidungsbäumen durch ihre Fähigkeit, selbstständig Merkmale in großem Umfang zu extrahieren, wodurch die Notwendigkeit der manuellen Merkmalserstellung umgangen und die Effizienz gesteigert wird.
- Die Faltungsschichten verleihen den CNNs ihre translationsinvarianten Eigenschaften, die sie in die Lage versetzen, Muster und Merkmale aus den Daten zu erkennen und zu extrahieren, unabhängig von Position, Orientierung, Maßstab oder Translation.
- Eine Reihe von vortrainierten CNN-Architekturen, darunter VGG-16, ResNet50, Inceptionv3 und EfficientNet, haben eine erstklassige Leistung gezeigt. Diese Modelle können mit relativ wenigen Daten an neue Aufgaben angepasst werden, und zwar durch einen Prozess, der als Feinabstimmung bezeichnet wird.
- Neben den Aufgaben der Bildklassifizierung sind CNNs vielseitig und können in einer Reihe von anderen Bereichen eingesetzt werden, z. B. bei der Verarbeitung natürlicher Sprache, der Zeitreihenanalyse und der Spracherkennung.
Inspiration hinter CNN und Parallelen zum menschlichen Sehsystem
Faltungsneuronale Netze wurden von der schichtweisen Architektur des menschlichen visuellen Kortex inspiriert, und im Folgenden werden einige wichtige Ähnlichkeiten und Unterschiede beschrieben:
Veranschaulichung der Übereinstimmung zwischen den Bereichen, die mit dem primären visuellen Kortex verbunden sind, und den Schichten in einem neuronalen Faltungsnetzwerk(Quelle)
- Hierarchische Architektur: Sowohl CNNs als auch der visuelle Kortex haben eine hierarchische Struktur, wobei einfache Merkmale in frühen Schichten extrahiert und komplexere Merkmale in tieferen Schichten aufgebaut werden. Dies ermöglicht immer ausgefeiltere Darstellungen von visuellen Eingaben.
- Lokale Konnektivität: Neuronen im visuellen Kortex verbinden sich nur mit einem lokalen Bereich des Inputs, nicht mit dem gesamten Gesichtsfeld. Ebenso sind die Neuronen in einer CNN-Schicht durch die Faltungsoperation nur mit einer lokalen Region des Eingabevolumens verbunden. Diese lokale Vernetzung ermöglicht Effizienz.
- Translationsinvarianz: Die Neuronen des visuellen Kortex können Merkmale unabhängig von ihrer Position im Gesichtsfeld erkennen. Pooling-Schichten in einem CNN sorgen für einen gewissen Grad an Translationsinvarianz, indem sie lokale Merkmale zusammenfassen.
- Mehrere Merkmalskarten: Auf jeder Stufe der visuellen Verarbeitung werden viele verschiedene Merkmalskarten extrahiert. CNNs imitieren dies durch mehrere Filterkarten in jeder Faltungsschicht.
- Nicht-Linearität: Neuronen im visuellen Kortex zeigen nichtlineare Reaktionseigenschaften. CNNs erreichen Nichtlinearität durch Aktivierungsfunktionen wie ReLU, die nach jeder Faltung angewendet werden.
CNNs ahmen das menschliche Sehsystem nach, sind aber einfacher, da ihnen die komplexen Rückkopplungsmechanismen fehlen und sie eher auf überwachtes als auf unbeaufsichtigtes Lernen setzen, was trotz dieser Unterschiede zu Fortschritten in der Computer Vision führt.
Die wichtigsten Komponenten eines CNN
Das neuronale Faltungsnetzwerk besteht aus vier Hauptteilen.
Aber wie lernen CNNs mit diesen Teilen?
Sie helfen den CNNs zu imitieren, wie das menschliche Gehirn arbeitet, um Muster und Merkmale in Bildern zu erkennen:
- Faltungsschichten
- Gleichgerichtete Lineareinheit (kurz: ReLU)
- Pooling-Schichten
- Vollständig verbundene Schichten
In diesem Abschnitt wird die Definition jeder dieser Komponenten anhand des folgenden Beispiels der Klassifizierung einer handschriftlichen Ziffer erläutert.
Architektur der CNNs für die Ziffernerkennung(Quelle)
Faltungsschichten
Dies ist der erste Baustein eines CNN. Wie der Name schon sagt, ist die wichtigste mathematische Aufgabe die Faltung, d.h. die Anwendung einer Schiebefensterfunktion auf eine Matrix von Pixeln, die ein Bild darstellen. Die gleitende Funktion, die auf die Matrix angewendet wird, wird als Kernel oder Filter bezeichnet, und beide können austauschbar verwendet werden.
In der Faltungsschicht werden mehrere gleich große Filter angewendet, und jeder Filter wird verwendet, um ein bestimmtes Muster aus dem Bild zu erkennen, z. B. die Krümmung der Ziffern, die Kanten, die gesamte Form der Ziffern und mehr.
Vereinfacht gesagt, verwenden wir in der Faltungsschicht kleine Gitter (Filter oder Kernel genannt), die sich über das Bild bewegen. Jedes kleine Raster ist wie eine Mini-Lupe, die nach bestimmten Mustern im Foto sucht, wie Linien, Kurven oder Formen. Wenn er sich über das Foto bewegt, erstellt er ein neues Raster, das hervorhebt, wo er diese Muster gefunden hat.
Ein Filter kann zum Beispiel gut gerade Linien finden, ein anderer Kurven und so weiter. Durch die Verwendung verschiedener Filter kann sich das CNN einen guten Überblick über die verschiedenen Muster verschaffen, die das Bild ausmachen.
Betrachten wir dieses 32x32-Graustufenbild einer handgeschriebenen Ziffer. Die Werte in der Matrix werden zur Veranschaulichung angegeben.
Illustration des Eingangsbildes und seiner Pixeldarstellung
Betrachten wir auch den Kernel, der für die Faltung verwendet wird. Es ist eine Matrix mit einer Dimension von 3x3. Die Gewichte der einzelnen Elemente des Kerns werden in dem Raster dargestellt. Nullgewichte werden in den schwarzen Gittern und Einsen in den weißen Gittern dargestellt.
Müssen wir diese Gewichte manuell finden?
In der Praxis werden die Gewichte der Kernel während des Trainingsprozesses des neuronalen Netzes festgelegt.
Mit diesen beiden Matrizen können wir die Faltungsoperation durchführen, indem wir das Punktprodukt anwenden und wie folgt vorgehen:
- Wende die Kernelmatrix von der linken oberen Ecke nach rechts an.
- Führe eine elementweise Multiplikation durch.
- Addiere die Werte der Produkte.
- Der resultierende Wert entspricht dem ersten Wert (obere linke Ecke) in der gefalteten Matrix.
- Verschiebe den Kernel in Bezug auf die Größe des Schiebefensters nach unten.
- Wiederhole die Schritte 1 bis 5, bis die Bildmatrix vollständig abgedeckt ist.
Die Dimension der gefalteten Matrix hängt von der Größe des Schiebefensters ab. Je höher das Schiebefenster, desto kleiner die Dimension.
Anwendung der Faltungsaufgabe mit einer Schrittweite von 1 und einem 3x3-Kernel
In der Literatur wird der Kernel auch als Merkmalsdetektor bezeichnet, weil die Gewichte fein abgestimmt werden können, um bestimmte Merkmale im Eingangsbild zu erkennen.
Zum Beispiel:
- Der Kernel zur Mittelung benachbarter Pixel kann verwendet werden, um das Eingangsbild unscharf zu machen.
- Die Subtraktion benachbarter Kerne wird zur Kantenerkennung verwendet.
Je mehr Faltungsschichten das Netz hat, desto besser kann es abstraktere Merkmale erkennen.
Aktivierungsfunktion
Nach jeder Faltungsoperation wird eine ReLU-Aktivierungsfunktion angewendet. Diese Funktion hilft dem Netz, nicht-lineare Beziehungen zwischen den Merkmalen im Bild zu erlernen, und macht das Netz dadurch robuster für die Erkennung verschiedener Muster. Es hilft auch, die Probleme mit dem verschwindenden Gradienten zu entschärfen.
Poolingschicht
Das Ziel der Pooling-Schicht ist es, die wichtigsten Merkmale aus der gefalteten Matrix herauszufiltern. Dies geschieht durch die Anwendung einiger Aggregationsoperationen, die die Dimension der Merkmalskarte (gefaltete Matrix) reduzieren und damit den Speicherbedarf beim Training des Netzes verringern. Das Pooling ist auch wichtig, um die Überanpassung abzuschwächen.
Die häufigsten Aggregationsfunktionen, die angewendet werden können, sind:
- Max pooling, das ist der maximale Wert der Feature Map
- Summenpooling entspricht der Summe aller Werte der Feature Map
- Das durchschnittliche Pooling ist der Durchschnitt aller Werte.
Im Folgenden findest du eine Illustration zu jedem der vorherigen Beispiele:
Anwendung von Max-Pooling mit einer Schrittweite von 2 unter Verwendung eines 2x2-Filters
Außerdem wird die Dimension der Merkmalskarte kleiner, wenn die Pooling-Funktion angewendet wird.
Die letzte Pooling-Schicht flacht ihre Merkmalskarte ab, damit sie von der voll vernetzten Schicht verarbeitet werden kann.
Vollständig verbundene Schichten
Diese Schichten befinden sich in der letzten Schicht des neuronalen Faltungsnetzwerks, und ihre Eingänge entsprechen der abgeflachten eindimensionalen Matrix, die von der letzten Pooling-Schicht erzeugt wurde. Für die Nichtlinearität werden ReLU-Aktivierungsfunktionen auf sie angewendet.
Schließlich wird eine Softmax-Vorhersageschicht verwendet, um Wahrscheinlichkeitswerte für jedes der möglichen Output-Labels zu generieren, und das endgültige Label, das vorhergesagt wird, ist das mit dem höchsten Wahrscheinlichkeitswert.
Überanpassung und Regularisierung in CNNs
Überanpassung ist eine häufige Herausforderung bei Machine-Learning-Modellen und CNN Deep-Learning-Projekten. Das passiert, wenn das Modell die Trainingsdaten zu gut lernt ("auswendig lernen"), einschließlich der Störungen und Ausreißer. Ein solches Lernen führt zu einem Modell, das bei den Trainingsdaten gut abschneidet, aber bei neuen, ungesehenen Daten schlecht.
Dies kann beobachtet werden, wenn die Leistung bei den Trainingsdaten im Vergleich zur Leistung bei den Validierungs- oder Testdaten zu niedrig ist:
Underfitting Vs. Überanpassung
Deep Learning-Modelle, insbesondere Convolutional Neural Networks (CNNs), sind aufgrund ihrer hohen Komplexität und ihrer Fähigkeit, detaillierte Muster in großen Datenmengen zu lernen, besonders anfällig für Overfitting.
Um die Überanpassung von CNNs zu verringern, können verschiedene Regularisierungstechniken angewendet werden, von denen einige im Folgenden vorgestellt werden:
7 Strategien zur Verringerung der Überanpassung in CNNs
- Aussteiger: Dabei werden einige Neuronen während des Trainingsprozesses nach dem Zufallsprinzip ausgeschaltet, so dass die verbleibenden Neuronen gezwungen sind, neue Merkmale aus den Eingabedaten zu lernen.
- Batch-Normalisierung: Die Überanpassung wird in gewissem Maße reduziert, indem die Eingabeschicht durch Anpassung und Skalierung der Aktivierungen normalisiert wird. Dieser Ansatz wird auch verwendet, um den Trainingsprozess zu beschleunigen und zu stabilisieren.
- Pooling Layers: Damit können die räumlichen Dimensionen des Eingangsbildes reduziert werden, um dem Modell eine abstrahierte Form der Darstellung zu geben und so die Gefahr einer Überanpassung zu verringern.
- Frühes Aufhören: Dabei wird die Leistung des Modells auf den Validierungsdaten während des Trainingsprozesses ständig überwacht und das Training abgebrochen, wenn sich der Validierungsfehler nicht mehr verbessert.
- Geräuschinjektion: Dieser Prozess besteht darin, während des Trainings Rauschen zu den Eingängen oder den Ausgängen der versteckten Schichten hinzuzufügen, um das Modell robuster zu machen und eine schwache Generalisierung zu verhindern.
- L1- und L2-Normalisierungen: Sowohl L1 als auch L2 werden verwendet, um die Verlustfunktion mit einem Malus zu versehen, der auf der Größe der Gewichte basiert. L1 ermutigt die Gewichte, sparsam zu sein, was zu einer besseren Merkmalsauswahl führt. Auf der anderen Seite fördert L2 (auch Gewichtsverfall genannt), dass die Gewichte klein sind, damit sie keinen zu großen Einfluss auf die Vorhersagen haben.
- Datenerweiterung: Dabei wird die Größe und Vielfalt des Trainingsdatensatzes künstlich erhöht, indem zufällige Transformationen wie Drehen, Skalieren, Spiegeln oder Zuschneiden auf die eingegebenen Bilder angewendet werden.
Praktische Anwendungen von CNNs
Convolutional Neural Networks haben das Feld der Computer Vision revolutioniert und zu erheblichen Fortschritten in vielen realen Anwendungen geführt. Im Folgenden findest du einige Beispiele, wie sie angewendet werden.
Einige praktische Anwendungen von CNNs
- Bildklassifizierung: Faltungsneuronale Netze werden für die Bildkategorisierung verwendet, bei der die Bilder vordefinierten Kategorien zugeordnet werden. Ein Anwendungsfall für ein solches Szenario ist die automatische Organisation von Fotos in sozialen Medienplattformen.
- Objekterkennung: CNNs sind in der Lage, mehrere Objekte in einem Bild zu erkennen und zu lokalisieren. Diese Fähigkeit ist in vielen Szenarien des Regalscannens im Einzelhandel entscheidend, um nicht vorrätige Artikel zu identifizieren.
- Gesichtserkennung: Dies ist auch einer der Hauptanwendungsbereiche von CNNs. Diese Technologie kann zum Beispiel in Sicherheitssysteme integriert werden, um den Zugang anhand von Gesichtsmerkmalen effizient zu kontrollieren.
In unserem Convolutional Neural Networks (CNN) with TensorFlow Tutorial lernst du, wie man CNNs in Python mit dem Tensorflow Framework 2 konstruiert und implementiert.
Deep Learning Frameworks für CNNs
Das rasante Wachstum von Deep Learning ist vor allem auf leistungsstarke Frameworks wie Tensorflow, Pytorch und Keras zurückzuführen, die das Training von faltigen neuronalen Netzen und anderen Deep-Learning-Modellen erleichtern.
Lass uns einen kurzen Überblick über jedes Framework geben.
Tensorflow, Keras und Pytorch-Logos
Tensorflow
TensorFlow ist ein Open-Source Deep Learning Framework, das von Google entwickelt und 2015 veröffentlicht wurde. Es bietet eine Reihe von Tools für die Entwicklung und den Einsatz von maschinellem Lernen. Unsere Einführung in tiefe neuronale Netze bietet einen vollständigen Leitfaden zum Verständnis tiefer neuronaler Netze und ihrer Bedeutung in der modernen Deep Learning-Welt der künstlichen Intelligenz, zusammen mit realen Implementierungen in Tensorflow.
Keras
Keras ist ein High-Level-Framework für neuronale Netze in Python, das schnelles Experimentieren und Entwickeln ermöglicht. Es ist Open-Source und kann in anderen Frameworks wie TensorFlow, CNTK und Theano verwendet werden. In unserem Kurs Bildverarbeitung mit Keras in Python lernst du, wie du mit Keras und Python Bildanalysen durchführst, indem du Faltungsneuronale Netze konstruierst, trainierst und auswertest.
Pytorch
Sie wurde 2017 von der KI-Forschungsabteilung von Facebook entwickelt und ist für Anwendungen im Bereich der natürlichen Sprachverarbeitung konzipiert und zeichnet sich durch ihren dynamischen Berechnungsgraphen und ihre Speichereffizienz aus. Wenn du in die natürliche Sprachverarbeitung einsteigen möchtest, findest du auf NLP mit PyTorch: Ein umfassender Leitfaden ist ein guter Ausgangspunkt.
Jedes Projekt ist anders, daher hängt die Entscheidung davon ab, welche Eigenschaften für den jeweiligen Anwendungsfall am wichtigsten sind. Um eine bessere Entscheidung treffen zu können, bietet die folgende Tabelle einen kurzen Vergleich dieser Frameworks und hebt ihre einzigartigen Merkmale hervor.
Tensorflow |
Pytorch |
Keras |
|
API Level |
Beide (Hoch und Niedrig) |
Niedrig |
Hoch |
Architektur |
Nicht einfach zu bedienen |
Komplex, weniger lesbar |
Einfach, prägnant, lesbar |
Datensätze |
Große Datensätze, hohe Leistung |
Große Datensätze, hohe Leistung |
Kleinere Datensätze |
Fehlersuche |
Schwierige Fehlersuche |
Gute Debugging-Fähigkeiten |
Einfaches Netzwerk, so dass eine Fehlersuche nicht oft erforderlich ist |
Vorgefertigte Modelle? |
Ja |
Ja |
Ja |
Beliebtheit |
Die zweitbeliebteste der drei |
Drittbeliebteste der drei |
Der beliebteste der drei |
Geschwindigkeit |
Schnell, leistungsstark |
Schnell, leistungsstark |
Langsam, geringe Leistung |
Geschrieben in |
C++, CUDA, Python |
Lua |
Python |
Vergleichende Tabelle zwischen Tensorflow, Pytorch und Keras(Quelle)
Fazit
Dieser Artikel gibt einen vollständigen Überblick darüber, was ein CNN im Deep Learning ist und welche wichtige Rolle er bei der Bilderkennung und Klassifizierung spielt.
Zunächst wurden die Inspirationen des menschlichen Sehsystems für die Entwicklung von CNNs hervorgehoben und dann die Schlüsselkomponenten untersucht, die es diesen Netzen ermöglichen, zu lernen und Vorhersagen zu treffen.
Das Problem der Überanpassung wurde als eine große Herausforderung für die Generalisierungsfähigkeit von CNNs erkannt. Um dies abzumildern, wurden verschiedene Strategien entwickelt, um die Überanpassung abzuschwächen und die Gesamtleistung von CNN zu verbessern.
Abschließend wurden einige wichtige CNN-Frameworks für das Deep Learning erwähnt, sowie die einzigartigen Merkmale jedes einzelnen und wie sie im Vergleich zueinander stehen.
Willst du tiefer in die Welt der KI und des maschinellen Lernens eintauchen? Bringe dein Wissen auf die nächste Stufe und melde dich noch heute für den Kurs Deep Learning mit PyTorch an.
Verdiene eine Top-KI-Zertifizierung
Zoumana ist ein vielseitiger Datenwissenschaftler, der sein Wissen gerne mit anderen teilt und anderen etwas zurückgibt. Er erstellt Inhalte auf YouTube und schreibt auf Medium. Er hat Freude am Sprechen, Programmieren und Unterrichten. Zoumana hat zwei Master-Abschlüsse. Den ersten in Informatik mit dem Schwerpunkt Maschinelles Lernen in Paris, Frankreich, und den zweiten in Datenwissenschaft an der Texas Tech University in den USA. Sein beruflicher Werdegang begann als Softwareentwickler bei Groupe OPEN in Frankreich, bevor er als Berater für maschinelles Lernen zu IBM wechselte, wo er End-to-End-KI-Lösungen für Versicherungsunternehmen entwickelte. Zoumana arbeitet bei Axionable, dem ersten nachhaltigen KI-Startup mit Sitz in Paris und Montreal. Dort arbeitete er als Data Scientist und implementierte KI-Produkte, vor allem NLP-Anwendungsfälle, für Kunden aus Frankreich, Montreal, Singapur und der Schweiz. Zusätzlich widmete er 5% seiner Zeit der Forschung und Entwicklung. Zurzeit arbeitet er als Senior Data Scientist bei der IFC, der Weltbankgruppe.
Beginne deine Deep Learning-Reise noch heute!
Course
Einführung in Deep Learning mit PyTorch
Course