Bối cảnh và vấn đề nghiên cứu

Nhận dạng khuôn mặt (Face Recognition - FR) là công nghệ xác thực sinh trắc học quan trọng, được ứng dụng rộng rãi trong các lĩnh vực an ninh, giám sát công cộng, chấm công và kiểm soát ra vào. Mặc dù công nghệ này đã phát triển hơn hai thập kỷ, việc triển khai hiệu quả trên hệ thống camera giám sát thực tế vẫn gặp nhiều rào cản. Phần lớn các giải pháp thương mại hiện nay hoạt động như một "hộp đen", không công khai kiến trúc xử lý và các thuật toán thành phần. Đồng thời, các bộ dữ liệu khuôn mặt phổ biến dùng trong nghiên cứu học thuật thường có chất lượng ảnh chuẩn hóa cao, góc chụp trực diện và đủ sáng, không phản ánh đúng các thách thức từ camera giám sát thực tế như góc nhìn nghiêng, khuôn mặt kích thước nhỏ do khoảng cách xa, chuyển động liên tục và điều kiện ánh sáng thay đổi.

Đề tài khóa luận tập trung giải quyết 3 thách thức kỹ thuật cốt lõi:

  • Thách thức kỹ thuật liên đới: Quy trình xử lý gồm chuỗi tác vụ nối tiếp: Phát hiện khuôn mặt (Face Detection), Truy vết (Face Tracking) và Nhận dạng (Face Recognition). Sai số từ giai đoạn trước (bỏ sót khuôn mặt hoặc nhận diện sai vị trí) sẽ trực tiếp làm suy giảm hiệu năng của các giai đoạn sau.
  • Thách thức tài nguyên tính toán: Các mô hình học sâu đòi hỏi năng lực phần cứng lớn để đạt độ chính xác cao, tạo ra xung đột với yêu cầu xử lý thời gian thực (real-time) khi phải chạy đồng thời nhiều tác vụ trên luồng video.
  • Thách thức dữ liệu thực tế: Ảnh từ camera giám sát thường có độ phân giải khuôn mặt thấp, góc quay từ trên cao xuống và độ tương phản sáng tối phức tạp.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài gồm 5 điểm:

  1. Tìm hiểu tổng quan các hướng tiếp cận lý thuyết và tập dữ liệu cho bài toán nhận diện khuôn mặt.
  2. Khảo sát, thực nghiệm và đánh giá các phương pháp học sâu tiên tiến cho từng bài toán thành phần: phát hiện, truy vết và nhận dạng khuôn mặt.
  3. Xây dựng bộ dữ liệu thực tế thu thập từ camera giám sát, phân cấp theo khoảng cách và độ sáng phục vụ đánh giá khách quan.
  4. Thiết kế kiến trúc hệ thống nhận dạng khuôn mặt tối ưu, cân bằng giữa độ chính xác, tài nguyên phần cứng và tốc độ xử lý.
  5. Triển khai ứng dụng minh họa hoàn chỉnh có khả năng giám sát đa luồng camera.

Đối tượng nghiên cứu là các thuật toán thị giác máy tính và học sâu phục vụ nhận diện khuôn mặt qua video. Phạm vi thực nghiệm của đề tài thực hiện trên dữ liệu video camera giám sát mô phỏng chuyển động thực tế và dữ liệu điểm danh thực tế từ sinh viên Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (UIT) vào tháng 12 năm 2021.


Cơ sở lý thuyết và phương pháp

Khóa luận phân tích hệ thống dựa trên khung lý thuyết thị giác máy tính hiện đại, chia bài toán lớn thành ba bài toán con:

Luồng xử lý: Camera Stream -> Face Detection -> Face Tracking -> Feature Preprocessing -> Face Recognition (Feature Extraction & Metric Matching) -> UI Display & Database Update

