Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp "Ứng dụng chấm công bằng nhận dạng khuôn mặt sử dụng Deep Learning" được thực hiện bởi sinh viên Trần Quang Trung (MSSV: 17009171) và Hồ Duy Quang (MSSV: 17014761), dưới sự hướng dẫn của ThS. Hồ Đắc Quán, thuộc Khoa Công nghệ Thông tin (chuyên ngành Khoa học máy tính), hoàn thành vào tháng 6 năm 2021.
Lý do lựa chọn đề tài xuất phát từ bối cảnh thực tiễn đại dịch Covid-19 diễn biến phức tạp trên toàn cầu, đòi hỏi phải giảm thiểu việc tiếp xúc vật lý với các thiết bị công cộng. Tại các doanh nghiệp, quy trình chấm công truyền thống chủ yếu dựa vào máy quét dấu vân tay sinh trắc học hoặc thẻ từ. Mặc dù hai phương thức này có độ chính xác và bảo mật cao, việc hàng loạt nhân viên cùng chạm tay vào thiết bị công cộng hàng ngày tiềm ẩn rủi ro lây lan dịch bệnh. Ngoài ra, hình thức chấm công thủ công bằng máy dập thẻ giấy hoặc thẻ từ còn tồn tại các bất cập như quên thẻ, rách thẻ, hỏng đầu đọc vân tay hoặc tình trạng chấm công hộ. Việc ứng dụng công nghệ nhận dạng khuôn mặt (Face ID) không tiếp xúc, xử lý nhanh dưới 1 giây giúp giải quyết đồng thời bài toán an toàn dịch tễ và tối ưu hóa quản lý nhân sự.
Mục tiêu và nhiệm vụ nghiên cứu được xác định bao gồm:
- Nghiên cứu tổng quan về bài toán thị giác máy tính và các cấu trúc mạng nơ-ron tích chập (Convolutional Neural Networks - CNNs).
- Tìm hiểu phương pháp học một mẫu (One-shot Learning) và phương pháp đo lường độ tương đồng (Learning Similarity) trong không gian nhiều chiều.
- Nghiên cứu và tích hợp mô hình phát hiện khuôn mặt thời gian thực MediaPipe Face Detection.
- Xây dựng, huấn luyện mô hình mạng nơ-ron Siamese (Siamese Network) kết hợp hàm mất mát Triplet Loss để trích xuất đặc trưng khuôn mặt.
- Đánh giá và so sánh thực nghiệm mô hình tự huấn luyện (dựa trên kiến trúc VGG16) với mô hình tiền huấn luyện FaceNet.
- Thiết kế và phát triển phần mềm chấm công hoàn chỉnh trên môi trường máy tính để bàn bằng ngôn ngữ Python và thư viện Tkinter.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình xác thực danh tính nhân viên thông qua hình ảnh khuôn mặt và luồng dữ liệu chấm công hàng ngày.
- Phạm vi không gian và thời gian: Phạm vi ứng dụng nội bộ dành cho các nhân viên làm việc trong cùng một doanh nghiệp; dữ liệu thực nghiệm được huấn luyện và kiểm thử trong điều kiện thực tế của đề tài vào tháng 6 năm 2021.
Cơ sở lý thuyết và phương pháp
Khóa luận thiết lập nền tảng lý thuyết và phương pháp luận dựa trên các trụ cột chính của công nghệ học sâu và thị giác máy tính:
1. Khung lý thuyết và mô hình tính toán
- Mạng nơ-ron tích chập (CNN): Sử dụng các thành phần cốt lõi gồm Lớp tích chập (Convolution Layer) với các cửa sổ trượt (Sliding Windows) và ma trận bộ lọc (Kernel) nhằm trích xuất đặc trưng hình ảnh; Lớp tổng hợp (Pooling Layer, tiêu biểu là Max-Pooling kích thước $2 \times 2$, bước trượt $\text{stride} = 2$, $\text{padding} = 0$) để giảm chiều ma trận; Hàm kích hoạt phi tuyến ReLU ($f(x) = \max(0, x)$) biến đổi giá trị âm thành 0; và Lớp kết nối đầy đủ (Fully Connected Layer) để tổng hợp các đặc trưng.
- Phương pháp Learning Similarity và Mạng Siamese: Giải quyết hạn chế của mô hình phân lớp thông thường (vốn yêu cầu huấn luyện lại mạng mỗi khi có nhân viên mới). Bằng cách loại bỏ lớp phân loại cuối cùng và thay thế bằng lớp nhúng (Embedding), mạng Siamese trích xuất vector đặc trưng $N$ chiều và chiếu lên không gian Euclide. Khoảng cách giữa hai vector $d(img_1, img_2)$ được so sánh với ngưỡng $\tau$ để xác định cùng một người ($d \le \tau$) hay khác người ($d > \tau$).
- Hàm mất mát Triplet Loss: Đánh giá khoảng cách giữa bộ ba mẫu gồm ảnh gốc (Anchor - $A$), ảnh cùng một người (Positive - $P$) và ảnh người khác (Negative - $N$). Hàm tối ưu hóa theo công thức:
$$L(A, P, N) = \sum_{i=0}^{n} \max(d(A, P) - d(A, N) + \alpha, 0)$$
Trong đó $\alpha$ là hệ số biên (margin). Ba chiến lược chọn bộ ba mẫu được phân tích: Easy Triplets, Hard Triplets và Semi-Hard Triplets.
- MediaPipe Face Detection: Công cụ phát hiện khuôn mặt dựa trên BlazeFace, cung cấp khung bao (bounding box) chuẩn hóa cùng 6 điểm mốc giải phẫu (mắt phải, mắt trái, mũi, miệng, tai trái, tai phải).
2. Phương pháp nghiên cứu và thực nghiệm
- Phương pháp thu thập và tiền xử lý dữ liệu: Lấy mẫu ảnh từ bộ dữ liệu công khai, chuẩn hóa kích thước, loại bỏ các điểm mốc không cần thiết và mở rộng vùng cắt khuôn mặt bao gồm cả phần tóc.
- Phương pháp huấn luyện và kiểm thử: Tinh chỉnh kiến trúc VGG16, huấn luyện trên nền tảng đám mây với hàm Triplet Loss; kiểm thử độ chính xác nhận diện bằng ma trận nhầm lẫn (Confusion Matrix) trên các tập dữ liệu thử nghiệm.
3. Nguồn dữ liệu sử dụng
- Tập dữ liệu huấn luyện: Bộ dữ liệu VN-Celeb gốc chứa hơn 23.000 hình ảnh của hơn 1.000 người nổi tiếng tại Việt Nam. Do giới hạn bộ nhớ RAM và VRAM trên môi trường Google Colab, nhóm tác giả đã lọc và trích xuất tập con gồm 15.490 hình ảnh của 451 người (mỗi người có tối thiểu 20 tấm ảnh).
- Tập dữ liệu kiểm chuẩn: Mô hình FaceNet được đối sánh dựa trên kết quả huấn luyện từ 100 đến 200 triệu ảnh của 8 triệu người và kiểm thử trên tập dữ liệu Labeled Faces in the Wild (LFW).
Thiết kế và triển khai hệ thống
Khóa luận tiến hành xây dựng ứng dụng hoàn chỉnh phục vụ bài toán chấm công doanh nghiệp theo quy trình kỹ thuật phần mềm:
1. Kiến trúc công nghệ và môi trường phát triển
- Ngôn ngữ và môi trường lập trình: Python phiên bản 3.8, Visual Studio Code, môi trường ảo Python (
venv), Google Colab (sử dụng GPU để huấn luyện mô hình).
- Thư viện chuyên dụng: MediaPipe (phát hiện khuôn mặt), Tkinter (xây dựng giao diện đồ họa người dùng Desktop GUI).
2. Kiến trúc mô hình học sâu tùy biến
Kiến trúc trích xuất đặc trưng được xây dựng dựa trên mạng VGG16 (gốc gồm 21 lớp: 13 lớp Convolution với kernel $3 \times 3$, 5 lớp Pooling $2 \times 2$ và 3 lớp Fully Connected). Tác giả đã tinh chỉnh bằng cách:
- Giữ lại 15 lớp đầu tiên tính từ lớp Convolution đầu tiên.
- Loại bỏ toàn bộ các lớp Fully Connected gốc.
- Bổ sung một lớp Pooling ngay sau lớp Convolution cuối cùng, kết nối với các lớp Embedding để trích xuất vector đặc trưng $N$ chiều.
3. Phân tích chức năng và luồng xử lý (Use Case & Activity)
Hệ thống bao gồm các nhóm chức năng chính được phân tích chi tiết qua biểu đồ Use Case, Activity và Sequence:
- Quản lý xác thực: Đăng nhập hệ thống, kiểm soát quyền quản trị viên.
- Quản lý nhân viên: Hiển thị danh sách, tìm kiếm nhân viên, thêm nhân viên mới, xem thông tin chi tiết, cập nhật hồ sơ.
- Quản lý dữ liệu sinh trắc học: Thêm khuôn mặt từ camera, xem dữ liệu khuôn mặt đã lưu, kích hoạt tiến trình huấn luyện mô hình nhận dạng.
- Nghiệp vụ chấm công: Màn hình chấm công thời gian thực, ghi nhận Check-in khi đến, ghi nhận Check-out khi về, lọc danh sách chấm công theo ngày, xem và chỉnh sửa thông tin chi tiết lượt chấm công.
Luồng xác thực khuôn mặt khi chấm công:
Camera Input -> MediaPipe (Phát hiện khuôn mặt) -> Trích xuất khuôn mặt
-> Mạng Siamese (Embedding vector F(y))
-> Tính khoảng cách Euclide với các vector F(x) trong CSDL
-> So khớp điều kiện: Khoảng cách nhỏ nhất và d <= τ
-> Xác nhận danh tính / Gán nhãn "Unknown" -> Ghi nhận Check-in/Check-out
Nội dung chính theo từng chương
Chương I: Phần mở đầu
Chương này tổng quan về sự phát triển của trí tuệ nhân tạo và công nghệ sinh trắc học nhận dạng khuôn mặt; phân tích các ưu điểm (nhận dạng không tiếp xúc, tốc độ xử lý nhanh dưới 1 giây, tính bảo mật cao) và nhược điểm (nhạy cảm với góc quay nghiêng quá 35 độ, ánh sáng yếu, phụ kiện che mặt, biểu cảm khuôn mặt). Tác giả phân loại các hệ thống chấm công (thủ công, tự động, ứng dụng định vị Geo-fence) và xác định rõ 3 mục tiêu giải quyết: quản lý thời gian thực, định danh chính xác nhân viên, và lưu trữ dữ liệu tính lương.
Chương II: Cơ sở lý thuyết
Nội dung chương tập trung trình bày chi tiết toán học và cấu trúc của mạng CNN (Convolution, Max-Pooling, ReLU, Fully Connected); giải thích nguyên lý One-shot Learning cùng hạn chế phải tái huấn luyện mạng phân lớp. Từ đó, chương làm rõ cơ chế Learning Similarity, kiến trúc mạng Siamese Network và hàm mất mát Triplet Loss với ba kỹ thuật chọn mẫu (Easy, Hard, Semi-Hard Triplets). Cuối chương giới thiệu thư viện MediaPipe Face Detection và báo cáo kết quả thực nghiệm của MediaPipe: thời gian xử lý đạt $0{,}2$ giây/khung hình, mức tiêu thụ RAM xấp xỉ 0 và tải xử lý CPU trung bình là 10%.
Chương III: Xây dựng và đánh giá mô hình
Chương III trình bày chi tiết việc biến đổi mạng VGG16 thành mạng Siamese trích xuất đặc trưng; mô tả tập dữ liệu huấn luyện VN-Celeb (15.490 ảnh của 451 người). Tác giả công bố quá trình huấn luyện mô hình VGG16 tùy biến qua 450 epochs kéo dài hơn 20 giờ trên Google Colab. Kết quả đánh giá bằng Confusion Matrix trên tập kiểm thử cho thấy:
- Với tập dữ liệu 2 người: độ chính xác đạt $89{,}9%$.
- Với tập dữ liệu 3 người: độ chính xác giảm xuống $67{,}2%$.
- Độ chính xác trung bình toàn mô hình tự huấn luyện dao động từ $65%$ đến $75%$.
Đồng thời, chương giới thiệu mô hình FaceNet của Google (đạt $99{,}63% \pm 0{,}15%$ trên tập LFW) và kiểm thử FaceNet trên cùng tập dữ liệu 3 người, chứng minh FaceNet có độ chính xác và tính ổn định vượt trội.
Chương IV: Phân tích và xây dựng ứng dụng
Chương này mô tả toàn bộ tài liệu kỹ thuật phần mềm bao gồm biểu đồ Use Case tổng thể, danh sách tác nhân, đặc tả chi tiết 13 ca sử dụng (từ UC001 đến UC013_Checkout), cùng các biểu đồ Activity và Sequence tương ứng cho từng chức năng. Chương kết thúc bằng việc minh họa toàn bộ hệ thống giao diện Tkinter trên Desktop: màn hình đăng nhập, bảng điều khiển (Dashboard), danh sách nhân viên, thêm nhân viên, thêm và xem dữ liệu khuôn mặt, màn hình Check-in, màn hình Check-out và màn hình chi tiết chấm công.
Chương V: Kết luận và hướng phát triển
Chương tổng kết các hạng mục đã hoàn thành của đề tài; thẳng thắn chỉ ra các giới hạn kỹ thuật về độ chính xác của mô hình VGG16 tự huấn luyện, hạn chế tầm quét của MediaPipe; và đề xuất các hướng nâng cấp hệ thống trong tương lai.
Kết quả và đóng góp
Khóa luận đã tổng hợp các kết quả thực nghiệm và đóng góp cụ thể về mặt ứng dụng:
1. Kết quả thực nghiệm và số liệu cụ thể
| Tiêu chí / Thông số |
Mô hình VGG16 tự huấn luyện |
Mô hình MediaPipe Face Detection |
Mô hình Pretrained FaceNet |
| Kiến trúc cơ sở |
VGG16 tinh chỉnh (15 lớp Conv + Pooling + Embedding) |
BlazeFace (GPU mobile architecture) |
Kiến trúc mạng Siamese sâu của Google |
| Dữ liệu huấn luyện |
15.490 ảnh / 451 người (VN-Celeb) |
Huấn luyện sẵn bởi Google |
100 - 200 triệu ảnh / 8 triệu người |
| Thời gian / Epochs |
450 epochs (> 20 giờ trên Colab) |
Xử lý thời gian thực |
Mô hình tiền huấn luyện sẵn |
| Tốc độ xử lý / Tài nguyên |
Trích xuất vector đặc trưng |
0,2 giây/frame, CPU ~10%, RAM ~0 |
Trích xuất vector đặc trưng chuẩn hóa |
| Độ chính xác (2 người) |
$89{,}9%$ |
Phát hiện 6 điểm mốc khuôn mặt |
— |
| Độ chính xác (3 người) |
$67{,}2%$ |
Không nhận diện khoảng cách xa |
Độ chính xác cao, ổn định vượt trội |
| Độ chính xác chuẩn / Trung bình |
$65% - 75%$ (tùy điều kiện ánh sáng, góc chụp) |
Đạt chuẩn thời gian thực |
$99{,}63% \pm 0{,}15%$ (trên bộ LFW) |
2. Đóng góp của khóa luận
- Về mặt giải pháp kỹ thuật: Ứng dụng thành công phương pháp Learning Similarity và hàm Triplet Loss để giải quyết triệt để bài toán biến động nhân sự trong doanh nghiệp, loại bỏ sự phụ thuộc vào số lượng lớp đầu ra cố định của các mạng phân loại truyền thống.
- Về mặt sản phẩm: Xây dựng hoàn chỉnh một phần mềm chấm công có giao diện tương tác trực quan (Tkinter), tích hợp luồng xử lý từ camera trực tiếp, phát hiện khuôn mặt, trích xuất đặc trưng đến ghi nhận cơ sở dữ liệu và truy xuất lịch sử làm việc của nhân viên.
- Về mặt thực tiễn: Cung cấp giải pháp khả thi phục vụ công tác phòng chống dịch Covid-19 tại các cơ quan, xí nghiệp thông qua cơ chế chấm công hoàn toàn không tiếp xúc.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận nêu rõ các hạn chế kỹ thuật gặp phải trong quá trình nghiên cứu:
- Độ chính xác của mô hình tự huấn luyện: Mô hình VGG16 tinh chỉnh sau 450 epochs chỉ đạt độ chính xác từ $65%$ đến $75%$, giảm rõ rệt khi số lượng người nhận dạng tăng lên ($67{,}2%$ đối với 3 người). Nguyên nhân do tập dữ liệu huấn luyện còn nhỏ (451 người) và kiến trúc mạng còn đơn giản.
- Hạn chế phần cứng: Giới hạn dung lượng RAM và VRAM của môi trường Google Colab khiến nhóm không thể huấn luyện toàn bộ tập dữ liệu VN-Celeb (hơn 23.000 ảnh).
- Hạn chế của mô hình phát hiện MediaPipe: MediaPipe không thể phát hiện khuôn mặt khi khoảng cách từ người đến camera quá xa.
- Ảnh hưởng của môi trường: Góc mặt quay nghiêng (vượt quá 35 độ), điều kiện thiếu sáng, việc thay đổi biểu cảm khuôn mặt, hoặc các phụ kiện che khuất (khẩu trang, kính mát, tóc phủ chân mày) đều làm suy giảm độ chính xác nhận diện.
Hướng nghiên cứu và phát triển tiếp theo được tác giả đề xuất:
- Tích hợp trực tiếp mô hình tiền huấn luyện FaceNet vào hệ thống vận hành thực tế để đạt độ chính xác cao mà không tốn chi phí huấn luyện lại.
- Nâng cấp phần cứng máy chủ và mở rộng bộ dữ liệu huấn luyện với quy mô lớn hơn.
- Cải tiến thuật toán tiền xử lý để nhận diện tốt trong môi trường ánh sáng yếu, góc chụp nghiêng và hỗ trợ nhận dạng khi đối tượng đeo khẩu trang.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo phù hợp cho sinh viên, học viên chuyên ngành Công nghệ thông tin, Khoa học máy tính, Kỹ thuật phần mềm và Trí tuệ nhân tạo:
- Phần giá trị tham khảo cao:
- Quy trình toán học và cài đặt hàm mất mát Triplet Loss cùng mạng Siamese để giải quyết bài toán One-shot Learning (Chương II).
- Phương pháp tinh chỉnh kiến trúc mạng VGG16 và quy trình huấn luyện thực nghiệm trên Google Colab với bộ dữ liệu VN-Celeb (Chương III).
- Tài liệu phân tích thiết kế phần mềm hoàn chỉnh bao gồm hệ thống ca sử dụng (Use Case), sơ đồ tuần tự (Sequence) và cách tổ chức giao diện Tkinter cho ứng dụng thị giác máy tính (Chương IV).
Câu hỏi thường gặp
1. Tại sao nhóm tác giả lựa chọn phương pháp Learning Similarity và mạng Siamese thay vì mạng CNN phân lớp thông thường?
Mạng CNN phân lớp truyền thống có số lượng nơ-ron ở lớp đầu ra cố định bằng số lượng đối tượng cần phân loại. Khi áp dụng vào doanh nghiệp, nhân sự liên tục thay đổi (thêm mới hoặc nghỉ việc), đòi hỏi phải cấu trúc và huấn luyện lại toàn bộ mạng nơ-ron. Phương pháp Learning Similarity sử dụng mạng Siamese biến đổi bài toán thành việc so sánh khoảng cách Euclide giữa các vector đặc trưng trong không gian $N$ chiều với ngưỡng $\tau$, cho phép thêm bớt nhân viên mới mà không cần huấn luyện lại mô hình.
2. Bộ dữ liệu VN-Celeb được xử lý và đưa vào huấn luyện như thế nào?
Bộ dữ liệu VN-Celeb gốc gồm hơn 23.000 ảnh của hơn 1.000 người nổi tiếng Việt Nam. Do giới hạn phần cứng trên Google Colab, nhóm tác giả đã lọc lấy 15.490 tấm ảnh của 451 người thỏa mãn điều kiện mỗi người có tối thiểu 20 tấm ảnh để phục vụ việc trích xuất bộ ba mẫu (Anchor, Positive, Negative) cho hàm Triplet Loss.
3. Cấu trúc mạng VGG16 đã được nhóm tác giả tinh chỉnh ra sao để phục vụ bài toán trích xuất đặc trưng?
Kiến trúc VGG16 nguyên bản gồm 21 lớp. Nhóm tác giả đã loại bỏ toàn bộ 3 lớp Fully Connected cuối cùng, chỉ giữ lại 15 lớp đầu tiên (tính từ lớp Convolution đầu tiên), bổ sung thêm một lớp Pooling ngay sau lớp Convolution cuối cùng, rồi kết nối tới các lớp Embedding chuyên biệt để đưa ra vector đặc trưng khuôn mặt.
4. Hiệu năng thực nghiệm của công cụ MediaPipe Face Detection được ghi nhận như thế nào trong khóa luận?
MediaPipe Face Detection (dựa trên BlazeFace) đạt thời gian xử lý trung bình là $0{,}2$ giây trên một khung hình ($1/5$ giây/frame), mức tiêu thụ dung lượng RAM xấp xỉ 0 và mức sử dụng CPU trung bình khoảng $10%$, đáp ứng tốt yêu cầu xử lý thời gian thực trên ứng dụng Desktop.
5. Kết quả độ chính xác của mô hình VGG16 tự huấn luyện đạt mức bao nhiêu?
Sau 450 epochs huấn luyện (kéo dài hơn 20 giờ trên Colab), mô hình VGG16 đạt độ chính xác $89{,}9%$ trên tập thử nghiệm 2 người và giảm xuống $67{,}2%$ trên tập 3 người. Độ chính xác trung bình của mô hình tự huấn luyện dao động trong khoảng $65% - 75%$, thấp hơn đáng kể so với mô hình tiền huấn luyện FaceNet ($99{,}63% \pm 0{,}15%$).
Kết luận
Khóa luận tốt nghiệp của sinh viên Trần Quang Trung và Hồ Duy Quang đã nghiên cứu và hiện thực hóa thành công ứng dụng chấm công bằng nhận dạng khuôn mặt trên nền tảng Python Tkinter, tích hợp công nghệ phát hiện khuôn mặt MediaPipe và mạng nơ-ron Siamese. Đề tài đã giải quyết bài toán nghiệp vụ chấm công không tiếp xúc nhằm đáp ứng yêu cầu an toàn dịch tễ trong bối cảnh Covid-19, đồng thời xây dựng quy trình phân tích ca sử dụng và luồng dữ liệu phần mềm chi tiết. Mặc dù mô hình VGG16 tự huấn luyện còn hạn chế về độ chính xác ($65% - 75%$) do giới hạn dữ liệu và tài nguyên tính toán, kết quả nghiên cứu đã làm rõ tính ưu việt của phương pháp Learning Similarity, Triplet Loss và mở ra khả năng tích hợp các mô hình tiên tiến như FaceNet để hoàn thiện hệ thống trong thực tiễn.