Thị giác máy tính 3 — Phân loại, Phát hiện & Phân vùng

13 thg 7, 2026 6 lượt xem
#ai
#computer-vision
#yolo
#object-detection
#segmentation

Thị giác máy tính 3 — Phân loại, Phát hiện & Phân vùng

Ba câu hỏi khác nhau, ba bài toán khác nhau. Đưa cho máy một tấm ảnh giấy tờ khách nộp, ta có thể muốn hỏi: (1) Đây là loại giấy tờ gì? — CMND, CCCD, hộ chiếu hay hoá đơn; (2) Trên tấm ảnh này có những gì và nằm ở đâu? — vùng ảnh chân dung ở đây, số giấy tờ ở kia, con dấu ở góc; (3) Từng điểm ảnh thuộc về đối tượng nào? — tách chính xác vùng chữ ký ra khỏi nền. Ba câu hỏi này ứng với ba nhóm bài toán thị giác cốt lõi: image classification, object detectionsegmentation. Chúng dùng chung nền tảng CNN (xem Ảnh & CNN) nhưng khác nhau về đầu ra, kiến trúc, cách gắn nhãn dữ liệu và cách đánh giá.

Bài này đi qua cả ba, làm rõ khác biệt, kèm chỉ số đánh giá và các khâu dữ liệu thực chiến (gắn nhãn, transfer learning, augmentation). Bối cảnh xuyên suốt là chứng từ và ảnh eKYC ngân hàng.

Đây là danh mục AI. Các đoạn code trong bài là pseudocode minh hoạ để bạn thấy hình dạng phép tính và luồng xử lý, không phải SQL/Python sandbox chạy được.


1. Ba bài toán khác nhau ở đâu

Điểm phân biệt nằm ở đầu ra của mô hình.

Bài toánCâu hỏiĐầu raMức chi tiết
ClassificationẢnh này là gì?1 (hoặc nhiều) nhãn cho cả ảnhToàn ảnh
Object detectionCó gì & ở đâu?Danh sách (nhãn + bounding box + độ tin cậy)Từng đối tượng
Semantic segmentationMỗi pixel thuộc lớp nào?Nhãn lớp cho từng điểm ảnhPixel (không tách cá thể)
Instance segmentationMỗi cá thể riêng ở đâu, hình dạng nào?Mask riêng cho từng cá thểPixel + tách cá thể

Trực giác: classification trả một câu trả lời cho toàn ảnh; detection trả nhiều hộp kèm vị trí; segmentation trả một bản đồ pixel chi tiết đến từng điểm ảnh. Càng xuống dưới, thông tin càng giàu — nhưng gắn nhãn dữ liệu càng tốn công và mô hình càng nặng.


2. Image classification — ảnh này là gì

Đây là bài toán "vào cửa" của thị giác máy tính: đưa vào một ảnh, mô hình trả về một phân phối xác suất trên các lớp và chọn lớp có xác suất cao nhất.

  • Single-label (đa lớp, một nhãn): mỗi ảnh thuộc đúng một lớp. Ví dụ: phân loại một ảnh chứng từ vào {CMND, CCCD, Hộ chiếu, Hoá đơn, Khác}. Lớp cuối dùng softmax, huấn luyện với cross-entropy.
  • Multi-label (nhiều nhãn): một ảnh có thể mang nhiều nhãn độc lập cùng lúc. Ví dụ một ảnh chứng từ vừa "có chữ ký" vừa "có con dấu" vừa "bị mờ". Lớp cuối dùng sigmoid trên từng nhãn (không softmax), mỗi nhãn là một bài phân loại nhị phân.

Luồng suy luận (minh hoạ):

# pseudocode minh hoạ — KHÔNG chạy được
probs = model(image)              # vector xác suất trên các lớp, softmax
label = classes[argmax(probs)]    # single-label: lấy lớp cao nhất
conf  = max(probs)
if conf < 0.6:                    # ngưỡng tin cậy -> chuyển thẩm định tay
    route_to_manual_review(image)

Ứng dụng ngân hàng. Khi khách upload ảnh trong quy trình eKYC hoặc mở hồ sơ tín dụng, bước đầu tiên thường là phân loại loại giấy tờ để định tuyến sang pipeline OCR phù hợp: hộ chiếu có bố cục và vùng MRZ khác CCCD, hoá đơn lại khác hoàn toàn. Phân loại sai loại giấy tờ ngay từ đầu sẽ làm hỏng toàn bộ trích xuất phía sau. Một nhãn phụ hữu ích: phân loại chất lượng ảnh (rõ / mờ / chói sáng / thiếu góc) để yêu cầu khách chụp lại trước khi tốn công OCR.