1. Mô hình và thuật toán phát hiện khuôn mặt (Face Detection)

  • Phương pháp cổ điển: Khảo sát thuật toán Haar Cascade sử dụng các đặc trưng cạnh/đường kết hợp bộ phân loại tầng (Cascade Classifiers) của Paul Viola và Michael Jones (2001); phương pháp HOG kết hợp phân loại SVM (Histogram of Oriented Gradients - Support Vector Machine) trong thư viện Dlib.
  • Phương pháp học sâu:
    • RetinaFace: Mô hình học đa tác vụ (multi-task learning) dự đoán đồng thời vị trí khuôn mặt (face box), điểm tin cậy (face score), 5 điểm mốc (facial landmarks) và lưới 3D (3D face mask). Kiến trúc sử dụng mạng tháp đặc trưng (Feature Pyramid Network - FPN) với backbone ResNet và các khối ngữ cảnh chứa tích chập biến dạng (Deformable Convolutional Network - DCN).
    • SCRFD (Sample and Computation Redistribution for Efficient Face Detection): Phương pháp tối ưu cho ảnh kích thước cố định chuẩn VGA ($640 \times 480$). SCRFD thực hiện phân phối lại mẫu huấn luyện (Sample Redistribution) tập trung vào khuôn mặt nhỏ hơn $32 \times 32$ pixel và phân phối lại tính toán (Computation Redistribution) dồn tài nguyên vào các tầng nông ($C_2, C_3$).
    • YOLO5Face: Tinh chỉnh từ kiến trúc YOLOv5 trên nền PyTorch, tích hợp nhánh hồi quy 5 điểm mốc khuôn mặt sử dụng hàm mất mát Wing loss, mở rộng đầu ra lên 16 tham số (4 bounding box, 1 confidence, 1 classification, 10 tọa độ landmarks) và bổ sung tầng $P_6$ (stride 64) để phát hiện khuôn mặt kích thước lớn.

2. Thuật toán truy vết khuôn mặt (Face Tracking)

  • Deep SORT: Bản nâng cấp của thuật toán SORT (Simple Online and Realtime Tracking), tích hợp mạng nơ-ron tích chập sâu để trích xuất vector đặc trưng ngoại hình của đối tượng kết hợp bộ lọc Kalman Filter và thuật toán Hungarian. Sử dụng chiến lược đối sánh tầng (Matching Cascade) giúp giảm $45%$ hiện tượng tráo đổi định danh (ID switches) khi đối tượng bị che khuất tạm thời.

3. Mô hình và hàm mất mát nhận dạng khuôn mặt (Face Recognition)

  • FaceNet: Trích xuất vector nhúng 128 chiều, tối ưu hóa khoảng cách không gian Euclid bằng hàm Triplet Loss với bộ ba mẫu Anchor - Positive - Negative.
  • CosFace / LMCL (Large Margin Cosine Loss): Định hình biên phân loại trên không gian Cosine bằng cách trừ một đại lượng biên $m$ vào hàm Softmax: $$\mathcal{L}{lmcl} = -\frac{1}{N} \sum{i} \log \frac{e^{s(\cos\theta_{y_i, i} - m)}}{e^{s(\cos\theta_{y_i, i} - m)} + \sum_{j \neq y_i} e^{s\cos\theta_{j, i}}}$$
  • ArcFace: Bổ sung độ lệch góc $m$ trực tiếp vào góc phân tách $\theta$ nhằm tăng tính cô đọng nội lớp và nới rộng khoảng cách liên lớp: $$\mathcal{L}{arc} = -\frac{1}{N} \sum{i} \log \frac{e^{s\cos(\theta_{y_i} + m)}}{e^{s\cos(\theta_{y_i} + m)} + \sum_{j \neq y_i} e^{s\cos\theta_j}}$$
  • MagFace: Phương pháp công bố tại CVPR 2021, đưa đại lượng độ lớn của vector đặc trưng ($a_i = |z_i|$) vào làm thước đo chất lượng khuôn mặt (feature magnitude). Hàm mất mát tự động gán biên góc lớn hơn cho mẫu chất lượng cao và kéo chúng về gần tâm cụm, đồng thời đẩy mẫu chất lượng thấp (mờ, nghiêng, nhiễu) ra xa gốc tọa độ để tránh overfitting.

