Thị giác máy tính 6 — Vision Transformer & Foundation Models

13 thg 7, 2026 6 lượt xem
#ai
#computer-vision
#vision-transformer
#multimodal
#foundation-models

Thị giác máy tính 6 — Vision Transformer & Foundation Models

Năm bài trước của loạt này kể một câu chuyện quen thuộc: muốn giải một bài toán ảnh, bạn chọn kiến trúc CNN phù hợp (phân loại, phát hiện, OCR, nhận diện mặt), gom dữ liệu có nhãn cho đúng bài toán đó, rồi huấn luyện một mô hình chuyên biệt. Cách làm này vẫn đúng và vẫn hiệu quả, nhưng thế giới CV đã dịch chuyển mạnh trong vài năm: từ nhiều mô hình nhỏ, chuyên một task, cần nhiều nhãn sang ít mô hình lớn/nền tảng, dùng lại cho nhiều task, cần ít nhãn. Bài này giải thích ba trụ cột của xu hướng đó — Vision Transformer, foundation models, và multimodal (ảnh + text) — cùng ý nghĩa rất cụ thể cho một ngân hàng có ít dữ liệu nhãn nhưng nhiều loại chứng từ.

Đây là danh mục AI. Các đoạn code trong bài là pseudocode / minh hoạ để thấy luồng xử lý; không phải SQL/Python sandbox chạy được. Chỉ block có chú thích -- ▶ Chạy được mới thực sự chạy trên schema sandbox.


1. Vision Transformer (ViT): coi ảnh như một chuỗi "token"

Kiến trúc Transformer — với cơ chế self-attention (mỗi phần tử "nhìn" tất cả phần tử khác để quyết định phần nào quan trọng) — sinh ra cho xử lý ngôn ngữ và đã thống trị NLP/LLM (xem Transformer & attention). Câu hỏi tự nhiên: nếu Transformer giỏi với chuỗi token thế, có áp dụng được cho ảnh không? Vấn đề là ảnh không phải một chuỗi từ; nó là một lưới pixel 2 chiều, và cho self-attention chạy trên từng pixel thì chi phí bùng nổ (attention có độ phức tạp bậc hai theo số phần tử).

Ý tưởng cốt lõi của ViT rất gọn: chia ảnh thành các patch vuông (ví dụ 16×16 pixel), duỗi mỗi patch thành một vector, chiếu tuyến tính thành một embedding — và thế là mỗi patch trở thành một "token" y như một từ trong câu. Một ảnh 224×224 chia patch 16×16 cho 196 token; đây là một "câu" 196 token mà Transformer xử lý được thoải mái.

Luồng xử lý của ViT

Các bước:

  1. Patchify. Cắt ảnh thành lưới patch không chồng lấn; mỗi patch là một "từ hình ảnh".
  2. Embed. Chiếu mỗi patch thành vector; thêm positional encoding vì self-attention vốn không biết thứ tự — cần cho mô hình biết patch nào ở đâu trên ảnh.
  3. Token CLS. Thêm một token đặc biệt (giống [CLS] trong BERT) để gom thông tin toàn ảnh, dùng làm biểu diễn cuối.
  4. Encoder. Chồng nhiều lớp self-attention; mỗi patch "nhìn" mọi patch khác ngay từ lớp đầu.
  5. Đầu ra. Vector từ token CLS đưa vào một lớp phân loại, hoặc dùng làm đặc trưng cho task khác.

ViT so với CNN: khi nào dùng gì

Điểm khác biệt bản chất: CNN có "thiên kiến quy nạp" (inductive bias) về không gian — phép tích chập giả định tính cục bộ (pixel gần nhau liên quan) và bất biến dịch chuyển. Thiên kiến này là món quà khi dữ liệu ít: mô hình không phải học lại "ảnh có cấu trúc cục bộ" từ số không. ViT gần như không có thiên kiến đó — nó phải học mọi quan hệ không gian từ dữ liệu, kể cả những thứ CNN được cho sẵn. Hệ quả trực tiếp:

Tiêu chíCNN (xem CNN)Vision Transformer
Thiên kiến không gianCó sẵn (tích chập, cục bộ)Rất ít — học từ dữ liệu
Quan hệCục bộ trước, toàn cục dần theo tầngToàn cục ngay từ lớp đầu (attention)
Hiệu quả dữ liệuTốt ngay cả tập nhỏ/vừaCần dữ liệu lớn mới vượt CNN
Khi ít dữ liệuThường vẫn thắngKém nếu train từ đầu; nên pretrain
Chi phí tínhVừa phảiCao hơn, nhất là ảnh phân giải lớn

