Convolutional Neural Network

 

Convolutional Neural Network

Drei Dinge, die Sie über Convolutional Neural Networks wissen sollten

Ein Convolutional Neural Network (faltendes neuronales Netz, CNN oder ConvNet) ist eine Netzarchitektur für Deep Learning, die direkt aus Daten lernt, wodurch die Notwendigkeit für die manuelle Merkmalsextraktion entfällt.

CNNs sind besonders hilfreich für das Auffinden von Mustern in Bildern, also zur Erkennung von Objekten, Gesichtern und Szenen. Sie können zudem für die Klassifikation von Nicht-Bilddaten wie Audio-, Zeitreihen- oder Signaldaten äußerst effektiv sein.

Anwendungen, die Objekterkennung und Computer Vision erfordern – etwa für selbstfahrende Fahrzeuge und die Gesichtserkennung –, sind in hohem Maße auf CNNs angewiesen.

Was macht CNNs so nützlich?

Die verbreitete Nutzung von CNNs für Deep Learning lässt sich auf drei wesentliche Faktoren zurückführen:

  • Beim Einsatz von CNNs entfällt die Notwendigkeit für die manuelle Merkmalsextraktion – die Merkmale werden direkt vom CNN erlernt.
  • CNNs gewährleisten äußerst präzise Erkennungsresultate.
  • CNNs lassen sich für Erkennungsaufgaben neu trainieren und ermöglichen so die Anknüpfung an bestehende Netze.

CNNs bieten eine optimale Architektur für das Erkennen und Erlernen wesentlicher Merkmale in Bild- und Zeitreihendaten. CNNs sind eine Schlüsseltechnologie in Anwendungen wie:

  • Medizinische Bildgebung: CNNs können Bilder in Tausenden von Pathologieberichten visuell auf das Fehlen oder Vorhandensein von Krebszellen überprüfen.
  • Verarbeitung von Audiodaten: Schlüsselwörter können in einem beliebigen Gerät mit einem Mikrofon zur Erkennung eines gesprochenes Wortes oder einer Phrase genutzt werden (‚Hey Siri!‘). CNNs können Schlüsselwörter präzise erlernen, erkennen und zugleich alle anderen Phrasen ignorieren – unabhängig von der Umgebung.
  • Erkennung von Stoppschildern: CNNs kommen beim automatisierten Fahren für die präzise Erkennung von Schildern oder anderen Objekten zum Einsatz und treffen ausgabenbasierte Entscheidungen.
  • Generierung synthetischer Daten: Mithilfe von Generative Adversarial Networks (GANs) lassen sich neue Bilder zur Verwendung in Deep Learning-Anwendungen generieren, unter anderem für die Gesichtserkennung und das automatisierte Fahren.

Weitere Informationen

So funktionieren CNNs

Ein Convolutional Neural Network kann Dutzende oder sogar Hunderte von Schichten aufweisen. Jede einzelne Schicht lernt die Erkennung unterschiedlicher Bildmerkmale. Filter mit unterschiedlichen Auflösungen werden auf jedes Trainingsbild angewandt und die Ausgabe eines jeden Faltungsbilds wird als Eingabe für die nächste Schicht genutzt. Die einfachsten Filter können Merkmale wie Helligkeit und Kanten sein und mit zunehmender Komplexität Merkmale umfassen, die ein Objekt eindeutig definieren.

Erlernen von Merkmalen, Schichten und Klassifikation

CNNs bestehen, ebenso wie andere neuronale Netze, aus einer Eingabeschicht, einer Ausgabeschicht und zahlreichen verborgenen Zwischenschichten.

wsm-reboot-cnn-super-disc-neural-network

Diese Schichten führen Vorgänge aus, die die Daten zum Erlernen spezifischer Datenmerkmale modifizieren. Zu den gängigsten Schichten zählen: Faltung, Aktivierung, ReLU und Pooling.

  • Bei der Faltung durchlaufen die Eingangsbilder eine Reihe von Faltungsfiltern, die jeweils bestimmte Merkmale aus diesen Bildern aktivieren.
  • Eine Rectified Linear Unit (ReLU) erlaubt ein schnelleres und effizienteres Training. Hierbei werden negative Werte auf null abgebildet und positive Werte beibehalten. Dies wird mitunter als Aktivierung bezeichnet, da nur die aktivierten Merkmale an die nächste Schicht übergeben werden.
  • Pooling vereinfacht die Ausgabe, da die Anzahl der vom Netz zu erlernenden Parameter durch nichtlineares Downsampling reduziert wird.

