Weiter zum Inhalt

Objekterkennung für Einsteiger

Entdecke die wichtigsten Konzepte der Objekterkennung und wie sie in SSD und Faster R-CNN umgesetzt sind – verfügbar in der TensorFlow Detection API.
Aktualisiert 18. Sept. 2026  · 14 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Dank der jüngsten Fortschritte bei Deep-Learning-basierten Computer-Vision-Modellen lassen sich Anwendungen zur Objekterkennung heute einfacher entwickeln als je zuvor. Neben deutlichen Leistungsgewinnen nutzen diese Verfahren große Bilddatensätze und senken damit den Bedarf an eigenen Daten. Außerdem setzen aktuelle Ansätze auf durchgängige End-to-End-Pipelines – das steigert die Performance nochmals und ermöglicht Echtzeitanwendungen.

Ähnlich wie in meinem Blogpost zu verschiedenen Bildklassifikationsarchitekturen stelle ich zwei Architekturen der Objekterkennung vor. Ich bespreche SSD und Faster R-CNN, die beide in der TensorFlow Detection API verfügbar sind.

Zuerst gehe ich auf einige Schlüsselkonzepte der Objekterkennung ein und zeige anschließend, wie sie in SSD und Faster R-CNN umgesetzt sind.

Bildklassifikation vs. Objekterkennung

Bildklassifikation und Objekterkennung werden oft verwechselt. Grundsätzlich gilt: Willst du ein Bild einer Kategorie zuordnen, nutzt du Bildklassifikation. Möchtest du hingegen die Position von Objekten im Bild bestimmen und zum Beispiel die Anzahl der Vorkommen zählen, ist Objekterkennung das richtige Werkzeug.

Grafik zu Bildklassifikation und Objekterkennung
Der Unterschied zwischen Klassifikation und Objekterkennung.

Zwischen beiden Szenarien gibt es jedoch Überschneidungen. Wenn du ein Bild klassifizieren willst, kann es sein, dass das relevante Objekt oder die entscheidenden Merkmale im Verhältnis zum gesamten Bild zu klein sind. Dann liefert Objekterkennung oft bessere Ergebnisse als reine Klassifikation – selbst wenn dich die genaue Position oder die Anzahl eigentlich nicht interessiert.

Stell dir vor, du musst Leiterplatten prüfen und sie als defekt oder in Ordnung klassifizieren. Im Kern ist das ein Klassifikationsproblem, aber die Defekte können so klein sein, dass ein Bildklassifikationsmodell sie übersieht. Der Aufbau eines Objekterkennungs-Datensatzes kostet mehr Zeit, führt aber sehr wahrscheinlich zu einem besseren Modell.

Beispiel einer IC-Platine mit Defekten
Eine IC-Platine mit Defekten.

Bei einem Bildklassifikationsmodell erzeugst du Bildmerkmale (klassisch oder per Deep Learning) für das gesamte Bild. Diese Merkmale sind Aggregationen. In der Objekterkennung arbeitest du feinkörniger und extrahierst Merkmale auf regionaler Ebene. In der Klassifikation kann dabei das relevante Signal untergehen, während es bei der Objekterkennung in einer für den Anwendungsfall besseren Form erhalten bleibt.

Datenanforderungen

Um ein eigenes Modell zu trainieren, brauchst du gelabelte Daten. In der Objekterkennung sind das Bilder mit zugehörigen Bounding-Box-Koordinaten und Labels, also die unteren linken und oberen rechten (x,y)-Koordinaten plus die Klasse.

Beispiel für Bounding-Box-Koordinaten
Die normalisierten Bounding-Box-Koordinaten der Hunde im Bild sind z. B. [0.1, 0.44, 0.34, 0.56] und [0.72, 0.57, 0.87, 0.77]

Die Standardfrage lautet: Für Problem X – wie viele Bilder brauche ich? Wichtiger ist zu verstehen, in welchen Szenarien das Modell später läuft. Entscheidend ist, dass pro Klasse eine große Zahl (zum Beispiel > 100, besser > 1000) repräsentativer Bilder vorhanden ist. Repräsentativ heißt: Sie decken die Bandbreite der späteren Einsatzszenarien ab. Wenn du ein Verkehrszeichenerkennungsmodell für Autos baust, brauchst du Bilder bei unterschiedlichem Wetter, Licht und mit verschiedenen Kameras – jeweils im passenden Kontext. Objekterkennungsmodelle sind kein Zauberwerk, sondern ziemlich dumm. Bekommt das Modell nicht genug Daten, um allgemeine Muster zu lernen, liefert es in der Praxis schlechte Ergebnisse.

