[PYTHON] Werfen wir einen kurzen Blick auf CornerNet, einen Objektdetektor, der keine Anker verwendet.

Papier zur Einführung

CornerNet: Detecting Objects as Paired Keypoints

https://arxiv.org/abs/1808.01244

Scheint auf der ECCV 2018 bekannt zu geben

Oh, es ist im Grunde meine Interpretation, also kann es einige Fehler geben

Auf Probleme hingewiesen

Schnellere RCNN, SSD und YOLO haben "vorgegebene Anker", die "Klassen" innerhalb von Ankern ausführen und "zu Ankern und tatsächlichen Begrenzungsrahmen zurückkehren".

Mit anderen Worten, ich bezweifle, dass es einen Teil gibt, der vom Anker abhängt.

① Die Anzahl der Anker erhöht sich DSSD verwendet Anker von 40.000 oder mehr und Retina Net verwendet Anker von 100.000 oder mehr. Einfache Geschichte "Wenn Sie die Anzahl der Anker erhöhen, lässt sich die richtige Antwort-Bbox leicht in den Anker einhängen, sodass sich die Genauigkeit verbessert."

Wenn Sie die Anzahl der Anker erhöhen, erhöht sich die Anzahl der negativen Anker und die Lerngeschwindigkeit nimmt ab.

② Viele Hyperparameter des Ankers ・ Wie viele bboxes · Welche Größe ・ Welches Seitenverhältnis Dieser Entwurf ist mühsam, komplex und umständlich.

Ist es möglich, einen Objektdetektor herzustellen, der keine Anker verwendet? </ b>

Das ist meine Motivation.

Raue Struktur

image.png

Das erste Merkmal ist, dass die bbox-Koordinaten und die Größe nicht zurückgegeben werden. Dann geben wir eine Wärmekarte der Wahrscheinlichkeit der oberen linken Koordinate des Eingabebildes und der Wahrscheinlichkeit der oberen rechten Koordinate aus. Keine Regression bei vollständig verbundener Ebene

Ausgabe

Es gibt drei grundlegende Ausgänge. ・ Wärmekarte bezüglich der Position der Koordinaten (oben links bzw. unten rechts) ・ Einbettung, die Objekte derselben Klasse trennt ・ Offset-Ausgabe, die die Auflösung durch Merkmalsextraktion wiederherstellt

Werfen wir einen kurzen Blick auf jeden einzelnen

Wärmekartenerzeugung

Die obere linke Koordinate des richtigen Begrenzungsrahmens ist im Wesentlichen ein "Punkt", daher ist sie zu streng, um sie vorherzusagen. Wenden Sie daher einen Gaußschen Filter an, um ihn etwas größer zu machen.

Alles, was übrig bleibt, ist die Vorhersage dieser Heatmap mit einem Netzwerk vom Typ Encoder-Decoder namens HourglassNetwork.

Die Verlustfunktion übernimmt den Fokusverlust.

image.png

Versatz

Grob gesagt ist es nicht so wichtig, aber Wenn eine Merkmalsextraktion durchgeführt wird, sinkt die Auflösung, sodass die genauen Koordinaten im Originalbild durch Regression berechnet werden.

image.png

Einbetten

Für jede Klasse werden Ausgabe-Heatmaps erstellt. Wenn aus einem Bild mehrere Objekte derselben Klasse stammen, gibt es daher mehrere Eckpunkte. Beispielsweise werden in einem Bild mit zwei Menschen zwei obere linke Punkte in der "Ausgangswärmekarte der menschlichen Klasse" erfasst.

Erstellen Sie danach eine Kombination aus dem oberen linken Punkt und dem unteren rechten Punkt, um einen Begrenzungsrahmen zu erstellen. Zu diesem Zeitpunkt ist die Kombination von oben links und unten rechts nicht klar. Multiplizieren Sie daher mithilfe der Einbettung die Verluste mit ähnlichen Merkmalen in derselben Kombination. Dies erleichtert das Auffinden von Kombinationen. Lpull macht zwei Merkmale derselben Kombination ähnlich Lpush hat die Eigenschaft, zwei verschiedene Kombinationen von Merkmalen unterschiedlich zu machen.