Diese Vorgänge werden über Dutzende oder Hunderte von Schichten wiederholt, wobei jede Schicht lernt, unterschiedliche Merkmale zu identifizieren.

Beispiel eines Netzes mit zahlreichen Faltungsschichten. Filter mit unterschiedlichen Auflösungen werden auf jedes Trainingsbild angewandt und die Ausgabe eines jeden Faltungsbilds wird als Eingabe für die nächste Schicht genutzt.

Beispiel eines Netzes mit zahlreichen Faltungsschichten. Filter mit unterschiedlichen Auflösungen werden auf jedes Trainingsbild angewandt und die Ausgabe eines jeden Faltungsbildes wird als Eingabe für die nächste Schicht genutzt.

Identische Gewichtungen und Bias-Werte

Ein CNN verfügt, ebenso wie jedes herkömmliche neuronale Netz, über Neuronen mit Gewichtungen und Bias-Werten Das Modell lernt diese Werte während des Trainingsvorgangs und aktualisiert sie fortlaufend mit jedem neuen Trainingsbeispiel. Im Falle von CNNs sind die Gewichtungen und Bias-Werte allerdings für alle verborgenen Neuronen in einer jeden Schicht identisch.

Das bedeutet, alle verborgenen Neuronen erkennen das gleiche Merkmal in unterschiedlichen Bildregionen, etwa eine Kante oder einen Tropfen. Dadurch entsteht Netztoleranz für die Übersetzung von Bildobjekten. Ein Netz, das zum Beispiel darauf trainiert wurde, PKWs zu erkennen, erkennt jeden einzelnen PKW in einem Bild.

Klassifikationsschichten

Nach dem Erlernen der Merkmale in zahlreichen Schichten geht die CNN-Architektur zur Klassifikation über.

Die vorletzte Schicht ist eine vollständig angeschlossene Schicht, die einen Vektor von K Dimensionen ausgibt, wobei K die Anzahl der vom Netz prognostizierbaren Klassen repräsentiert. Dieser Vektor enthält die Klassenwahrscheinlichkeiten für jedes zu klassifizierende Bild.

Die letzte Schicht der CNN-Architektur verwendet eine Klassifikationsschicht wie Softmax für die Klassifikationsausgabe.

Entwerfen und Trainieren von CNNs mithilfe von MATLAB

Mithilfe von MATLAB® und der Deep Learning Toolbox™ können Sie CNNs entwerfen, trainieren und bereitstellen.

MATLAB enthält einen umfangreichen Satz vortrainierter Modelle aus der Deep Learning-Community, die zum Erlernen und Identifizieren von Merkmalen in einem neuen Datensatz verwendet werden können. Diese Methode wird als Transfer Learning bezeichnet. Sie ermöglicht die bequeme Anwendung von Deep Learning ohne eine vollständige Neuentwicklung. Modelle wie GoogLeNet, AlexNet und Inception machen sich bewährte, von Experten erstellte Architekturen zunutze und dienen als Ausgangspunkt für die Erschließung des Deep Learning.

Entwerfen und Trainieren von Netzen

Mithilfe von Deep Network Designer können Sie vortrainierte Modelle importieren oder Modelle von Grund auf neu gestalten.

Deep Network Designer-App für die interaktive Erstellung, Visualisierung und Bearbeitung von Deep Learning-Netzen.

Deep Network Designer-App für die interaktive Erstellung, Visualisierung und Bearbeitung von Deep Learning-Netzen.

Sie können Netze auch direkt in der App trainieren und den Vorgang anhand von Diagrammen mit Genauigkeits-, Verlust- und Validierungsmetriken überwachen.

Verwendung vortrainierter Modelle für Transfer Learning

