3. Jänner 2023 von Marc Mezger
Computer Vision für Deep Learning – eine kurze Einführung
Was ist Computer Vision (CV)?
Computer Vision (CV) ist ein Gebiet der Informatik, bei dem es um die Interpretation von Bildern und Videos durch Maschinen geht. Heutzutage werden für Computer Vision am häufigsten Deep-Learning-Techniken verwendet. Nutzungsweisen und Vorteile der Verwendung von Convolutional Neural Networks (CNNs) werden im Folgenden aufgezeigt. Das sind Architekturen neuronaler Netze, die der Funktionsweise des menschlichen Auges nachempfunden sind. Die vorgestellten Verfahren können auch ohne Probleme auf Videos angewandt werden.
Was ist Deep Learning?
Deep Learning ist eine Unterdisziplin der Künstlichen Intelligenz, die auf dem Einsatz von tiefen neuronalen Netzen basiert. Der Vorteil gegenüber normalem Machine Learning ist die Fähigkeit des End-to-End-Trainings. Das bedeutet, dass man dem Deep- Learning-Netzwerk nicht mehr einzelne Input-Variablen gibt, sondern nur noch ein Bild oder einen Satz. Die Verarbeitung von Bild zu Features wird automatisiert vom neuronalen Netz vorgenommen. Am Ende wird eine Vorhersage abgegeben und das neuronale Netz kann automatisiert den Fehler berechnen und sich anhand von Feedback selbst optimieren.
Disziplinen der Computer Vision
In der Computer Vision gibt es spezielle Disziplinen, basierend auf verschiedenen Problemstellungen. Die einfachste Disziplin ist die Klassifikation: Hierbei bekommt ein neuronales Netz ein Bild und weist dem Bild dann eine oder mehrere Klassen zu. Die KI erkennt, was in dem Bild zu sehen ist, und gibt eine Wahrscheinlichkeit für die am besten passende Klasse aus. Das wohl bekannteste Netzwerk ist das ResNet-50.
Im folgenden Bild ist ein Zebra zu sehen und darunter stehen die Wahrscheinlichkeiten, um was für eine Art von Objekt es sich handelt. Das Modell sagt, dass es sich mit 99,5%iger Wahrscheinlichkeit um ein Zebra handelt. Die anderen Vorschläge werden der Vollständigkeit halber aber trotzdem angezeigt.
Semantic Segmentation
Bei der Semantic Segmentation findet eine Klassifikation auf Pixelebene statt. Es ist möglich, Bilder zu erstellen, in denen jedes Pixel einer Klasse zugeordnet ist. Ein bekanntes Netz für diesen Zweck ist das U-Net. Segmentierung ist besonders wichtig für genaue Abgrenzungen und eine exakte Lokalisation von Objekten.
Beispiele hierfür sind die Tumorsegmentierung und das autonome Fahren. In folgendem Bild ist wieder das Zebra zu sehen, dieses Mal sind alle Pixel, die zum Zebra gehören, rot eingefärbt, während die des Grases und die des Himmels andere Farben haben.
Object Detection
Hier werden Objekte in Bilder klassifiziert und ihre Position wird mithilfe einer Box markiert. Es ist eine Klassifikation von Bereichen im Bild. Diese Operation ist weniger aufwendig und dadurch schneller. Jedoch werden weniger Informationen erkannt. Es werden nur die Klasse und die ungefähre Lokalisation bestimmt. Ein bekanntes Netzwerk für diesen Zweck ist das Faster R-CNN. Dieses Mal ist das Zebra durch einen Kasten markiert, die Bounding Box. Dadurch ist es möglich, die genaue Position des Zebras zu erkennen und hervorzuheben.
Wahrscheinlichkeit: Zebra 100 %
Keypoint Detection
Die Keypoint Detection wird zum Beispiel für Human Pose Estimation verwendet. Es handelt sich hierbei um eine Klassifikation von Punkten. Es wird der Punkt einer Klasse mit der höchsten Wahrscheinlichkeit genommen. Die im Bild sichtbaren Kanten werden nicht vom neuronalen Netz prädiktiert, sondern sind definiert als Kanten zwischen speziellen Punkten. Angewendet wird dies, wenn erkannt werden muss, in was für einer Position sich eine Person befindet. Ein Beispiel ist die Detektion bei Stürzen von Senioren.
Instance Segmentation
Instance Segmentation ist verwandt mit der Semantic Segmentation. Einzelne Instanzen werden segmentiert. Zum Beispiel werden unterschiedliche Menschen auf Bildern erkannt und segmentiert. Es kann zwischen andersgearteten Instanzen einer Klasse unterschieden werden. Der Vorteil ist, dass nur relevante Klassen segmentiert und verwendet werden.
Panoptic Segmentation
Die Kombination aus Semantic Segmentation und Instance Segmentation bezeichnet man als Panoptic Segmentation. Das gesamte Bild wird segmentiert und verschiedene Instanzen einer Klasse werden erkannt und voneinander unterschieden. In folgendem Bild ist deutlich zu erkennen, dass die beiden Hunde als Hunde erkannt wurden, aber als verschiedene Hunde, nicht bezüglich der Rasse, sondern bezüglich der Instanz.
Image Captioning
Bei Image Captioning wird in Worten beschrieben, was in Bildern passiert. Dieses Verfahren verbindet Computer Vision mit Natural Language Processing. Meist wird ein Encoder-Decoder Framework verwendet, bei dem ein Input-Bild in eine Zwischenrepräsentation transformiert wird, die die Informationen im Bild beschreibt und dann in einen deskriptiven Text decodiert.
a zebra standing in a field of tall grass
Denoising / Noise Reduction / Rauschreduzierung
Beim Denoising wird Rauschen aus einem Bild entfernt, also Störfaktoren wie falsche Pixelfarben. Diese Verfahren sind wichtig in der Medizin, da es bei radiologischen Aufnahmen häufig zu Rauschen kommt. Auf der linken Seite im Bild ist die Lunge des Patienten mit Rauschen zu sehen, auf der rechten Seite die Denoised-Version (ohne/reduziertes Rauschen).
Super Resolution
Super Resolution ist ein Verfahren, mit dem die Auflösung von Bildern künstlich verbessert wird. Im linken Bild handelt es sich um die Version des Bildes in geringer Auflösung. Das rechte Bild ist die durch neuronale Netzwerke verbesserte Version. Das Bild wurde zudem vergrößert. Es ist also größer, schärfer und Details sind besser erkennbar.
Diese Technik wird genutzt, um komprimierte Bilder in besserer Auflösung anzuzeigen. Bekanntestes Beispiel dafür ist NVidia DLSS. Die Auflösung von Bildern über solche Netzwerke wird verbessert, was bedeutet, dass weniger Speicherplatz benutzt werden muss.
Weitere Anwendungen
Es gibt noch viele weitere Anwendungen von Computer Vision:
- Edge Detection: Erkennung von Kanten in Bildern
- Surface Normals: Vorhersage der Oberflächenorientierung bei vorhandenen Objekten
- Reshading: Shading bezeichnet die Darstellung der Tiefenwahrnehmung in 3D-Modellen
- Uncertainty Estimation: Berechnung, wie ungenau eine Vorhersage ist
- Depth Estimation: Vorhersage, welche Tiefe Objekte in einem Bild haben
Vorteile von Deep Learning gegenüber traditionellen Methoden
Bei traditionellen Methoden benötigt man Domänenexpertise, um Klassen zu erklären. Man nennt diese beschreibenden Eigenschaften die deskriptiven Patches eines Bildes.
Im nächsten Schritt benutzt man Techniken wie SIFT oder BRIEF, um diese Features zu beschreiben. Mithilfe von Kantendetektion, Eckdetektion und Schwellwert-Segmentierung werden Patches detektiert. Dabei werden so viele Features wie möglich extrahiert und als Definition dieser Klasse verwendet. Dann wird in anderen Bildern nach diesen Patches gesucht und bei einer Übereinstimmung werden sie der Klasse zugeordnet.
Das Problem ist, dass jedes Mal von einem Experten oder einer Expertin bestimmt werden muss, welches die relevanten Features sind, und diese auch so designt sein müssen, dass sie eine Unterscheidung zu anderen Klassen ermöglichen. Dies ist ein großer logistischer und monetärer Aufwand. Bei Deep Learning braucht man dies nicht, denn die Feature-Extraktion übernimmt das Netzwerk automatisiert und kann diese „end to end“ trainieren. Die Qualitätskontrolle erfolgt dabei ganz einfach über das Label des Bildes, es muss also vorher bekannt sein, welches Bild zu welcher Klasse gehört.
CNNs sind eine Klasse von neuronalen Netzwerken. Sie verwenden Convolutions, um Bilder zu verarbeiten. Es handelt sich dabei um Netzwerke, die gegenüber Verschiebungen in einem Bild resistent sind. Filter detektieren Eigenschaften, die dann später für eine Klassifikation verwendet werden können. Objekte werden also an allen Positionen gefunden.
Im folgenden Bild ist ein einfaches Beispiel für ein CNN dargestellt. Man erkennt, dass immer wieder ein kleiner Teil des Bildes ausgewählt wird und es dabei drei Schichten gibt. Dies liegt daran, dass es sich um ein RGB-Bild (also mit den drei Farbkanälen Rot, Grün und Blau) handelt. Mithilfe von Convolutions und Pooling (eine Informationsverdichtung) wird das Bild immer weiter komprimiert (x/y-Richtung), während die Anzahl der verschiedenen Faltungen (z-Richtung) zunimmt. Man spricht dabei von einem Gewinn an Kontextinformationen bei gleichzeitigem Verlust der Lokalisationsinformation. Dies passiert im Bereich, der als Feature Learning bezeichnet wird. Dann wird ein Vektor ausgegeben mit einer Wahrscheinlichkeit für jede Klasse. Die höchste Wahrscheinlichkeit ist dann die Klasse, von der das neuronale Netz „denkt“, dass es sich um die richtige für das Bild handelt.
Ein weiterer Vorteil von Deep Learning ist das sogenannte Transfer Learning. Neuronale Netze werden auf einen großen Datensatz von Bildern trainiert. Mit wenigen Bildern werden sie auf einen speziellen Use Case angepasst. Ein Beispiel hierfür sind medizinische Daten mit meist wenigen 100 bis 1000 Beispielen. In der Praxis wird ein Netzwerk mit einer Millionen Bildern vortrainiert und später mit den wenigen medizinischen Bildern angepasst. Dieses Verfahren funktioniert so gut, da man primär die Feature-Erkennung des Netzwerkes trainiert und sie so schrittweise komplexer wird.
Traditionelle Computer-Vision-Methoden werden eingesetzt, wenn Mikrocontroller notwendig sind oder wenige Beispieldaten vorhanden sind.
Einsatzgebiete von Computer Vision mit Deep Learning
Autonomes Fahren
Das autonome Fahren wäre ohne Computer Vision schlicht und einfach nicht möglich. Ein Algorithmus ist beispielsweise Tesla Vision, das Computer Vision Modul des Tesla-Autopiloten. Dies ist ein Deep-Learning-Ansatz, der Bilder segmentiert und Informationen an eine KI weiterleitet, die darauf basierend Entscheidungen bezüglich des Fahrverhaltens trifft. Es ist wichtig, dass die KI Straßenschilder, andere Verkehrsteilnehmende sowie Straßenmarkierungen erkennt. All dies ist durch Computer Vision mit Deep Learning kein (unlösbares) Problem.
Detektion von Tumoren
Im medizinischen Bereich ist Computer Vision im Feld der Radiologie interessant. Zum einen gibt es hier einen konstanten Medizinermangel und zum anderen besteht die Gefahr, dass das Fachpersonal bei langen Schichten unaufmerksam wird und Details übersieht. Computer Vision unterstützt das Fachpersonal, indem es die radiologischen Bilder automatisiert durchsucht, auffällige Schichtbilder zeigt und relevante Bereiche darin markiert. Der Vorteil dabei ist, dass die Diagnose und Kontrolle immer noch durch das Fachpersonal erfolgen, aber so eine starke Entlastung geboten wird. Studien gehen von einem Zeitgewinn von mindestens 75 % aus. Das angewandte Verfahren ist die Segmentierung mit U-Nets. Das Problem im Gesundheitswesen ist, dass es hier immer um personenbezogene medizinische Daten geht, sodass Lösungen ortsgebunden sind und Cloud-Lösungen selten infrage kommen.
Dokumentenerkennung
Eine wichtige Anwendung von Deep Learning in Computer Vision ist die automatisierte Erkennung und Verarbeitung von Dokumenten. Beispiele sind die automatisierte Erkennung von Krankschreibungen, Rechnungen und Belegen. Der Vorteil ist, dass mit Deep Learning sowohl gedruckter als auch handschriftlicher Text zuverlässig erkannt und verarbeitet werden kann. Früher wurde das mit Methoden der Optical Character Recognition (OCR) gemacht. Heute gibt es eine Erkennung mit Deep Learning und eine Kontexterkennung.
Ausblick
Computer Vision ist eines der wichtigsten Anwendungsgebiete für Unternehmen im Bezug auf KI und Natural Language Processing. Um zu zeigen, dass man solche Verfahren ohne komplizierte Vorbereitung anwenden kann, habe ich ein eigenes Backend geschrieben, das diese Funktionalitäten anbietet. Es ist hier zu finden. Zum Abschluss möchte ich sagen, dass die Anwendungen von Computer Vision weitläufig sind und es mithilfe von Transfer Learning möglich ist, mit relativ überschaubarem Aufwand schnelle Fortschritte zu erzielen oder einen Proof of Concept zu bauen.