Beispiel für repräsentatives Bild
Links ist das Bild klar und leicht zu erkennen, aber trainieren solltest du auf Daten, die den Einsatzfall realistischer abbilden.

Allgemeines Framework der Objekterkennung

Typischerweise umfasst ein Framework zur Objekterkennung drei Schritte.

  1. Zuerst generiert ein Modell oder Algorithmus Regionen von Interesse (Region Proposals). Das ist eine große Menge Bounding Boxes über das gesamte Bild hinweg – die Lokalisierungskomponente.
  2. Im zweiten Schritt werden für jede Bounding Box visuelle Merkmale extrahiert, bewertet und darauf basierend entschieden, ob und welche Objekte vorhanden sind – die Klassifikationskomponente.
  3. Im abschließenden Post-Processing werden sich überlappende Boxen zu einer einzigen Box zusammengeführt (Non-Maximum Suppression).

Region Proposals

Es gibt verschiedene Ansätze zur Generierung von Region Proposals. Ursprünglich wurde der Algorithmus „Selective Search“ verwendet. Lillie Weng erklärt ihn ausführlich in ihrem Blogpost. Kurz gesagt ist Selective Search ein clusteringbasierter Ansatz, der Pixel gruppiert und daraus Vorschläge erzeugt.

Beispiel für Selective Search auf einem Bild
Beispiel für Selective Search auf einem Bild. Über einen Schwellwert in SS lassen sich mehr oder weniger Vorschläge erzeugen.

Andere Ansätze nutzen komplexere visuelle Merkmale des Bildes (z. B. aus einem Deep-Learning-Modell) oder setzen auf einen Brute-Force-Ansatz – ähnlich einem Sliding Window in verschiedenen Seitenverhältnissen und Skalen. Diese Regionen werden automatisch erzeugt, ohne Bildmerkmale zu berücksichtigen.

Beispiel für den Sliding-Window-Ansatz
Beispiel für den Sliding-Window-Ansatz. Jede Bounding Box dient als Region of Interest (ROI).

Ein zentraler Trade-off bei Region Proposals ist die Anzahl der Regionen vs. Rechenaufwand. Je mehr Regionen du erzeugst, desto eher findest du das Objekt. Wenn du jedoch alle möglichen Vorschläge erschöpfend generierst, ist ein Einsatz in Echtzeit nicht mehr möglich. In manchen Fällen lässt sich die Anzahl der ROIs durch problemspezifisches Wissen reduzieren. Fußgänger haben zum Beispiel typischerweise ein Seitenverhältnis von etwa 1,5 – ROIs mit 0,25 lohnen sich dann nicht.

Feature-Extraktion

Ziel der Feature-Extraktion ist es, ein Bild variabler Größe auf einen festen Satz visueller Merkmale zu reduzieren. Bildklassifikationsmodelle setzen dabei auf starke Verfahren zur Merkmalsextraktion – ob klassische Computer-Vision-Ansätze (z. B. Filter, Histogramme) oder Deep Learning. Das Ziel ist identisch: repräsentative Merkmale für die Aufgabe aus dem Eingabebild extrahieren und daraus die Klasse bestimmen. In Objekterkennungsframeworks nutzt man häufig vortrainierte Bildklassifikationsmodelle zur Merkmalsextraktion, da sie gut generalisieren. Ein auf MS COCO trainiertes Modell liefert beispielsweise recht generische Merkmale. Um das Modell zu verbessern, lohnt es sich, verschiedene Ansätze zu testen. Mein Blogpost zu Transfer Learning erklärt die Typen, Vor- und Nachteile im Detail.

Non-Maximum Suppression

Die Idee hinter Non-Maximum Suppression (NMS) ist, die Anzahl der erkannten Boxen im Bild auf die tatsächliche Objektanzahl zu reduzieren. Ist ein Objekt groß und wurden mehr als 2000 Vorschläge generiert, überlappen sich einige stark untereinander und mit dem Objekt. Schau dir dieses Video auf Coursera an, um mehr über NMS zu lernen. NMS ist in den verschiedenen Frameworks meist ähnlich implementiert, aber der Schritt ist wichtig und erfordert je nach Szenario Feintuning der Hyperparameter.

Beispiel für NMS im Kontext der Gesichtserkennung
Ein Beispiel für NMS im Kontext der Gesichtserkennung.

