Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Anchor Boxes

Anchor box là các hộp có kích thước và tỷ lệ khung hình cố định được định sẵn, để detector dịch chuyển và thay đổi kích thước nhằm khớp với đối tượng. Cách xác định kích thước, ghép khớp và sử dụng.

Anchor box là các hình chữ nhật định sẵn có kích thước và tỷ lệ khung hình cố định, được xếp tại mọi vị trí trên feature map của bộ phát hiện; chúng đóng vai trò là các dự đoán ban đầu về vị trí và hình dạng của đối tượng. Bộ phát hiện dựa trên anchor chấm điểm từng anchor cho mỗi lớp và dự đoán các độ lệch nhỏ để dịch chuyển, thay đổi kích thước anchor cho khớp với đối tượng; cách này dễ học hơn so với dự đoán một box từ đầu. Faster R-CNN đặt 9 anchor tại mỗi vị trí: ba diện tích (128², 256² và 512² pixel) nhân với ba tỷ lệ khung hình (1:1, 1:2 và 2:1), tổng cộng khoảng 20.000 anchor cho ảnh 1000 × 600.

Cách xác định anchor#

Tập anchor là danh sách kích thước và tỷ lệ khung hình được lặp lại tại mỗi ô của feature map, nên số anchor bằng số ô × số hình dạng trên mỗi ô. Các bộ phát hiện có mạng kim tự tháp đặc trưng (FPN) gán anchor nhỏ cho các tầng độ phân giải cao, chi tiết và anchor lớn cho các tầng thô hơn: RetinaNet sử dụng 9 anchor trên mỗi vị trí ở cả năm tầng, khoảng 100.000 anchor cho mỗi ảnh. SSD gọi chúng là box mặc định; SSD300 xếp 8.732 box như vậy.

Các hình dạng được chọn thủ công thường không khớp tốt với một số tập dữ liệu, vì vậy YOLOv2 áp dụng phân cụm k-means trên chiều rộng và chiều cao của các box huấn luyện, dùng 1 − IoU làm khoảng cách và giữ lại 5 tâm cụm làm anchor. YOLOv3 phân cụm 9 anchor rồi chia đều chúng cho ba stride đầu ra, từ 10 × 13 pixel ở tầng stride-8 đến 373 × 326 ở tầng stride-32.

Ghép anchor với đối tượng#

Trong quá trình huấn luyện, mỗi anchor được so sánh với mọi box đã gán nhãn bằng giao trên hợp (IoU). Các anchor chồng lấp đủ nhiều với một đối tượng trở thành mẫu dương tính, học lớp của đối tượng và các độ lệch tới bounding box của đối tượng; anchor ít chồng lấp trở thành mẫu âm tính và học “nền”, còn anchor có mức chồng lấp trung gian bị bỏ qua. Mạng đề xuất vùng của Faster R-CNN đánh dấu IoU từ 0.7 trở lên là dương tính và dưới 0.3 là âm tính; mạng cũng đánh dấu anchor khớp tốt nhất với mỗi đối tượng là dương tính để không bỏ sót đối tượng nào.

import torch
from torchvision.ops import box_iou

# Nine anchors centered on one feature-map cell at (200, 200): 3 sizes x 3 aspect ratios (height / width)
shapes = [(size, ratio) for size in (64, 128, 256) for ratio in (0.5, 1.0, 2.0)]
anchors = []
for size, ratio in shapes:
    w, h = size / ratio**0.5, size * ratio**0.5
    anchors.append([200 - w / 2, 200 - h / 2, 200 + w / 2, 200 + h / 2])

# A labeled pedestrian box (x1, y1, x2, y2): tall and narrow
person = torch.tensor([[160.0, 110.0, 240.0, 290.0]])

# Faster R-CNN RPN rule: IoU >= 0.7 is positive, below 0.3 is negative, anything between is ignored
iou = box_iou(torch.tensor(anchors), person).squeeze(1)
for (size, ratio), value in zip(shapes, iou.tolist()):
    label = "positive" if value >= 0.7 else "negative" if value < 0.3 else "ignored"
    print(f"size {size}, ratio {ratio}: IoU {value:.2f} -> {label}")

Chỉ anchor cao 128 pixel (tỷ lệ 2.0) chồng lấp đủ với người đi bộ để được xem là dương tính, với IoU 0.88. Hai anchor 128 pixel còn lại, có IoU lần lượt là 0.31 và 0.50, bị bỏ qua; sáu anchor sai kích thước là âm tính. Sau đó, anchor dương tính học các độ lệch theo cách tham số hóa tiêu chuẩn: tâm dịch chuyển theo tỷ lệ của chiều rộng và chiều cao anchor, còn chiều rộng và chiều cao được nhân với hàm mũ của các giá trị dự đoán.

Chọn kích thước anchor cho tập dữ liệu#

Anchor khớp với hình dạng đối tượng trong tập dữ liệu giúp nhiều đối tượng có anchor dương tính hơn, từ đó tăng recall tối đa mà bộ phát hiện có thể đạt được. YOLOv5 của Ultralytics bắt đầu với 9 anchor YOLOv3 và kiểm tra chúng trước khi huấn luyện bằng AutoAnchor: công cụ đo recall tối đa có thể đạt được của các anchor trên nhãn huấn luyện và, nếu kết quả không vượt 0.98, sẽ khớp lại chúng bằng k-means cùng 1.000 thế hệ tiến hóa di truyền, chỉ giữ anchor mới nếu recall được cải thiện.

Hạn chế và bộ phát hiện không dùng anchor#

Anchor kéo theo ba chi phí. Hầu hết trong số hàng chục nghìn anchor trong một ảnh bao phủ nền, khiến loss bị lấn át bởi các mẫu âm tính dễ; RetinaNet đưa ra focal loss để giảm trọng số của chúng. Một số anchor lân cận khớp với cùng một đối tượng, vì vậy đầu ra cần loại bỏ cực đại không tối đa (NMS) để giữ lại một box cho mỗi đối tượng. Kích thước, tỷ lệ khung hình và ngưỡng IoU cũng là các siêu tham số cần thay đổi theo từng tập dữ liệu và kích thước ảnh.

Bộ phát hiện không dùng anchor loại bỏ các siêu tham số đó bằng cách dự đoán box từ các điểm hoặc keypoint; phần lớn bộ phát hiện thời gian thực được phát hành từ YOLOX năm 2021 trở đi đều không dùng anchor. Anchor vẫn được dùng trong các bộ phát hiện dựa trên anchor như Faster R-CNN, Mask R-CNN và RetinaNet. Khi so sánh RetinaNet với FCOS không dùng anchor, ATSS phát hiện rằng sau khi cả hai dùng cùng một cách chọn mẫu dương tính, RetinaNet với 9 anchor trên mỗi vị trí không chính xác hơn so với khi chỉ dùng 1 anchor.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning