Anchor Boxes
Tìm hiểu cách anchor box đóng vai trò là các khuôn mẫu tham chiếu cho nhận diện đối tượng. Khám phá cách chúng cải thiện độ chính xác và cách các mô hình như Ultralytics YOLO26 sử dụng các thiết kế không dùng anchor.
Anchor boxes là các hình chữ nhật tham chiếu được định sẵn với tỷ lệ khung hình và kích thước cụ thể, được đặt trên một hình ảnh để hỗ trợ các mô hình object detection xác định vị trí và phân loại đối tượng. Thay vì yêu cầu một neural network dự đoán kích thước và vị trí chính xác của đối tượng từ đầu—điều này có thể không ổn định do sự đa dạng lớn của hình dạng đối tượng—mô hình sử dụng các mẫu cố định này làm điểm khởi đầu. Bằng cách học cách dự đoán mức độ điều chỉnh, hoặc "hồi quy" (regress), các hộp ban đầu này sao cho khớp với ground truth, hệ thống có thể đạt được tốc độ hội tụ nhanh hơn và độ chính xác cao hơn. Kỹ thuật này đã thay đổi căn bản lĩnh vực computer vision (CV) bằng cách đơn giản hóa tác 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 Boxes#
Trong các anchor-based detectors cổ điển, hình ảnh đầu vào được chia thành một lưới các ô. Tại mỗi vị trí ô, network tạo ra nhiều anchor box với các 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, mô hình có thể đề xuất một hộp cao, hẹp và một hộp ngắn, rộng tại cùng một điểm trung tâm.
Trong quá trình model training, các anchor này được so sánh với các đối tượng thực tế bằng cách sử dụng một độ đo gọi là Intersection over Union (IoU). Các anchor chồng chéo đáng kể với một đối tượng được gán nhãn được chỉ định là mẫu "dương tính" (positive). Sau đó, network sẽ học hai tác vụ song song:
-
Phân loại (Classification): Gán điểm xác suất cho anchor, cho biết khả năng nó chứa một lớp cụ thể (ví dụ: "dog" hoặc "bicycle"). Quá trình này sử dụng các mục tiêu supervised learning chuẩn như hàm mất mát cross-entropy.
-
Hồi quy hộp (Box Regression): Tính toán các giá trị độ lệch chính xác (độ dịch chuyển tọa độ và hệ số tỷ lệ) cần thiết để chuyển đổi anchor chung thành một bounding box khít.
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 khớ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 các thiết kế không sử dụng anchor, anchor boxes vẫn đóng vai trò quan trọng trong nhiều hệ thống sản xuất đã được thiết lập, nơi các đặc điểm đối tượng có thể dự đoán trước.
- Bán lẻ và Quản lý hàng tồn kho: Trong các AI-driven retail solutions, các camera giám sát kho hàng 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 boxes có thể được tinh chỉnh cho các tỷ lệ khung hình cụ thể này. Kiến thức tiên nghiệm này giúp mô hình duy trì recall cao ngay cả trong các môi trường lộn xộn.
- Xe tự lái: Các hệ thống nhận thức trong autonomous vehicles 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. Bởi vì một chiếc ô tô nhìn từ xa có cấu hình hình dạng tương đối ổn định so với mặt đường, việc sử dụng các anchor được điều chỉnh cho các hình dạng này đảm bảo khả năng object tracking và ước tính khoảng cách mạnh mẽ.
Dựa trên Anchor so với Không dựa trên Anchor#
Điều quan trọng là phải phân biệt giữa các phương pháp dựa trên anchor truyền thống và các anchor-free detectors hiện đại.
- Dựa trên Anchor (Anchor-Based): Các model như Faster R-CNN ban đầu hoặc các phiên bản YOLO đời đầu (ví dụ: Ultralytics YOLOv5) sử dụng các template được định nghĩa trước này. Chúng rất mạnh mẽ nhưng thường yêu cầu tinh chỉnh thủ công các siêu tham số (kích thước/tỷ lệ anchor) hoặc các thuật toán phân cụm như k-means clustering để thích ứng với các dataset mới.
- Không có Anchor (Anchor-Free): Các mô hình tiên tiến, bao gồm YOLO26, thường áp dụng các phương pháp phi anchor hoặc end-to-end. Các network này dự đoán trực tiếp tâm đối tượng hoặc keypoint, 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 độ inference bằng cách loại bỏ việc 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 trừu tượng hóa các chi tiết này trong quá trình training, việc hiểu về các anchor vẫn hữu ích khi làm việc với các kiến trúc mô hình cũ hơn hoặc khi phân tích các file cấu hình mô hình. Đoạn mã sau minh họa cách tải một mô hình và kiểm tra cấu hình của nó, nơi 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ân nhắc#
Mặc dù hiệu quả, anchor boxes mang lại độ phức tạp. Số lượng lớn các anchor được tạo ra—thường là hàng chục nghìn cho mỗi hình ảnh—tạo ra vấn đề mất cân bằng lớp, vì hầu hết các anchor chỉ bao phủ phần nền. Các kỹ thuật như Focal Loss được sử dụng để giảm thiểu điều này bằng cách giảm trọng số các mẫu nền dễ. Ngoài ra, kết quả đầu ra cuối cùng thường yêu cầu Non-Maximum Suppression (NMS) để lọc ra các hộp chồng chéo thừa, đảm bảo rằng chỉ có phát hiện tự tin nhất cho mỗi đối tượng được giữ lại.






