Serge computer vision and image recognitions Kiwee

Computer Vision und Bilderkennung. Was ist der Unterschied?

Sie haben Ihre Reise in die Welt des Deep Learnings begonnen und wollen nun voller Begeisterung etwas Cooles mit Bildern machen? Dann sind Sie wahrscheinlich in den Leitfäden und Tutorials, die es im Internet gibt, schon über viele Begriffe gestolpert: Computer Vision, Bilderkennung, Objekterkennung, OCR usw. Es ist sehr leicht, bei all diesen Begriffen den Faden zu verlieren. Und es kommt noch schlimmer: Wenn Sie sich durch die Ressourcen arbeiten, werden Sie feststellen, dass Menschen einen Begriff auf viele, manchmal widersprüchliche Weise verwenden! In diesem Artikel werde ich daher die Kernbegriffe umreißen und einfache Definitionen als künftige Referenz geben.

Wie lernen Computer, Bilder zu verstehen?

Bei der Computer Vision (CV) geht es nicht nur darum, Objekte auf Bildern zu identifizieren. Sie umfasst alle Arten von Tools und Methoden, die es Computern ermöglichen, Informationen aus visuellen Daten zu interpretieren, zu verstehen und zu extrahieren. Nehmen wir dieses Bild als Beispiel:

eine überfüllte Straße im New York, um 1900, Schwarzweißfoto

Ein Foto der Mulberry Street, New York, um 1900. Quelle: Wikimedia Commons.

  • Wie viele Personen sind auf dem Foto zu sehen?
  • Wie breit ist die Straße?
  • Wie ist das Wetter an diesem Tag?
  • Was machen die verschiedenen Menschen?

Wir Menschen sind sehr gut darin, diese Fragen mühelos zu beantworten. Aber wie lernen Computer, eine Antwort zu geben? Zunächst einmal können wir zwischen zwei verschiedenen Arten von Informationen unterscheiden, die in jedem Bild kodiert sind: räumliche (geometrische) und semantische Informationen.

Wenn wir die Formen und Dimensionen verschiedener Objekte in der Szene, ihre Position und Orientierung relativ zueinander oder auch die räumliche Beziehung zwischen mehreren Bildern (z.B. Panorama-Stitching) kennen wollen, haben wir es mit räumlichen Informationen zu tun. Das Erkennen räumlicher Eigenschaften ist für die 3D-Rekonstruktion, die Bildsuche und insbesondere für AR und Robotik erforderlich.

eine überfüllte Straße im New York, um 1900, Schwarzweißfoto, mit markierten geometrischen Schlüsselpunkten, die mit dem SIFT-Algorithmus generiert wurden

Visualisierung von SIFT-Schlüsselpunkt-Deskriptoren mit OpenCV. SIFT ist eine beliebte Technik zur Identifizierung von Merkmalen in einem Bild, die später zum Zusammenfügen von Bildern, zur Bildindizierung oder sogar zur Objekterkennung verwendet werden. Dies sind keine semantischen Merkmale, sondern visuell unterscheidbare Schlüsselpunkte.

Auf der anderen Seite hat semantische Information mehr mit dem zu tun, was in einem Bild dargestellt wird. Wenn wir uns das obige Bild anschauen, extrahieren wir unbewusst eine Menge semantischer Informationen: Es ist ein altes Foto einer überfüllten Straße in der Stadt. Die Leute scheinen mit ihrer Arbeit beschäftigt zu sein. Es gibt einen Obstmarkt, eine Brauerei, eine Schuhreparatur usw. Hier erweist sich die Bilderkennung als nützlich. Sie wird in unzähligen Anwendungen wie in der autonomen Fertigung, bei der Zugangskontrolle und bei selbstfahrenden Autos eingesetzt.

eine überfüllte Straße im New York, um 1900, Schwarzweißfoto, mit semantischen Etiketten, die über verschiedene Objekte in der Szene geschrieben sind

Das Klassifizieren von Dingen in einem Bild ist eine der häufigsten Aufgaben bei der semantischen Informationsextraktion.

Doch was genau ist Bilderkennung?