image.png image.png

Verlustfunktion

Es ist eine Kombination aus Erkennungsverlust, Einbettungsverlust und Offsetverlust.

image.png

corner pooling Die Technik der "Vorhersage dieses oberen linken Punktes und des unteren rechten Punktes" sagt grundsätzlich voraus, wo die Klasse nicht existiert. Dies dient dazu, den Rand des Begrenzungsrahmens vorherzusagen, aber der Mangel an Informationen für diese Klasse an dem vorherzusagenden Punkt scheint problematisch. Daher verwenden wir eine neue Pooling-Methode namens Corner Pooling. image.png

Was ich mache, ist wie in der Abbildung und es ist, als würde man den Maximalwert vertikal und horizontal verschieben.

Es scheint eine gute Überlegung zu geben, dass "sich ein Mensch in der Richtung rechts von der oberen linken Koordinate befindet".

Ergebnis

Ergebnis des Eckpoolings

Die Oberseite der Figur ist ohne Eckpooling und die Unterseite der Figur ist mit Eckpooling. Sie können sehen, dass der genaue Begrenzungsrahmen vorgeschlagen wird. image.png

Quantitativ können Sie sehen, dass die Genauigkeit etwas besser ist. Sie können auch bestätigen, dass es ohne gut genug ist. image.png

Vergleichsexperiment

Im Vergleich zu anderen Methoden sind die Ergebnisse viel besser als bei anderen einstufigen Detektoren, und die Ergebnisse sind mit denen von zweistufigen Detektoren vergleichbar.

image.png

Erfolgsgeschichte

Überlappende Giraffen sind deutlich zu erkennen. Sie können sehen, dass die Einbettung gut funktioniert. image.png

Fehlerbeispiel

Dies ist ein Fehlerbeispiel. Einige Personen werden möglicherweise nicht erkannt oder die Einbettung ist möglicherweise falsch. image.png

Arbeitsgeschwindigkeit

244 ms pro Blatt langsam

Zusammenfassung

Wir haben einen neuen Objektdetektor vorgeschlagen, der überhaupt keine Anker verwendet, und einige Ergebnisse wurden erzielt. Besonders die Genauigkeit ist recht gut.

Auf der anderen Seite liegt das Problem bei 244 ms und die langsame Betriebsgeschwindigkeit ist fantastisch. Da dies jedoch das erste Papier ist, das eine Heatmap-Methode verwendet, besteht die Möglichkeit, dass es in Zukunft verbessert wird.

(Persönlich) Das Ergebnis des Corner Pooling ist etwas besser, aber es ist möglicherweise nicht sehr brauchbar, außer für diese Anmerkung.

Deshalb habe ich kurz über CornerNet erklärt, einen Detektor, der keine Anker verwendet. Wenn es an Erklärungen mangelt, möchte ich sie noch einmal ergänzen.

Entwicklungssystem

centerNet https://arxiv.org/abs/1904.07850

Grid R-CNN https://arxiv.org/abs/1811.12030

Recommended Posts

Werfen wir einen kurzen Blick auf CornerNet, einen Objektdetektor, der keine Anker verwendet.
Werfen wir einen Blick auf die Feature-Map von YOLO v3
Ich habe ein neuronales Netzwerk Π-Net ausprobiert, für das keine Aktivierungsfunktion erforderlich ist
Werfen wir einen Blick auf den Scapy-Code. Wie bearbeiten Sie die Struktur?
Tigerwicklung, die keinen Unfall verursacht
Verwendung der TP-Link-WLAN-Slave-Einheit, die Linux nicht unterstützt