3. Object detection — có gì & ở đâu

Detection trả lời đồng thời hai câu hỏi: phân loại (đối tượng thuộc lớp nào) và định vị (nó nằm ở đâu, biểu diễn bằng bounding box — hộp chữ nhật x, y, w, h). Đầu ra là một danh sách hộp, mỗi hộp kèm nhãn và điểm tin cậy.

Các khái niệm nền

  • Bounding box: hộp chữ nhật khoanh vùng đối tượng.
  • IoU (Intersection over Union): thước đo độ trùng khớp giữa hai hộp = diện tích giao / diện tích hợp. IoU = 1 là trùng khít, 0 là rời nhau. Dùng để so hộp dự đoán với hộp thật và để lọc hộp trùng.
  • Anchor (hộp mỏ neo): tập hộp mẫu với nhiều kích thước/tỷ lệ đặt sẵn khắp ảnh; mô hình học cách tinh chỉnh (offset) anchor cho khớp đối tượng thay vì đoán hộp từ số 0. (Một số mô hình đời mới là anchor-free.)
  • NMS (Non-Maximum Suppression — khử cực đại phi tối ưu): cùng một đối tượng thường bị dự đoán bằng nhiều hộp chồng nhau. NMS giữ hộp có điểm cao nhất, rồi loại các hộp còn lại có IoU với nó vượt ngưỡng (ví dụ 0.5). Kết quả: mỗi đối tượng còn đúng một hộp.
# pseudocode minh hoạ NMS — KHÔNG chạy được
def nms(boxes, scores, iou_thr=0.5):
    keep = []
    order = argsort(scores, descending=True)
    while order:
        i = order.pop(0)          # hộp điểm cao nhất còn lại
        keep.append(i)
        order = [j for j in order if iou(boxes[i], boxes[j]) < iou_thr]
    return keep                   # loại các hộp trùng đối tượng

Hai họ kiến trúc

Two-stage (Faster R-CNN)One-stage (YOLO, SSD)
Cách làm(1) đề xuất vùng ứng viên (RPN) → (2) phân loại + tinh boxDự đoán box + lớp một lượt trên lưới
Ưu điểmChính xác hơn với vật nhỏ/khóNhanh, chạy real-time
Nhược điểmChậm hơn, pipeline phức tạpThường kém hơn chút ở vật nhỏ
Hợp choTrích xuất tài liệu offline cần độ chính xácGiám sát video, đếm luồng, eKYC live

Two-stage — Faster R-CNN: một mạng con (Region Proposal Network) đề xuất các vùng có khả năng chứa đối tượng, sau đó mỗi vùng được phân loại và tinh chỉnh hộp. Tách hai bước cho độ chính xác cao nhưng chậm.

One-stage — YOLO / SSD: chia ảnh thành lưới ô, mỗi ô dự đoán trực tiếp một số hộp kèm lớp và độ tin cậy trong một lần chạy mạng (YOLO = You Only Look Once). Đổi lại một chút độ chính xác để có tốc độ real-time — rất hợp bài toán video/luồng.

Ứng dụng ngân hàng. (a) Định vị vùng thông tin trên giấy tờ: phát hiện vị trí trường họ tên, số giấy tờ, ngày sinh, ảnh chân dung, vùng MRZ — làm đầu vào cho OCR (xem OCR & Document AI). (b) Phát hiện khuôn mặt trong ảnh selfie eKYC để cắt vùng mặt trước khi so khớp (xem Face & eKYC). (c) Đếm/giám sát: đếm người/xe ở quầy, phát hiện đối tượng bất thường trong camera an ninh chi nhánh — nơi YOLO real-time phát huy tác dụng.


4. Segmentation — phân vùng đến từng pixel

Segmentation đẩy mức chi tiết đến tận điểm ảnh: thay vì một hộp thô, mô hình gán nhãn cho từng pixel.

  • Semantic segmentation: mỗi pixel thuộc một lớp, không phân biệt cá thể. Nếu ảnh có hai con dấu, cả hai pixel đều mang nhãn "con dấu" — không tách con dấu A với con dấu B.
  • Instance segmentation: vừa gán lớp cho pixel, vừa tách từng cá thể thành mask riêng. Hai con dấu → hai mask riêng biệt.

Kiến trúc tiêu biểu:

  • U-Net: kiến trúc encoder–decoder hình chữ U với skip connection nối tầng encoder sang decoder cùng độ phân giải, giúp giữ chi tiết biên. Rất mạnh cho semantic segmentation, gốc từ ảnh y tế.
  • Mask R-CNN: mở rộng Faster R-CNN, thêm một nhánh dự đoán mask cho mỗi hộp đối tượng → instance segmentation (vừa có hộp, vừa có hình dạng pixel).

