Convolutional Neural Network

Drei Dinge, die Sie wissen sollten

Was ist ein Convolutional Neural Network

Ein neuronales Faltungsnetzwerk (Convolutional Neural Network, CNN oder ConvNet) ist einer der beliebtesten Algorithmen für Deep Learning, eine Variante von Machine Learning, bei dem einen Modell lernt, Klassifikationsaufgaben direkt aus Bildern, Videodaten, Texten oder akustischen Daten durchzuführen.

CNNs sind besonders nützlich, um Muster in Bildern zu finden und so Objekte, Gesichter und Szenen zu erkennen. CNNs lernen direkt aus Bilddaten. Sie verwenden Muster zur Klassifikation von Bildern und machen die manuelle Extraktion von Merkmalen überflüssig.

Anwendungen, die Objekterkennung und Computer Vision erfordern — wie selbstfahrende Fahrzeuge und Anwendungen zur Gesichtserkennung — nutzen intensiv CNNs. Abhängig von Ihrer Anwendung können Sie ein CNN von Grund auf neu erstellen oder ein vortrainiertes Modell mit Ihrem Datensatz verwenden.

Warum sind CNNs so nützlich?

Die Verwendung von CNNs für Deep Learning wird aufgrund von drei wichtigen Faktoren immer beliebter:

  • CNNs machen eine manuelle Merkmalsextraktion unnötig – die Merkmale werden unmittelbar durch das CNN erlernt.
  • CNNs erzeugen Erkennungsergebnisse nach dem neuesten Stand der Technik.
  • CNNs können für neue Erkennungsaufgaben neu trainiert werden und können so auf bereits vorhandenen Netzen aufbauen.

Deep Learning Workflow. Bilder werden an das CNN übergeben, das automatisch Merkmale erlernt und Objekte klassifiziert.

CNNs ermöglichen Fortschritte bei Objekterfassung und Objekterkennung

CNNs bieten eine optimale Architektur für Bilderkennung und Mustererkennung. Zusammen mit Fortschritten bei GPUs und im Parallel Computing sind CNNs eine wichtige Technologie, die neuen Entwicklungen beim automatisierten Fahren und in der Gesichtserkennung zugrunde liegt.

Beispielsweise verwenden Deep Learning-Anwendungen CNNs, um Tausende von Pathologieberichten zu untersuchen und Krebszellen optisch zu erkennen. CNNs versetzen außerdem selbstfahrende Autos in die Lage, Objekte zu erkennen und zu lernen, wie sie den Unterschied zwischen einem Straßenschild und einem Fußgänger ermitteln können.

Erfahren Sie mehr

Funktionsweise von CNNs

Ein neuronales Faltungsnetzwerk kann Dutzende oder Hunderte von Schichten aufweisen, die jeweils lernen, unterschiedliche Merkmale eines Bildes zu erkennen. Filter werden auf jedes Trainingsbild in verschiedenen Auflösungen angewendet, und die Ausgabe jedes gefalteten Bildes wird als Eingabe für die nächste Ebene verwendet. Filter können mit einfachen Funktionen für Merkmale wie Helligkeit und Kanten starten und in Folge in der Komplexität zunehmen zur Bestimmung von Merkmalen, die das Objekt eindeutig definieren.

CNNs führen die Identifizierung von Merkmalen und Klassifikation von Bildern, Texten, akustischen Daten und Videodaten durch.

Lernen von Merkmalen, Ebenen und Klassifikation

Wie andere neuronale Netze auch besteht ein CNN aus einer Eingabeschicht, einer Ausgabeschicht und zahlreichen verborgenen Schichten dazwischen.

