Ein Convolutional Neural Network (CNN oder ConvNet, faltendes neuronales Netz) ist eine Netzwerkarchitektur für Deep Learning, die direkt anhand von Daten lernt.
CNNs sind besonders nützlich, um Muster in Bildern zu finden und Objekte, Klassen und Kategorien zu erkennen. Zudem können sie bei der Klassifizierung von Audio-, Zeitreihen- und Signaldaten sehr effektiv sein.
Die Funktionsweise von CNNs
Ein Convolutional Neural Network kann aus Dutzenden oder Hunderten von Schichten bestehen, die jeweils lernen, verschiedene Merkmale eines Bildes zu erkennen. Auf jedes Trainingsbild werden Filter mit unterschiedlichen Auflösungen angewendet, wobei die Ausgabe eines jeden geschichteten Bildes als Eingabe für die nächste Schicht verwendet wird. Diese Filter können mit sehr einfachen Merkmalen, wie z. B. Helligkeit und Kanten, anfangen und mit zunehmender Komplexität bis hin zu solchen Merkmalen reichen, die das Objekt eindeutig definieren.
Erste Schritte mit Beispielen
Merkmalslernen, Ebenen und Klassifizierung
Ein CNN besteht aus einer Eingabeschicht, einer Ausgabeschicht und vielen verborgenen Schichten dazwischen.
Diese Schichten führen datenverändernde Aktionen mit dem Ziel durch, datenbezogene Merkmale zu erlernen. Drei der bekanntesten Schichten sind: Faltung, Aktivierung oder ReLU sowie Pooling.
- Faltung: Die Eingabebilder durchlaufen eine Reihe von Faltungsfiltern, von denen jeder bestimmte Merkmale der Bilder aktiviert.
- Rektifizierte lineare Einheit (ReLU oder Rectifier): Durch die Zuordnung negativer Werte zu null und die Beibehaltung positiver Werte ist ein schnelleres und effektiveres Training möglich. Man nennt dies auch Aktivierung, da nur die aktivierten Merkmale in die nächste Schicht übertragen werden.
- Pooling: Die Ausgabe wird durch nichtlineares Downsampling vereinfacht, wodurch die Anzahl der Parameter, die das Netz lernen muss, verringert wird.
Diese Vorgänge werden über Dutzende oder Hunderte von Schichten wiederholt, sodass jede einzelne Schicht lernt, andere Merkmale zu erkennen.
Gemeinsame Gewichtungen und Biases
Im Gegensatz zu einem klassischen neuronalen Netz hat ein CNN gemeinsame Gewichtungen und Bias-Werte, die für alle verborgenen Neuronen in einer bestimmten Schicht gleich sind.
Das bedeutet, dass alle verborgenen Neuronen das gleiche Merkmal, z. B. eine Kante oder einen Fleck, in verschiedenen Bildbereichen erkennen. Auf diese Weise ist das Netz tolerant gegenüber der Verlagerung von Objekten in einem Bild. Ein Netz, das beispielsweise auf die Erkennung von Autos trainiert ist, kann diese Aufgabe überall dort erfüllen, wo sich das Auto im Bild befindet.
Klassifizierungsschichten
Nach dem Erlernen von Merkmalen in vielen Schichten geht die Architektur eines CNN zur Klassifizierung über.
Die vorletzte Schicht ist eine vollständig verbundene Schicht, die einen Vektor mit K Dimensionen ausgibt (wobei K die Anzahl der vorhersagbaren Klassen ist) und die Wahrscheinlichkeiten für jede Klasse eines klassifizierten Bildes enthält.
Die letzte Schicht der CNN-Architektur verwendet eine Klassifizierungsschicht, um die endgültige Klassifizierungsausgabe zu liefern.
Medizinische Bildgebung: CNNs können Tausende von Pathologiebefunden untersuchen, um das Vorkommen oder das Fehlen von Krebszellen in Bildern visuell zu erkennen.
Audioverarbeitung: Die Erkennung von Schlüsselwörtern kann in jedem mit einem Mikrofon ausgestatteten Gerät verwendet werden, um zu erkennen, wenn ein bestimmtes Wort oder eine bestimmte Phrase gesprochen wird („Hey Siri!“). CNNs können das Schlüsselwort genau erlernen und erkennen, während alle anderen Ausdrücke unabhängig von der Umgebung vernachlässigt werden.
Objekterkennung: Das automatisierte Fahren beruht auf CNNs, um das Vorhandensein eines Schildes oder eines anderen Objekts genau zu erkennen und auf der Grundlage der Ergebnisse entsprechende Entscheidungen zu treffen.
Synthetische Datenerzeugung: Mithilfe von Generative Adversarial Networks (GANs) können neue Bilder für Deep-Learning-Anwendungen wie der Gesichtserkennung und dem automatisierten Fahren erzeugt werden.
Die Verwendung von CNNs
Sie sollten den Einsatz von CNNs in Erwägung ziehen, wenn Sie eine große Menge komplexer Daten (z. B. Bilddaten) haben. Sie können CNNs auch mit Signal- oder Zeitreihendaten verwenden, wenn diese für die Arbeit mit der Netzstruktur vorverarbeitet wurden.
Die folgenden Beispiele zeigen, wie man mit Signalen und CNNs arbeitet:
Berücksichtigung der Verwendung vortrainierter Modelle
Bei der Arbeit mit CNNs ziehen es Ingenieure und Wissenschaftler vor, zunächst mit einem vortrainierten Modell zu beginnen, das zum Erlernen und Identifizieren von Merkmalen aus einem neuen Datensatz verwendet werden kann.
Modelle wie GoogLeNet, AlexNet und Inception bieten einen Ausgangspunkt für den Einstieg in das Deep Learning und nutzen die Vorteile bewährter, von Experten entwickelter Architekturen.
Neue Modelle und Beispiele zum Deep Learning
Hier finden Sie eine Liste aller verfügbaren Modelle und können neue Modelle nach Kategorien sortiert entdecken.
CNNs mit MATLAB
Durch die Verwendung von MATLAB® mit der Deep Learning Toolbox™ können Sie CNNs entwickeln, trainieren und bereitstellen.
Entwicklung und Training von Netzen
Mithilfe des Deep Network Designer können Sie vortrainierte Modelle importieren oder vollkommen neue Modelle erstellen.
Sie können Netze auch direkt in der App trainieren und das Training mit Diagrammen zu Genauigkeit, Verlust und Validierungsmetriken überwachen.
Verwendung von vortrainierten Modellen für das Transfer Learning
Die Feinabstimmung eines vortrainierten Netzes mittels Transfer Learning ist in der Regel viel schneller und einfacher als ein komplett neues Training. Hierfür ist die geringste Menge an Daten und Berechnungsressourcen erforderlich. Beim Transfer Learning wird das Wissen aus einem bestimmten Problembereich zur Lösung ähnlicher Probleme genutzt. Sie beginnen mit einem vortrainierten Netz und verwenden dieses zum Erlernen einer neuen Aufgabe. Ein Vorteil des Transfer Learning besteht darin, dass das trainierte Netz bereits einen umfangreichen Satz von Merkmalen gelernt hat. Sie können zum Beispiel ein Netz, das auf Millionen von Bildern trainiert wurde, für eine neue Objektklassifizierung mithilfe von nur Hunderten von Bildern neu trainieren.
Hardware-Beschleunigung mit Grafikkarten
Ein Convolutional Neural Network wird mit Hunderten, Tausenden oder sogar Millionen von Bildern trainiert. Bei der Arbeit mit großen Datenmengen und komplexen Netzwerkarchitekturen können Grafikkarten die Verarbeitungszeit zum Trainieren eines Modells erheblich verkürzen.
MATLAB für Deep Learning
Erfahren Sie mehr über die MATLAB-Unterstützung für Deep Learning.
Tutorials und Beispiele
Erste Schritte mit MATLAB für Machine Learning
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)