4. Phương pháp thu thập dữ liệu và độ đo đánh giá

  • Dữ liệu phát hiện: Tác giả tự quay 20 phút video với người tham gia di chuyển liên tục qua vùng sáng - tối, trích xuất 4.280 ảnh với 8.496 bounding box.
  • Dữ liệu nhận dạng: Sử dụng hệ thống tự xây dựng để gán nhãn tập dữ liệu từ ứng dụng điểm danh sinh viên UIT gồm 2.487 ảnh thuộc 447 người (class).
  • Độ đo thực nghiệm: Sử dụng ma trận nhầm lẫn (Confusion Matrix), độ giao cắt trên hợp (Intersection over Union - IoU), Precision, Recall, điểm F1-Score, độ chính xác trung bình mẫu (Mean Average Precision - mAP) và độ tương đồng Cosine (Cosine Similarity).

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo kiến trúc module hóa hướng dịch vụ, vận hành theo thời gian thực với 3 nhóm chức năng chính gồm 7 module thành phần:

[Module 1: Nhận luồng Video] 
[Module 2: Phát hiện & Truy vết (YOLO5Face + Deep SORT)]
[Module 3: Tiền xử lý dữ liệu (Căn chỉnh, Chuẩn hóa)]
[Module 4: Trích xuất & So khớp đặc trưng (MagFace + Cosine Matching)]
[Module 5: Hiển thị (Socket.IO)]  [Module 6: Thu thập dữ liệu]  [Module 7: Cập nhật CSDL]
  1. Module lấy dữ liệu từ camera giám sát: Hỗ trợ tiếp nhận đa luồng video thông qua giao thức RTSP, tệp video cục bộ hoặc luồng phát trực tuyến.
  2. Module phát hiện và truy vết khuôn mặt: Tích hợp mô hình YOLO5Face để cắt bounding box khuôn mặt và Deep SORT để duy trì ID liên tục cho từng đối tượng qua các khung hình, giảm tải tần suất gọi mô hình nhận dạng.
  3. Module tiền xử lý dữ liệu: Căn chỉnh khuôn mặt dựa trên 5 điểm mốc tọa độ trích xuất từ YOLO5Face, chuẩn hóa kích thước và độ sáng trước khi đưa vào mô hình nhận dạng.
  4. Module nhận dạng khuôn mặt: Sử dụng mạng trích xuất đặc trưng MagFace để tạo vector nhúng, so sánh độ tương đồng Cosine với cơ sở dữ liệu khuôn mặt đã đăng ký trước.
  5. Module hiển thị thông tin: Sử dụng nền tảng truyền thông hai chiều thời gian thực qua thư viện Socket.IO trên Node.js, cập nhật tức thì danh tính người xuất hiện lên giao diện người dùng.
  6. Module thu thập dữ liệu mới: Tự động phát hiện khuôn mặt mới xuất hiện chưa có trong cơ sở dữ liệu và hỗ trợ công cụ trích xuất mẫu tự động.
  7. Module cập nhật dữ liệu mới: Cho phép quản trị viên thêm, xóa, sửa thông tin nhân sự và nạp thêm ảnh mẫu để tái tính toán vector đặc trưng trung tâm.

Công cụ gán nhãn chuyên dụng được tác giả phát triển tích hợp thư viện imagecluster (sử dụng VGG16 tiền huấn luyện trên ImageNet kết hợp khoảng cách thời gian giữa các khung hình) để tự động gom cụm các khuôn mặt cùng một người, giúp tăng tốc độ gán nhãn dữ liệu video.


Nội dung chính theo từng chương

Chương 1: Tổng quan

Trình bày tính cấp thiết của bài toán nhận dạng khuôn mặt trên camera giám sát, phân tích các hạn chế của các giải pháp dạng hộp đen trên thị trường và sự sai lệch phân phối giữa tập dữ liệu chuẩn mực với dữ liệu camera thực tế. Chương này xác định rõ mục tiêu, phạm vi nghiên cứu, 5 đóng góp chính của khóa luận và bố cục tài liệu.

Chương 2: Công trình liên quan và kiến thức cơ bản

