Intersection over Union (IoU)
Intersection over union (IoU) chấm mức độ chồng lấp giữa hộp dự đoán và hộp thực tế trên thang điểm từ 0 đến 1. Công thức, code Python, ngưỡng và loss dựa trên IoU.
Intersection over union (IoU) đo mức độ chồng lấp giữa hai vùng: diện tích chung chia cho tổng diện tích mà chúng bao phủ. IoU nằm trong khoảng từ 0 với các vùng không tiếp xúc đến 1 với các vùng trùng khít; trong thống kê, đại lượng này còn được gọi là chỉ số Jaccard. Trong phát hiện đối tượng, IoU so sánh bounding box dự đoán với box ground truth đã gán nhãn; IoU quyết định dự đoán có được tính là đúng hay không, những dự đoán trùng lặp nào bị loại bỏ và cách huấn luyện dự đoán box.
Cách tính IoU#
IoU = diện tích giao / diện tích hợp, trong đó diện tích hợp bằng diện tích box A cộng diện tích box B trừ đi phần giao, nhờ đó vùng chồng lấp chỉ được tính một lần. Với hai box thẳng trục ở định dạng tọa độ góc, phần giao cũng là một hình chữ nhật được giới hạn bởi các cạnh trong của hai box; chiều rộng hoặc chiều cao được chặn ở mức 0 nếu hai box không chồng lấp.
# Boxes as [x1, y1, x2, y2] in pixels
label = [100, 100, 200, 200]
pred = [110, 110, 210, 210]
# Intersection rectangle, clamped to zero when the boxes do not overlap
w = max(0, min(label[2], pred[2]) - max(label[0], pred[0]))
h = max(0, min(label[3], pred[3]) - max(label[1], pred[1]))
intersection = w * h
# Union counts the overlap only once
area_label = (label[2] - label[0]) * (label[3] - label[1])
area_pred = (pred[2] - pred[0]) * (pred[3] - pred[1])
union = area_label + area_pred - intersection
print(f"IoU = {intersection} / {union} = {intersection / union:.3f}")Script in ra IoU = 8100 / 11900 = 0.681. Dịch một box 100 pixel đi 10 pixel theo mỗi hướng làm vùng chồng lấp giảm còn 90 × 90 pixel và vùng hợp tăng lên 11.900, nên dịch chuyển 10% làm điểm số giảm gần một phần ba. Vì hai diện tích cùng thay đổi theo tỷ lệ, IoU bất biến theo tỷ lệ: cùng một sai lệch tương đối cho điểm số như nhau trên con chim 20 pixel và xe tải 2.000 pixel. Do đó, sai số pixel cố định ảnh hưởng nhiều nhất đến đối tượng nhỏ; dịch ngang một pixel làm IoU giảm còn 0,905 với box 20 pixel và 0,990 với box 200 pixel.
Ngưỡng IoU trong đánh giá#
Ngưỡng đánh giá biến IoU thành quyết định có/không. Dự đoán là dương tính thật nếu lớp khớp và IoU với một box ground truth chưa được ghép đạt ngưỡng; nếu không, đó là dương tính giả. Benchmark PASCAL VOC dùng ngưỡng 0,5, thoáng hơn vẻ bề ngoài: hai box bằng nhau, lệch ngang một phần ba chiều rộng, có IoU chính xác là 0,5. Benchmark COCO tính trung bình kết quả trên mười ngưỡng từ 0,50 đến 0,95; nhờ đó, độ chính xác trung bình mean (mAP) đánh giá cao khả năng định vị chính xác.
IoU trong huấn luyện và hậu xử lý#
- Hàm mất mát hồi quy box: Detector huấn luyện tọa độ box bằng 1 − IoU hoặc biến thể của nó, vì hàm mất mát trên tọa độ thô xem sai số 10 pixel là như nhau ở box nhỏ và lớn. IoU thuần không tạo gradient khi các box không chồng lấp, vì vậy Generalized IoU (GIoU) bổ sung penalty dựa trên box nhỏ nhất bao trọn cả hai; Distance-IoU và Complete IoU (DIoU, CIoU) bổ sung các thành phần về khoảng cách tâm và tỷ lệ khung hình. YOLO26 huấn luyện box head bằng hàm mất mát CIoU, đồng thời dùng CIoU để quyết định dự đoán nào được gán cho từng đối tượng có nhãn trong quá trình huấn luyện.
- Loại bỏ phi cực đại (NMS): Khi suy luận, box có IoU với một box cùng lớp có điểm cao hơn vượt ngưỡng sẽ bị xem là trùng lặp và bị loại bỏ.
- Theo dõi đối tượng: Các bộ theo dõi như ByteTrack dùng IoU giữa track hiện có và detection mới làm chi phí ghép cặp giữa các khung hình.
IoU cho các hình dạng khác#
Tỷ lệ này áp dụng cho mọi cặp vùng. Phân đoạn tính IoU của mask trên tập hợp pixel: phân đoạn instance dùng IoU để ghép mask dự đoán với nhãn, còn benchmark phân đoạn ngữ nghĩa báo cáo giá trị trung bình trên các lớp dưới tên mIoU. Box xoay cần phép giao polygon hoặc xấp xỉ Gaussian như ProbIoU; phát hiện 3D tính IoU giữa các khối hộp, trong không gian 3D đầy đủ hoặc dựa trên phần giao hình chiếu của chúng khi nhìn từ trên xuống.
IoU và các metric liên quan#
- Hệ số Dice: Hai lần diện tích giao chia cho tổng diện tích hai vùng. Hệ số này xếp hạng dự đoán theo cùng thứ tự với IoU vì Dice = 2 × IoU / (1 + IoU), và thường được dùng trong phân đoạn ảnh y tế.
- Độ chính xác: Tỷ lệ dự đoán lớp chính xác, không cho biết box nằm ở đâu.
- mAP: Chỉ số tổng hợp ở cấp detection, dựa trên ngưỡng IoU và kết hợp khả năng định vị với precision và recall trên các lớp.
Quan hệ Dice cũng giúp quy đổi ngưỡng: IoU 0,5 tương đương điểm Dice 0,667, còn IoU 0,9 tương đương điểm Dice 0,947.










