Chamfer Distance
Chamfer distance는 점 집합, 3D 표면 또는 객체 경계가 얼마나 잘 일치하는지 측정하며, 재구성, 세그멘테이션 및 모델 학습을 지원합니다.
Chamfer distance는 두 점 집합이 얼마나 잘 일치하는지 측정하는 값으로, 각 점과 다른 집합에서 가장 가까운 이웃 사이의 거리를 계산합니다. 값이 낮을수록 더 잘 일치합니다. 컴퓨터 비전에서는 샘플링된 공간 좌표의 모음인 3D 점 클라우드와 2D 객체 경계를 비교하는 데 사용됩니다. 점의 순서는 중요하지 않으며, 두 집합의 점 개수가 달라도 됩니다.
이 개념은 1977년 H. G. Barrow, J. M. Tenenbaum, R. C. Bolles, H. C. Wolf가 이미지 곡선으로 표현된 형상을 매칭하는 방법으로 제안한 chamfer matching에서 비롯되었습니다. 기계 CAD에서 챔퍼는 물리적 형상의 치수를 나타내는 모따기된 모서리입니다.
Chamfer Distance 계산 방법#
비어 있지 않은 두 점 집합 A와 B에 일반적으로 적용되는 제곱 거리 정의는 다음 세 단계로 구성됩니다.
- A의 각 점에 대해 B에서 가장 가까운 이웃을 찾고, 유클리드 거리의 제곱을 구한 다음, 이 값들의 평균을 계산합니다.
- B에서 A로 방향을 바꾸어 반복합니다.
- 두 방향의 평균을 더합니다.
첫 번째 방향은 기준 표면에서 멀리 떨어진 예측 점에 페널티를 부과하고, 반대 방향은 예측에서 누락된 기준 영역에 페널티를 부과합니다. 이 계산은 쿼리당 이웃 하나를 사용하는 k-최근접 이웃의 기반이 되는 최근접 이웃 연산과 동일합니다. PyTorch3D의 Chamfer 구현은 양방향 및 단방향 계산을 모두 지원합니다.
제곱 거리와 제곱하지 않은 거리, 그리고 합계와 평균을 사용하는 집계 방식에 따라 점수가 달라집니다. 또 다른 일반적인 방식은 두 방향의 평균을 다시 평균하여 합계 값의 절반을 산출합니다. 따라서 거리 계산 방식, 좌표 단위 및 정규화는 실험에서 지표를 정의하는 요소입니다.
이 PyTorch 계산은 쌍별 유클리드 거리를 계산하기 위해 torch.cdist를 사용합니다.
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}")출력은 1.00이며, 각 방향의 평균은 0.50입니다. 동일한 점 집합의 결과는 0입니다.
모델 학습에서의 Chamfer Loss#
Chamfer loss는 손실 함수로 사용되는 Chamfer distance를 의미합니다. 신경망이 점 좌표를 예측하고, 역전파를 통해 예측 좌표를 기준점 쪽으로 이동시키는 그래디언트를 계산합니다. 최근접 이웃 선택으로 인해 목적 함수는 구간별 미분 가능합니다. 할당이 고정된 영역에서는 제곱 거리가 좌표 그래디언트를 제공합니다.
기초적인 응용 사례로는 Haoqiang Fan, Hao Su, Leonidas J. Guibas가 제안하고 CVPR 2017에서 발표한 점 집합 생성 네트워크(PSGN)가 있습니다. 이 네트워크는 단일 이미지 3D 재구성을 위한 학습 목표로 Chamfer distance를 사용하여 사진에서 객체의 점 클라우드를 예측합니다. 이 점 집합 목적 함수는 사전에 정의된 점 간 대응 관계 없이도 학습할 수 있도록 합니다.
재구성 및 세그멘테이션 응용#
3D 재구성에서 Chamfer distance는 샘플링한 예측 표면과 기준 지오메트리를 비교합니다. 또한 메시 피팅에도 사용됩니다. 이때 메시의 샘플이 대상 샘플에 가까워지도록 정점을 최적화합니다. 구에서 돌고래 메시로의 피팅에서는 Chamfer loss만 최적화하면 표면이 고르지 않게 됩니다. 모서리, 노멀 및 라플라시안 정규화를 통해 메시의 국소 구조를 제약합니다.
인스턴스 세그멘테이션에서 Chamfer distance는 샘플링한 예측 윤곽선과 어노테이션된 윤곽선 사이의 공간적 불일치를 측정합니다. Ultralytics YOLO26 세그멘테이션은 Masks.xy을 통해 폴리곤 좌표를 제공하므로, 외부 Chamfer 기반 경계 평가에 사용할 점 집합을 얻을 수 있습니다. 면적 기반 교집합 대비 합집합과 달리, 윤곽선 거리는 경계 사이의 간격을 나타냅니다.
관련 지표와 점수 해석#
다음 세 가지 관련 개념을 통해 점수가 측정하는 대상을 명확히 알 수 있습니다.
- Hausdorff distance는 최근접 이웃 불일치 중 가장 큰 값을 사용하여 최악의 경계 또는 표면 불일치를 강조합니다.
- Earth Mover's distance는 분포 간에 비용을 최소화하면서 질량을 보존하는 수송을 찾아 점 집합 간 할당을 연결합니다.
- 밀도 인식 Chamfer distance는 국소 샘플링이 균일하지 않은 문제를 다룹니다. 일반 Chamfer matching에서는 여러 점이 하나의 최근접 이웃을 공유할 수 있으므로, 샘플링 균일성이 낮아도 밀집된 클러스터의 오차가 작게 계산될 수 있습니다.
따라서 샘플링 밀도, 정렬 및 데이터 전처리가 비교 결과에 영향을 미칩니다. 제곱하지 않은 거리의 단위는 좌표 단위와 같고, 제곱 거리는 좌표 단위의 제곱입니다. 두 점 클라우드의 단위를 미터에서 센티미터로 변환하면 제곱하지 않은 Chamfer distance는 100배, 제곱 Chamfer distance는 10,000배가 됩니다.










