Thị giác máy tính 1 — Tổng quan & ứng dụng ngân hàng
Thị giác máy tính 1 — Tổng quan & ứng dụng ngân hàng
Con người liếc một tấm CCCD là biết ngay đây là ai, chữ nào là họ tên, ảnh nào là mặt người. Với máy tính, cùng tấm ảnh đó chỉ là một khối số vô nghĩa. Thị giác máy tính (computer vision — CV) là ngành dạy máy "nhìn" và hiểu nội dung ảnh/video — từ "trong ảnh có gì" đến "chữ trên chứng từ này là gì" hay "khuôn mặt trước camera có khớp với ảnh trên giấy tờ không".
Đây là bài mở đầu series Thị giác máy tính & Document AI. Mục tiêu là dựng khung tư duy: ảnh được biểu diễn thế nào, có những dạng bài toán CV nào, pipeline điển hình ra sao, và — quan trọng nhất với một team dữ liệu ngân hàng — CV được dùng vào việc gì trong ngân hàng Việt Nam. Các phần sẽ được đào sâu ở những bài sau: ảnh & CNN, phân loại & phát hiện, OCR & Document AI, khuôn mặt & eKYC.
Đây là danh mục AI. CV làm việc với ảnh, không phải bảng SQL — nên bài này không có block SQL chạy được trên sandbox. Các đoạn code là minh hoạ để bạn thấy hình dạng dữ liệu, không phải để chạy thật.
1. Ảnh là dữ liệu — chỉ là những con số
Muốn hiểu CV, phải bỏ trực giác "ảnh là hình" và thay bằng "ảnh là số". Đây là nền tảng cho mọi thứ về sau.
Pixel, kênh màu, ma trận
Một tấm ảnh là một lưới các điểm ảnh (pixel). Mỗi pixel mang một giá trị cường độ sáng, thường là số nguyên 0–255 (8 bit).
- Ảnh xám (grayscale): mỗi pixel một số duy nhất. 0 là đen, 255 là trắng, ở giữa là các mức xám. Cả ảnh là một ma trận hai chiều
H × W(cao × rộng). - Ảnh màu (RGB): mỗi pixel gồm 3 kênh (channel) — đỏ (Red), lục (Green), lam (Blue). Trộn ba kênh theo cường độ khác nhau tạo ra mọi màu. Cả ảnh là một khối số ba chiều
H × W × 3, gọi là tensor (mảng nhiều chiều).
Ví dụ minh hoạ: một pixel màu cam sáng có thể là (R=255, G=140, B=0). Một ảnh CCCD chụp ở độ phân giải 1280×720 màu là một tensor 720 × 1280 × 3 ≈ 2,76 triệu con số. Với máy, xử lý ảnh = xử lý ma trận/tensor số — cùng thứ toán học với bảng dữ liệu, chỉ khác cấu trúc.
Độ phân giải và đánh đổi
Độ phân giải (resolution) là số pixel — ví dụ 1920×1080. Độ phân giải cao giữ được chi tiết nhỏ (nét chữ trên hoá đơn, vân tay giả) nhưng nặng bộ nhớ và chậm. Một quyết định thực chiến điển hình trong CV: resize ảnh đầu vào về kích thước chuẩn (ví dụ 224×224 cho phân loại, hoặc 640×640 cho phát hiện) để mô hình chạy nhanh và ổn định — đánh đổi một phần chi tiết lấy tốc độ.
Từ ảnh đến đầu vào mô hình
Trước khi vào mô hình, ảnh thường được chuẩn hoá (normalize): chia 255 để đưa pixel về khoảng 0–1, rồi trừ trung bình / chia độ lệch chuẩn. Kết quả là một tensor số thực, sẵn sàng cho phép nhân ma trận bên trong mạng nơ-ron.
# Minh hoạ (không chạy trên sandbox): ảnh -> tensor số
import numpy as np
img = load_image("cccd.jpg") # shape (720, 1280, 3), giá trị 0..255
x = img.astype("float32") / 255.0 # chuẩn hoá về 0..1
x = resize(x, (224, 224)) # về kích thước mô hình
# x giờ là tensor (224, 224, 3) sẵn sàng đưa vào CNN
Điểm mấu chốt: ẢNH LÀ DỮ LIỆU. Mọi bài toán CV chỉ là "cho một tensor số vào, nhận một kết quả có ý nghĩa ra".
2. Các bài toán CV chính
CV không phải một bài toán duy nhất mà là một họ bài toán. Đầu vào đều là ảnh, nhưng đầu ra khác nhau — và chính đầu ra định nghĩa bài toán.
| Bài toán | Câu hỏi trả lời | Đầu ra | Ví dụ ngân hàng |
|---|---|---|---|
| Image classification (phân loại ảnh) | "Ảnh này là loại gì?" | 1 nhãn cho cả ảnh | Chứng từ này là CCCD hay hộ khẩu hay hoá đơn? |
| Object detection (phát hiện đối tượng) | "Có những gì, ở đâu?" | Danh sách hộp bao (bounding box) + nhãn | Định vị vùng số CCCD, vùng ảnh chân dung, vùng chữ ký |
| Segmentation (phân vùng) | "Từng pixel thuộc vật gì?" | Nhãn cho mỗi pixel (mặt nạ) | Tách nền khỏi tờ giấy tờ, khoanh vùng con dấu |
| OCR (nhận dạng ký tự) | "Chữ trong ảnh viết gì?" | Chuỗi văn bản + vị trí | Đọc số CCCD, họ tên, ngày cấp, số tiền trên séc |
| Face recognition / verification | "Đây là ai / có phải cùng một người?" | Danh tính, hoặc điểm khớp | So khuôn mặt selfie với ảnh trên CCCD (eKYC) |
| Pose / landmark | "Các điểm mốc nằm đâu?" | Toạ độ các điểm (mắt, mũi, khớp) | Kiểm tra hướng mặt, phát hiện sống động (liveness) |
Phân biệt ba khái niệm hay bị lẫn: classification gán một nhãn cho cả ảnh; detection vừa nói có gì vừa khoanh vị trí bằng bounding box; segmentation đi sâu nhất — gán nhãn cho từng pixel, cho ra đường viền chính xác thay vì hộp chữ nhật thô. Chi phí tính toán và nhu cầu dữ liệu nhãn tăng dần theo thứ tự đó.
3. Pipeline CV điển hình
Một hệ CV trong thực tế hiếm khi chỉ là "gọi model". Nó là một chuỗi công đoạn, và phần lớn công sức kỹ thuật nằm ở tiền xử lý và hậu xử lý chứ không phải bản thân mô hình.
- Thu thập: ảnh đến từ camera chi nhánh/ATM, máy scan chứng từ, hoặc khách tự chụp/upload qua app.
- Tiền xử lý (preprocessing): sửa xoay/nghiêng, cắt vùng quan tâm, chuẩn hoá độ sáng, khử nhiễu, resize. Ảnh khách chụp bằng điện thoại rất "bẩn" — nghiêng, loá, thiếu sáng — nên bước này quyết định độ chính xác cuối cùng.
- Mô hình / trích đặc trưng: mạng học sâu biến ảnh thành đặc trưng rồi ra dự đoán.
- Hậu xử lý (post-processing): lọc kết quả dưới ngưỡng tin cậy, gộp các bounding box chồng nhau (non-max suppression), ghép các ký tự OCR thành trường có nghĩa (số CCCD gồm 12 chữ số).
- Ngưỡng & con người (human-in-the-loop): ca dễ thì tự động, ca mờ/khó thì đẩy cho nhân viên duyệt — nguyên tắc sống còn khi rủi ro cao.
4. Vì sao deep learning cách mạng hoá CV
Trước ~2012, CV dựa vào đặc trưng thủ công (hand-crafted features): kỹ sư tự thiết kế bộ dò cạnh, dò góc (SIFT, HOG). Cách này giòn, mỗi bài toán phải thiết kế lại, và độ chính xác chạm trần.
Bước ngoặt là mạng nơ-ron tích chập (Convolutional Neural Network — CNN) cùng khoảnh khắc AlexNet thắng lớn cuộc thi ImageNet 2012. Thay vì con người tự nghĩ ra đặc trưng, CNN tự học đặc trưng trực tiếp từ dữ liệu: lớp đầu học cạnh và màu, lớp giữa học kết cấu và bộ phận, lớp sâu học khái niệm hoàn chỉnh (khuôn mặt, con số). CNN khai thác đúng cấu trúc không gian của ảnh và dùng lại trọng số khắp khung hình (xem chi tiết ở Deep Learning — CNN và ảnh & CNN).
Gần đây, Vision Transformer (ViT) mang kiến trúc transformer từ NLP sang ảnh, bổ sung cho CNN ở nhiều bài toán (xem Vision hiện đại). Điểm chung của cả hai làn sóng: chất lượng CV giờ tăng theo dữ liệu + tính toán, không còn phụ thuộc sự khéo léo thủ công. Đó là lý do một team ngân hàng ngày nay có thể triển khai eKYC hay OCR chứng từ đủ chính xác để đưa vào sản xuất.
5. Ứng dụng ngân hàng — bản đồ tổng thể
Đây là phần thực chiến nhất và là lý do CV rất "nóng" ở ngân hàng Việt Nam. Sơ đồ dưới nối các bài toán CV với ứng dụng nghiệp vụ:
eKYC — xác thực danh tính từ xa
eKYC (electronic Know Your Customer) cho phép khách mở tài khoản/định danh hoàn toàn online, không cần ra quầy — được Ngân hàng Nhà nước cho phép và trở thành chuẩn cạnh tranh ở Việt Nam. Quy trình CV điển hình:
- Đọc giấy tờ: khách chụp CMND/CCCD hai mặt. Hệ thống detect vùng giấy tờ, kiểm tra loại, rồi OCR trích số CCCD, họ tên, ngày sinh, quê quán, ngày cấp.
- So khớp khuôn mặt (face verification): chụp selfie, so với ảnh chân dung trên giấy tờ để xác nhận cùng một người.
- Phát hiện sống động (liveness detection): yêu cầu khách nháy mắt/quay đầu, chống việc kẻ gian giơ ảnh in hoặc video (spoofing).
Bài Khuôn mặt & eKYC sẽ đào sâu phần này.
Document AI — xử lý chứng từ tự động
Ngân hàng ngập trong giấy tờ: hồ sơ vay, hồ sơ mở tài khoản, sao kê lương, hoá đơn, séc, uỷ nhiệm chi. Document AI kết hợp detection + OCR + hiểu bố cục để trích xuất tự động các trường vào hệ thống, thay vì nhân viên gõ tay. Ví dụ: từ một tờ hoá đơn, tự lấy số tiền, ngày, mã số thuế, số hoá đơn. Xem OCR & Document AI.
An ninh & giám sát
Camera ở ATM và chi nhánh dùng detection/nhận diện để cảnh báo hành vi bất thường, đếm lượng khách, hỗ trợ điều tra sự cố. Đây là ứng dụng nhạy cảm về quyền riêng tư, cần chính sách chặt chẽ.
Phát hiện gian lận giấy tờ
CV giúp phát hiện giấy tờ giả mạo (photoshop, cắt ghép, con dấu giả), ảnh chân dung bị thay, hoặc chứng từ vay bị chỉnh sửa số liệu. Kết hợp với khung chống gian lận rộng hơn ở AML & Fraud.
6. Build vs Buy — tự làm hay mua
Không phải lúc nào cũng nên tự huấn luyện mô hình từ đầu. Ba lựa chọn thường thấy:
| Hướng đi | Khi nào phù hợp | Đánh đổi |
|---|---|---|
| Dịch vụ cloud / API bên thứ ba (eKYC provider, OCR API) | Cần triển khai nhanh, bài toán phổ biến (CCCD VN) | Nhanh, ít nhân lực; nhưng phụ thuộc nhà cung cấp, dữ liệu sinh trắc học ra ngoài — cân nhắc pháp lý & bảo mật |
| Mô hình pretrained + fine-tune | Có dữ liệu riêng, bài toán gần chuẩn | Cân bằng tốt: dùng lại tri thức đã học (transfer learning), chỉ tinh chỉnh trên dữ liệu ngân hàng |
| Tự huấn luyện từ đầu | Bài toán đặc thù, dữ liệu nhiều, cần kiểm soát tuyệt đối | Tốn dữ liệu nhãn, tính toán, đội ngũ; chỉ đáng khi tạo lợi thế riêng |
Ở Việt Nam, thực tế phổ biến là mua eKYC/OCR CCCD từ nhà cung cấp chuyên biệt (vì họ đã tối ưu cho giấy tờ VN) và tự phát triển phần Document AI đặc thù cho quy trình nội bộ. Việc đưa mô hình vào vận hành ổn định là chủ đề Production & MLOps.
7. Thách thức cần biết trước
- Dữ liệu nhãn (labeled data): CV giám sát cần rất nhiều ảnh đã gán nhãn (box, mặt nạ, văn bản). Gán nhãn tốn kém, và với dữ liệu ngân hàng còn ràng buộc bảo mật — không thể thuê ngoài tùy tiện.
- Độ chính xác & rủi ro: 99% nghe cao, nhưng 1% sai trên hàng triệu hồ sơ eKYC là con số lớn. Phải phân định rõ sai cho qua (chấp nhận kẻ gian — rủi ro gian lận) và sai từ chối (chặn khách thật — mất khách). Ngưỡng phải chọn theo khẩu vị rủi ro, kèm human-in-the-loop.
- Bảo mật sinh trắc học: khuôn mặt là dữ liệu nhạy cảm, không thể "đổi mật khẩu" nếu rò rỉ. Lưu trữ, mã hoá và tuân thủ (Nghị định 13/2023 về bảo vệ dữ liệu cá nhân) là bắt buộc — xem Compliance ngân hàng.
- Thiên lệch (bias): mô hình khuôn mặt có thể kém chính xác hơn với một số nhóm nhân khẩu nếu dữ liệu huấn luyện lệch. Cần đánh giá công bằng trước khi triển khai diện rộng.
- Điều kiện thực địa: ảnh khách chụp nghiêng, thiếu sáng, giấy tờ cũ nhòe — mô hình phải bền với nhiễu, không chỉ tốt trên ảnh sạch phòng thí nghiệm.
Use case thực tế
Bối cảnh: NCB triển khai mở tài khoản online bằng eKYC qua app. Trước đó, mỗi hồ sơ mở tại quầy tốn ~10 phút nhân viên nhập liệu và kiểm tra giấy tờ. Mục tiêu: tự động hoá để rút ngắn thời gian và mở rộng quy mô.
Luồng CV áp dụng:
- Khách chụp CCCD hai mặt. Hệ thống detect vùng giấy tờ và phân loại đúng là CCCD gắn chip; nếu ảnh mờ/thiếu góc → yêu cầu chụp lại (giảm rác đầu vào).
- OCR trích 6 trường: số CCCD (12 chữ số), họ tên, ngày sinh, giới tính, quê quán, ngày cấp. Hậu xử lý kiểm tra số CCCD đúng 12 chữ số và checksum định dạng.
- Khách chụp selfie. Face verification cho điểm khớp với ảnh trên CCCD; liveness yêu cầu quay đầu để chống ảnh in.
- Ngưỡng quyết định (minh hoạ): điểm khớp ≥ 0,90 và liveness đạt → tự động duyệt; 0,75–0,90 → chuyển nhân viên duyệt tay; < 0,75 → từ chối, mời khách ra quầy.
Kết quả minh hoạ (giả định để làm rõ độ lớn tác động): giả sử 100.000 hồ sơ/tháng, 70% rơi vào ngưỡng tự động duyệt. Thời gian mỗi hồ sơ giảm từ ~10 phút xuống ~1 phút với ca tự động; 30% còn lại vào hàng đợi kiểm tra tay — vẫn tiết kiệm phần lớn công sức nhập liệu. Đồng thời tỷ lệ hồ sơ giả bị chặn tăng nhờ kiểm tra liveness + đối chiếu khuôn mặt. Các con số trên là minh hoạ để thấy cấu trúc bài toán, không phải số liệu thật của NCB.
Bài học rút ra: giá trị không nằm ở "model xịn" mà ở thiết kế ngưỡng, tiền xử lý ảnh bẩn, và cơ chế con người kiểm tra ca khó. Đây là kim chỉ nam cho cả series.
Ghi nhớ
- Ảnh là dữ liệu số: pixel 0–255, ảnh xám là ma trận
H×W, ảnh màu RGB là tensorH×W×3. Trước khi vào mô hình thường resize + normalize. - Các bài toán CV khác nhau ở đầu ra: classification (1 nhãn/ảnh) → detection (box + nhãn) → segmentation (nhãn từng pixel) → OCR (văn bản) → face verification / liveness. Chi phí và nhu cầu nhãn tăng dần.
- Pipeline CV = thu thập → tiền xử lý → mô hình → hậu xử lý → ngưỡng + human-in-the-loop. Phần lớn công sức nằm ở tiền/hậu xử lý, không phải model.
- Deep learning (CNN, Vision Transformer) cách mạng hoá CV bằng cách tự học đặc trưng từ dữ liệu, thay cho đặc trưng thủ công.
- Ứng dụng ngân hàng VN: eKYC (đọc CCCD + so mặt + liveness), Document AI (trích chứng từ), giám sát an ninh, chống gian lận giấy tờ.
- Build vs buy: mua API cho bài chuẩn (eKYC CCCD), fine-tune pretrained cho dữ liệu riêng, tự train chỉ khi tạo lợi thế đặc thù.
- Thách thức: dữ liệu nhãn tốn kém, đánh đổi sai-cho-qua vs sai-từ-chối, bảo mật sinh trắc học (Nghị định 13/2023), bias, và điều kiện ảnh thực địa.
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.
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.
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.
Retrieval-Augmented Generation, vector database, tool calling, agent và MCP để xây ứng dụng LLM thực tế.