CVB Polimago vs Deep Learning

Machine-Learning-Systeme helfen, Probleme eigenständig zu lösen, indem sie analytische und problemlösende Intelligenz nutzen, um Ereignisse vorherzusagen. Aber wissen Sie, welche Lösung für Ihre Anwendung am besten geeignet ist? Bevor wir auf die Unterschiede eingehen, werfen wir einen Blick darauf, was Deep Learning bedeutet, welche Vorteile es bietet und welche Voraussetzungen erfüllt sein müssen.

Deep Learning ist ein Teilgebiet von künstlicher Intelligenz und Machine Learning.


Künstliche Intelligenz ist der Versuch, die analytische und problemlösende Intelligenz des Menschen durch Maschinen nachzubilden. Die Fähigkeit eines Systems, aus gewonnenen Daten zu lernen, um Ergebnisse vorherzusagen (ohne explizit programmiert zu werden), wird als maschinelles Lernen (”Machine Learning”) bezeichnet. Deep Learning konkretisiert diesen Ansatz, indem es die Datensätze und ihre Beziehungen zueinander mittels künstlicher neuronaler Netze, die wie das menschliche Gehirn gebaut sind, interpretiert.

“Deep Learning bezeichnet eine Klasse von maschinellen Lernmethoden, die auf künstlichen neuronalen Netzen basieren. Es gibt überwachtes, semi-überwachtes und unüberwachtes Lernen.”

Wie lässt sich Deep Learning in Machine-Vision-Systeme einbinden?

Um diese Frage zu beantworten, muss man sich genauer ansehen, wie Entscheidungen von Bildverarbeitungssystemen getroffen werden und wie sich diese durch den Einsatz von automatisiertem Lernen verbessern lassen.
Wenn Sie einem “typischen” Bildverarbeitungssystem antrainieren wollen, Fahrzeugtypen zu erkennen, werden Sie vermutlich mit Variablen wie diesen bei der Programmierung beginnen.
Diese Parameter eignen sich gut für Limousinen. Für andere KFZ-Typen müssten sie angepasst werden.



Neben den verschiedenen Automobiltypen müssten Sie noch mehr Ausnahmen für alle anderen Fahrzeugklassen hinzufügen.


Jedoch wären die Parameter nur für die Profilansicht gültig. Es müssen aber auch alle anderen Perspektiven und Dimensionen des Fahrzeugs mitberücksichtigt werden.

Können Sie sich überhaupt sicher sein, dass Ihr Trainingsset alle möglichen Variationen abdeckt? Würde dieses Exemplar hier als Auto erkannt werden?

Lernen durch Beispiele

Wie lernen Kinder, was ein Auto ist?
Jedes Mal, wenn ein Kind ein neuartiges Exemplar von dem sieht, was es unter einem Auto versteht, vergleicht es dieses mit all den Autos, die es bisher gesehen hat.
Ein Kind weiß nicht, dass ein Gegenstand eine bestimmte Anzahl von Rädern und Fensterscheiben haben muss, um als Auto zu gelten. Es würde auch nur die Silhoutte eines Autos ohne einen einzigen Reifen als solches erkennen.
500 Millionen Jahre Evolution haben diese erstaunliche Harmonie zwischen unseren Augen und dem primären visuellen Cortex in unserem Gehirn geschaffen. Wir nehmen weder die komplexen Zusammenhänge zwischen Neuronen wahr, noch wie diese unser Gedächtnis abrufen, damit wir Dinge erkennen, die wir gerade sehen.
Machine Learning versucht diesen Prozess nachzubilden: Ein System lernt anhand von Beispielen, anstatt sich auf explizite Anweisungen des Anwenders zu verlassen. Machine-Learning-Algorithmen verwenden "Trainingssets" mit Daten aus der realen Welt.
Diese Trainingsets umfassen viele Gut- und Schlecht-Beispiele. Aus diesen Daten werden Modelle (reale Szenarien) erstellt, die bei der Klassifizierung helfen.


Wie werden diese Modelle erstellt? Mittels neuronaler Netzwerke...

Neuronale Netzwerke


