Object Detection Architectures
Kiến trúc phát hiện đối tượng là các thiết kế mạng chuyển pixel thành box và nhãn. Tìm hiểu backbone, neck, head và các họ bộ phát hiện chính.
Kiến trúc phát hiện đối tượng là thiết kế mạng chuyển đổi hình ảnh thành danh sách bounding box, nhãn lớp và điểm tin cậy. Hầu hết mọi detector hiện đại đều được xây dựng từ backbone, neck và head; các thiết kế chủ yếu khác nhau ở cách tạo box ứng viên—từ đề xuất vùng, lưới dày đặc hoặc truy vấn đã học—và cách loại bỏ dự đoán trùng lặp bằng ức chế cực đại không chồng lặp (NMS) hoặc ghép một-một. Những lựa chọn này quyết định độ chính xác, tốc độ và mức độ dễ triển khai của detector trên phần cứng biên. Phát hiện đối tượng là tên của tác vụ, còn detection head là một phần của kiến trúc.
Backbone, neck và head#
Backbone trích xuất đặc trưng. Đây là một mạng nơ-ron tích chập như ResNet hoặc CSPDarknet, hoặc một vision transformer, thường được huấn luyện trước trên tác vụ phân loại ImageNet; backbone giảm kích thước ảnh qua từng giai đoạn, khiến feature map giảm độ phân giải và tăng nội dung ngữ nghĩa theo chiều sâu. Neck, thường là một mạng kim tự tháp đặc trưng (FPN) có thêm đường đi từ dưới lên như trong PANet, kết hợp feature map sâu và nông để mỗi tỷ lệ đầu ra chứa cả chi tiết tinh lẫn ngữ cảnh. Head dự đoán box và điểm lớp tại mọi vị trí ở mỗi tỷ lệ, thường với stride 8, 16 và 32, nhờ đó feature map mịn nhất phát hiện vật thể nhỏ còn feature map thô nhất phát hiện vật thể lớn. Có thể nhận diện ba phần này trong định nghĩa model của một detector thực tế:
from ultralytics import YOLO
# Nạp YOLO26n và chia các layer theo cách model YAML phân chia
model = YOLO("yolo26n.pt")
layers = model.model.model
n_backbone = len(model.model.yaml["backbone"])
# Backbone trích xuất đặc trưng, neck hợp nhất các tỷ lệ, và layer cuối cùng là head
print("Backbone:", [type(m).__name__ for m in layers[:n_backbone]])
print("Neck:", [type(m).__name__ for m in layers[n_backbone:-1]])
print("Head:", type(layers[-1]).__name__, "at strides", model.model.stride.tolist())Danh sách backbone hiển thị các layer Conv có stride và C3k2 block, kết thúc bằng pooling SPPF và attention block C2PSA; neck chạy các layer Upsample, Concat và C3k2 theo hướng từ trên xuống, rồi chạy các layer Conv, Concat và C3k2 có stride theo hướng ngược lên; head Detect dự đoán ở các stride 8, 16 và 32.
Các nhóm detector#
- Detector hai giai đoạn: Một mạng đề xuất vùng đưa ra vài trăm vùng ứng viên, sau đó head thứ hai phân loại và tinh chỉnh từng vùng, như trong Faster R-CNN (2015) và Mask R-CNN (2017).
- Detector một giai đoạn dựa trên anchor: SSD (2016), YOLOv2 đến YOLOv5 và RetinaNet (2017) dự đoán độ lệch so với các anchor box được xác định trước tại mỗi ô lưới trong một lượt duy nhất.
- Detector không anchor: FCOS (2019) và YOLOv8 (2023) dự đoán khoảng cách từ một điểm đến bốn cạnh của box; CenterNet (2019) dự đoán tâm box dưới dạng các đỉnh heatmap, cùng chiều rộng và chiều cao tại mỗi tâm; YOLOX (2021) đưa dòng YOLO trở lại phương pháp dự đoán không anchor, vì vậy các model này không cần tinh chỉnh anchor.
- Bộ phát hiện Transformer kiểu DETR: DETR (2020) giải mã một tập cố định các truy vấn đối tượng đã học và ghép từng truy vấn với đối tượng được gán nhãn theo kiểu một-một, vì vậy đầu ra không cần NMS; Deformable DETR đạt độ chính xác cao hơn với số epoch huấn luyện ít hơn 10 lần, còn RT-DETR đưa thiết kế này lên tốc độ thời gian thực vào năm 2023.
- Detector CNN không NMS: YOLOv10 (2024) huấn luyện một head một-một song song với một head một-nhiều và chỉ chạy head một-một khi suy luận, vì vậy các box không cần NMS.
- Bộ phát hiện open-vocabulary: Grounding DINO và YOLO-World thay lớp phân loại cố định bằng embedding văn bản, nhờ đó có thể phát hiện các lớp được nêu tên tại thời điểm inference.
Chọn kiến trúc#
Các benchmark như mean average precision (mAP) trên COCO xếp hạng độ chính xác, nhưng phần cứng đích và các đối tượng trong ảnh thường là yếu tố quyết định thiết kế. YOLO26 là CNN 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 cho nhánh một-nhiều; nms=False chuyển sang nhánh một-một; các file YAML của model có biến thể P2 và P6 bổ sung đầu ra stride-4 hoặc stride-64.
- Thiết bị biên và video thời gian thực: Các detector CNN nhỏ biên dịch tốt sang runtime như TensorRT và OpenVINO; head không NMS loại bỏ một bước hậu xử lý có chi phí tăng theo số lượng ứng viên.
- Đối tượng nhỏ: Ảnh chụp từ trên không và ảnh kiểm tra cần một mức đầu ra chi tiết hơn, chẳng hạn stride 4, hoặc inference theo ô, chạy bộ phát hiện trên các vùng crop chồng lấn.
- Danh mục sản phẩm thay đổi: Detector từ vựng mở nhận diện sản phẩm mới từ prompt văn bản mà không cần ảnh được gán nhãn của sản phẩm đó.
- Vật thể xoay: Tàu thuyền, phương tiện và tòa nhà trong ảnh vệ tinh được biểu diễn phù hợp hơn bằng box định hướng, bổ sung đầu ra góc cho head.










