Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 11.1 KB

File metadata and controls

179 lines (101 loc) · 11.1 KB

Objekterkennung

Die Bildklassifizierungsmodelle, die wir bisher behandelt haben, nahmen ein Bild und lieferten ein kategorisches Ergebnis, wie beispielsweise die Klasse "Zahl" in einem MNIST-Problem. In vielen Fällen möchten wir jedoch nicht nur wissen, dass ein Bild Objekte darstellt – wir möchten auch deren genaue Position bestimmen können. Genau darum geht es bei der Objekterkennung.

Objekterkennung

Bild von der YOLO v2 Webseite

Ein naiver Ansatz zur Objekterkennung

Angenommen, wir wollten eine Katze auf einem Bild finden, dann wäre ein sehr naiver Ansatz zur Objekterkennung folgender:

  1. Zerlege das Bild in eine Anzahl von Kacheln.
  2. Führe eine Bildklassifikation auf jeder Kachel durch.
  3. Die Kacheln, die eine ausreichend hohe Aktivierung zeigen, können als die Kacheln betrachtet werden, die das gesuchte Objekt enthalten.

Naive Objekterkennung

Bild aus dem Übungsnotebook

Dieser Ansatz ist jedoch alles andere als ideal, da er es dem Algorithmus nur erlaubt, die Begrenzungsbox des Objekts sehr ungenau zu lokalisieren. Für eine präzisere Lokalisierung müssen wir eine Art Regression durchführen, um die Koordinaten der Begrenzungsboxen vorherzusagen – und dafür benötigen wir spezielle Datensätze.

Regression für Objekterkennung

Dieser Blogbeitrag bietet eine großartige Einführung in die Erkennung von Formen.

Datensätze für Objekterkennung

Für diese Aufgabe könnten Sie auf die folgenden Datensätze stoßen:

  • PASCAL VOC – 20 Klassen
  • COCO – Common Objects in Context. 80 Klassen, Begrenzungsboxen und Segmentierungsmasken

COCO

Metriken für Objekterkennung

Intersection over Union

Während es bei der Bildklassifikation einfach ist, die Leistung des Algorithmus zu messen, müssen wir bei der Objekterkennung sowohl die Richtigkeit der Klasse als auch die Genauigkeit der vorhergesagten Position der Begrenzungsbox messen. Für Letzteres verwenden wir die sogenannte Intersection over Union (IoU), die misst, wie gut sich zwei Boxen (oder zwei beliebige Bereiche) überlappen.

IoU

Abbildung 2 aus diesem ausgezeichneten Blogbeitrag über IoU

Die Idee ist einfach – wir teilen die Fläche der Überschneidung zwischen zwei Figuren durch die Fläche ihrer Vereinigung. Für zwei identische Flächen wäre IoU gleich 1, während für vollständig getrennte Flächen IoU gleich 0 ist. Ansonsten variiert der Wert zwischen 0 und 1. Wir betrachten typischerweise nur die Begrenzungsboxen, bei denen IoU über einem bestimmten Wert liegt.

Durchschnittliche Präzision

Angenommen, wir möchten messen, wie gut eine bestimmte Objektklasse $C$ erkannt wird. Um dies zu messen, verwenden wir die Durchschnittliche Präzision (Average Precision, AP), die wie folgt berechnet wird:

  1. Betrachten Sie die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt.
  2. Abhängig vom Schwellenwert werden mehr oder weniger Objekte im Bild erkannt, und es ergeben sich unterschiedliche Werte für Präzision und Recall.
  3. Die Kurve sieht wie folgt aus:

Bild aus NeuroWorkshop

Die durchschnittliche Präzision für eine gegebene Klasse $C$ ist die Fläche unter dieser Kurve. Genauer gesagt wird die Recall-Achse typischerweise in 10 Teile unterteilt, und die Präzision wird über alle diese Punkte gemittelt:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP und IoU

