One-Stage Object Detectors
Bộ phát hiện đối tượng một giai đoạn dự đoán mọi box và lớp trong một lượt chạy mạng duy nhất, không cần bước đề xuất vùng. Tìm hiểu cách hoạt động, các model chính và điểm đánh đổi.
Detector một giai đoạn là model phát hiện đối tượng dự đoán bounding box và nhãn lớp của mọi đối tượng trong ảnh chỉ bằng một lượt forward duy nhất của một mạng, đồng thời chấm điểm một lưới dày đặc các vị trí ứng viên. Detector không có bước đề xuất vùng riêng: detector hai giai đoạn trước tiên đề xuất các vùng có khả năng chứa đối tượng, sau đó chạy head thứ hai trên từng vùng. Loại bỏ bước đó giúp detector một giai đoạn trở thành nền tảng của phát hiện thời gian thực, từ YOLO, với model cơ sở chạy ở tốc độ 45 khung hình/giây vào năm 2015, đến các model hiện nay.
Cách detector một giai đoạn hoạt động#
Backbone chuyển ảnh thành feature map, neck hợp nhất các map ở nhiều tỷ lệ, còn detection head dày đặc dự đoán điểm số lớp và một hộp tại mọi vị trí ở mọi tỷ lệ. Các model một giai đoạn đời đầu như SSD, YOLOv2 và RetinaNet dự đoán độ lệch từ một số anchor box tại mỗi vị trí; kể từ FCOS năm 2019, hầu hết model dự đoán khoảng cách từ mỗi vị trí đến bốn cạnh hộp, theo thiết kế của detector không anchor. Kết quả là hàng nghìn hộp ứng viên, được ngưỡng tin cậy và ức chế phi cực đại (NMS) rút gọn còn một hộp cho mỗi đối tượng, hoặc được head huấn luyện với đối sánh một-một xuất trực tiếp.
Chạy detector một giai đoạn chỉ cần một lần gọi, và phần phân rã thời gian cho thấy một lượt xử lý mạng duy nhất:
from ultralytics import YOLO
# Load YOLO26n, a one-stage detector pretrained on the 80 COCO classes
model = YOLO("yolo26n.pt")
# One forward pass predicts the box and class of every object in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
print(f"{len(result.boxes)} objects: {[result.names[int(c)] for c in result.boxes.cls]}")
# Milliseconds for resizing the image, the single network pass, and NMS
print(result.speed)result.speed liệt kê ba bước: tiền xử lý, suy luận và hậu xử lý; lượt suy luận duy nhất xử lý mọi đối tượng trong ảnh.
Bộ phát hiện một giai đoạn và hai giai đoạn#
Cả hai thiết kế đều dùng chung backbone và neck. Sau đó, detector hai giai đoạn chạy mạng đề xuất vùng, chọn vài trăm vùng ứng viên, cắt đặc trưng của từng vùng rồi đưa từng ảnh cắt qua một head thứ hai để phân loại và tinh chỉnh. Detector một giai đoạn thay thế các bước đó bằng một head dày đặc duy nhất áp dụng trên mọi vị trí lưới.
Họ R-CNN dẫn đầu về độ chính xác phát hiện trong nhiều năm: Faster R-CNN tinh chỉnh khoảng 300 vùng đề xuất mỗi ảnh và chạy ở tốc độ 5 FPS với backbone VGG-16. Detector một giai đoạn nhanh hơn nhiều nhưng kém chính xác hơn cho đến khi RetinaNet năm 2017 xác định nguyên nhân là mất cân bằng giữa foreground và background: detector dày đặc đánh giá khoảng 100.000 vị trí ứng viên mỗi ảnh, trong đó gần như tất cả là background; các mẫu âm dễ này chi phối loss thông thường. Focal loss giảm trọng số của chúng, giúp RetinaNet đạt tốc độ ngang với các detector một giai đoạn đời trước đồng thời vượt độ chính xác của detector hai giai đoạn cùng thời. Detector Transformer như DETR và RT-DETR cũng chạy như một mạng duy nhất, dự đoán một tập hộp có kích thước cố định bằng cách đối sánh một-một.
Ứng dụng thực tế#
- Phân tích giao thông và video: Detector chạy trên mọi khung hình từ mọi luồng camera để đếm phương tiện, đo lưu lượng và cung cấp đầu vào cho bộ theo dõi đối tượng.
- Kiểm tra sản xuất: Camera trên dây chuyền phát hiện lỗi và linh kiện thiếu trên các bộ phận đi qua camera chỉ trong một phần giây.
- Drone và thiết bị nhúng: Một mạng nhỏ duy nhất đáp ứng giới hạn tính toán và năng lượng của drone, điện thoại hoặc camera thông minh.
Các ý tưởng đằng sau detector một giai đoạn hiện đại#
- Mạng kim tự tháp đặc trưng (FPN): Dự đoán ở nhiều độ phân giải giúp feature map mịn phát hiện đối tượng nhỏ, còn feature map thô phát hiện đối tượng lớn.
- Focal loss: Giảm trọng số của các ứng viên background dễ đã khắc phục tình trạng mất cân bằng lớp vốn cản trở các detector dày đặc đời đầu.
- Gán nhãn: Các phương pháp như SimOTA và gán nhãn theo mức độ phù hợp với tác vụ chọn vị trí dương cho từng đối tượng trong quá trình huấn luyện dựa trên chính các dự đoán.
- Head không cần NMS: Head được huấn luyện bằng đối sánh một-một xuất một hộp cho mỗi đối tượng, loại bỏ bước hậu xử lý có chi phí tăng theo số lượng ứng viên.
YOLO26 là bộ phát hiện một giai đoạn, không dùng anchor, với cả hai loại head: theo mặc định, model áp dụng NMS; nms=False chuyển sang head một-một. YOLO26n đạt 40.9 mAP50-95 trên COCO khi dùng NMS và 40.1 khi không dùng, với thời gian 1,7 ms mỗi ảnh trên GPU NVIDIA T4 bằng TensorRT.










