[PYTHON] Computer Vision: Objekterkennung - Nicht maximale Unterdrückung

Ziel

Implementieren Sie eine nicht maximale Unterdrückung, die zur Objekterkennung verwendet wird.

Einführung

Hier wird der Schnittpunkt über Vereinigung und nicht maximale Unterdrückung vorgestellt, der in Computer Vision: Objekterkennung Teil 2 - Einzelbild-Mehrfachdetektor verwendet wird.

Non Maximum Suppression (NMS) Bei der Objekterkennung können, wie in der folgenden Abbildung gezeigt, mehrere Kandidatenbereiche, von denen angenommen wird, dass sie ein Objekt haben, für ein erkanntes Objekt erhalten werden.

Der von dem farbigen Rechteck umgebene Teil zeigt auf den Kandidatenbereich, und die Anzeige oben links in jedem Kandidatenbereich zeigt die Kategorie und Sicherheit der im Kandidatenbereich vorhandenen Objekte.

bicycle-car-dog_bbox.png

Nicht maximale Unterdrückung ist ein Prozess, bei dem nur die Kandidatenbereiche mit der höchsten Sicherheit unter den mehreren erhaltenen Kandidatenbereichen beibehalten werden sollen, dh diejenigen unterdrückt werden, die nicht das Maximum sind.

Nachdem der Zweck der Eingrenzung der Kandidatenbereiche festgelegt wurde, überlegen wir, wie dies erreicht werden kann.

Intersection over Union (IoU) Non Maximum Suppression führt eine Schwellenwertverarbeitung basierend auf Intersection over Union (IoU) durch, einem Index zur Quantifizierung des Überlappungsgrads zwischen der Kandidatenregion mit maximaler Objektsicherheit und anderen Kandidatenregionen.

Unter Berücksichtigung der beiden in der folgenden Abbildung gezeigten Kandidatenbereiche kann die IoU anhand der folgenden Formel berechnet werden.

IoU = \frac{a \cap b}{a \cup b}

iou.png

$ A \ cap b $ und $ a \ cup b $, die in der Mengenlehre verwendeten Symbole sind, repräsentieren die farbigen Bereiche in der folgenden Abbildung. Berechnen Sie bei der Implementierung die IoU, indem Sie die Fläche jedes Kandidatenbereichs, des gemeinsamen Teils und der Gesamtfläche ermitteln.

IoU_area.png

IoU nimmt einen Wert von [0, 1] an. Je größer die Überlappung ist, desto näher ist der Wert an 1, und je kleiner die Überlappung ist, desto kleiner ist der IoU-Wert. Stellen Sie daher den Schwellenwert im Voraus ein und löschen Sie den Kandidatenbereich mit einer IoU, die größer als der Schwellenwert ist. Wenn der IoU-Wert kleiner als der Schwellenwert ist, wird davon ausgegangen, dass ein anderes Objekt erkannt wird und der Kandidatenbereich verlassen wird.

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700 4,00 GHz

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Numpy 1.17.3 ・ Opencv-Contrib-Python 4.1.2.30

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/ComputerVision/tree/master/SSMD).

non_maximum_suppression.py


Ergebnis

Wenn der Schwellenwert auf 0,1 gesetzt und ausgeführt wurde, wurde die große Anzahl der ursprünglich angezeigten Kandidatenbereiche auf eins eingegrenzt.

bicycle-car-dog_nms.png

Referenz

Computer Vision : Object Detection Part2 - Single Shot Multi Detector

Tatsuya Harada. "Machine Recognition Professional Series Bilderkennung", Kodansha, 2017.

Recommended Posts

Computer Vision: Objekterkennung - Nicht maximale Unterdrückung
Computer Vision: Objekterkennung Part2-Single Shot Multi Detector
Computer Vision: Objekterkennung Teil 1 - Bounding Box-Vorverarbeitung
[PyTorch Tutorial ⑧] Tutorial zur Feinabstimmung der Erkennung von Fackelsichtobjekten