# Objekterkennung

Objekterkennung ist ein Teilgebiet der Bildverarbeitung bzw. des computerbasierten Sehens, bei der man versucht, in Bildern einzelne Objekte zu identifizieren. Ein Bild wird hierbei in Regionen unterteilt, die sinnvolle Einheiten bilden, welche dann weiter auf Merkmale hin untersucht werden, um die Bildregion einer Klasse von Objekten zuordnen zu können. Eine vorläufige Objekterkennung läuft meistens nach diesem Schema ab: Unterteile ein Bild in kleinere Bildausschnitte (Fenster) fester Größe und wende dann einen Klassifizierungsalgorithmus auf dieses Fenster an.
Während es uns Menschen relativ leicht fällt einzelne Objekte, z. B. ein Pudel oder ein Schäferhund, einer abstrakten Kategorie zuzuordnen, in diesem Fall der Kategorie Hund, ist es extrem schwer dies einem Computer beizubringen. Diese Aufgabe wird umso schwieriger, je mehr Klassen von Objekten identifiziert werden sollen. Deswegen wendet man i. d. R. einen spezifischen Algorithmus auf das Bild an, welcher z. B. nur Gesichter erkennen kann.

## Methodik

In der abstrakten Bildverarbeitung dienen Objekterkennungsmethoden dazu, bestimmte Objekte bzw. Muster von anderen Objekten zu unterscheiden. Dazu muss das eigentliche Objekt zunächst mathematisch beschrieben werden. Oft genutzte Verfahren der Bildverarbeitung sind die Kantenerkennung, Transformationen sowie Größen- und Farberkennung. Je genauer die Beschreibung des Objektes möglich ist und je mehr auswertbare Informationen vorhanden sind, umso zuverlässiger arbeitet die Objekterkennung.
Komplexere Methoden zur Objekterkennung kommen aus dem Bereich der künstlichen Intelligenz, wie maschinelles Lernen oder Deep-Learning-basierte Ansätze. Für Ansätze des maschinellen Lernens ist es notwendig, zunächst Merkmale mit einer der folgenden Methoden zu definieren und dann eine Technik wie die Support Vector Machine (SVM) zur Klassifizierung zu verwenden.
Ansätze aus dem maschinellen Lernen:
* Viola-Jones-Methode, die auf Haar-Wavelets basiert
* Scale-invariant feature transform (SIFT) und Speeded Up Robust Features (SURF)
* Histogram of oriented gradients (HOG)
Auf der anderen Seite sind Deep-Learning-Techniken in der Lage, eine Objekterkennung durchzuführen, ohne händisch vorab bestimmte Merkmale definieren zu müssen. Diese Techniken basieren typischerweise auf einem Convolutional Neural Network (CNN). Ein solches künstliches neuronales Netz muss zuvor trainiert werden. Hierzu sind große Mengen an Bildern notwendig. Diese zum Training benutzten Bilder müssen zuvor in irgendeiner Form klassifiziert worden sein. Es muss also eine Information existieren, was auf dem Bild dargestellt ist. Hierfür existieren spezielle Datenbanken wie z. B. ImageNet oder der COCO-Datensatz.
Deep-Learning-Ansätze:
* Region Proposals (R-CNN, Fast R-CNN, Faster R-CNN) und darauf aufbauend Detectron.
* Single Shot MultiBox Detector (SSD), mit einer einstufigen Detektionsstrategie.
* You Only Look Once (YOLO), mit einer einstufigen Detektionsstrategie.
Eine einstufige Detektionsstrategie bedeutet, dass die zu analysierenden Bilder nur einmal gelesen werden müssen. Der Anfang 2020 wohl schnellste Ansatz ist das erst im selben Jahr veröffentlichte YOLOv5. Zu seiner Anwendung sind einfache Open-Source-Lösungen verfügbar. Sie basieren auf folgendem Ansatz: Mit einer hohen Anzahl von Datensätzen aus der COCO-Datenbank wurde ein künstliches neuronales Netz aufwendig trainiert. Dieses fertig trainierte Netz ist als Datei verfügbar und kann dann mit Methoden aus dem „Deep Neural Network module (dnn)“ der lokal installierten Software OpenCV benutzt werden, um Bilder oder Videosequenzen in Echtzeit zu untersuchen. In dem zu untersuchenden Bildmaterial werden dann die „eintrainierten“ Objekte erkannt.

## Anwendungen
### Industrielle Anwendungen

Eine Objekterkennung ist zum Beispiel bei komplizierten Fertigungsprozessen notwendig. Oftmals wird hier die Übereinstimmung der Form eines Objektes mit einer Vorgabe ermittelt (Template-Matching), oder die korrekte Lage desselben auf einem Fließband geprüft. Zusätzlich zu den optischen Sensoren können zur Unterstützung auch induktive, kapazitive oder magnetische Sensoren eingesetzt werden. Man spricht in diesem Zusammenhang auch von Sensorfusion.
Darüber hinaus wird die Objekterkennung in der Qualitätssicherung zur Vollständigkeitsprüfung eingesetzt.

### Fahrerassistenzsysteme

Etiketten, die es in roter oder blauer Ausführung gibt, können beispielsweise bereits durch einen einfachen Farbsensor unterschieden werden. Soll aber zudem noch erkannt werden, ob auf dem roten Etikett eine Schrift aufgebracht ist, so muss meist eine entsprechende Kamera eingesetzt werden.
In Fahrzeugen werden zunehmend kamerabasierte Fahrerassistenzsysteme eingesetzt, um beispielsweise Verkehrsschilder oder die Fahrspur automatisch zu erkennen. Bei der Detektion von Verkehrszeichen wird nach kreisförmigen Objekten gesucht. Eine rote Umrandung deutet dann auf ein Verbotsschild hin. Alternativ kann auch nur mit Mustern bekannter Zeichen verglichen werden (Template-Matching).
Komplexere Formen der Objekterkennung kommen dann zum Einsatz, wenn sich drehende oder schnell bewegte Objekte in einem Bild verfolgt werden müssen. Dann kommen mathematische Korrelatoren zum Einsatz, die sich an das Objekt anpassen können, wie z. B. bei einem sich wegdrehenden Hubschrauber, dessen Position vor einem komplexen Hintergrund ermittelt werden muss. Mittels geeigneter Bildverarbeitungssysteme sind Positionsbestimmungen von Objekten unterhalb der Pixelauflösung der zugrunde liegenden Bilder möglich.

### Landwirtschaft

Mit Hilfe der App Plantix können Pflanzenkrankheiten erkannt werden, die mit künstlichen neuronalen Netzen arbeitet.