Kết luận thực dụng: ViT mạnh khi có dữ liệu khổng lồ (hoặc dùng backbone đã pretrain sẵn) và khi bài toán cần quan hệ toàn cục (bố cục toàn trang chứng từ, quan hệ giữa các vùng xa nhau). CNN vẫn rất tốt với tập nhỏ, độ trễ thấp, phần cứng eo hẹp. Trên thực tế ranh giới đã mờ: nhiều mô hình hiện đại lai (hybrid) hoặc dùng ViT nhưng đưa lại chút thiên kiến cục bộ (Swin Transformer chia cửa sổ). Với ngân hàng, điểm mấu chốt không phải "ViT hay CNN" mà là: hầu như luôn nên khởi từ một backbone đã pretrain, không train ViT từ số không trên vài nghìn ảnh nội bộ.


2. Foundation models cho vision: pretrain một lần, dùng cho nhiều task

Đây là thay đổi tư duy lớn nhất. Foundation model là mô hình rất lớn được huấn luyện tự giám sát (self-supervised — học từ ảnh không cần nhãn người dán) trên một khối lượng ảnh khổng lồ, tạo ra một backbone biểu diễn hình ảnh tổng quát mà ta dùng lại cho nhiều bài toán hạ nguồn, thường chỉ cần rất ít nhãn để "gắn đầu" (fine-tune nhẹ hoặc thậm chí không train).

Tự giám sát nghĩa là mô hình tự tạo bài tập cho chính nó từ ảnh trần: dự đoán phần ảnh bị che (masked image modeling), hay ép hai góc nhìn tăng cường (augment) của cùng một ảnh cho ra biểu diễn giống nhau (contrastive/self-distillation). Không cần con người ngồi dán nhãn — thứ đắt đỏ và khan hiếm nhất trong ngân hàng.

Vài họ mô hình đáng biết:

  • DINO / DINOv2 — họ self-supervised học biểu diễn ảnh rất giàu mà không dùng nhãn. Điều thú vị: attention của DINO tự "khoanh" được vật thể dù chưa từng thấy nhãn phân đoạn. Dùng làm backbone trích đặc trưng đa năng cho phân loại, truy vấn ảnh, phát hiện — chỉ cần gắn một đầu nhỏ.
  • SAM (Segment Anything Model) — foundation model cho phân đoạn (segmentation): đưa vào một ảnh và một "gợi ý" (điểm, hộp, hoặc để tự động), nó khoanh vùng mọi vật thể mà không cần train riêng cho lớp đó. Với chứng từ, SAM có thể tách ô, con dấu, chữ ký, vùng bảng khỏi nền mà không phải gán nhãn từng loại.
  • Backbone thị giác lớn nói chung — các mạng tiền huấn luyện quy mô lớn (gồm cả bộ mã hoá ảnh của các mô hình multimodal ở mục sau) dùng làm nền cho pipeline nội bộ.

Ý nghĩa: thay vì "mỗi task một mô hình train từ đầu", bạn có một backbone chung + nhiều đầu nhẹ. Điều này khớp thẳng với triết lý tái sử dụng đặc trưng và giảm chi phí gán nhãn.


3. Multimodal: khi ảnh gặp text

Bước nhảy tiếp theo là để mô hình học ảnh và ngôn ngữ cùng lúc. Đây là nơi CV và NLP hợp nhất, và là thứ đang thay đổi Document AI mạnh nhất.

CLIP: một không gian chung cho ảnh và text

CLIP (Contrastive Language–Image Pre-training) huấn luyện hai bộ mã hoá — một cho ảnh, một cho text — sao cho ảnh và đoạn mô tả đúng của nó rơi vào cùng một vùng trong không gian vector chung, còn cặp không khớp thì bị đẩy xa. Dữ liệu là hàng trăm triệu cặp (ảnh, chú thích) thu từ web — lại là không cần dán nhãn thủ công theo lớp, chỉ cần cặp ảnh–caption có sẵn.

Sức mạnh nằm ở zero-shot classification: để phân loại một ảnh, bạn không cần train một bộ phân loại. Bạn chỉ viết các mô tả text ứng với từng lớp — ví dụ "ảnh sao kê ngân hàng", "ảnh hoá đơn VAT", "ảnh chứng minh thư" — cho CLIP mã hoá cả ảnh lẫn các mô tả, rồi chọn lớp có text gần ảnh nhất trong không gian chung. Thêm một loại chứng từ mới? Chỉ cần thêm một dòng mô tả text, không cần thu ảnh, không cần train lại. Đây là bước ngoặt cho nơi ít dữ liệu nhãn.

Ngoài phân loại, không gian chung ảnh–text còn bật ra:

  • Image captioning — sinh mô tả bằng lời cho một ảnh.
  • VQA (Visual Question Answering)hỏi đáp trên ảnh: đặt câu hỏi bằng ngôn ngữ tự nhiên ("Tổng tiền trên hoá đơn là bao nhiêu?", "Chứng từ này có con dấu không?") và nhận câu trả lời.
  • Truy vấn ảnh bằng text — tìm ảnh khớp một câu mô tả, hoặc ngược lại.

