Chamfer Distance
La distance de Chamfer mesure à quel point des ensembles de points, des surfaces 3D ou des contours d’objets correspondent, et facilite ainsi la reconstruction, la segmentation et l’entraînement des modèles.
La distance de Chamfer mesure à quel point deux ensembles de points correspondent. Elle se calcule à partir de la distance entre chaque point et son plus proche voisin dans l’autre ensemble. Des valeurs plus faibles indiquent une meilleure correspondance. En vision par ordinateur, elle permet de comparer des nuages de points 3D — des ensembles de coordonnées spatiales échantillonnées — et des contours d’objets 2D. L’ordre des points n’a pas d’importance, et les ensembles peuvent contenir un nombre différent de points.
Ses origines remontent au chamfer matching, introduit par H. G. Barrow, J. M. Tenenbaum, R. C. Bolles et H. C. Wolf en 1977 pour faire correspondre des formes représentées par des courbes dans une image. En CAO mécanique, un chanfrein est un bord biseauté dont les dimensions décrivent une caractéristique physique.
Calcul de la distance de Chamfer#
Pour deux ensembles de points non vides, A et B, une définition courante fondée sur les distances au carré comporte trois étapes :
- Pour chaque point de A, trouver son plus proche voisin dans B, calculer le carré de la distance euclidienne, puis faire la moyenne de ces valeurs.
- Répéter l’opération de B vers A.
- Additionner les deux moyennes directionnelles.
La première direction pénalise les points prédits éloignés de la surface de référence ; la direction inverse pénalise les régions de référence absentes de la prédiction. Cette méthode utilise la même opération de recherche du plus proche voisin que les k plus proches voisins, avec un seul voisin par requête. L’implémentation de Chamfer de PyTorch3D prend en charge les calculs bidirectionnels et unidirectionnels.
Le calcul avec des distances au carré ou non, ainsi que l’utilisation d’une somme ou d’une moyenne, modifient le score. Une autre convention courante consiste à faire la moyenne des deux moyennes directionnelles, ce qui donne la moitié de leur somme. Par conséquent, la convention de distance, les unités des coordonnées et la normalisation font partie de la définition de la métrique pour une expérience.
Ce calcul avec PyTorch utilise torch.cdist pour calculer les distances euclidiennes par paires :
import torch
a = torch.tensor([[0.0, 0.0], [2.0, 0.0]])
b = torch.tensor([[0.0, 0.0], [3.0, 0.0]])
# Reduce squared distances in each nearest-neighbor direction.
distances = torch.cdist(a, b, p=2)
squared_distances = distances.square()
a_to_b = squared_distances.min(dim=1).values.mean()
b_to_a = squared_distances.min(dim=0).values.mean()
chamfer = a_to_b + b_to_a
print(f"Squared Chamfer distance: {chamfer.item():.2f}")La sortie est 1.00 : chaque moyenne directionnelle est 0.50. Des ensembles de points identiques donnent zéro.
Perte de Chamfer lors de l’entraînement des modèles#
La perte de Chamfer désigne l’utilisation de la distance de Chamfer comme fonction de perte. Un réseau neuronal prédit les coordonnées des points, et la rétropropagation fournit des gradients qui les rapprochent des points de référence. La sélection du plus proche voisin rend l’objectif différentiable par morceaux : dans une région où les correspondances restent fixes, les distances au carré fournissent des gradients par rapport aux coordonnées.
Une application fondamentale est le réseau de génération d’ensembles de points (PSGN) de Haoqiang Fan, Hao Su et Leonidas J. Guibas, présenté à CVPR 2017. Il utilise la distance de Chamfer comme objectif d’entraînement pour la reconstruction 3D à partir d’une seule image et prédit le nuage de points d’un objet à partir d’une photographie. Cet objectif fondé sur les ensembles de points permet l’apprentissage sans correspondances prédéfinies entre les points.
Applications à la reconstruction et à la segmentation#
En reconstruction 3D, la distance de Chamfer compare les surfaces prédites échantillonnées à la géométrie de référence. Elle permet aussi l’ajustement de maillages : les sommets sont optimisés de sorte que les échantillons du maillage se rapprochent des échantillons cibles. Lors de l’ajustement d’un maillage de sphère à dauphin, l’optimisation de la seule perte de Chamfer produit une surface irrégulière ; la régularisation des arêtes, des normales et du laplacien contraint la structure locale du maillage.
Pour la segmentation d’instances, la distance de Chamfer mesure le désaccord spatial entre les contours prédits échantillonnés et les contours annotés. La segmentation d’Ultralytics YOLO26 expose les coordonnées des polygones via Masks.xy, ce qui fournit des ensembles de points pour l’évaluation externe des contours fondée sur Chamfer. Contrairement à l’intersection sur l’union fondée sur la surface, la distance entre contours indique l’écart entre les contours.
Mesures connexes et interprétation du score#
Trois concepts connexes permettent de préciser ce que mesure le score :
- La distance de Hausdorff utilise le plus grand écart entre plus proches voisins et met ainsi l’accent sur le pire désaccord entre les contours ou les surfaces.
- La distance de transport de terre recherche un transport à coût minimal qui préserve la masse entre les distributions, en établissant des correspondances entre les ensembles de points.
- La distance de Chamfer tenant compte de la densité traite le problème de l’échantillonnage local inégal. La correspondance Chamfer classique permet à plusieurs points de partager le même plus proche voisin ; les groupes denses peuvent donc présenter de faibles erreurs malgré une uniformité d’échantillonnage médiocre.
La densité d’échantillonnage, l’alignement et le prétraitement des données influent donc sur les comparaisons. La distance non élevée au carré s’exprime dans l’unité des coordonnées ; la distance au carré s’exprime dans son carré. Convertir les deux nuages de mètres en centimètres multiplie la distance de Chamfer non élevée au carré par 100 et la distance de Chamfer au carré par 10 000.