Die Feinabstimmung eines vortrainierten Netzes mit Transfer Learning ist in der Regel deutlich schneller und einfacher als mit dem Training bei null zu beginnen. Sie erfordert die kleinste Datenmenge und die geringste Rechenkapazität. Transfer Learning wendet die mit einer bestimmten Problemstellung verbundenen Erkenntnisse auf die Lösung vergleichbarer Probleme an. Sie beginnen mit einem vortrainierten Netz und verwenden es zum Erlernen einer neuen Aufgabe. Transfer Learning hat den Vorteil, dass das vortrainierte Netz bereits einen reichhaltigen Satz von Merkmalen gelernt hat. Diese Merkmale lassen sich auf ein breites Spektrum ähnlicher Aufgaben anwenden. Sie können zum Beispiel ein Netz, das mit Millionen von Bildern trainiert wurde, für die Klassifikation neuer Objekte trainieren und benötigen dafür lediglich einige Hundert Bilder.

Hardwarebeschleunigung mit Grafikkarten

Das Trainieren eines Convolutional Neural Networks erfordert Hunderte, Tausende oder gar Millionen von Bildern. Bei der Arbeit mit großen Datenvolumen und komplexen Netzarchitekturen können Grafikkarten die hierfür erforderliche Verarbeitungszeit maßgeblich beschleunigen.

NVIDIA®-Grafikkarten beschleunigen rechenintensive Aufgaben wie Deep Learning.

NVIDIA®-Grafikkarten beschleunigen rechenintensive Aufgaben wie Deep Learning.

Weitere Informationen


Anwendungen, die sich CNNs zunutze machen

Objekterkennung

Objekterkennung bezeichnet den Vorgang der Lokalisierung und Klassifikation von Objekten in Bildern und Videos. Die Computer Vision Toolbox™ bietet Training-Frameworks für die Erstellung von auf Deep Learning basierenden Objektdetektoren mithilfe von YOLO und Faster R-CNN.

Objekterkennung mithilfe von Deep Learning

Objekterkennung mithilfe von Deep Learning

Dieses Beispiel veranschaulicht das Trainieren eines Objektdetektors mithilfe von Deep Learning und R-CNN (Regionen mit Convolutional Neural Networks).

Erkennung von Schlüsselwörtern

Die Erkennung von Schlüsselwörtern ist ein Beispiel für die Umwandlung von Sprache in Text. Erkannt werden bestimmte Schlüsselwörter oder Phrasen, die als Direktive dienen können. Das Aufwecken von Geräten aus dem Stand-by-Modus oder das Einschalten von Licht sind gängige Beispiele.

Erkennung von Schlüsselwörtern mithilfe von Deep Learning

Erkennung von Schlüsselwörtern mithilfe von Deep Learning

Dieses Beispiel verdeutlicht den Einsatz von MATLAB in sprachunterstützender Technologie zur Identifizierung und Erkennung von Sprachbefehlen in Audiodaten.

Semantische Segmentierung

CNNs werden im Rahmen der semantischen Segmentierung zur Identifizierung individueller Bildpixel verwendet, die mit einer zugehörigen Klassenbeschriftung versehen werden. Semantische Segmentierung kann in Applikationen für automatisiertes Fahren, industrielle Inspektion, Geländeklassifikation und medizinische Bildgebung zum Einsatz kommen. Convolutional Neural Networks bilden die Grundlage für den Aufbau eines semantischen Segmentierungsnetzes.

Semantische Segmentierung mithilfe von Deep Learning

Semantische Segmentierung mithilfe von Deep Learning

Dieses Beispiel veranschaulicht die Verwendung von MATLAB für den Aufbau eines semantischen Segmentierungsnetzes, in dem individuelle Bildpixel mit einer zugehörigen Klassenbeschriftung versehen werden.

MATLAB bietet Tools und Funktionen rund um das Thema Deep Learning. Verwenden Sie CNNs zur Erweiterung Ihrer Workflows in den Bereichen Signalverarbeitung, Computer Vision, Kommunikationstechnik und Radar.


Weitere Informationen zu CNNs

MATLAB, die Computer Vision Toolbox™, die Statistics and Machine Learning Toolbox™ und die Deep Learning Toolbox zählen zu den Produkten, die CNNs für die Bildanalyse nutzen.

Für Convolutional Neural Networks wird die Deep Learning Toolbox benötigt. Training und Prognosen werden von einer CUDA® -fähigen Grafikkarte mit einer Rechenkapazität von 3,0 oder höher unterstützt. Die Verwendung einer Grafikkarte wird dringend empfohlen und erfordert die Parallel Computing Toolbox™.

Videos

Beispiele und Anleitungen

Software-Referenz