Da es in Bildverarbeitungsanwendungen im Allgemeinen keine lineare Beziehung zwischen Eingangs- und Ausgangsgrößen gibt, müssen zwischen ihnen komplexe Entscheidungsprozesse ablaufen.
Die Entscheidungsfindung erfolgt in einem neuronalen Netzwerk, eine Art Software-Hardware-Modell des Gehirns. Hier werden einfache Entscheidungs- oder Logikeinheiten, Eingangs- und Ausgangsgrößen sowie einfache Entscheidungen zu einem System verknüpft, das komplexe Entscheidungen trifft.


Diese logischen Einheiten bestehen aus Neuronen (auch Perzeptronen genannt). Das gesamte System bildet das neuronale Netzwerk (Gehirn).
Das “Perceptron”, ein vereinfachtes künstliches neuronales Netz, wurde zuerst von Frank Rosenblatt in den späten 1950er vorgestellt. Der US-amerikanische Psychologe ist für seine Arbeit auf dem Gebiet der künstlichen Intelligenz bekannt.

Frank Rosenblatt, US-amerikanischer Psychologe

Neuronen (Perzeptronen) bestimmen einen einzelnen binären Ausgabewert (also 1 oder 0) aus mehreren Eingangsgrößen. Jede Eingangsgröße hat eine bestimmte Gewichtung (je nach Relevanz). Aus ihrer Summe und einem entsprechenden Schwellwert wird das Ergebnis berechnet.
Künstliche neuronale Netze basieren auf der Vernetzung von Neuronen. Dabei werden die Neuronen in Schichten angeordnet, deren Vernetzung immer komplexer wird je mehr “Tiefe” das Netz durch Zwischenschichten (hidden layer) bekommt. Neuronale Netze sind üblicherweise aus drei Arten von Schichten aufgebaut:
Ohne Zwischenschichten kann das System nur relativ simple Probleme lösen. Die Anzahl der verdeckten Schichten an Neuronen ist hier ein entscheidender Punkt, da Daten in diesen Zwischenneuronen verknüpft werden können und so komplexe Entscheidungen möglich werden.
Obwohl das System komplexe Entscheidungen treffen kann, weiß es nicht, was erforderlich ist, um in die richtige Richtung zu gehen. Ein untrainiertes neuronales Netz „weiß“ also nichts und erzeugt aus Sicht des Anwenders nur zufällige, chaotische Ergebnisse. Erst ein „trainiertes“ neuronales Netz liefert das gewünschte Ergebnis.
Hier kommt die Fähigkeit eines Neurons ins Spiel: Es kann die Gewichtung der Eingabedaten und den Schwellwert der Ausgabedaten ändern, damit es lernfähig wird. Das System wird “konditioniert”, um das gewünschte Ergebnis zu erzielen.
Dafür braucht es jedoch eine Art Feedback vom Ergebnis, so dass entsprechende Anpassungen vorgenommen werden können, um den gewünschten Ausgabewert zu erhalten. Das erfordert eine große Menge an Daten.

Convolutional Neural Networks


Ein Convolutional Neural Network (zu Deutsch faltendes neuronales Netzwerk) ist eine Sonderform des künstlichen neuronalen Netzes und besonders gut für maschinelles Lernen und die Verarbeitung von Bilddaten geeignet. Es besteht aus mindestes einer Faltungsschicht, die in der Lage ist, in den Eingabedaten einzelne Merkmale zu erkennen und zu extrahieren.
Die eingeschränkte Architektur reduziert die Komplexität der Verbindungen der nachfolgenden Schichten, da die nützlichsten Informationen lokal von der vorherigen Schicht erfasst werden. Die Gewichte aus dieser Schicht werden auch auf die nachfolgende Schicht verteilt, wodurch der Faltungsprozess entsteht.
CNNs eignen sich gut für die Bild- bzw. Mustererkennung, da die relevanten Informationen irgendwo im Bild erkannt werden müssen. Das Muster durchläuft das Netzwerk und wird interpretiert, unabhängig von seiner Position im Bild.
Kommen wir noch einmal auf das zurück, was wir im Abschnitt “Lernen durch Beispiele” angesprochen haben: Das Netzwerk muss mit Daten gefüttert werden, mit denen es sich selbst trainiert, bis das gewünschte Ergebnis erzielt ist. Das können Gut- oder Schlechtbeispiele sein oder Klassifizierungsdaten.

