Detection Head
Tìm hiểu cách detection head hỗ trợ object detection theo thời gian thực. Khám phá vai trò của thành phần này trong Ultralytics YOLO26 khi dự đoán bounding box và label với độ chính xác cao.
Head phát hiện hoạt động như lớp ra quyết định cuối cùng trong kiến trúc mạng neural phát hiện đối tượng. Trong khi các lớp trước đó của model chịu trách nhiệm tìm hiểu hình dạng, kết cấu và đặc trưng trong hình ảnh, head phát hiện là thành phần cụ thể diễn giải thông tin này để dự đoán chính xác những đối tượng nào xuất hiện và vị trí của chúng. Nó chuyển đổi dữ liệu trừu tượng, cấp cao do bộ trích xuất đặc trưng tạo ra thành các kết quả có thể sử dụng, thường xuất ra một tập hợp bounding box bao quanh các đối tượng được nhận diện cùng với nhãn class và điểm tin cậy tương ứng.
Phân biệt Head với Backbone và Neck#
Để hiểu đầy đủ chức năng của head phát hiện, bạn nên hình dung các detector hiện đại được cấu thành từ ba giai đoạn chính, mỗi giai đoạn đảm nhiệm một mục đích riêng trong pipeline thị giác máy tính (CV):
- Backbone: Đây là phần đầu tiên của mạng, thường là một Mạng nơ-ron tích chập (CNN) như ResNet hoặc CSPNet. Nó xử lý hình ảnh đầu vào thô để tạo ra các feature map biểu diễn các pattern thị giác.
- Neck: Nằm giữa backbone và head, neck tinh chỉnh và kết hợp các đặc trưng từ nhiều scale khác nhau. Các kiến trúc như Mạng kim tự tháp đặc trưng (FPN) đảm bảo model có thể phát hiện các đối tượng với kích thước khác nhau bằng cách tổng hợp ngữ cảnh.
- Head: Thành phần cuối cùng tiếp nhận các đặc trưng đã được tinh chỉnh từ neck. Nó thực hiện tác vụ phân loại (đó là gì?) và hồi quy (nó ở đâu?).
Tiến hóa: Dựa trên Anchor và Không dùng Anchor#
Thiết kế của các head phát hiện đã phát triển đáng kể nhằm cải thiện tốc độ và độ chính xác, đặc biệt trong quá trình chuyển đổi từ các phương pháp truyền thống sang các model suy luận thời gian thực hiện đại.
- Head dựa trên Anchor: Các detector phát hiện đối tượng một giai đoạn truyền thống dựa vào các anchor box được định nghĩa trước—những hình dạng tham chiếu cố định với nhiều kích thước khác nhau. Head sẽ dự đoán mức độ kéo giãn hoặc dịch chuyển các anchor này để khớp với đối tượng. Phương pháp này được trình bày chi tiết trong các nghiên cứu nền tảng về Faster R-CNN.
- Head không dùng Anchor: Các model tiên tiến, bao gồm YOLO26 mới nhất, sử dụng detector không dùng anchor. Các head này dự đoán trực tiếp tâm và kích thước đối tượng từ các pixel trong feature map, loại bỏ nhu cầu tinh chỉnh anchor thủ công. Điều này đơn giản hóa kiến trúc và nâng cao khả năng tổng quát hóa của model đối với các hình dạng đối tượng mới, một kỹ thuật thường gắn liền với Phát hiện đối tượng một giai đoạn tích chập hoàn toàn (FCOS).
Các ứng dụng trong thực tế#
Độ chính xác của head phát hiện đóng vai trò then chốt khi triển khai trí tuệ nhân tạo (AI) trong các môi trường công nghiệp và an toàn trọng yếu. Người dùng có thể dễ dàng gắn nhãn dữ liệu và huấn luyện các head chuyên biệt này bằng Ultralytics Platform.
- Lái xe tự động: Trong AI cho ngành ô tô, head phát hiện chịu trách nhiệm phân biệt người đi bộ, đèn giao thông và các phương tiện khác theo thời gian thực. Một head được tối ưu hóa cao đảm bảo độ trễ suy luận đủ thấp để phương tiện phản ứng tức thì.
- Chẩn đoán y khoa: Trong phân tích hình ảnh y khoa, các head phát hiện được fine-tune để xác định vị trí các bất thường như khối u trong ảnh chụp MRI. Nhánh hồi quy phải cực kỳ chính xác để phác thảo ranh giới chính xác của tổn thương, hỗ trợ bác sĩ trong các giải pháp chăm sóc sức khỏe.
Ví dụ về code#
Ví dụ sau minh họa cách tải một model YOLO26 và kiểm tra đầu ra từ head phát hiện của model. Khi chạy suy luận, head xử lý hình ảnh và trả về boxes cuối cùng chứa tọa độ và ID class.
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Run inference on an image to utilize the detection head
results = model("https://ultralytics.com/images/bus.jpg")
# The detection head outputs are stored in results[0].boxes
for box in results[0].boxes:
# Print the bounding box coordinates and the predicted class
print(f"Class: {int(box.cls)}, Coordinates: {box.xywh.numpy()}")Tương tác này làm nổi bật cách head phát hiện chuyển đổi các activation phức tạp của mạng neural thành dữ liệu dễ đọc mà developer có thể sử dụng cho các tác vụ tiếp theo như theo dõi đối tượng hoặc đếm.









