Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Suppression non maximaleNMS

Découvrez comment la suppression non maximale (NMS) élimine les boîtes englobantes en double dans la détection d'objets. Découvrez comment Ultralytics fournit NMS native de bout en bout.

La suppression non maximale (NMS) est une technique de post-traitement utilisée dans la détection d'objets pour affiner les prédictions brutes effectuées par un modèle. Lorsqu'un modèle de détection d'objets analyse une image, il génère souvent plusieurs rectangles de sélection qui se chevauchent pour un même objet, chacun étant associé à un score de confiance. Ces prédictions redondantes se produisent parce que le modèle peut detect même caractéristique à des échelles ou des positions légèrement différentes. NMS ce résultat en ne conservant que le rectangle de sélection le plus précis pour chaque objet et en rejetant les autres, garantissant ainsi que le résultat final est propre, précis et exempt de doublons.

Comment fonctionne la suppression non maximale

NMS fonctionne sur une liste de cadres de sélection candidats et leurs scores de confiance correspondants. L'objectif est de sélectionner le meilleur cadre pour un objet et de supprimer (éliminer) tous les autres cadres qui le chevauchent de manière significative, car il s'agit probablement de détections en double du même objet. Le processus suit généralement les étapes suivantes :

  1. Filtrage : éliminer toutes les boîtes englobantes dont le score de confiance est inférieur à un seuil spécifique (par exemple, 0,25) afin de supprimer immédiatement les prédictions faibles.
  2. Tri : Triez les boîtes restantes par ordre décroissant en fonction de leurs scores de confiance.
  3. Sélection : choisissez la case ayant le score de confiance le plus élevé comme détection valide.
  4. Comparaison : comparez cette boîte sélectionnée avec toutes les autres boîtes restantes à l'aide de l' intersection sur l'union (IoU), une métrique qui mesure le chevauchement entre deux boîtes.
  5. Suppression : si IoU la boîte sélectionnée et une autre boîte dépasse un seuil prédéfini (par exemple, 0,45), la boîte ayant le score le plus bas est considérée comme un doublon et est supprimée.
  6. Itération : Répéter le processus avec la case suivante ayant le score le plus élevé qui n'a pas encore été supprimée ou sélectionnée, jusqu'à ce que toutes les cases aient été traitées.

Applications concrètes

NMS essentiel dans les scénarios où la précision est primordiale et où les détections en double peuvent perturber les systèmes en aval.

  • Conduite autonome : dans les systèmes de voitures autonomes, des caméras detect , les autres véhicules et les panneaux de signalisation. Un modèle peut prédire trois boîtes légèrement différentes pour un seul piéton. NMS le système de planification du véhicule ne reçoit qu'une seule coordonnée pour ce piéton, ce qui évite les freinages erratiques ou les erreurs de planification de trajectoire causées par des obstacles « fantômes ».
  • Gestion des stocks dans le commerce de détail : lorsque l'on utilise la vision par ordinateur pour compter les produits sur une étagère, les articles sont souvent emballés de manière très serrée. Sans NMS, une seule canette de soda pourrait être comptée deux fois en raison de prévisions qui se chevauchent , ce qui conduirait à des niveaux de stock inexacts. NMS ces détections afin de garantir que le comptage des stocks corresponde à la réalité.

NMS avec PyTorch

Bien que de nombreux frameworks modernes gèrent NMS , comprendre son implémentation aide à régler les paramètres. L' exemple suivant montre comment appliquer NMS PyTorch :

import torch
import torchvision.ops as ops

# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
    [
        [100, 100, 200, 200],  # Box A
        [105, 105, 195, 195],  # Box B (High overlap with A)
        [300, 300, 400, 400],  # Box C (Distinct object)
    ],
    dtype=torch.float32,
)

# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)

# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)

print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.

NMS détection de bout en bout

Traditionnellement, NMS une étape de « nettoyage » obligatoire qui se situe en dehors du réseau neuronal principal, ce qui ajoute une latence d'inférence. Cependant, le domaine évolue vers des architectures de bout en bout.

  • NMS standard : processus heuristique qui nécessite un réglage manuel du IoU . Si le seuil est trop bas, des objets valides proches les uns des autres peuvent être manqués (faible rappel). S'il est trop élevé, des doublons subsistent (faible précision).
  • Modèles de bout en bout : les modèles de nouvelle génération tels que YOLO26 sont conçus pour être nativement de bout en bout. Ils apprennent à prédire exactement une boîte par objet pendant l'entraînement, internalisant efficacement le NMS . Cela élimine le besoin d'un post-traitement externe, ce qui se traduit par des vitesses d'inférence plus rapides et des pipelines de déploiement plus simples sur la Ultralytics .

Concepts connexes

  • NMS: Une variante où les boîtes qui se chevauchent ne sont pas strictement supprimées, mais voient leur score de confiance réduit. Cela permet de détecter des objets qui se chevauchent quelque peu (comme des personnes dans une foule) si leur score reste suffisamment élevé après la diminution.
  • Boîtes d'ancrage: formes de boîtes prédéfinies utilisées par de nombreux détecteurs pour estimer la taille des objets. NMS appliqué aux prédictions finales affinées à partir de ces ancres.
  • Intersection sur Union (IoU): Formule mathématique utilisée par NMS déterminer le degré de chevauchement entre deux boîtes, servant de seuil de décision pour la suppression.

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant