Computern beizubringen, zu verstehen, was sie sehen, ist das Thema, das alle Computer-Vision-Ingenieure wach hält. Obwohl in den letzten Jahren auf dem Gebiet der Bilderkennung große Fortschritte erzielt wurden, fehlen noch viele Puzzleteile, die zusammenpassen sollten, um ein vollständiges und klares Bild davon zu erhalten, wie man Maschinen beibringen kann, das Gesehene zu verstehen.
Lange Zeit wurde die Bildklassifizierung nicht als statistisches Problem betrachtet, bis eine Teillösung aus dem Bereich des maschinellen Lernens unter dem Namen Neuronale Netze, insbesondere Convolutional Neural Networks (CNN), kam. CNN ist eine spezielle Art von künstlichen neuronalen Netzen, die bei der Bildklassifizierung menschenähnliche Ergebnisse liefern.
In diesem Artikel wird erklärt, wie das menschliche Gehirn die visuelle Welt rekonstruiert, wie Maschinen lernen, Bilder zu verstehen, und welche Anwendungen es für die Bildklassifizierung gibt.
Image Recognition: Wie schwer kann das sein?
Unter Bilderkennung versteht man den Prozess der Identifizierung dessen, was ein Bild abbildet.
Dem Menschen fällt es leicht, die visuelle Welt zu interpretieren. Wenn Menschen etwas sehen, wissen sie von Natur aus, was es ist. In den meisten Fällen ist es nicht notwendig, das Objekt bewusst zu studieren, um es zu verstehen.
Für Computer ist dies jedoch eine schwierige Aufgabe, da sie nur Ziffern verarbeiten können. Ein 3×3 großer quadratischer Punkt auf Albert Einsteins Stirn beispielsweise ist für einen Computer eine dreidimensionale Matrix, bei der jede Dimension eine der Grundfarben Rot, Grün und Blau darstellt.
Obwohl der Mensch Bilder in einem Bruchteil von Sekunden interpretieren kann, findet im visuellen Kortex des Gehirns ein komplexer kognitiver Prozess statt.
Der visuelle Kortex ist in Schichten unterteilt (V1-V8) und verarbeitet die von den Augen kommenden visuellen Informationen. Wenn ein Reiz im rezeptiven Feld vorhanden ist, erreicht seine Repräsentation zuerst die V1-Schicht, oder anders gesagt, die Neuronen im Bereich der V1-Schicht feuern zuerst. Diese Schicht ist eine Karte, die die räumlichen Informationen des Reizes in der Welt bewahrt und auch seine Ränder erkennt. Die V1-Schicht ist eng mit der V2-Schicht verbunden, die ihrerseits an der Unterscheidung von Formen, Orientierungen, Farben und anderen Merkmalen auf niedriger Ebene beteiligt ist. Höhere visuelle Merkmale beinhalten das Verständnis des Gehirns für den Kontext und die Beziehung der Bilder und werden nur in den höheren Schichten, wie V6-V8, wahrgenommen.
Nehmen wir an, der wahrgenommene Stimulus ist Ihr Vater. Die Objekterkennung selbst wird in der Schicht V1 durchgeführt. Die semantische Information wird jedoch nur in den Schichten V6-V8 wahrgenommen.
Es ist wichtig zu betonen, dass das, wofür die einzelnen Ebenen zuständig sind, fast immer mit Kontroversen verbunden ist, da die Forschung im Laufe der Zeit immer mehr Entdeckungen bringt. Es ist jedoch eine Tatsache, dass die Darstellung umso abstrakter wird, je höher die Ebene ist.
Abgesehen von dieser High-Level-Architektur wurde auf der Mikroebene die Mechanik der Neuronen angewandt, um die Prozesse in den Schichten des visuellen Kortex zu simulieren. Insbesondere erhält jedes Neuron Input von den Dendriten und wird aufgrund der komplexen Nichtlinearität, die auf seinen Input angewandt wird, feuern, wenn der summierte nichtlineare Input einen Schwellenwert überschreitet. Obwohl diese Erklärung sehr vereinfacht ist, reichte sie für die Forschung aus, um das erste künstliche neuronale Netz zu erfinden.
Inspiriert durch das menschliche Sehsystem versuchten Ingenieure, diesen Prozess mit Maschinen zu replizieren. Um Computer in die Lage zu versetzen, Objekte zu verstehen, musste ein System geschaffen werden, das aus visuellen "Stimuli" hochrangige Merkmale extrahieren konnte, indem es nur numerische Manipulationen verwendete. An dieser Stelle kommen die neuronalen Faltungsnetze ins Spiel. Wenn sie mit einer ausreichenden Menge sauberer und gut definierter Daten gefüttert werden, können CNN hochrangige, gemeinsame Merkmale für jede Kategorie, die die Daten umfassen, extrahieren.
Wie funktioniert CNN bei der Bilderkennung?
Die von CNN gelernten Darstellungen ähneln der Art und Weise, wie die menschlichen Sehschichten visuelle Informationen darstellen: Die ersten Faltungsschichten extrahieren Merkmale auf niedriger Ebene, wie Kanten und Flecken, und die letzten Schichten ordnen dem Bild den semantischen Teil zu.
Alles in allem bedeutet Bildklassifizierung für einen Computer das Problem, gemeinsame Merkmale zu erkennen, indem man die Ziffern "betrachtet" und mathematische Manipulationen vornimmt, um eine Funktion (d. h. ein Modell) zu finden, die auf ungesehene Daten verallgemeinert werden kann.
Die State-of-the-Art-Leistung von Convolutional Neural Nets bei Bildklassifizierungsaufgaben kann der eines Menschen gleichkommen, aber das ist nur möglich, wenn die folgenden Faktoren erfüllt sind: eine große Datenmenge (GB), eine lange Zeitspanne und eine geeignete Architektur des neuronalen Netzes.
Implementierung von CNN in ProcessMaker IDP zur Bildklassifikation
Bei ProcessMaker IDP geht es um intelligentes Content Management, und die Bilderkennung ist Teil einer großen Kette von Machine Learning-Lösungen, die wir anbieten. Obwohl es eine Reihe offener APIs gibt, um Erkenntnisse aus Bildern zu gewinnen, entwickelt ProcessMaker IDP seinen eigenen, einzigartigen Klassifikator, um die sensiblen Daten der Kunden zu schützen. Die Nutzung offener Dienste für die Bildklassifizierung, wie z. B. Google, bedeutet, dass die Daten der Kunden mit Dritten geteilt werden. Während dies kein Problem darstellt, wenn Sie Bilder mit Katzen und Hunden klassifizieren müssen, ist es ein Compliance-Problem, wenn Ausweise und Kreditkarten klassifiziert werden müssen.
Die Aufrechterhaltung eines hohen Sicherheitsniveaus bei gleichzeitig genauer Leistung des ML-Klassifikators ist mit einigen Herausforderungen verbunden. Da ProcessMaker IDP nicht über umfangreiche Bildbibliotheken verfügt, ist es in hohem Maße auf Kundendaten oder Open-Source-Datensätze angewiesen, die in der Regel nicht zur direkten Verwendung bereit sind. Sie zu bereinigen und manuell zu beschriften ist sehr zeitaufwändig.
Eine weitere Herausforderung besteht darin, die richtige Architektur zu finden. In den meisten Fällen ist der Aufbau einer eigenen Architektur effizienter. Wenn wir jedoch nicht genügend Daten haben, ist die Verwendung einer vortrainierten Architektur die bessere Option.
Durch die Investition in eine spezielle Hardware konnten wir diese Herausforderungen meistern und den Zeitrahmen für das Training eines Modells erheblich verkürzen.