Wir betrachten nur die Erkennungen, bei denen IoU über einem bestimmten Wert liegt. Beispielsweise wird im PASCAL VOC-Datensatz typischerweise $\mbox{IoU Threshold} = 0.5$ angenommen, während im COCO-Datensatz AP für verschiedene Werte von $\mbox{IoU Threshold}$ gemessen wird.

Bild aus NeuroWorkshop

Mittlere Durchschnittliche Präzision – mAP

Die Hauptmetrik für die Objekterkennung wird Mittlere Durchschnittliche Präzision (Mean Average Precision, mAP) genannt. Sie ist der Wert der Durchschnittlichen Präzision, gemittelt über alle Objektklassen und manchmal auch über $\mbox{IoU Threshold}$. Der Prozess zur Berechnung von mAP wird ausführlich in diesem Blogbeitrag beschrieben, sowie hier mit Codebeispielen.

Verschiedene Ansätze zur Objekterkennung

Es gibt zwei Hauptklassen von Objekterkennungsalgorithmen:

  • Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). Die Hauptidee ist, Regions of Interest (ROI) zu generieren und CNN darüber laufen zu lassen, um maximale Aktivierung zu finden. Dies ähnelt dem naiven Ansatz, mit der Ausnahme, dass ROIs auf eine intelligentere Weise generiert werden. Ein Hauptnachteil solcher Methoden ist, dass sie langsam sind, da viele Durchläufe des CNN-Klassifikators über das Bild erforderlich sind.
  • One-pass (YOLO, SSD, RetinaNet) Methoden. In diesen Architekturen wird das Netzwerk so gestaltet, dass es sowohl Klassen als auch ROIs in einem Durchgang vorhersagt.

R-CNN: Region-Based CNN

R-CNN verwendet Selective Search, um eine hierarchische Struktur von ROI-Regionen zu generieren, die dann durch CNN-Feature-Extraktoren und SVM-Klassifikatoren geleitet werden, um die Objektklasse zu bestimmen, sowie durch lineare Regression, um die Koordinaten der Begrenzungsbox zu bestimmen. Offizielles Paper

RCNN

Bild von van de Sande et al. ICCV’11

RCNN-1

Bilder aus diesem Blog

F-RCNN – Fast R-CNN

Dieser Ansatz ähnelt R-CNN, aber die Regionen werden definiert, nachdem die Convolution-Schichten angewendet wurden.

FRCNN

Bild aus dem offiziellen Paper, arXiv, 2015

Faster R-CNN

Die Hauptidee dieses Ansatzes ist die Verwendung eines neuronalen Netzwerks zur Vorhersage von ROIs – des sogenannten Region Proposal Network. Paper, 2016

FasterRCNN

Bild aus dem offiziellen Paper

R-FCN: Region-Based Fully Convolutional Network

Dieser Algorithmus ist sogar schneller als Faster R-CNN. Die Hauptidee ist folgende:

  1. Wir extrahieren Features mit ResNet-101.
  2. Die Features werden durch Position-Sensitive Score Map verarbeitet. Jedes Objekt aus $C$ Klassen wird in $k\times k$ Regionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen.
  3. Für jeden Teil aus den $k\times k$ Regionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimmenanzahl wird ausgewählt.

r-fcn Bild

Bild aus dem offiziellen Paper

YOLO – You Only Look Once

YOLO ist ein Echtzeit-One-Pass-Algorithmus. Die Hauptidee ist folgende:

  • Das Bild wird in $S\times S$ Regionen unterteilt.
  • Für jede Region sagt CNN $n$ mögliche Objekte, Koordinaten der Begrenzungsbox und Confidence=Wahrscheinlichkeit * IoU voraus.

YOLO

Bild aus dem offiziellen Paper

Andere Algorithmen

✍️ Übungen: Objekterkennung

Setzen Sie Ihr Lernen im folgenden Notebook fort:

ObjectDetection.ipynb

Fazit

In dieser Lektion haben Sie einen Überblick über die verschiedenen Möglichkeiten zur Objekterkennung erhalten!

🚀 Herausforderung

Lesen Sie diese Artikel und Notebooks über YOLO und probieren Sie sie selbst aus:

Überprüfung & Selbststudium