Anchor Boxes
Tìm hiểu cách anchor box hoạt động như các template tham chiếu cho việc phát hiện vật thể. Khám phá cách chúng cải thiện độ chính xác và cách các model như Ultralytics YOLO26 sử dụng thiết kế anchor-free.
Anchor box là các hình chữ nhật tham chiếu được xác định trước với tỷ lệ khung hình và kích thước cụ thể, được phân bố trên toàn bộ ảnh để hỗ trợ các model phát hiện đối tượng định vị và phân loại đối tượng. Thay vì yêu cầu một mạng neural dự đoán chính xác kích thước và vị trí của đối tượng từ đầu—điều có thể không ổn định do sự đa dạng rất lớn về hình dạng đối tượng—model sử dụng các template cố định này làm điểm khởi đầu. Bằng cách học cách dự đoán mức độ cần điều chỉnh, hay "hồi quy", các box ban đầu này để khớp với ground truth, hệ thống có thể đạt được hội tụ nhanh hơn và độ chính xác cao hơn. Kỹ thuật này đã làm thay đổi căn bản lĩnh vực thị giác máy tính (CV) bằng cách đơn giản hóa nhiệm vụ định vị phức tạp thành một bài toán tối ưu hóa dễ quản lý hơn.
Cơ chế của Anchor Box#
Trong các detector dựa trên anchor cổ điển, ảnh đầu vào được chia thành một lưới các ô. Tại mỗi vị trí ô, mạng tạo ra nhiều anchor box với các hình dạng hình học khác nhau. Ví dụ, để đồng thời phát hiện một người đi bộ cao và một chiếc ô tô rộng, model có thể đề xuất một box cao, hẹp và một box thấp, rộng tại cùng một điểm trung tâm.
Trong quá trình huấn luyện model, các anchor này được đối chiếu với các đối tượng thực tế bằng một metric có tên là Intersection over Union (IoU). Các anchor chồng lấp đáng kể với một đối tượng đã gắn nhãn được chỉ định là mẫu "positive". Sau đó, mạng học hai nhiệm vụ song song:
-
Phân loại: Model gán một điểm xác suất cho anchor, cho biết khả năng anchor đó chứa một class cụ thể (ví dụ: "chó" hoặc "xe đạp"). Nhiệm vụ này sử dụng các mục tiêu học có giám sát tiêu chuẩn như hàm mất mát cross-entropy.
-
Hồi quy Box: Model tính toán các giá trị offset chính xác (độ dịch tọa độ và hệ số co giãn) cần thiết để biến anchor tổng quát thành một bounding box ôm sát đối tượng.
Cách tiếp cận này cho phép model xử lý nhiều đối tượng có kích thước khác nhau nằm gần nhau, vì mỗi đối tượng có thể được gán cho anchor phù hợp nhất với hình dạng của nó.
Các ứng dụng trong thực tế#
Mặc dù các kiến trúc mới hơn đang chuyển sang thiết kế anchor-free, anchor box vẫn giữ vai trò quan trọng trong nhiều hệ thống production lâu đời, nơi các đặc điểm của đối tượng có thể dự đoán được.
- Bán lẻ và Quản lý Tồn kho: Trong các giải pháp bán lẻ ứng dụng AI, camera giám sát hàng hóa trên kệ. Vì các sản phẩm như hộp ngũ cốc hoặc lon nước ngọt có kích thước tiêu chuẩn, anchor box có thể được tinh chỉnh theo các tỷ lệ khung hình cụ thể này. Kiến thức có trước này giúp model duy trì recall cao ngay cả trong môi trường lộn xộn.
- Lái xe Tự hành: Các hệ thống perception trong phương tiện tự hành dựa vào việc phát hiện người đi bộ, phương tiện và biển báo giao thông. Vì một chiếc ô tô nhìn từ xa có hình dạng tương đối nhất quán so với mặt đường, việc sử dụng các anchor được điều chỉnh cho những hình dạng này giúp đảm bảo theo dõi đối tượng và ước tính khoảng cách ổn định.
Dựa trên Anchor so với Anchor-Free#
Điều quan trọng là phải phân biệt giữa các phương pháp truyền thống dựa trên anchor và các detector anchor-free hiện đại.
- Dựa trên Anchor: Các model như Faster R-CNN nguyên bản hoặc các phiên bản YOLO đời đầu (ví dụ: Ultralytics YOLOv5) sử dụng các template được xác định trước này. Chúng có độ ổn định cao nhưng thường yêu cầu tinh chỉnh thủ công các hyperparameter (kích thước/tỷ lệ anchor) hoặc các thuật toán phân cụm như phân cụm k-means để thích ứng với các dataset mới.
- Anchor-Free: Các model tiên tiến, bao gồm YOLO26, thường sử dụng phương pháp anchor-free hoặc end-to-end. Các mạng này dự đoán trực tiếp tâm hoặc keypoint của đối tượng, loại bỏ nhu cầu cấu hình anchor thủ công. Điều này đơn giản hóa kiến trúc và tăng tốc suy luận bằng cách loại bỏ phần tính toán cần thiết để xử lý hàng nghìn anchor nền trống.
Ví dụ: Truy cập Thông tin Anchor#
Mặc dù các API cấp cao hiện đại như Ultralytics Platform ẩn các chi tiết này trong quá trình huấn luyện, việc hiểu về anchor vẫn hữu ích khi làm việc với các kiến trúc model cũ hơn hoặc phân tích các file config của model. Đoạn mã sau minh họa cách load một model và kiểm tra cấu hình của model, trong đó các thiết lập anchor (nếu có) thường được định nghĩa.
from ultralytics import YOLO
# Load a pre-trained YOLO model (YOLO26 is anchor-free, but legacy configs act similarly)
model = YOLO("yolo26n.pt")
# Inspect the model's stride, which relates to grid cell sizing in detection
print(f"Model strides: {model.model.stride}")
# For older anchor-based models, anchors might be stored in the model's attributes
# Modern anchor-free models calculate targets dynamically without fixed boxes
if hasattr(model.model, "anchors"):
print(f"Anchors: {model.model.anchors}")
else:
print("This model architecture is anchor-free.")Thách thức và các yếu tố cần cân nhắc#
Mặc dù hiệu quả, anchor box làm tăng độ phức tạp. Số lượng anchor rất lớn được tạo ra—thường lên đến hàng chục nghìn anchor trên mỗi ảnh—gây ra vấn đề mất cân bằng class, vì hầu hết anchor chỉ bao phủ nền. Các kỹ thuật như Focal Loss được sử dụng để giảm thiểu vấn đề này bằng cách giảm trọng số của các mẫu nền dễ phân loại. Ngoài ra, output cuối cùng thường yêu cầu Non-Maximum Suppression (NMS) để lọc các box chồng lấp dư thừa, đảm bảo chỉ giữ lại detection có độ tin cậy cao nhất cho mỗi đối tượng.









