|
|
||
|---|---|---|
| .. | ||
| lab | ||
| README.md | ||
README.md
Objekt Erkennung
Die Bildklassifizierungsmodelle, mit denen wir bisher gearbeitet haben, nahmen ein Bild und lieferten ein kategoriales Ergebnis, wie die Klasse 'Zahl' in einem MNIST-Problem. In vielen Fällen wollen wir jedoch nicht nur wissen, dass ein Bild Objekte darstellt - wir wollen in der Lage sein, ihren genauen Standort zu bestimmen. Genau das ist der Punkt der Objekt Erkennung.
Vorlesungsquiz
Bild von YOLO v2 Webseite
Ein Naiver Ansatz zur Objekt Erkennung
Angenommen, wir wollten eine Katze auf einem Bild finden, ein sehr naiver Ansatz zur Objekt Erkennung wäre folgender:
- Zerlegen Sie das Bild in eine Anzahl von Kacheln.
- Führen Sie die Bildklassifizierung auf jeder Kachel durch.
- Die Kacheln, die eine ausreichend hohe Aktivierung ergeben, können als solche betrachtet werden, die das betreffende Objekt enthalten.
Bild aus Übungsnotizbuch
Dieser Ansatz ist jedoch alles andere als ideal, da er es dem Algorithmus nur ermöglicht, die Begrenzungsbox des Objekts sehr ungenau zu lokalisieren. Für eine genauere Lokalisierung müssen wir eine Art Regression durchführen, um die Koordinaten der Begrenzungsrahmen vorherzusagen - und dafür benötigen wir spezifische Datensätze.
Regression zur Objekt Erkennung
Dieser Blogbeitrag bietet eine großartige sanfte Einführung in die Erkennung von Formen.
Datensätze zur Objekt Erkennung
Sie könnten auf die folgenden Datensätze für diese Aufgabe stoßen:
- PASCAL VOC - 20 Klassen
- COCO - Gemeinsame Objekte im Kontext. 80 Klassen, Begrenzungsrahmen und Segmentierungs-Masken
Metriken zur Objekt Erkennung
Schnittmenge über Vereinigung
Während es bei der Bildklassifizierung einfach ist, zu messen, wie gut der Algorithmus funktioniert, müssen wir bei der Objekt Erkennung sowohl die Richtigkeit der Klasse als auch die Präzision des abgeleiteten Begrenzungsrahmenstandorts messen. Für letzteres verwenden wir die sogenannte Schnittmenge über Vereinigung (IoU), die misst, wie gut 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 Schnittmenge zwischen zwei Figuren durch die Fläche ihrer Vereinigung. Für zwei identische Bereiche wäre IoU 1, während es für vollständig disjunkte Bereiche 0 sein würde. Ansonsten variiert es von 0 bis 1. Wir berücksichtigen typischerweise nur diejenigen Begrenzungsrahmen, für die IoU über einem bestimmten Wert liegt.
Durchschnittliche Präzision
Angenommen, wir wollen messen, wie gut eine gegebene Klasse von Objekten C erkannt wird. Um dies zu messen, verwenden wir Durchschnittliche Präzisions-Metriken, die wie folgt berechnet werden:
- Betrachten Sie die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt.
- Je nach Schwellenwert erhalten wir mehr oder weniger Objekte, die im Bild erkannt werden, und unterschiedliche Werte für Präzision und Rückruf.
- Die Kurve sieht folgendermaßen 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 all diese Punkte gemittelt:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP und IoU
Wir werden nur diejenigen Erkennungen berücksichtigen, für die IoU über einem bestimmten Wert liegt. Zum Beispiel wird im PASCAL VOC-Datensatz typischerweise \mbox{IoU-Schwellenwert} = 0.5 angenommen, während im COCO AP für unterschiedliche Werte von \mbox{IoU-Schwellenwert} gemessen wird.
Durchschnittliche Durchschnittliche Präzision - mAP
Die Hauptmetrik für die Objekt Erkennung wird Durchschnittliche Durchschnittliche Präzision oder mAP genannt. Es ist der Wert der Durchschnittlichen Präzision, gemittelt über alle Objektklassen und manchmal auch über \mbox{IoU-Schwellenwert}. Im Detail wird der Prozess zur Berechnung von mAP in
diesem Blogbeitrag beschrieben, und auch hier mit Codebeispielen.
Verschiedene Ansätze zur Objekt Erkennung
Es gibt zwei breite Klassen von Algorithmen zur Objekt Erkennung:
- Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). Die Hauptidee besteht darin, Regionen von Interessen (ROI) zu generieren und CNN darüber laufen zu lassen, um maximale Aktivierung zu suchen. Es ist ein wenig ähnlich wie der naive Ansatz, mit der Ausnahme, dass ROIs auf eine cleverere Weise generiert werden. Einer der größten Nachteile solcher Methoden ist, dass sie langsam sind, da wir viele Durchläufe des CNN-Klassifikators über das Bild benötigen.
- Einmalige (YOLO, SSD, RetinaNet) Methoden. In diesen Architekturen entwerfen wir das Netzwerk, um sowohl Klassen als auch ROIs in einem Durchgang vorherzusagen.
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-Klassifizierer geleitet werden, um die Objektklasse zu bestimmen, und durch lineare Regression, um die Begrenzungsrahmen-Koordinaten zu bestimmen. Offizielles Papier
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 Faltungsschichten angewendet wurden.
Bild aus dem offiziellen Papier, arXiv, 2015
Faster R-CNN
Die Hauptidee dieses Ansatzes ist es, ein neuronales Netzwerk zu verwenden, um ROIs vorherzusagen - so genannte Region Proposal Network. Papier, 2016
Bild aus dem offiziellen Papier
R-FCN: Region-Based Fully Convolutional Network
Dieser Algorithmus ist sogar schneller als Faster R-CNN. Die Hauptidee ist folgende:
- Wir extrahieren Merkmale mit ResNet-101.
- Merkmale werden durch Positionssensitives Score Map verarbeitet. Jedes Objekt aus
CKlassen wird ink\times kRegionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen. - Für jedes Teil aus
k\times kRegionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimme wird ausgewählt.
Bild aus offiziellen Papier
YOLO - You Only Look Once
YOLO ist ein Echtzeit-Einmal-Algorithmus. Die Hauptidee ist folgende:
- Das Bild wird in
S\times SRegionen unterteilt. - Für jede Region sagt CNN
nmögliche Objekte, Begrenzungsrahmen-Koordinaten und Konfidenz=Wahrscheinlichkeit * IoU voraus.
Bild aus offiziellen Papier
Andere Algorithmen
- RetinaNet: offizielles Papier
- PyTorch-Implementierung in Torchvision
- Keras-Implementierung
- Objekterkennung mit RetinaNet in Keras-Beispielen
- SSD (Single Shot Detector): offizielles Papier
✍️ Übungen: Objekterkennung
Setze dein Lernen im folgenden Notizbuch fort:
Fazit
In dieser Lektion hast du eine rasante Tour durch die verschiedenen Möglichkeiten der Objekterkennung gemacht!
🚀 Herausforderung
Lies dir diese Artikel und Notizbücher über YOLO durch und probiere sie selbst aus.
- Guter Blogbeitrag der YOLO beschreibt
- Offizielle Seite
- Yolo: Keras-Implementierung, Schritt-für-Schritt-Notizbuch
- Yolo v2: Keras-Implementierung, Schritt-für-Schritt-Notizbuch
Nach der Vorlesung Quiz
Überprüfung & Selbststudium
- Objekterkennung von Nikhil Sardana
- Ein guter Vergleich von Algorithmen zur Objekterkennung
- Überprüfung von Deep Learning-Algorithmen zur Objekterkennung
- Eine Schritt-für-Schritt-Einführung in die grundlegenden Algorithmen zur Objekterkennung
- Implementierung von Faster R-CNN in Python zur Objekterkennung
Aufgabe: Objekterkennung
Haftungsausschluss:
Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten ü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 die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.