Diese Schichten führen Operationen durch, die die Daten verändern, um spezifische Merkmale der Daten zu lernen. Drei der am häufigsten verwendeten Schichten sind: Faltung, Aktivierung oder ReLU und Pooling.

  • Faltung wendet auf die Eingabebilder eine Reihe von Faltungsfiltern an. Jeder dieser Filter aktiviert bestimmte Merkmale aus den Bildern.
  • Rectified Linear Unit (ReLU) ermöglicht ein schnelleres und effektiveres Training, indem negative Werte auf null abgebildet werden und positive Werte beibehalten werden. Dies wird manchmal als Aktivierung bezeichnet, weil nur die aktivierten Merkmale an die nächste Schicht weitergegeben werden.
  • Pooling vereinfacht die Ausgabe durch nichtlineares Downsampling und reduziert so die Anzahl der Parameter, die das Netz lernen muss.

Diese Operationen werden für Dutzende oder Hunderte von Ebenen wiederholt. Dabei lernt jede Ebene die Identifizierung anderer Merkmale.

Beispiel für ein Netz mit vielen Faltungsschichten. Filter werden Trainingsbildern in unterschiedlichen Auflösungen zugefügt. Der Output gefalteter Bilder wird als Input für die nächste Schicht verwendet.

Klassifikationsebenen

Nach dem Lernen von Merkmalen auf zahlreichen Schichten geht die Architektur eines CNN zur Klassifikation über.

Die vorletzte Schicht ist eine vollständig zusammenhängende Schicht, die einen Vektor der Dimension K ausgibt. Dabei ist K die Anzahl der Klassen, die das Netz vorhersagen kann. Dieser Vektor enthält die Wahrscheinlichkeiten für jede Klasse für ein beliebiges zu klassifizierendes Bild.

Die letzte Schicht der CNN-Architektur ist eine Klassifikationsschicht wie SOFTMAX, die die Klassifikationsausgabe bereitstellt. 

Hardwarebeschleunigung mit GPUs

Ein neuronales Faltungsnetzwerk wird anhand von Hunderten, Tausenden oder sogar Millionen Bildern trainiert. Bei der Arbeit mit umfangreichen Datenmengen und komplexen Netzarchitekturen können GPUs die Verarbeitungszeit für das Training eines Modells wesentlich verringern. Ein fertig trainiertes CNN kann in Echtzeitanwendungen wie der Fußgängerdetektion mit fortgeschrittenen Fahrerassistenzsystemen (ADAS) eingesetzt werden.

Verwenden von MATLAB mit einem CNN

Die Verwendung von MATLAB® mit der Neural Network Toolbox™ ermöglicht es Ihnen, Ihr eigenes CNN von Grund auf zu trainieren oder ein vortrainiertes Modell für Transfer Learning zu verwenden.

Welche Methode Sie auswählen, hängt von Ihren verfügbaren Ressourcen und der Art der zu erstellenden Anwendung ab.

Um ein Netz von Grund auf zu trainieren, muss der Architekt die Anzahl der Schichten und Filter sowie weitere einstellbare Parameter festlegen. Das Trainieren eines präzisen Modells von Grund auf erfordert zudem enorme Datenmengen in der Größenordnung von Millionen Beispielen, was einen immensen Zeitaufwand in Anspruch nehmen kann.

Eine gängige Alternative zum Trainieren eines CNN von Grund auf ist die Verwendung eines vortrainierten Modells, um Merkmale automatisch aus einem neuen Datensatz zu extrahieren. Diese Methode, die als Transfer Learning bezeichnet wird, bietet eine bequeme Möglichkeit, Deep Learning ohne einen riesigen Datensatz und ohne lange Berechnungs- und Trainingszeiten anzuwenden.

Trainieren von Grund auf

Wenn Sie ein Netzwerk von Grund auf neu erstellen, bestimmen Sie die Netzwerkkonfiguration. Dieser Ansatz gibt Ihnen die meiste Kontrolle über das Netzwerk und kann beeindruckende Ergebnisse liefern. Er erfordert jedoch ein Verständnis der Struktur eines neuronalen Netzes und der zahlreichen Optionen für Schichttypen und Konfigurationen.