Evaluationsmetrik

Die gängigste Metrik für Objekterkennung ist „mAP“ – die „mean average precision“. Sie liegt zwischen 0 und 100. Höher ist besser, aber sie ist nicht mit der Accuracy der Klassifikation gleichzusetzen.

Jede Bounding Box erhält einen Score (Wahrscheinlichkeit, dass sie ein Objekt enthält). Aus den Vorhersagen wird für jede Klasse durch Variation des Schwellwerts eine Precision-Recall-Kurve (PR-Kurve) gebildet. Die Average Precision (AP) ist die Fläche unter der PR-Kurve. Zuerst berechnet man die AP pro Klasse, anschließend mittelt man über alle Klassen – das ergibt die mAP.

Eine Detektion gilt als True Positive, wenn ihre „Intersection over Union“ (IoU, Überlappung) mit der Ground-Truth-Box größer als ein Schwellwert ist (meist 0,5). Statt einfach mAP geben wir daher oft mAP@0.5 oder mAP@0.25 an – entsprechend dem verwendeten IoU.

Visualisierung der IoU-Definition
Visualisierung der IoU-Definition.

TensorFlow Detection API

Die TensorFlow Detection API bündelt viele der oben genannten Ideen in einem Paket. So kannst du mit dem TensorFlow-Backend schnell verschiedene Konfigurationen testen. Du definierst das Objekterkennungsmodell über Konfigurationsdateien, und die TensorFlow Detection API setzt die nötigen Bausteine zusammen.

Protos

Um besser zu verstehen, welche Komponenten unterstützt werden, schau dir den protos-Ordner mit den Funktionsdefinitionen an. Besonders wichtig fürs Finetuning sind die Protos für train, eval, ssd, faster_rcnn und preprocessing.

SSD (Single Shot Multibox Detector)

Überblick

Die SSD-Architektur wurde 2016 von Google-Forschenden veröffentlicht. Sie kombiniert Region Proposals und Feature-Extraktion in einem einzigen tiefen neuronalen Netz.

Ein Satz vordefinierter Boxen über verschiedene Seitenverhältnisse und Skalen wird auf die Feature Maps angewendet. Da diese Feature Maps aus einem Bildklassifikationsnetz stammen, lassen sich die Merkmale für die Bounding Boxes in einem Schritt extrahieren. Für jede Objektkategorie wird in jeder Default-Box ein Score berechnet. Um die Ground-Truth-Boxen besser zu treffen, werden pro Box Korrekturoffsets gelernt.

SSD-Netzwerk mit Feature Maps
Das SSD-Netzwerk nutzt Feature Maps aus VGG-16.

Unterschiedliche Feature Maps im Convolutional Network haben verschiedene rezeptive Felder und eignen sich daher natürlich für Objekte in unterschiedlichen Skalen. Da die gesamte Berechnung in einem einzigen Netz gekapselt ist, werden hohe Geschwindigkeiten erreicht (z. B. 59 FPS bei 300 × 300 Input).

Einsatz

Für den praktischen Einsatz betrachten wir die Beispiel-Konfigurationsdateien für SSD. Mehrere Parameter sind entscheidend – gehen wir sie durch.

Erstens haben verschiedene Klassifikationsnetze unterschiedliche Stärken und Schwächen (einen Überblick gibt dieser Blogpost). Inceptionv3 erkennt Objekte gut in verschiedenen Skalen, ResNet erzielt insgesamt sehr hohe Genauigkeit. Mobilenet hingegen minimiert den Rechenbedarf. Die Performance des Feature-Extractors auf ImageNet, die Anzahl der Parameter und der ursprüngliche Trainingsdatensatz sind gute Indikatoren für den Trade-off zwischen Leistung und Geschwindigkeit. Der Feature-Extractor wird im Abschnitt „feature_extractor“ definiert.

Zweitens sind die Einstellungen für Default-Boxen und Seitenverhältnisse zentral. Je nach Problem lohnt es sich, die Verteilung der Seitenverhältnisse und Skalen in den gelabelten Daten zu analysieren. So vermeidest du unnötige Berechnungen. Anpassen kannst du das im Abschnitt „ssd_anchor_generator“. Mehr Skalen und Seitenverhältnisse verbessern meist die Leistung, jedoch mit abnehmendem Grenznutzen.