Vision-Language Models / multimodal LLM

Đỉnh của xu hướng là các Vision-Language Model (VLM), hay multimodal LLM — LLM có thêm khả năng nhìn: GPT-4V, Gemini, Claude (vision). Chúng nhận ảnh + văn bản trong cùng một hội thoại, hiểu nội dung ảnh (đọc chữ, đọc bảng, đọc biểu đồ, hiểu bố cục) và trả lời câu hỏi hoặc trích xuất dữ liệu có cấu trúc theo yêu cầu bằng ngôn ngữ tự nhiên.

Điều này thay đổi cách làm Document AI. Pipeline OCR cổ điển (OCR & Document AI) thường là chuỗi rời rạc: detect vùng chữ → OCR → hậu xử lý → luật/regex bóc trường → mỗi loại chứng từ một khuôn (template) riêng. Với VLM, nhiều bước gộp lại: đưa thẳng ảnh chứng từ kèm một prompt mô tả cần trích gì (ví dụ yêu cầu JSON gồm số tài khoản, ngày, số tiền), mô hình vừa "đọc" vừa "hiểu ngữ cảnh" vừa trả về đúng cấu trúc — kể cả với chứng từ nó chưa từng thấy khuôn mẫu. Đây là lối ra cho bài toán "hàng trăm mẫu biểu, mỗi mẫu vài chục ảnh, không đủ để train template riêng".


4. Ý nghĩa thực tiễn — và những cân nhắc

Vì sao xu hướng này hợp với ngân hàng ít dữ liệu nhãn

  • Giảm mạnh nhu cầu dữ liệu có nhãn. Zero-shot / few-shot và prompt cho phép giải task mà không cần (hoặc cần rất ít) tập huấn luyện nội bộ. Với ngân hàng, nhãn chất lượng vừa đắt vừa vướng bảo mật — đây là lợi thế lớn.
  • Dùng pretrained/API thay vì train từ đầu. Bạn tiêu thụ một mô hình đã học sẵn, chỉ prompt hoặc fine-tune nhẹ, thay vì dựng cả pipeline gán nhãn + train + tuning cho từng loại chứng từ.
  • Tốc độ ra tính năng. Một loại giấy tờ mới có thể "lên sóng" bằng cách viết mô tả/prompt, không cần chu kỳ thu-nhãn-train hàng tuần.

Nhưng phải cân nhắc thẳng thắn

  • Chi phí & độ trễ. VLM lớn tốn tiền theo lượt gọi và thường chậm hơn một CNN nhỏ chạy on-device. Với luồng lớn (mỗi ngày hàng chục nghìn chứng từ), chi phí cộng dồn đáng kể — cần định tuyến: việc dễ dùng mô hình rẻ/cổ điển, việc khó mới đẩy lên VLM.
  • Dữ liệu nhạy cảm không được gửi ra ngoài. Chứng từ chứa PII/dữ liệu tài chính; gọi API bên thứ ba có thể vi phạm nội quy và NĐ13. Lối đi: self-host mô hình mở trong hạ tầng ngân hàng, hoặc dùng phương án triển khai riêng có cam kết không lưu dữ liệu.
  • Độ tin cậy & ảo giác (hallucination). VLM có thể bịa một con số/trường không có trên chứng từ một cách rất "tự tin". Với dữ liệu tài chính, sai một chữ số là hỏng. Bắt buộc có kiểm tra chéo (checksum, đối chiếu vùng ảnh, so tổng), ngưỡng độ tin cậy, và con người kiểm ở vùng nghi ngờ — không giao phó mù quáng.
  • Kiểm soát & lặp lại được. Đầu ra sinh tự do khó kiểm thử hồi quy hơn mô hình cũ; cần khung đánh giá và giám sát riêng (xem Triển khai CV & MLOps).

Bối cảnh ngân hàng: gợi ý áp dụng

Dùng multimodal model để trích xuất/hiểu chứng từ đa dạng mà không phải train nhiều: sao kê, hoá đơn, hợp đồng, giấy tờ tuỳ thân với muôn kiểu bố cục. Dùng zero-shot (CLIP hoặc VLM) để phân loại luồng vào — định tuyến mỗi ảnh về đúng pipeline xử lý — mà chỉ cần khai báo mô tả từng loại. Kết hợp: VLM/CLIP làm lớp "hiểu tổng quát và định tuyến", các mô hình chuyên biệt cũ (OCR, phát hiện con dấu/chữ ký) làm lớp "trích chính xác và kiểm chứng".


Use case thực tế