Tổng hợp chi tiết cơ sở lý thuyết của ba bài toán thành phần:

  • Đối với phát hiện khuôn mặt: Phân tích cơ chế bộ lọc Haar/Cascade của Viola-Jones, mô hình HOG-SVM; phân tích sâu cấu trúc đa nhánh của RetinaFace, cơ chế Sample & Computation Redistribution của SCRFD và kiến trúc YOLO5Face tích hợp 5 điểm mốc khuôn mặt với hàm Wing loss.
  • Đối với truy vết: Phân tích nguyên lý bộ lọc Kalman và Matching Cascade trong thuật toán Deep SORT để khắc phục ID switches.
  • Đối với nhận dạng khuôn mặt: Đánh giá quá trình tiến hóa của các hàm mất mát từ Triplet Loss (FaceNet), CosFace (LMCL), ArcFace đến cơ chế gán trọng số thích ứng theo độ lớn đặc trưng của MagFace (CVPR 2021).

Chương 3: Xây dựng tập dữ liệu và đánh giá các phương pháp liên quan

Chi tiết hóa quy trình xây dựng hai bộ dữ liệu thực tế:

  • Bộ dữ liệu phát hiện khuôn mặt gồm 4.280 ảnh với 8.496 bounding box từ 20 phút video quay thực tế, phân loại thành 4 mức độ: Easy (dưới 2m), Medium (2 - 5m), Hard (5 - 8m, diện tích box chỉ từ $8 \times 8$ đến $25 \times 25$ pixel) và Dark (thiếu sáng).
  • Hệ thống công cụ gán nhãn dữ liệu nhận dạng và bộ dữ liệu 2.487 ảnh thuộc 447 lớp từ ứng dụng điểm danh sinh viên UIT.
  • Trình bày toàn bộ kết quả thực nghiệm so sánh các mô hình trên hệ tọa độ đánh giá chuẩn gồm mAP, F1-Score, dung lượng bộ nhớ VRAM GPU và thời gian xử lý mỗi khung hình.

Chương 4: Xây dựng hệ thống

Mô tả chi tiết kiến trúc 7 module chức năng của hệ thống nhận diện hoàn chỉnh. Trình bày thiết kế cơ sở dữ liệu, quy trình kết nối luồng camera qua Socket.IO và giao diện ứng dụng quản lý camera, hiển thị kết quả nhận diện, quản lý danh mục người dùng và tải lên dữ liệu khuôn mặt.

Chương 5: Kết luận và hướng phát triển

Đánh giá mức độ hoàn thành các mục tiêu đã đề ra, tổng kết các kết quả đạt được về hiệu năng xử lý đa camera trong thời gian thực và xác định các hướng nghiên cứu mở rộng trong tương lai.


Kết quả và đóng góp

1. Kết quả thực nghiệm phát hiện khuôn mặt (Face Detection)

Thực nghiệm trên toàn bộ tập dữ liệu xây dựng cho thấy các mô hình học sâu vượt trội hoàn toàn so với các phương pháp cổ điển:

Tên phương pháp Biến thể mô hình Framework / Môi trường mAP (%) Dung lượng GPU (MiB) Thời gian xử lý (s/ảnh)
Haar Cascade Mặc định OpenCV (CPU) 35.24 Không áp dụng NaN
HOG Mặc định Dlib (CPU) 30.68 Không áp dụng NaN
PCN Mặc định Caffe/PyTorch 49.50 NaN NaN
RetinaFace RetinaR50 MXNet (GPU) 88.22 1773 -
SCRFD SCRFD_500M_KPS PyTorch (GPU) 84.16 - -
SCRFD SCRFD_10G_KPS PyTorch (GPU) 88.14 957 -
SCRFD SCRFD_500M_KPS ONNX (CPU) 76.04 Không áp dụng 0.043
SCRFD SCRFD_10G_KPS ONNX (CPU) 81.07 Không áp dụng -
YOLO5Face YOLOv5n PyTorch (GPU) 94.04 - 0.00x
YOLO5Face YOLOv5s PyTorch (GPU) 96.04 - -
YOLO5Face YOLOv5m PyTorch (GPU) 96.05 - -
YOLO5Face YOLOv5l PyTorch (GPU) 96.80 1637 -
YOLO5Face YOLOv5s ONNX (CPU) 65.19 Không áp dụng -
YOLO5Face YOLOv5m ONNX (CPU) 82.26 Không áp dụng -
YOLO5Face YOLOv5l ONNX (CPU) 83.29 Không áp dụng -

