[PYTHON] Vision par ordinateur: détection d'objets - Suppression non maximale

Cible

Implémentez la suppression non maximale utilisée pour la détection d'objets.

introduction

Sont présentés ici l'intersection sur union et la suppression non maximale utilisée dans Computer Vision: Object Detection Part2-Single Shot Multi Detector.

Non Maximum Suppression (NMS) Dans la détection d'objet, comme le montre la figure ci-dessous, plusieurs régions candidates qui sont supposées avoir un objet peuvent être obtenues pour un objet reconnu.

La partie entourée par le rectangle coloré pointe vers la zone candidate et l'affichage en haut à gauche de chaque zone candidate montre la catégorie et la certitude des objets existant dans la zone candidate.

bicycle-car-dog_bbox.png

La suppression non maximale est un processus qui veut conserver uniquement les zones candidates avec la plus grande certitude parmi les multiples zones candidates obtenues, c'est-à-dire supprime celles qui ne sont pas les maximums.

Maintenant que l'objectif de réduire les zones candidates a été décidé, réfléchissons à la manière d'y parvenir.

Intersection over Union (IoU) La suppression non maximale effectue un traitement de seuil basé sur Intersection over Union (IoU), qui est un indice pour quantifier le degré de chevauchement, entre la région candidate avec la certitude d'objet maximale et d'autres régions candidates.

Compte tenu des deux zones candidates comme indiqué dans la figure ci-dessous, l'IoU peut être calculée à partir de la formule suivante.

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

iou.png

$ A \ cap b $ et $ a \ cup b $, qui sont les symboles utilisés dans la théorie des ensembles, représentent respectivement les zones colorées dans la figure ci-dessous. Lors de la mise en œuvre, calculez l'IoU en trouvant la surface de chaque zone candidate, la partie commune et la surface totale.

IoU_area.png

IoU prend une valeur de [0, 1], plus le chevauchement est grand, plus la valeur est proche de 1, et plus le chevauchement est petit, plus la valeur IoU est petite. Par conséquent, définissez le seuil à l'avance et supprimez la zone candidate avec une IoU supérieure au seuil. Si la valeur IoU est inférieure au seuil, on considère qu'un autre objet est détecté et la zone candidate est laissée.

la mise en oeuvre

Environnement d'exécution

Matériel

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

Logiciel

・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Numpy 1.17.3 ・ Opencv-contrib-python 4.1.2.30

Programme à exécuter

Le programme implémenté est publié sur GitHub.

non_maximum_suppression.py


résultat

Lorsque le seuil a été défini sur 0,1 et exécuté, le grand nombre de zones candidates initialement affichées a été réduit à un.

bicycle-car-dog_nms.png

référence

Computer Vision : Object Detection Part2 - Single Shot Multi Detector

Tatsuya Harada. «Reconnaissance d'image de la série professionnelle Machine Learning», Kodansha, 2017.

Recommended Posts

Vision par ordinateur: détection d'objets - Suppression non maximale
Vision par ordinateur: Détection d'objets Part2-Détecteur multi-coup unique
Computer Vision: Object Detection Part1 - Prétraitement de la boîte englobante
[Didacticiel PyTorch ⑧] Didacticiel de mise au point de la détection d'objets Torch Vision