Ứng dụng ngân hàng. Trên chứng từ, segmentation dùng để tách vùng chữ ký, con dấu, ảnh chân dung ra khỏi phần chữ và nền: cắt riêng chữ ký để so khớp với mẫu lưu, cô lập con dấu để kiểm tra tính hợp lệ, hoặc che (redact) vùng nhạy cảm khi lưu trữ. Segmentation cho biên chính xác hơn hẳn bounding box khi đối tượng có hình dạng bất quy tắc (chữ ký viết tay) hoặc chồng lấn phần chữ.


5. Đánh giá — mỗi bài toán một bộ chỉ số

Chọn sai chỉ số là cạm bẫy phổ biến. Mỗi nhóm bài toán có thước đo riêng.

Classification

  • Accuracy: tỷ lệ đoán đúng. Dễ hiểu nhưng lừa dối khi mất cân bằng lớp: nếu 95% ảnh là "CCCD hợp lệ", mô hình đoán bừa "hợp lệ" cũng đạt 95%.
  • Precision / Recall / F1 trên từng lớp: precision = trong số dự đoán là lớp X, bao nhiêu đúng; recall = trong số thực sự là lớp X, bắt được bao nhiêu; F1 = trung bình điều hoà của hai chỉ số. Xem thêm Đánh giá mô hình ML... (chỉ số này là nền chung).
  • Confusion matrix: cho thấy mô hình nhầm lớp nào với lớp nào — hộ chiếu bị nhầm thành CCCD chẳng hạn.

Detection

  • IoU làm ngưỡng "đúng": một hộp dự đoán được tính là true positive nếu IoU với hộp thật ≥ ngưỡng (thường 0.5).
  • AP (Average Precision): diện tích dưới đường precision–recall của một lớp. mAP (mean AP): trung bình AP trên mọi lớp. Ký hiệu [email protected] dùng ngưỡng IoU 0.5; mAP@[.5:.95] (chuẩn COCO) lấy trung bình trên nhiều ngưỡng IoU — khắt khe hơn.

Segmentation

  • Pixel IoU / mIoU: IoU tính trên tập pixel của từng lớp, rồi lấy trung bình.
  • Dice coefficient: rất phổ biến cho phân vùng, đặc biệt khi vùng đối tượng nhỏ so với nền.

6. Dữ liệu & gắn nhãn — nơi quyết định thành bại

Kiến trúc thường không phải nút thắt; chất lượng nhãn mới là. Và công gắn nhãn tăng vọt theo mức chi tiết:

Bài toánCông gắn nhãn / ảnhCần gì
ClassificationThấpChọn 1 nhãn cho ảnh
DetectionTrung bình–caoVẽ bounding box quanh từng đối tượng + nhãn
SegmentationRất caomask viền từng pixel — chậm gấp nhiều lần vẽ hộp
  • Công cụ gắn nhãn: các nền tảng phổ biến như CVAT, Label Studio, Roboflow hỗ trợ vẽ box/polygon/mask, quản lý phiên bản và nhiều người gán.
  • Chất lượng nhãn quyết định: hộp lệch, mask thiếu biên, nhãn không nhất quán giữa người gán → mô hình học sai. Nên có hướng dẫn gán nhãn (annotation guideline) rõ ràng và bước rà soát chéo/đo độ đồng thuận giữa người gán.
  • Định dạng dữ liệu: detection thường theo chuẩn COCO (JSON) hoặc YOLO (một dòng class cx cy w h chuẩn hoá mỗi hộp).

Transfer learning & pretrained

Gần như không ai train detector/segmenter từ số 0. Cách làm chuẩn: lấy backbone (ResNet, v.v.) đã pretrained trên ImageNet, và với detection/segmentation thường khởi từ mô hình đã train trên COCO (80 lớp vật thể đời thường), rồi fine-tune trên tập nhãn nội bộ nhỏ hơn. Điều này biến bài toán "cần hàng trăm nghìn ảnh nhãn" thành "vài trăm–vài nghìn ảnh là chạy được". Xem thêm Model registry & deploy cho khâu quản lý phiên bản mô hình.

Data augmentation

Sinh thêm biến thể từ ảnh gốc để mô hình học tính bất biến và bớt overfit: xoay nhẹ, lật, đổi độ sáng/tương phản, thêm nhiễu, mô phỏng ảnh chụp điện thoại (mờ, chói). Lưu ý cốt tử với detection/segmentation: khi biến đổi ảnh, phải biến đổi hộp/mask tương ứng — xoay ảnh mà quên xoay box là hỏng nhãn. Và chỉ dùng phép biến đổi không làm sai bản chất (không lật ngang giấy tờ nếu chữ trở nên vô nghĩa).


