Non-Maximum Suppression (NMS)
Tìm hiểu cách Triệt tiêu Cực đại Không (NMS) loại bỏ các BBox trùng lặp trong phát hiện đối tượng. Khám phá cách Ultralytics YOLO26 cung cấp NMS end-to-end tự nhiên.
Non-Maximum Suppression (NMS) là một kỹ thuật hậu xử lý được sử dụng trong object detection để tinh chỉnh các dự đoán thô do một model tạo ra. Khi một model object detection phân tích một hình ảnh, nó thường tạo ra nhiều bounding boxes chồng chéo lên nhau cho một đối tượng duy nhất, mỗi bounding box đi kèm với một confidence score. Các dự đoán dư thừa này xảy ra do model có thể phát hiện cùng một đặc điểm ở các tỷ lệ hoặc vị trí hơi khác nhau. NMS lọc đầu ra này bằng cách chỉ giữ lại bounding box chính xác nhất cho mỗi đối tượng và loại bỏ các bounding box còn lại, đảm bảo rằng đầu ra cuối cùng được sạch sẽ, chính xác và không bị trùng lặp.
Cách thức hoạt động của Non-Maximum Suppression#
Thuật toán NMS hoạt động trên danh sách các candidate bounding box và confidence score tương ứng của chúng. Mục tiêu là chọn ra box tốt nhất cho một đối tượng và triệt tiêu (loại bỏ) bất kỳ box nào khác chồng lấp đáng kể với nó, vì đây có khả năng là các phát hiện trùng lặp của cùng một đối tượng. Quy trình thường tuân theo các bước sau:
-
Lọc (Filtering): Loại bỏ tất cả bounding box có confidence score thấp hơn một ngưỡng cụ thể (ví dụ: 0.25) để loại bỏ ngay lập tức các dự đoán yếu.
-
Sắp xếp (Sorting): Sắp xếp các box còn lại theo thứ tự giảm dần dựa trên confidence score.
-
Lựa chọn (Selection): Chọn box có confidence score cao nhất làm phát hiện hợp lệ.
-
So sánh: So sánh box đã chọn này với tất cả các box còn lại bằng cách sử dụng Intersection over Union (IoU), một chỉ mét đo lường mức độ chồng chéo giữa hai box.
-
Triệt tiêu (Suppression): Nếu IoU giữa box đã chọn và một box khác vượt quá ngưỡng định trước (ví dụ: 0.45), box có điểm số thấp hơn sẽ được coi là trùng lặp và bị loại bỏ.
-
Lặp lại (Iteration): Lặp lại quy trình với box có điểm số cao nhất tiếp theo chưa bị triệt tiêu hoặc chưa được chọn, cho đến khi tất cả các box đã được xử lý.
Các ứng dụng trong thực tế#
NMS là yếu tố cần thiết trong các trường hợp mà độ chính xác là ưu tiên hàng đầu và các phát hiện trùng lặp có thể gây nhầm lẫn cho các hệ thống hạ nguồn.
- Xe tự lái: Trong các hệ thống xe tự lái, camera phát hiện người đi bộ, các phương tiện khác và biển báo giao thông. Một model có thể dự đoán ba box hơi khác nhau cho một người đi bộ duy nhất. NMS đảm bảo hệ thống lập kế hoạch của xe chỉ nhận được một tọa độ cho người đi bộ đó, ngăn ngừa việc phanh gấp hoặc lỗi lập kế hoạch đường đi do các chướng ngại vật "ma".
- Quản lý hàng tồn kho bán lẻ: Khi sử dụng computer vision để đếm các sản phẩm trên kệ, các mặt hàng thường được xếp sát nhau. Nếu không có NMS, một lon soda đơn lẻ có thể bị đếm hai lần do các dự đoán chồng chéo, dẫn đến mức tồn kho không chính xác. NMS tinh chỉnh các phát hiện này để đảm bảo số lượng hàng tồn kho khớp với thực tế.
Triển khai NMS với PyTorch#
Mặc dù nhiều framework hiện đại xử lý NMS ở bên trong, nhưng việc hiểu rõ cách triển khai sẽ giúp ích trong việc tinh chỉnh các tham số. Ví dụ sau đây minh họa cách áp dụng NMS bằng cách sử dụng PyTorch library:
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 so với Phát hiện End-to-End#
Trước đây, NMS là một bước "dọn dẹp" bắt buộc nằm bên ngoài mạng neural chính, làm tăng inference latency. Tuy nhiên, lĩnh vực này đang tiếnσ hướng tới các kiến trúc end-to-end.
- Standard NMS: Một quy trình heuristic yêu cầu tinh chỉnh thủ công ngưỡng IoU. Nếu ngưỡng quá thấp, các đối tượng hợp lệ nằm gần nhau có thể bị bỏ lỡ (low recall). Nếu quá cao, các bản sao vẫn còn tồn tại (low precision).
- End-to-End Models: Các model thế hệ tiếp theo như YOLO26 được thiết kế để mang tính end-to-end nguyên bản. Chúng học cách dự đoán chính xác một box cho mỗi đối tượng trong quá trình huấn luyện, qua đó nội bộ hóa hiệu quả quá trình NMS. Điều này loại bỏ nhu cầu xử lý hậu kỳ bên ngoài, dẫn đến tốc độ inference nhanh hơn và các pipeline triển khai đơn giản hơn trên Ultralytics Platform.
Các khái niệm liên quan#
- Soft-NMS: Một biến thể trong đó các box chồng chéo không bị loại bỏ hoàn toàn mà bị giảm confidence score. Điều này cho phép các đối tượng chồng chéo phần nào (như mọi người trong đám đông) vẫn được phát hiện nếu điểm số của chúng vẫn đủ cao sau khi suy giảm.
- Anchor Boxes: Các hình dạng box được xác định trước được sử dụng bởi nhiều detector để ước tính kích thước đối tượng. NMS được áp dụng cho các dự đoán cuối cùng được tinh chỉnh từ các anchor này.
- Intersection over Union (IoU): Công thức toán học được NMS sử dụng để xác định mức độ chồng chéo của hai box, đóng vai trò là ngưỡng quyết định để loại bỏ.