Bối cảnh. Phòng vận hành tín dụng nhận ~8.000 chứng từ/ngày kèm hồ sơ vay: sao kê ngân hàng (nhiều ngân hàng, mỗi nơi một mẫu), hoá đơn, giấy phép kinh doanh, hợp đồng lao động, bảng lương. Pipeline OCR-template cũ chỉ phủ được ~40% loại phổ biến; phần còn lại rơi vào nhập tay. Không đủ dữ liệu nhãn để dựng template cho từng mẫu hiếm.

Cách tiếp cận multimodal (minh hoạ):

  1. Phân loại luồng vào bằng zero-shot. Khai báo danh sách loại chứng từ bằng mô tả text cho CLIP/VLM; mỗi ảnh được gán nhãn loại có mô tả gần nhất. Loại đã có pipeline template → đi luồng cũ; loại hiếm → đẩy sang VLM.

    # PSEUDOCODE — không phải sandbox
    labels = ["sao kê ngân hàng", "hoá đơn VAT",
              "giấy phép kinh doanh", "hợp đồng lao động", "bảng lương"]
    loai = clip.zero_shot(anh_chung_tu, labels)   # không cần train
    
  2. Trích xuất bằng VLM cho chứng từ hiếm. Với loại chưa có template, gọi VLM (ưu tiên self-host vì dữ liệu nhạy cảm) kèm prompt yêu cầu trả JSON đúng schema (số tài khoản, kỳ sao kê, số dư cuối, tổng thu/chi).

  3. Kiểm chứng bắt buộc. Đối chiếu checksum/định dạng số tài khoản, so tổng thu–chi với số dư, kiểm ngày hợp lệ. Trường nào không qua kiểm hoặc độ tin cậy thấp → vùng xám, chuyển người kiểm.

  4. Đo lường & định tuyến chi phí. Việc dễ giữ ở mô hình rẻ/cổ điển; chỉ ~25% chứng từ khó mới gọi VLM để khống chế chi phí và độ trễ.

Kết quả (minh hoạ): tỷ lệ tự động hoá tăng từ ~40% lên ~80% nhờ phủ được các mẫu hiếm mà không phải gán nhãn/train template mới; thời gian đưa một loại chứng từ mới vào vận hành rút từ vài tuần xuống vài ngày (chỉ cần viết mô tả + prompt); rủi ro ảo giác được chặn bằng lớp kiểm chứng + người kiểm ở vùng xám.

Một truy vấn giám sát vận hành đơn giản — đếm hồ sơ theo khách để đối soát khối lượng xử lý, minh hoạ trên schema sandbox:

-- ▶ Chạy được
SELECT c.city, COUNT(*) AS so_kh, COUNT(a.id) AS so_tai_khoan
FROM customers c
LEFT JOIN accounts a ON a.customer_id = c.id
GROUP BY c.city
ORDER BY so_kh DESC;

Ghi nhớ

  • Dịch chuyển lớn: từ nhiều CNN chuyên biệt, cần nhiều nhãn sang ít mô hình lớn/nền tảng, dùng lại nhiều task, cần ít nhãn.
  • Vision Transformer: chia ảnh thành patch → coi mỗi patch như một tokenself-attention (dùng lại kiến trúc Transformer). Nắm quan hệ toàn cục ngay từ đầu; ít thiên kiến không gian nên cần dữ liệu lớn hoặc backbone pretrain. CNN vẫn tốt với tập nhỏ/độ trễ thấp.
  • Foundation models (tự giám sát, không cần nhãn): DINO (biểu diễn đa năng), SAM (phân đoạn "mọi thứ" không cần train lớp riêng), backbone lớn — pretrain một lần, gắn đầu nhẹ cho nhiều task.
  • Multimodal ảnh+text: CLIP đưa ảnh và text về cùng không gianzero-shot classification (phân loại bằng mô tả text, không cần train); mở ra captioningVQA (hỏi đáp ảnh).
  • VLM / multimodal LLM (GPT-4V, Gemini, Claude vision): hiểu ảnh + ngôn ngữ, đọc bảng/biểu đồ/chứng từ, trả lời và trích xuất có cấu trúcđổi cách làm Document AI, gộp nhiều bước OCR-template rời rạc.
  • Lợi ích cho ngân hàng ít nhãn: zero/few-shot + prompt giảm nhu cầu dữ liệu nhãn; dùng pretrained/API thay vì train từ đầu; ra tính năng nhanh.
  • Cân nhắc bắt buộc: chi phí & độ trễ (định tuyến việc khó mới lên VLM), dữ liệu nhạy cảm không gửi ra ngoàiself-host, và ảo giác → luôn có kiểm chứng + người kiểm ở vùng xám.

Đọc tiếp: OCR & Document AI · Nhận diện mặt & eKYC · Triển khai CV & MLOps · Tuân thủ CV ngân hàng · Transformer & attention.

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 15

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