Use case thực tế

Bối cảnh. Ngân hàng số hoá quy trình eKYC: mỗi ngày ~8.000 hồ sơ, khách chụp giấy tờ tuỳ thân + selfie qua app. Mục tiêu: tự động phân loại giấy tờ, trích xuất thông tin, tách chữ ký/con dấu để lưu và kiểm tra — giảm tải cho đội thẩm định thủ công.

Pipeline ba tầng, đúng ba bài toán của bài này:

  1. Classification — phân loại & kiểm chất lượng. Ảnh vào được phân vào {CMND, CCCD, Hộ chiếu, Hoá đơn, Khác} kèm nhãn chất lượng. Ảnh "mờ/thiếu góc" (giả sử ~12%) bị chặn ngay, app yêu cầu chụp lại → tránh OCR rác. Định tuyến đúng loại giấy tờ sang pipeline OCR phù hợp.
  2. Detection — định vị trường thông tin. Một detector (fine-tune từ mô hình pretrained COCO) khoanh hộp các vùng: ảnh chân dung, số giấy tờ, họ tên, ngày sinh, vùng MRZ, con dấu. Áp NMS để mỗi trường còn một hộp; hộp có độ tin cậy < 0.6 bị đánh dấu để người kiểm.
  3. Segmentation — tách chữ ký & con dấu. Với chứng từ cần lưu, một mô hình segmentation tách mask chữ kýcon dấu để: (a) cắt chữ ký so khớp mẫu chữ ký lưu trong hồ sơ; (b) redact/che vùng nhạy cảm khi lưu trữ lâu dài.

Kết quả & đo lường (minh hoạ): classification theo dõi bằng F1 từng lớp + confusion matrix (phát hiện nhầm hộ chiếu↔CCCD); detector theo dõi [email protected] trên từng loại trường; segmentation theo dõi mIoU/Dice cho lớp chữ ký/con dấu. Nhờ tự động hoá, tỷ lệ hồ sơ cần thẩm định tay giảm mạnh, thời gian mở tài khoản rút từ nhiều phút xuống vài chục giây; các case tin cậy thấp vẫn được đẩy sang người để kiểm soát rủi ro (xem Tuân thủ trong CV ngân hàng).


Ghi nhớ

  • Ba bài toán khác nhau ở đầu ra: classification = 1 nhãn cho cả ảnh; detection = danh sách box + nhãn + tin cậy; segmentation = nhãn cho từng pixel (semantic không tách cá thể, instance có tách).
  • Classification: single-label dùng softmax, multi-label dùng sigmoid từng nhãn. Ứng dụng: phân loại loại giấy tờ & chất lượng ảnh để định tuyến OCR.
  • Detection có hai họ: two-stage Faster R-CNN (chính xác, chậm) và one-stage YOLO/SSD (nhanh, real-time). Nắm chắc IoU, anchor, NMS.
  • Segmentation: U-Net (semantic, encoder–decoder + skip) và Mask R-CNN (instance). Dùng để tách chữ ký/con dấu/ảnh trên chứng từ chính xác đến biên.
  • Chỉ số theo bài toán: accuracy/precision/recall/F1 + confusion matrix (classification); [email protected], mAP@[.5:.95], IoU (detection); mIoU/Dice (segmentation). Cẩn thận accuracy khi lớp mất cân bằng.
  • Gắn nhãn quyết định chất lượng: công tăng dần box → mask; cần công cụ (CVAT/Label Studio/Roboflow) và guideline nhất quán.
  • Transfer learning là mặc định: khởi từ pretrained (ImageNet/COCO) rồi fine-tune trên vài trăm–vài nghìn ảnh nội bộ. Augmentation phải biến đổi cả nhãn box/mask kèm ảnh.

Đọc tiếp: Ảnh & CNN · OCR & Document AI · Face & eKYC · Vision hiện đại · Tổng quan CV.

Bài viết liên quan

Phân biệt AI/ML/DL, các kiểu học máy, quy trình ML end-to-end và thuật ngữ nền tảng.

13 thg 7, 2026 14

Chất lượng dữ liệu, xử lý thiếu/ngoại lai, mã hoá, chuẩn hoá, tạo đặc trưng và tránh data leakage.

13 thg 7, 2026 13

Mô hình ngôn ngữ lớn hoạt động ra sao, token, context window, tham số sinh, và kỹ thuật viết prompt.

13 thg 7, 2026 13

Retrieval-Augmented Generation, vector database, tool calling, agent và MCP để xây ứng dụng LLM thực tế.

13 thg 7, 2026 11