Drittens solltest du beim Training die Bildgröße und Datenaugmentation in den Abschnitten „data_augmentation_options“ und „image_resizer“ setzen. Größere Bilder liefern oft bessere Ergebnisse, da kleine Objekte schwer zu erkennen sind – kosten aber deutlich mehr Rechenzeit. Datenaugmentation ist bei SSD besonders wichtig, um Objekte in unterschiedlichen Skalen zu erkennen (auch in Skalen, die im Training nicht vorkommen).

Schließlich ist das Finetuning der „train_config“ – Lernraten und Batchgrößen – wichtig, um Overfitting zu reduzieren. Die optimalen Werte hängen stark von der Datensatzgröße ab.

Faster R-CNN

Überblick

Faster R-CNN wurde von Forschenden bei Microsoft entwickelt. Es basiert auf R-CNN, das einen mehrstufigen Ansatz nutzte: Selective Search zur Regionenvorschlagserzeugung, dann ein Klassifikationsnetz und anschließend ein SVM zur Klassifikation der Regionen.

Übersicht der R-CNN-Architektur
Überblick über die R-CNN-Architektur. Die NMS-Phase ist nicht dargestellt.

Faster R-CNN ist – ähnlich wie SSD – ein End-to-End-Ansatz. Statt Default-Boxen nutzt Faster R-CNN ein Region Proposal Network (RPN), das eine feste Menge Regionen erzeugt. Das RPN greift auf die Convolutional Features des Bildklassifikationsnetzes zu und generiert damit nahezu ohne Zusatzkosten Regionenvorschläge. Es ist als vollständig konvolutionelles Netz implementiert und sagt an jeder Position Objektgrenzen und „Objectness“-Scores vorher.

Übersicht zu Faster R-CNN
Überblick über Faster R-CNN.

Das RPN ähnelt in seinem Aufbau dem SSD-Netz (es sagt also nicht „aus dem Nichts“ Boxen vorher). Es arbeitet mit Sliding Windows über den Feature Maps. An jeder Sliding-Window-Position – dem Anker – werden Vorschläge mit verschiedenen Skalen und Seitenverhältnissen berechnet. Wie bei SSD entstehen so „angepasste“ Bounding Boxes auf Basis der Anker.

Die einzelnen Komponenten werden in einem System kombiniert und entweder End-to-End oder in mehreren Phasen trainiert (zur Stabilisierung). Man kann das RPN auch als Mechanismus verstehen, der die „Aufmerksamkeit“ des Netzes auf interessante Regionen lenkt.

Einsatz

Viele praktische Details sind analog zu SSD. Hinsichtlich mAP liegt Faster R-CNN meist vor SSD, benötigt aber deutlich mehr Rechenleistung.

Wichtig für den Faster-R-CNN-Detektor ist der Abschnitt „first_stage_anchor_generator“, der die vom RPN erzeugten Anker definiert. Die Strides legen die Schritte des Sliding Windows fest. Achte besonders bei kleinen Objekten darauf – ist der Stride zu groß, verpasst du sie womöglich.

Auch wenn die Autorinnen und Autoren des Faster-R-CNN-Papers keine umfangreiche Datenaugmentation nutzten, empfiehlt sie sich für kleinere Datensätze dennoch.

Fazit

Es gibt noch einige weitere Architekturen zur Objekterkennung, auf die ich hier nicht eingegangen bin. Für Echtzeitanwendungen wird Yolov2 häufig genannt (recht ähnlich zu SSD). Ich aktualisiere diesen Blogpost, sobald es zur TensorFlow Detection API hinzugefügt wird.

Wenn du Fragen hast, schreib sie gern in die Kommentare. Folge mir auf Medium oder Twitter, um Updates zu meinen Blogposts zu erhalten!

Themen
Maschinelles Lernen

Mehr über Machine Learning

Kurs

Machine Learning verstehen

2 Std.
308.6K
In diesem Kurs lernst du das spannende Themenfeld des maschinellen Lernens kennen – und du benötigst dafür gar keine Programmierkenntnisse.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Blog

Arten von KI-Agenten: Ihre Rollen, Strukturen und Anwendungen verstehen

Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

10 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

Abstrakte Klassen in Python: Ein umfassender Leitfaden mit Beispielen

Lerne mehr über abstrakte Klassen in Python, wozu sie gut sind und wie du mit dem Modul „abc“ einheitliche Schnittstellen sicherstellen kannst. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Derrick Mwiti's photo

Derrick Mwiti

10 Min.

Tutorial

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

6 Min.

Mehr AnzeigenMehr Anzeigen