Chamfer Distance
Khoảng cách Chamfer đo mức độ khớp giữa các tập điểm, bề mặt 3D hoặc đường biên đối tượng, hỗ trợ tái tạo, phân đoạn và huấn luyện model.
Khoảng cách Chamfer là thước đo mức độ khớp giữa hai tập điểm, được tính dựa trên khoảng cách từ mỗi điểm đến điểm lân cận gần nhất trong tập còn lại. Giá trị thấp hơn biểu thị mức độ khớp cao hơn. Trong thị giác máy tính, khoảng cách Chamfer so sánh các đám mây điểm 3D—tập hợp các tọa độ không gian được lấy mẫu—và đường biên đối tượng 2D. Thứ tự điểm không quan trọng, và số lượng điểm trong hai tập có thể khác nhau.
Phương pháp này bắt nguồn từ so khớp Chamfer, được H. G. Barrow, J. M. Tenenbaum, R. C. Bolles và H. C. Wolf giới thiệu vào năm 1977 để so khớp các hình dạng được biểu diễn bằng đường cong ảnh. Trong CAD cơ khí, mép vát là một cạnh được vát, với kích thước mô tả một đặc điểm vật lý.
Cách tính khoảng cách Chamfer#
Với hai tập điểm không rỗng A và B, một định nghĩa phổ biến sử dụng bình phương khoảng cách gồm ba bước:
- Tìm điểm lân cận gần nhất trong B cho từng điểm thuộc A, bình phương khoảng cách Euclid rồi tính trung bình các giá trị này.
- Lặp lại theo chiều từ B sang A.
- Cộng hai giá trị trung bình theo từng chiều.
Chiều thứ nhất phạt các điểm dự đoán nằm xa bề mặt tham chiếu; chiều ngược lại phạt các vùng tham chiếu bị thiếu trong dự đoán. Phép tính này sử dụng cùng thao tác tìm láng giềng gần nhất làm cơ sở cho k láng giềng gần nhất, với một láng giềng cho mỗi truy vấn. Triển khai Chamfer của PyTorch3D hỗ trợ tính toán hai chiều và một chiều.
Dùng khoảng cách bình phương hay không bình phương, cũng như phép rút gọn tổng hay trung bình, sẽ làm thay đổi điểm số. Một quy ước phổ biến khác tính trung bình của hai giá trị trung bình theo từng chiều, cho kết quả bằng một nửa tổng của chúng. Vì vậy, quy ước khoảng cách, đơn vị tọa độ và chuẩn hóa là một phần trong định nghĩa metric của mỗi thí nghiệm.
Phép tính PyTorch này sử dụng torch.cdist để tính khoảng cách Euclid theo từng cặp:
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}")Kết quả là 1.00: mỗi giá trị trung bình theo chiều là 0.50. Hai tập điểm giống hệt nhau cho kết quả bằng không.
Chamfer Loss trong huấn luyện model#
Chamfer loss là khoảng cách Chamfer được dùng làm hàm loss. Một mạng nơ-ron dự đoán tọa độ điểm, còn lan truyền ngược cung cấp gradient để dịch chuyển các điểm đó về phía điểm tham chiếu. Việc chọn láng giềng gần nhất khiến mục tiêu khả vi từng khúc: trong một vùng mà các phép gán không đổi, khoảng cách bình phương cung cấp gradient theo tọa độ.
Một ứng dụng nền tảng là Mạng tạo tập điểm (PSGN) của Haoqiang Fan, Hao Su và Leonidas J. Guibas, được trình bày tại CVPR 2017. Phương pháp này sử dụng khoảng cách Chamfer làm mục tiêu huấn luyện cho tái tạo 3D từ một ảnh, dự đoán đám mây điểm của một đối tượng từ ảnh chụp. Mục tiêu tập điểm này hỗ trợ học mà không cần các cặp tương ứng điểm-điểm được xác định trước.
Ứng dụng trong tái tạo và phân đoạn#
Trong tái tạo 3D, khoảng cách Chamfer so sánh các bề mặt dự đoán đã lấy mẫu với hình học tham chiếu. Phương pháp này cũng hỗ trợ khớp mesh: các đỉnh được tối ưu hóa để các điểm lấy mẫu từ mesh tiến gần đến các điểm mẫu mục tiêu. Trong khớp mesh từ hình cầu sang cá heo, chỉ tối ưu Chamfer loss sẽ tạo ra bề mặt không đồng đều; các thành phần chính quy hóa cạnh, pháp tuyến và Laplace giúp ràng buộc cấu trúc cục bộ của mesh.
Trong phân đoạn instance, khoảng cách Chamfer đo độ sai lệch không gian giữa các đường viền dự đoán được lấy mẫu và đường viền được gán nhãn. Phân đoạn YOLO26 của Ultralytics cung cấp tọa độ đa giác thông qua Masks.xy, tạo ra các tập điểm để đánh giá đường biên bên ngoài dựa trên Chamfer. Không giống Intersection over Union dựa trên diện tích, khoảng cách đường viền biểu thị độ xa nhau giữa các đường biên.
Các phép đo liên quan và cách diễn giải điểm số#
Ba khái niệm liên quan giúp làm rõ ý nghĩa của điểm số:
- Khoảng cách Hausdorff sử dụng độ sai lệch láng giềng gần nhất lớn nhất, nhấn mạnh mức không khớp nghiêm trọng nhất giữa các đường biên hoặc bề mặt.
- Khoảng cách Earth Mover tìm phương án vận chuyển bảo toàn khối lượng với chi phí tối thiểu giữa các phân phối, ghép cặp các điểm giữa hai tập.
- Khoảng cách Chamfer nhận biết mật độ xử lý tình trạng lấy mẫu cục bộ không đồng đều. Phép so khớp Chamfer thông thường cho phép nhiều điểm dùng chung một láng giềng gần nhất, vì vậy các cụm dày đặc có thể có sai số thấp dù mật độ lấy mẫu không đồng đều.
Do đó, mật độ lấy mẫu, độ căn chỉnh và tiền xử lý dữ liệu đều ảnh hưởng đến kết quả so sánh. Khoảng cách không bình phương có cùng đơn vị với tọa độ; khoảng cách bình phương có đơn vị bình phương. Chuyển cả hai đám mây từ mét sang centimet làm khoảng cách Chamfer không bình phương tăng 100 lần và khoảng cách Chamfer bình phương tăng 10.000 lần.










