|
|
||
|---|---|---|
| .. | ||
| lab | ||
| README.md | ||
README.md
Objekterkennung
Die Bildklassifikationsmodelle, 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.
Quiz vor der Vorlesung
Bild von 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:
- Zerlege das Bild in eine Anzahl von Kacheln.
- Führe eine Bildklassifikation auf jeder Kachel durch.
- Die Kacheln, die eine ausreichend hohe Aktivierung ergeben, können als die Kacheln betrachtet werden, die das gesuchte Objekt enthalten.
Bild aus Ü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 spezifische 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
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 Korrektheit der Klasse als auch die Präzision der vorhergesagten Begrenzungsbox-Position messen. Für Letzteres verwenden wir die sogenannte Intersection over Union (IoU), die misst, wie gut sich zwei Boxen (oder zwei beliebige Bereiche) überlappen.
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 1, während es für vollständig getrennte Flächen 0 wäre. Ansonsten variiert es zwischen 0 und 1. Wir betrachten typischerweise nur die Begrenzungsboxen, für die 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:
- Betrachte die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt.
- Abhängig vom Schwellenwert werden mehr oder weniger Objekte im Bild erkannt, und es ergeben sich unterschiedliche Werte für Präzision und Recall.
- 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, für die 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 beschrieben
in diesem Blogbeitrag) und auch hier mit Codebeispielen.
Verschiedene Ansätze zur Objekterkennung
Es gibt zwei große Klassen 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 suchen. Es ist ein bisschen ähnlich wie der naive Ansatz, mit dem Unterschied, 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, und durch lineare Regression, um die Koordinaten der Begrenzungsbox zu bestimmen. Offizielles Paper
Bild von van de Sande et al. ICCV’11
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.
Bild aus dem offiziellen Paper, arXiv, 2015
Faster R-CNN
Die Hauptidee dieses Ansatzes ist es, ein neuronales Netzwerk zu verwenden, um ROIs vorherzusagen – das sogenannte Region Proposal Network. Paper, 2016
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:
- Wir extrahieren Features mit ResNet-101.
- Die Features werden durch Position-Sensitive Score Map verarbeitet. Jedes Objekt aus
CKlassen wird ink\times kRegionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen. - Für jeden Teil aus den
k\times kRegionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimme wird ausgewählt.
Bild aus offiziellem Paper
YOLO – You Only Look Once
YOLO ist ein Echtzeit-Ein-Pass-Algorithmus. Die Hauptidee ist folgende:
- Das Bild wird in
S\times SRegionen unterteilt. - Für jede Region sagt CNN
nmögliche Objekte, Koordinaten der Begrenzungsbox und Confidence=Wahrscheinlichkeit * IoU voraus.
Bild aus offiziellem Paper
Andere Algorithmen
- RetinaNet: offizielles Paper
- PyTorch-Implementierung in Torchvision
- Keras-Implementierung
- Objekterkennung mit RetinaNet in Keras-Beispielen
- SSD (Single Shot Detector): offizielles Paper
✍️ Übungen: Objekterkennung
Setzen Sie Ihr Lernen im folgenden Notebook fort:
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:
- Guter Blogbeitrag über YOLO
- Offizielle Webseite
- Yolo: Keras-Implementierung, Schritt-für-Schritt-Notebook
- Yolo v2: Keras-Implementierung, Schritt-für-Schritt-Notebook
Quiz nach der Vorlesung
Überprüfung & Selbststudium
- Objekterkennung von Nikhil Sardana
- Ein guter Vergleich von Objekterkennungsalgorithmen
- Überblick über Deep-Learning-Algorithmen für Objekterkennung
- Eine Schritt-für-Schritt-Einführung in die grundlegenden Objekterkennungsalgorithmen
- Implementierung von Faster R-CNN in Python für Objekterkennung
Aufgabe: Objekterkennung
Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.