Angesichts der Tatsache, dass Bilderkennung ein beliebtes Schlagwort ist, das in unzähligen Situationen verwendet wird, ist es etwas unbefriedigend zu hören, dass es keine klare Definition dessen gibt, was sie umfasst. Der Ausdruck wird häufig für alle Technologien verwendet, die etwas in einem Bild erkennen oder klassifizieren. Die Komplexität des jeweiligen Problems ist dabei aber sehr unterschiedlich. Was sind also mögliche Aufgaben, die Sie mit Bilderkennung lösen können?

Ein Wörterbuch mit nützlichen Begriffen

(Speichern Sie die Seite zum späteren Nachschlagen!)

  • Bildklassifizierung – sag mir, was auf dem eingespeisten Bild gezeigt wird. Mit anderen Worten bestimmen Sie hier die „Bildklasse“. Das kann ein einfaches binäres Problem sein, wie z.B. „Es gibt einen Hund“ versus „keine Hunde“, oder ein komplexeres, wie z.B. die Suche nach einer Hunderasse aus 132 verfügbaren Optionen.
  • Objektlokalisierung – hier sind Sie nicht nur an der Klasse interessiert, sondern wollen auch die genauen Grenzen sehen, in denen das Objekt liegt. Eine solche Grenze wird durch einen Begrenzungskasten festgelegt (siehe Beispiele unten).
  • Objekterkennung – ähnlich der Lokalisierung können jetzt viele verschiedene Objekte unterschiedlicher Klassen auf einem Bild vorhanden sein. Die Aufgabe ist es, alle Objektinstanzen aus den bekannten Klassen sowie deren Begrenzungsrahmen zu identifizieren.
  • Semantische Segmentierung – anstelle von rechteckigen Begrenzungskästen wie bei der Objekterkennung wollen Sie das gesamte Bild in beliebig geformte Bereiche einteilen, die den identifizierten Objekten entsprechen. Die semantische Segmentierung wird auch als Bildsegmentierung bezeichnet. Bedenken Sie aber, dass es auch andere, nicht-semantische Arten der Bildsegmentierung gibt (z.B. Farbquantisierung).

Ein Bild eines Mädchens mit Hunden, das auf vier verschiedene Arten verarbeitet wurde

Beispiele für die vier häufigsten Bilderkennungsaufgaben. Wie Sie sehen, gibt es selbst bei den neuesten Modellen noch Raum für Verbesserung. Das Testbild stammt aus der ImageNet-Datenbank.

Es gibt einige konkrete Beispiele für diese Probleme, die so populär sind, dass sie ihre eigenen Namen bekommen haben:

  • OCR – optische Zeichenerkennung. Die Aufgabe besteht darin, Zeichen in einem Bild zu lokalisieren und zu klassifizieren (d.h. Objekterkennung), sie dann in Wörter und Sätze zu fügen und eine maschinenlesbare Abschrift des gesamten im Bild sichtbaren Textes zu erstellen. Dies ist einer der ersten großen Erfolge der Computer Vision./li>
  • Face Detection oder Gesichtserkennung 1.0 – genau wie die Objekterkennung, wobei die relevanten Objekte Gesichter sind. Sie ist verantwortlich für die weißen Rahmen, die um die Gesichter herum entstehen, wenn ein Foto mit einer modernen Digitalkamera aufgenommen wird.
  • Facial Recognition oder Gesichtserkennung 2.0 – hier sind wir auch an einer bestimmten Person interessiert, die in eine Kamera blickt 🙂. Oberflächlich betrachtet, erscheint es wie die Gesichtserkennung 1.0, aber jeder Mensch ist auf seine Weise besonders, hat also seine eigene Klasse. Die Aufgabe ist jedoch viel schwieriger, da das System eine Person korrekt identifizieren muss, aber nur einige wenige Beispiele ihres Gesichts hat. Das vielleicht prominenteste Beispiel ist Apples Face ID.

Wie Sie feststellen können, erfordern die meisten dieser Aufgaben sowohl eine semantische als auch eine räumliche Verarbeitung der Bilder. Tatsächlich ist es das Zusammenspiel zwischen beiden, das sich als so wertvoll erweist.

