Suppression Non Maximale (NMS)
Les modèles de détection d'objets prédisent souvent plusieurs boîtes englobantes qui se chevauchent pour un même objet. Cela se produit parce que les modèles analysent une image à différentes échelles et positions, ce qui conduit à des prédictions redondantes. La suppression non maximale (NMS) est une étape de post-traitement essentielle qui affine ces détections en sélectionnant les boîtes englobantes les plus pertinentes tout en éliminant celles qui sont inutiles.

Pourquoi plusieurs boîtes qui se chevauchent apparaissent-elles ?
Les détecteurs d'objets prédisent plusieurs boîtes englobantes pour un seul objet en raison de :
- Boîtes d'ancrage : certains modèles, comme Faster R-CNN et YOLO, utilisent des boîtes d'ancrage prédéfinies de différentes tailles, ce qui conduit à plusieurs détections du même objet ;
- Approches par fenêtre glissante : certaines méthodes de détection analysent une image par petites régions, provoquant des détections répétées d'un objet dans des zones qui se chevauchent ;
- Scores de confiance élevés : le modèle attribue des scores de confiance à chaque prédiction, et des prédictions similaires avec une forte confiance peuvent se chevaucher de manière significative.
Si ces boîtes redondantes ne sont pas filtrées, elles peuvent nuire aux performances de la détection d'objets en augmentant la complexité computationnelle et en rendant le comptage des objets peu fiable.
Fonctionnement de la suppression non maximale (NMS)
La NMS est appliquée pour supprimer les détections dupliquées tout en conservant la boîte englobante la plus confiante. Elle suit les étapes suivantes :
- Tri des scores : organiser toutes les boîtes englobantes prédites par ordre décroissant de leur score de confiance ;
- Sélection de la meilleure boîte : choisir la boîte ayant le score le plus élevé et l’ajouter à la liste finale des détections ;
- Calcul de l’IoU : calculer l’Intersection over Union (IoU) entre la boîte sélectionnée et toutes les boîtes restantes ;
- Seuil de suppression : supprimer les boîtes ayant un IoU supérieur à un seuil défini (par exemple, 0,5), car elles représentent probablement le même objet ;
- Répétition : répéter ce processus pour la boîte suivante avec le score le plus élevé jusqu’à ce que toutes les boîtes soient traitées.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS : une alternative plus intelligente
La NMS standard supprime toutes les boîtes qui se chevauchent au-dessus d’un certain seuil d’IoU, ce qui peut parfois éliminer des détections utiles. Soft-NMS améliore ce processus en diminuant les scores de confiance des boîtes qui se chevauchent au lieu de les supprimer complètement. Cette méthode permet une suppression plus progressive et peut améliorer les performances de détection dans des scénarios d’objets denses.
Principales différences entre la NMS standard et la Soft-NMS :
- NMS standard : supprime les boîtes qui se chevauchent au-dessus du seuil d’IoU ;
- Soft-NMS : réduit les scores de confiance des boîtes qui se chevauchent au lieu de les éliminer, ce qui la rend plus flexible pour la détection d’objets partiellement occultés.
Équilibrer précision et rapidité dans la NMS
Le choix du bon seuil d’IoU est crucial :
- Seuils plus élevés (par exemple, 0,6 - 0,7) : filtrage plus agressif, ne conservant que les boîtes les plus confiantes mais risquant de manquer certaines détections valides ;
- Seuils plus bas (par exemple, 0,3 - 0,4) : conserve davantage de boîtes qui se chevauchent, ce qui peut être utile dans des scènes encombrées mais peut augmenter les faux positifs.
L’utilisation d’implémentations optimisées, telles que les fonctions NMS intégrées de TensorFlow ou OpenCV, peut accélérer le traitement pour les applications en temps réel.
La suppression non maximale (NMS) est une technique essentielle en détection d'objets permettant de supprimer les boîtes englobantes redondantes et d'améliorer la précision du modèle. La NMS standard élimine efficacement les détections dupliquées, tandis que la Soft-NMS affine le processus en ajustant les scores de confiance au lieu de supprimer directement. En ajustant finement les seuils d'IoU, il est possible de trouver le bon équilibre entre précision de détection et efficacité computationnelle.
1. Quel est le principal objectif de la suppression non maximale (NMS) en détection d'objets ?
2. Comment la NMS standard détermine-t-elle quelles boîtes englobantes supprimer ?
3. Quelle est la principale différence entre la NMS standard et la Soft-NMS ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.45
Suppression Non Maximale (NMS)
Glissez pour afficher le menu
Les modèles de détection d'objets prédisent souvent plusieurs boîtes englobantes qui se chevauchent pour un même objet. Cela se produit parce que les modèles analysent une image à différentes échelles et positions, ce qui conduit à des prédictions redondantes. La suppression non maximale (NMS) est une étape de post-traitement essentielle qui affine ces détections en sélectionnant les boîtes englobantes les plus pertinentes tout en éliminant celles qui sont inutiles.