Überwachtes Lernen


Neuronale Netze sind nicht die einzigen Algorithmen für maschinelles Lernen, aber die meistverbreiteten. Überwachtes Lernen nutzt beschriftete Bilder, anhand derer der konkrete Algorithmus eine Funktion annhähert, die diese Bilder korrekt klassifiziert. Jedoch erlaubt es keine dieser Methoden zu bestimmen, welche Eingangsgrößen für die Programmierung des Algorithmus zu verwenden sind!

Nach Alan Turing, einem britischen Kryptoanalytiker und Informatiker, ist eine der wichtigsten Eigenschaften einer lernenden Maschine, dass ihr Lehrer weitestgehend nichts darüber weiß, was in ihrem Inneren vor sich geht, obwohl er bis zu einem gewissen Grad imstande ist, das Verhalten seines “Schülers” vorherzusagen. (vgl. Alan Turing: “Computing Machinery and Intelligence”. Mind, 59, 1950)

Daten, Daten und noch mehr Daten... Braucht man wirklich so viele?


Damit ein Algorithmus für maschinelles Lernen funktionieren kann, benötigt er Feedback über richtige und falsche Entscheidungen. Er kennt lediglich die klassifizierten Trainingsdaten. Abweichungen in den Daten geben Informationen darüber, wie eine Klasse aussehen kann und wo die Grenzen liegen. Grenzfälle in den Trainingsdaten sind dabei ein wichtiger Teil des Lernprozesses.
Die Eingangsdaten beeinflussen nach Maßgabe des Lernalgorithmus den Klassifikator. Dieser Einfluss der Lerndaten auf den Klassifikator ist bei nichttrivialen Lernalgorithmen ausgesprochen komplex, weshalb sich das Verhalten des resultierenden Klassifikators einer genaueren Analyse weitgehend entzieht und der Klassifikator im Wesentlichen als “Black Box” zu betrachten ist.
Deshalb ist es wichtig, dass die Trainingsdaten repräsentativ für die Variationen sind, mit denen das System umgehen können soll. Damit Ergebnisse nicht durch einige wenige “Ausreißer” verzerrt werden, sind große Datensätze nötig.

Vor- und Nachteile von CNNs & CVB Polimago


Die möglichen Anwendungen überschneiden sich größtenteils. Einige werden jedoch nur von CNNs unterstützt: unüberwachtes Lernen (Training mit unklassifizierten Daten) und die Segmentierung von Bildern (beispielsweise durch strukturelle Merkmale). Im Gegensatz zu CNNs benötigt CVB Polimago wesentlich weniger Trainingsdaten, typischerweise 50 Bilder pro Klasse anstatt 500 bis 1000. Die kleineren Trainingssets machen CVB Polimago für viele industrielle Anwendungen interessant wie z. B. für die Fehlererkennung, wo keine Vielzahl von Bildern unterschiedlichster Mängel zur Verfügung steht.
Die großen Trainingssätze von CNNs erfordern eine erhebliche Verarbeitungsleistung. Die hohe Parallelität von GPUs beschleunigt das Anlernen von CNNs (um den Faktor 10 bis 100). CVB Polimago hingegen benötigt dank der kleineren Trainingsets und des weniger komplexen Lernvorgangs keine GPU-Unterstützung.
CVB Polimago bietet einen weiteren Vorteil: Dadurch dass es deutlich weniger Trainingsparameter gibt als bei CNNs, kommen Einsteiger damit oft besser zurecht.

Besuchen Sie unsere Common Vision Blox Website und erfahren Sie mehr über CVB Polimago!

Anwendungsbeispiele mit CVB Polimago

Erkennen von Hähnchenteilen

Anspruchsvolles OCR

Selektive Ernte

Fahrzeugtypklassifizierung

Erkennen von Sandwiches

Fischerkennung