Ngoài phân loại (classification), Computer Vision còn cần định vị và phân vùng đối tượng trong ảnh — biết "có gì", "ở đâu" và "thuộc về cá thể nào". Đây là các họ kiến trúc chính giải quyết những bài toán đó.
Các bài toán CV tăng dần về mức độ chi tiết của đầu ra: từ một nhãn cho cả ảnh, đến hộp giới hạn (bounding box), rồi tới nhãn cho từng pixel.
| Bài toán | Đầu ra | Mô tả |
|---|---|---|
| Image Classification | 1 nhãn / ảnh | Trả lời "ảnh này là gì" — gán đúng một lớp cho toàn bộ ảnh, không cần biết vị trí |
| Localization | 1 đối tượng + bbox | Một đối tượng chính + hộp giới hạn (bounding box) bao quanh nó |
| Object Detection | Nhiều đối tượng + bbox + nhãn | Phát hiện nhiều đối tượng cùng lúc, mỗi đối tượng có một bbox và một nhãn lớp |
| Semantic Segmentation | Nhãn cho TỪNG PIXEL | Gán nhãn lớp cho mỗi pixel — nhưng không phân biệt các cá thể cùng lớp (hai con mèo chung một "vùng mèo") |
| Instance Segmentation | Mask riêng từng cá thể | Vừa phân vùng theo pixel, vừa tách riêng từng cá thể (con mèo 1 và con mèo 2 là hai mask khác nhau) |
| Pose Estimation | Tập keypoint | Xác định các điểm khớp (keypoint) — ví dụ khớp người, để dựng lại tư thế/khung xương |
Detector hai giai đoạn chia bài toán thành hai bước: (1) sinh ra các vùng đề xuất (region proposals) có khả năng chứa đối tượng, (2) phân loại và tinh chỉnh bbox cho từng vùng. Họ R-CNN tiến hóa qua ba thế hệ:
Anchor boxes: RPN không đoán bbox từ con số 0 mà đặt sẵn một bộ hộp neo (anchor) với nhiều kích thước và tỉ lệ khung khác nhau tại mỗi vị trí trên feature map. Mạng chỉ cần học độ lệch (offset) và xác suất "có đối tượng" so với các anchor đó — giúp việc dự đoán bbox ổn định và dễ học hơn.
Detector một giai đoạn bỏ qua bước sinh đề xuất riêng: trực tiếp dự đoán bbox và lớp ngay trên feature map trong một lần forward duy nhất. Đổi lại tốc độ rất cao (real-time), thường nhỉnh hơn về tốc độ nhưng có thể kém hơn chút về độ chính xác so với two-stage.
| Tiêu chí | Two-stage (Faster R-CNN…) | One-stage (YOLO, SSD, RetinaNet) |
|---|---|---|
| Cơ chế | Sinh đề xuất → phân loại/tinh chỉnh | Dự đoán bbox + lớp trong một lần |
| Tốc độ | Chậm hơn | Nhanh, thường đạt real-time |
| Độ chính xác | Thường cao hơn (đặc biệt vật nhỏ) | Hơi thấp hơn, nhưng RetinaNet/YOLO mới đã thu hẹp khoảng cách |
| Phù hợp | Bài toán ưu tiên độ chính xác | Ứng dụng thời gian thực, thiết bị biên |
IoU (Intersection over Union) đo độ trùng khớp giữa bbox dự đoán \(A\) và bbox thật \(B\) — tỉ lệ diện tích giao trên diện tích hợp:
$$\text{IoU}=\frac{|A\cap B|}{|A\cup B|}$$Giá trị nằm trong \(0 \le \text{IoU} \le 1\); thường coi một dự đoán là "đúng" (true positive) khi \(\text{IoU} \gt 0.5\) so với box thật.
NMS (Non-Maximum Suppression) — sau khi mạng sinh ra nhiều bbox chồng lên cùng một đối tượng, NMS giữ lại box có điểm tin cậy cao nhất và loại bỏ các box trùng (những box có IoU với box đó vượt ngưỡng), tránh đếm trùng một vật.
mAP (mean Average Precision) — độ đo chính của detection. Với mỗi lớp tính Average Precision (diện tích dưới đường precision–recall), rồi lấy trung bình trên tất cả các lớp; thường báo cáo ở các ngưỡng IoU khác nhau (ví dụ mAP@0.5, mAP@[0.5:0.95]).
FPN (Feature Pyramid Network) — kết hợp đặc trưng đa tỉ lệ: lấy feature map ở nhiều độ phân giải rồi hợp nhất theo cấu trúc kim tự tháp (top-down + lateral connections). Nhờ đó mạng phát hiện tốt cả vật nhỏ (ở feature map độ phân giải cao) lẫn vật lớn (ở feature map sâu). FPN được dùng làm backbone/neck trong nhiều detector hiện đại.
Semantic segmentation gán cho mỗi pixel một nhãn lớp (không phân biệt cá thể). Kiến trúc điển hình theo dạng encoder–decoder: encoder nén ảnh thành đặc trưng giàu ngữ nghĩa nhưng độ phân giải thấp, decoder upsample trở lại kích thước ảnh gốc để dự đoán nhãn từng pixel.
HRNet (xem Bài 4: HRNet) duy trì biểu diễn độ phân giải cao xuyên suốt mạng, nên cũng rất mạnh cho segmentation và pose estimation.
Mask R-CNN mở rộng Faster R-CNN bằng cách thêm một nhánh mask song song với nhánh phân loại và hồi quy bbox. Với mỗi vùng đề xuất, nhánh mask dự đoán một mask nhị phân ở mức pixel cho từng instance — nhờ đó vừa phát hiện (bbox + lớp) vừa phân vùng chính xác từng cá thể riêng biệt.
Điểm mấu chốt là thay RoI Pooling bằng RoIAlign: RoI Pooling làm tròn tọa độ khi cắt đặc trưng, gây lệch nhỏ — chấp nhận được cho phân loại nhưng phá vỡ độ chính xác pixel của mask. RoIAlign dùng nội suy song tuyến (bilinear), giữ căn chỉnh không gian đúng, nâng đáng kể chất lượng mask.
| Thành phần | Vai trò |
|---|---|
| Faster R-CNN base | RPN sinh đề xuất + nhánh phân loại + nhánh hồi quy bbox |
| Nhánh mask | Dự đoán mask nhị phân pixel cho từng instance |
| RoIAlign | Cắt đặc trưng vùng giữ căn chỉnh chính xác (thay RoI Pooling) |
| Độ đo | Dùng cho | Ý nghĩa |
|---|---|---|
| IoU | Detection & Segmentation | Tỉ lệ trùng khớp giao/hợp giữa dự đoán và thực tế |
| mAP | Detection | Trung bình Average Precision trên các lớp (thường theo nhiều ngưỡng IoU) |
| Dice / IoU | Segmentation | Dice coefficient \(\dfrac{2|A\cap B|}{|A|+|B|}\) và IoU đo mức trùng của vùng mask dự đoán so với mask thật |
Bảng dưới tổng kết kiến trúc tiêu biểu theo từng bài toán:
| Bài toán | Kiến trúc tiêu biểu | Đặc trưng then chốt |
|---|---|---|
| Object Detection (two-stage) | R-CNN → Fast → Faster R-CNN | RPN + anchor boxes, end-to-end |
| Object Detection (one-stage) | YOLO, SSD, RetinaNet | Một lần duyệt, multi-scale, Focal Loss |
| Semantic Segmentation | FCN, U-Net, SegNet, DeepLab | Encoder–decoder, skip connection, atrous + ASPP |
| Instance Segmentation | Mask R-CNN | Faster R-CNN + nhánh mask + RoIAlign |
| Đa tỉ lệ / Pose | FPN, HRNet | Hợp nhất đặc trưng đa độ phân giải |