Đánh giá chi tiết theo độ khó thực tế:

  • Khoảng cách gần (Easy): Tất cả mô hình học sâu đều đạt độ chính xác trên $90%$, cao nhất là YOLO5Face ($96.19% - 96.8%$).
  • Khoảng cách trung bình (Medium): Các mô hình duy trì độ chính xác trên $70%$.
  • Khoảng cách xa (Hard - kích thước box từ $8 \times 8$ px): YOLO5Face đạt độ chính xác $54.53%$, trong khi SCRFD chỉ đạt $16.x%$.
  • Điều kiện thiếu sáng (Dark): YOLO5Face dẫn đầu với $77.10%$, SCRFD đạt $62.20%$.

2. Kết quả thực nghiệm nhận dạng khuôn mặt (Face Recognition)

Đánh giá trên tập dữ liệu 447 lớp (2.487 ảnh) cho thấy MagFace đạt hiệu năng tối ưu nhất:

Phương pháp Backbone mạng F1-Score Thời gian xử lý (s/ảnh) Bộ nhớ GPU tiêu thụ (MiB)
MagFace ResNet100 0.90 0.013 -
MagFace ResNet50 0.88 0.013 -
MagFace ResNet18 0.85 0.013 932
ArcFace Các biến thể < 0.90 Tương đương Cao hơn MagFace
CosFace Các biến thể < 0.90 Tương đương Cao hơn MagFace
FaceNet Inception/Zeiler Thấp nhất Chậm hơn -

MagFace trên backbone ResNet18 giảm hơn $50%$ mức tiêu thụ VRAM so với CosFace và ArcFace, trong khi đạt F1-Score cao nhất (0.90 trên ResNet100).

3. Đóng góp của khóa luận

  • Đưa ra bức tranh so sánh thực nghiệm toàn diện giữa các phương pháp học sâu SOTA trên tập dữ liệu video camera giám sát thực tế.
  • Xây dựng hai bộ dữ liệu kiểm thử thực tế có phân loại theo khoảng cách vật lý và điều kiện chiếu sáng.
  • Xây dựng công cụ gán nhãn tự động hóa hỗ trợ gom cụm khuôn mặt dựa trên tích chập và mốc thời gian.
  • Hiện thực hóa hệ thống hoàn chỉnh kết hợp YOLO5Face và MagFace, đạt tốc độ xử lý $0.045$ giây/khung hình (xấp xỉ 22 FPS), hỗ trợ chịu tải đồng thời tới 6 camera trên một máy tính xử lý.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận chỉ ra một số hạn chế gắn liền với phạm vi triển khai thực tế:

  • Độ chính xác ở khoảng cách xa: Khi đối tượng cách camera từ 5 đến 8 mét (kích thước khuôn mặt dưới $30 \times 30$ pixel), độ chính xác của mô hình phát hiện sụt giảm xuống còn $54.53%$, gây khó khăn cho khâu nhận dạng tiếp theo.
  • Tập dữ liệu nhận dạng còn mất cân bằng: Hơn $60%$ số lớp trong tập dữ liệu thử nghiệm chỉ có từ 2 đến 5 ảnh mẫu, gây ảnh hưởng đến chất lượng phân cụm vector nhúng.
  • Hiệu năng trên CPU: Khi chuyển đổi mô hình sang định dạng ONNX để chạy trên các thiết bị nhúng không có GPU rời (như Raspberry Pi), độ chính xác của YOLO5Face bị giảm đáng kể (từ $96%$ xuống $65.19% - 83.29%$) và tốc độ xử lý giảm rõ rệt.

Hướng nghiên cứu mở rộng được đề xuất:

  • Tích hợp các kỹ thuật siêu phân giải (Super-Resolution) để tái tạo chi tiết khuôn mặt ở khoảng cách xa trước khi đưa vào module nhận dạng.
  • Tối ưu hóa mô hình qua lượng tử hóa (Quantization) và kỹ thuật tỉa nhánh (Pruning) để nâng cao hiệu năng suy luận trên phần cứng biên (Edge CPU/NPU).
  • Mở rộng tập dữ liệu đa dạng hơn về góc quay nghiêng lớn và các trạng thái bị che khuất một phần (như đeo khẩu trang).

Giá trị tham khảo