Pourquoi plusieurs boîtes qui se chevauchent apparaissent-elles ?
Les détecteurs d'objets prédisent plusieurs boîtes englobantes pour un seul objet en raison de :
- Boîtes d'ancrage : certains modèles, comme Faster R-CNN et YOLO, utilisent des boîtes d'ancrage prédéfinies de différentes tailles, ce qui conduit à plusieurs détections du même objet ;
- Approches par fenêtre glissante : certaines méthodes de détection analysent une image par petites régions, provoquant des détections répétées d'un objet dans des zones qui se chevauchent ;
- Scores de confiance élevés : le modèle attribue des scores de confiance à chaque prédiction, et des prédictions similaires avec une forte confiance peuvent se chevaucher de manière significative.
Si ces boîtes redondantes ne sont pas filtrées, elles peuvent nuire aux performances de la détection d'objets en augmentant la complexité computationnelle et en rendant le comptage des objets peu fiable.
Fonctionnement de la suppression non maximale (NMS)
La NMS est appliquée pour supprimer les détections dupliquées tout en conservant la boîte englobante la plus confiante. Elle suit les étapes suivantes :
- Tri des scores : organiser toutes les boîtes englobantes prédites par ordre décroissant de leur score de confiance ;
- Sélection de la meilleure boîte : choisir la boîte ayant le score le plus élevé et l’ajouter à la liste finale des détections ;
- Calcul de l’IoU : calculer l’Intersection over Union (IoU) entre la boîte sélectionnée et toutes les boîtes restantes ;
- Seuil de suppression : supprimer les boîtes ayant un IoU supérieur à un seuil défini (par exemple, 0,5), car elles représentent probablement le même objet ;
- Répétition : répéter ce processus pour la boîte suivante avec le score le plus élevé jusqu’à ce que toutes les boîtes soient traitées.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS : une alternative plus intelligente
La NMS standard supprime toutes les boîtes qui se chevauchent au-dessus d’un certain seuil d’IoU, ce qui peut parfois éliminer des détections utiles. Soft-NMS améliore ce processus en diminuant les scores de confiance des boîtes qui se chevauchent au lieu de les supprimer complètement. Cette méthode permet une suppression plus progressive et peut améliorer les performances de détection dans des scénarios d’objets denses.
Principales différences entre la NMS standard et la Soft-NMS :
- NMS standard : supprime les boîtes qui se chevauchent au-dessus du seuil d’IoU ;
- Soft-NMS : réduit les scores de confiance des boîtes qui se chevauchent au lieu de les éliminer, ce qui la rend plus flexible pour la détection d’objets partiellement occultés.
Équilibrer précision et rapidité dans la NMS
Le choix du bon seuil d’IoU est crucial :
- Seuils plus élevés (par exemple, 0,6 - 0,7) : filtrage plus agressif, ne conservant que les boîtes les plus confiantes mais risquant de manquer certaines détections valides ;
- Seuils plus bas (par exemple, 0,3 - 0,4) : conserve davantage de boîtes qui se chevauchent, ce qui peut être utile dans des scènes encombrées mais peut augmenter les faux positifs.
L’utilisation d’implémentations optimisées, telles que les fonctions NMS intégrées de TensorFlow ou OpenCV, peut accélérer le traitement pour les applications en temps réel.
La suppression non maximale (NMS) est une technique essentielle en détection d'objets permettant de supprimer les boîtes englobantes redondantes et d'améliorer la précision du modèle. La NMS standard élimine efficacement les détections dupliquées, tandis que la Soft-NMS affine le processus en ajustant les scores de confiance au lieu de supprimer directement. En ajustant finement les seuils d'IoU, il est possible de trouver le bon équilibre entre précision de détection et efficacité computationnelle.
1. Quel est le principal objectif de la suppression non maximale (NMS) en détection d'objets ?
2. Comment la NMS standard détermine-t-elle quelles boîtes englobantes supprimer ?
3. Quelle est la principale différence entre la NMS standard et la Soft-NMS ?
Merci pour vos commentaires !