Denken Sie daran, dass dies keine umfassende Liste von Problemen bei der Bilderkennung ist. Forscher gehen ständig an die Grenzen dessen, was Maschinen mit Bildern machen können. Beispielsweise kann die Technologie der automatischen Bildbeschriftung ohne zusätzliche Eingaben eine Kurzbeschreibung eines Bildes erzeugen, wodurch eine neue Ebene der Komplexität hinzugefügt wird: die Sprachgenerierung.

Erinnern Sie sich an das Schwarz-Weiß-Bild, das wir am Anfang verwendet haben? Es gibt heute bereits Deep-Learning-Modelle, die es uns ermöglichen, solche Bilder ohne jegliche Handarbeit einzufärben!

eine überfüllte Straße im New York, um 1900, autokolorisiertes Foto

Beispiel für automatische Einfärbung mit DeOldify, entwickelt von Jason Antic. Quelle: Twitter

Bilderkennung und Transferlernen

Der Erfolg und die weite Verbreitung der Bilderkennungstechnologie wären ohne Deep Learning nicht möglich. So wurden neuartige Ansätze wie konvolutionäre neuronale Netze schließlich für viele Aufgaben weitaus leistungsfähiger als die „traditionellen“ Methoden der Computer Vision. Es gibt aber einen Haken: Zum Trainieren benötigen diese viel mehr Daten und Computerressourcen.

Um diese Probleme abzumildern, können wir eine Technik namens Transferlernen anwenden. Anstatt ein neuronales Netz von Grund auf neu zu trainieren, verwenden wir ein bereits für eine ähnliche Aufgabe trainiertes Modell als Grundlage. Dahinter steht der Gedanke, dass ein großer Teil des Wissens, wie man Objekte erkennt, ähnlich ist, egal für welche Art von Objekten Sie sich interessieren. Jedes Bild besteht aus einfachen Formen wie Ecken und Kanten, die zu komplexeren Mustern verschmelzen. Es scheint vernünftig, dass ein Modell, nachdem es gelernt hat, diese Muster und Formen zu erkennen, mit viel weniger Zeit und Daten lernen kann, welche Kombinationen daraus welche Objekte erzeugen.

eine Visualisierung dessen, was ein neuronales Faltungsnetzwerk sieht und wie verschiedene Neuronen aktiviert werden

Visualisierung einer der Schichten eines trainierten CNN. Beachten Sie, dass ein Kanal gelernt hat, Räder auf einem Bild zu erkennen, obwohl es sich nicht um eine Klasse handelte, auf deren Erkennung das Netzwerk trainiert wurde. Dieses Wissen kann auf viele verschiedene Probleme übertragen, sprich transferiert, werden. Das Bild stammt von Yosinski et al. 2015. Quelle: GitHub

[BONUS] Trainieren Sie Ihren eigenen Klassifikator mittels Transferlernen!

Es ist nützlich, die Theorie zu kennen, aber es ist viel unterhaltsamer, einen Bildklassifikator zu trainieren. Also ran ans Werk! Sie brauchen nichts zu installieren. Öffnen Sie einfach dieses Colab-Notizbuch und lernen Sie, wie Sie mit Transferlernen Bilderkennungsmodelle schnell in der Cloud trainieren. Alternativ können Sie das Projekt lokal einrichten, indem Sie unser GitHub-Repository klonen.

P.S. Wenn Sie ein echtes Beispiel sehen wollen, wie Transferlernen eingesetzt werden kann, dann schauen Sie sich unseren Hunderassenerkenner auf breedread.kiwee.eu an. Dieser wurde auf den gleichen Prinzipien aufgebaut, die im Tutorial beschrieben sind.

Serge Korzh

Full Stack Developer

Ich baue gerne leichte und robuste Websites. Ich bin ständig auf der Suche nach neuen Wegen, um gängige Herausforderungen in der Softwareentwicklung zu meistern. Bei meiner Arbeit stelle ich jedoch den Menschen an die erste Stelle und die Technik an die letzte.