Während die Ergebnisse manchmal besser sein können als beim Transfer Learning (siehe unten), erfordert diese Methode tendenziell mehr Bilder für das Training, da das neue Netz viele Beispiele für das Objekt benötigt, um die Varianten von Merkmalen zu erkennen. Das Training nimmt in der Regel mehr Zeit in Anspruch, und es gibt so viele Kombinationen von Netzschichten, dass es sehr schwierig sein kann, ein Netz von Grund auf neu zu konfigurieren. Typischerweise hilft es beim Aufbau eines Netzwerks und bei der Organisation der Schichten, auf andere Netzwerkkonfigurationen zu verweisen, um Vorgehensweisen zu nutzen, mit denen Forscher bereits Erfolge nachgewiesen haben. 

Erfahren Sie mehr

Verwenden vortrainierter Modelle für Transfer Learning

Eine Feinabstimmung eines vortrainierten Netzes mit Transfer Learning ist meist wesentlich schneller und einfacher als ein Training von Grund auf. Dies erfordert am wenigsten Daten und Computer-Ressourcen. Transfer Learning nutzt Wissen aus einer Art von Problem, um ähnliche Probleme zu lösen. Sie beginnen mit einem vortrainierten Netz und verwenden es, um eine neue Aufgabe zu erlernen. Ein Vorteil von Transfer Learning liegt darin, dass das vortrainierte Netz bereits einen umfangreichen Satz von Merkmalen erlernt hat. Diese Merkmale können auf zahlreiche andere, ähnliche Aufgaben angewendet werden. Beispielsweise können Sie ein Netz verwenden, das mit Millionen von Bildern trainiert wurde, und es mit nur Hunderten von Bildern für eine neue Objektklassifikation trainieren.

Mit der Neural Network Toolbox können Sie Transfer Learning mit vortrainierten CNN-Modellen (wie GoogLeNet, AlexNet, vgg16, vgg19) und Modellen aus Caffe und TensorFlow-Keras durchführen.

Erfahren Sie mehr

Anwendungen mit CNNs

Objekterkennung

Die Objekterkennung ist der Vorgang, mit dem Objekte in Bildern und Videodaten lokalisiert und klassifiziert werden. Die Computer Vision System Toolbox™ bietet Trainings-Frameworks für die Erstellung von Deep Learning-basierten Objektdetektoren mit R-CNN (Regions with CNN), Fast R-CNN und Faster R-CNN.

Sie können Machine Learning-Techniken aus der Statistics and Machine Learning Toolbox™ zusammen mit der Computer Vision System Toolbox verwenden, um Objekterkennungssysteme zu erstellen.

Die Neural Network Toolbox bietet Funktionen zum Aufbau und Trainieren von CNNs sowie zum Erstellen von Vorhersagen mit einem trainierten CNN-Modell.

Dieses Beispiel zeigt, wie ein Objektdetektor mithilfe von Deep Learning und R-CNN (Regions with Convolutional Neural Networks) trainiert werden kann.
Dieses Beispiel zeigt, wie ein Objektdetektor mithilfe einer Deep-Learning-Technik namens Faster R-CNN (Regions with Convolutional Neural Networks) trainiert werden kann.

Weitere Informationen über CNNs

Produkte, die die Verwendung von CNNs für Bildanalysen unterstützen, sind MATLAB®, Computer Vision System Toolbox™, GPU Coder™, Statistics and Machine Learning Toolbox™ und Neural Network Toolbox™.

Neuronale Faltungsnetzwerke erfordern die Neural Network Toolbox. Training und Vorhersagen werden von CUDA®-fähigen GPUs mit einer Rechenleistung von 3.0 oder höher unterstützt. Die Verwendung einer GPU wird empfohlen und erfordert die Parallel Computing Toolbox™.

Softwarereferenz

Kostenlose Testversion anfordern

Eine 30-tägige Erkundungsreise in greifbarer Nähe.

Haben Sie Fragen?

Sprechen Sie mit einem Deep-Learning-Experten.