Tài liệu khóa luận cung cấp giá trị tham khảo kỹ thuật cho:

  • Sinh viên, học viên chuyên ngành Khoa học máy tính, Công nghệ thông tin, Trí tuệ nhân tạo và Thị giác máy tính đang thực hiện đề tài về phân tích video thời gian thực.
  • Kỹ sư phát triển hệ thống camera thông minh (Smart Camera), an ninh tòa nhà, điểm danh tự động cần các chỉ số đo lường thực nghiệm cụ thể giữa chi phí tài nguyên GPU và độ chính xác của từng backbone mạng.
  • Phần đáng tham khảo nhất là Chương 3 với bảng số liệu so sánh chi tiết giữa các phương pháp phát hiện (RetinaFace, SCRFD, YOLO5Face) và nhận dạng (CosFace, ArcFace, MagFace), cùng kiến trúc công cụ gán nhãn video bán tự động.

Câu hỏi thường gặp

1. Vì sao tác giả lựa chọn kết hợp YOLO5Face và MagFace thay vì các cặp mô hình khác?
YOLO5Face đạt độ chính xác mAP cao nhất trên tập dữ liệu thực nghiệm ($96.80%$), duy trì hiệu năng tốt nhất ở các trường hợp khó (xa $54.53%$, thiếu sáng $77.10%$). MagFace đạt F1-Score cao nhất ($0.90$), tốc độ suy luận nhanh ($0.013$ s/ảnh) và cơ chế đánh giá chất lượng qua độ lớn đặc trưng giúp giảm $50%$ dung lượng VRAM ở backbone ResNet18 so với ArcFace và CosFace.

2. Tập dữ liệu phát hiện khuôn mặt trong khóa luận được phân chia như thế nào?
Tập dữ liệu gồm 4.280 ảnh với 8.496 bounding box trích xuất từ 20 phút video, phân thành 4 nhóm: Easy (<2m, 4.456 box), Medium (2-5m, 2.501 box), Hard (5-8m, kích thước box từ $8 \times 8$ đến $25 \times 25$ px, 1.539 box) và Dark (thiếu sáng, 769 box).

3. Thuật toán SCRFD có ưu điểm gì nổi bật so với YOLO5Face và RetinaFace?
SCRFD tiêu thụ ít tài nguyên GPU nhất (bản cao nhất chỉ tốn 957 MiB VRAM, bằng $58%$ so với YOLO5Face và $53%$ so với RetinaFace) và đạt tốc độ xử lý nhanh nhất trên CPU khi chạy qua ONNX Runtime ($0.043$ s/ảnh với biến thể SCRFD_500M_KPS).

4. Điểm mấu chốt của hàm mất mát MagFace so với ArcFace là gì?
ArcFace chỉ tối ưu góc phân tách cố định $\theta + m$, trong khi MagFace đưa độ lớn vector nhúng ($|z_i|$) vào hàm tối ưu để định lượng chất lượng ảnh. MagFace tự động gán biên phân tách lớn hơn cho mẫu rõ nét để kéo về tâm cụm và phân bổ mẫu mờ/nhiễu ra xa gốc tọa độ, chống hiện tượng học vẹt (overfitting) trên dữ liệu chất lượng thấp.

5. Hệ thống hoàn chỉnh có năng lực xử lý thực tế như thế nào?
Hệ thống đạt thời gian xử lý $0.045$ giây cho một khung hình trên GPU, đáp ứng chuẩn thời gian thực và có khả năng tiếp nhận, xử lý đồng thời luồng video từ tối đa 6 camera giám sát.


Kết luận

Khóa luận tốt nghiệp của tác giả Tô Nhật Huy đã khảo sát toàn diện và đánh giá thực nghiệm các mô hình học sâu hiện đại nhất cho bài toán nhận dạng khuôn mặt trên camera giám sát. Thông qua việc tự xây dựng hai bộ dữ liệu thực tế và hệ thống gán nhãn chuyên dụng, đề tài đã chứng minh tính ưu việt của việc phối hợp mô hình YOLO5Face cho tác vụ phát hiện và MagFace cho tác vụ nhận dạng. Hệ thống hoàn chỉnh được xây dựng với kiến trúc 7 module phân tách, đạt thời gian xử lý $0.045$ giây/khung hình và hỗ trợ vận hành đồng thời 6 luồng camera trong điều kiện thực tế.