Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và tự động hóa học đường, việc ứng dụng trí tuệ nhân tạo (AI) và thị giác máy tính (Computer Vision) vào công tác quản trị đào tạo đang trở thành xu hướng tất yếu. Theo các báo cáo khảo sát giáo dục đại học, phương pháp điểm danh truyền thống (gọi tên theo danh sách hoặc ký tên vào phiếu điểm danh) chiếm từ 10% đến 15% tổng thời lượng của mỗi tiết học (tương đương 5–8 phút/tiết 45 phút). Đối với các giảng đường lớn từ 80–150 sinh viên, con số này có thể lên tới 15–20 phút, đồng thời tiềm ẩn tỷ lệ sai sót thủ công và gian lận "điểm danh hộ" lên tới 18–25%.

Vấn đề cốt lõi (Problem Statement): Các phương pháp kiểm diện truyền thống và bán tự động hiện nay bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Tổn thất thời gian giảng dạy: Giảng viên mất nhiều thời gian kiểm soát danh số thay vì tập trung truyền tải kiến thức.
  • Gian lận học đường: Sinh viên dễ dàng nhờ bạn ký tên hộ hoặc quẹt thẻ sinh viên thay thế.
  • Rủi ro hỏng hóc và tiếp xúc: Thẻ từ (RFID) dễ mất/quên; máy quét vân tay quang học gây tắc nghẽn cục bộ tại cửa lớp và tiềm ẩn nguy cơ lây nhiễm vi khuẩn.
  • Độ trễ số liệu: Dữ liệu điểm danh giấy mất nhiều ngày để tổng hợp lên hệ thống quản lý đào tạo (SIS/LMS), cản trở việc cảnh báo học vụ sớm cho sinh viên vắng quá số tiết quy định.

Mục tiêu dự án:

  1. Nghiên cứu và hiện thực hóa quy trình nhận diện khuôn mặt tự động dựa trên học máy (Machine Learning) và mạng nơ-ron tích chập sâu (DCNN).
  2. Xây dựng phần mềm điểm danh thời gian thực với giao diện trực quan (GUI), phân quyền bảo mật chặt chẽ (Admin / Giảng viên).
  3. Thiết kế cơ sở dữ liệu phi quan hệ (NoSQL MongoDB) tối ưu cho việc lưu trữ vector nhúng 128 chiều (128-d face embedding) của từng sinh viên.
  4. Giảm thời gian điểm danh mỗi sinh viên xuống dưới 0.5 giây với độ chính xác nhận diện trên 93%.

Phương pháp giải quyết (Solution Approach): Dự án phát triển giải pháp tích hợp trực tiếp luồng video từ webcam, trích xuất đặc trưng khuôn mặt qua mô hình HOG (Histogram of Oriented Gradients) kết hợp 68 điểm mốc khuôn mặt (Facial Landmarks), mã hóa thành vector 128 chiều thông qua mạng tích chập sâu (ResNet-based deep metric learning) và so sánh khoảng cách Euclidean. Quá trình kiểm diện được đối chiếu trực tiếp với danh sách lớp học (LopHoc) được truy vấn từ MongoDB, loại bỏ hoàn toàn việc tìm kiếm toàn cục (1:N quy mô lớn) nhằm tối ưu tài nguyên tính toán.

Kết quả kỳ vọng:

  • Tự động hóa 100% quy trình điểm danh trong lớp học.
  • Tỷ lệ nhận diện đúng (True Acceptance Rate) đạt trên 95% trong điều kiện ánh sáng tiêu chuẩn.
  • Thời gian xử lý khung hình đạt 20–30 FPS trên phần cứng CPU tiêu chuẩn.
  • Cho phép xuất báo cáo chuyên cần tức thì dưới định dạng bảng tính Excel.

Phạm vi và giới hạn:

  • Phạm vi: Áp dụng cho các phòng học lý thuyết và thực hành tại Khoa Điện tử – Đại học Công nghiệp Hà Nội (HaUI).
  • Giới hạn: Hệ thống sử dụng camera RGB đơn sắc (webcam thông thường), chưa tích hợp cảm biến hồng ngoại 3D hoặc cơ chế Anti-Spoofing (chống giả mạo qua ảnh in/màn hình điện thoại).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Điểm danh truyền thống (Giấy/Gọi tên) Quẹt thẻ từ (RFID / NFC) Quét vân tay sinh trắc học Hệ thống nhận diện gương mặt (Đề xuất)
Thời gian xử lý/SV 3.0 – 5.0 giây 1.0 – 2.0 giây 1.5 – 3.0 giây 0.2 – 0.5 giây
Khả năng gian lận Rất cao (ký hộ, điểm danh hộ) Cao (quẹt thẻ hộ) Rất thấp (vân tay giả khó làm) Cực thấp (xác thực khuôn mặt sống)
Chi phí phần cứng bổ sung Không (chỉ tốn giấy in) Cần đầu đọc thẻ + thẻ từ Cần máy quét vân tay chuyên dụng Tận dụng camera/webcam có sẵn
Tính thuận tiện & Vệ sinh Thấp (tắc nghẽn, tốn công) Trung bình (phải mang thẻ) Thấp (chạm ngón tay, ùn ứ tại cửa) Rất cao (không chạm - contactless)
Độ trễ tổng hợp số liệu 2 – 7 ngày Thời gian thực (nếu online) Thời gian thực (nếu online) Thời gian thực (Real-time DB sync)

Yêu cầu người dùng theo mô hình MoSCoW:

  • Must-have: Xác thực đăng nhập phân quyền; trích xuất vector khuôn mặt 128D; nhận diện sinh viên theo lớp học thời gian thực; ghi nhận thời gian vào (TGVao) và xuất báo cáo điểm danh theo ngày/mã lớp.
  • Should-have: Quản lý thông tin đa đối tượng (Khoa, Môn học, Lớp học, Giảng viên, Sinh viên); cảnh báo sinh viên không thuộc danh sách lớp.
  • Could-have: Tự động điều chỉnh độ tương phản ảnh đầu vào khi ánh sáng yếu; xuất dữ liệu trực tiếp ra định dạng Excel (.xlsx).
  • Won't-have (giai đoạn này): Nhận diện đa góc mặt vượt quá 45 độ; tích hợp thuật toán phân tích cảm xúc (Facial Emotion Recognition).

Thiết kế hệ thống

Hệ thống được tổ chức theo kiến trúc 3 lớp (3-Tier Architecture) phân tách rõ ràng giữa giao diện hiển thị, tầng logic xử lý thị giác máy tính và tầng lưu trữ dữ liệu:

graph TD
    A[Camera / Webcam Input] -->|Capture Frame| B[Tầng Thị giác Máy tính - Computer Vision]
    B -->|1. Detect Face: HOG| C[Trích xuất 68 Điểm mốc - Dlib]
    C -->|2. Align & Crop| D[Mạng DCNN 128D Embeddings]
    D -->|3. Feature Vector 128-d| E[Tầng Logic Nghiệp vụ - Controller]
    
    F[Người dùng: Admin / Giảng viên] <-->|Tương tác GUI| G[Giao diện Desktop Tkinter]
    G <--> E
    
    E <-->|PyMongo Driver| H[(Cơ sở dữ liệu MongoDB)]
    H -->|Query Roster DSSinhVien| E
    E -->|Write Attendance Log| H

Technology Stack:

  • Ngôn ngữ lập trình: Python 3.10+ (Đảm bảo tối ưu luồng xử lý I/O và tính tương thích với thư viện C++ bindings).
  • Computer Vision & Machine Learning:
    • OpenCV (v4.8.x): Đọc luồng video từ webcam, xử lý tiền kỳ (grayscale, resize, color conversion BGR/RGB).
    • Dlib (v19.24+): Thuật toán trích xuất đặc trưng HOG + mô hình căn chỉnh 68 mốc khuôn mặt (Shape Predictor 68 Face Landmarks).
    • face_recognition (v1.3.x): Wrapper tối ưu hóa mô hình mạng nơ-ron tích chập sâu (ResNet-34) để trích xuất vector nhúng 128 chiều.
  • Giao diện người dùng (GUI): Tkinter / ttk (Tích hợp canvas hiển thị webcam thời gian thực, Treeview quản lý danh sách).
  • Cơ sở dữ liệu: MongoDB Community Server (v6.0+) kết hợp trình điều khiển PyMongo (v4.5+).

Thiết kế cơ sở dữ liệu (Database Schema): Hệ thống sử dụng cơ sở dữ liệu Document-oriented NoSQL MongoDB với 6 collections chính:

  • SinhVien: _id (ObjectId), MaSV (String, Unique Index), TenSV (String), TenNganh (String), TenKhoa (String), LopHoc (Array of Strings), data (Array of 128 Floats - Biểu diễn vector nhúng khuôn mặt).
  • GiaoVien: _id, MaGV (String, Unique), TenGV (String), TenKhoa (String), LopHoc (Array), MatKhauApp (String), Admin (Boolean).
  • Khoa: _id, MaKhoa (String), TenKhoa (String), TenNganh (Array of Strings).
  • MonHoc: _id, MaMH (String), TenMH (String), LopHoc (Array of Strings).
  • LopHoc: _id, MaLH (String, Unique), TenMH (String), DSSinhVien (Array of MaSV), TGBatDau (String), TGKetThuc (String).
  • DiemDanh: _id, MaLH (String), MaSV (String), TenSV (String), TGVao (String - HH:MM:SS), Ngay (String - YYYY-MM-DD).

Methodology

Dự án áp dụng mô hình phát triển phần mềm Waterfall kết hợp kiểm thử lặp (Iterative Testing) với lộ trình triển khai rõ ràng từ 14/09/2023 đến 15/12/2023:

  1. Giai đoạn 1 (14/09 - 08/10/2023): Khảo sát thực địa tại các phòng học HaUI, nghiên cứu toán học thuật toán HOG và DCNN, đánh giá các công cụ NoSQL.
  2. Giai đoạn 2 (09/10 - 21/10/2023): Thiết kế biểu đồ luồng dữ liệu, Use Case, Activity Diagram và cấu trúc schema MongoDB.
  3. Giai đoạn 3 (21/10 - 21/11/2023): Lập trình GUI bằng Tkinter, phát triển module trích xuất vector khuôn mặt và liên kết cơ sở dữ liệu.
  4. Giai đoạn 4 (22/11 - 15/12/2023): Kiểm thử hệ thống (Function, Stress, Benchmark), tối ưu hóa ngưỡng nhận diện và hoàn thiện tài liệu kỹ thuật.

Implementation và kết quả

Development process

Cốt lõi xử lý của hệ thống bao gồm 4 bước kỹ thuật liên hoàn:

  1. Phát hiện khuôn mặt (Face Detection): Sử dụng thuật toán Histogram of Oriented Gradients (HOG). Khung hình được chuyển sang ảnh xám, chia thành các khối $16 \times 16$ pixel để tính toán hướng dốc ánh sáng (gradient direction) và độ lớn (magnitude), từ đó đối chiếu với mẫu chuẩn khuôn mặt thông qua bộ phân loại tuyến tính Linear SVM.
  2. Căn chỉnh vị trí khuôn mặt (Facial Landmark Alignment): Định vị 68 điểm tọa độ đặc trưng (mắt, sống mũi, viền môi, khung hàm). Áp dụng phép biến đổi Affine (xoay, co giãn, căn giữa) để đưa mắt và miệng về tọa độ chuẩn hóa, loại bỏ độ lệch góc mặt.
  3. Trích xuất đặc trưng (Deep Metric Feature Extraction): Đưa khuôn mặt đã chuẩn hóa qua mạng ResNet-34 được huấn luyện bằng hàm mất mát Triplet Loss. Đầu ra là một vector đặc trưng duy nhất trong không gian Euclid 128 chiều: $\vec{v} = (f_1, f_2, ..., f_{128}) \in \mathbb{R}^{128}$ với $|\vec{v}|_2 = 1$.
  4. Đối sánh nhận diện (Face Matching & Thresholding): Tính khoảng cách Euclidean giữa vector khuôn mặt quét được từ camera ($\vec{v}{cam}$) và vector đã lưu trong cơ sở dữ liệu ($\vec{v}{db}$): $$D(\vec{v}{cam}, \vec{v}{db}) = \sqrt{\sum_{i=1}^{128} (v_{cam, i} - v_{db, i})^2}$$ Nếu $D(\vec{v}{cam}, \vec{v}{db}) < \tau$ (ngưỡng thực nghiệm chọn $\tau = 0.50$ để siết chặt an ninh, mặc định dlib là 0.60), hệ thống xác nhận trùng khớp danh tính.
import cv2
import face_recognition
import numpy as np
from datetime import datetime
import pymongo

# Kết nối cơ sở dữ liệu MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["HeThongDiemDanh"]
col_sinhvien = db["SinhVien"]
col_diemdanh = db["DiemDanh"]
col_lophoc = db["LopHoc"]

def process_attendance_frame(frame, ma_lop):
    # 1. Thu nhỏ khung hình để tăng tốc độ xử lý tính toán
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
    rgb_small_frame = cv2.cvtColor(small_frame, cv2.COLOR_BGR2RGB)

    # 2. Truy vấn danh sách sinh viên hợp lệ trong lớp học
    class_info = col_lophoc.find_one({"MaLH": ma_lop})
    if not class_info:
        return frame, "Lớp học không tồn tại!"

    valid_students_cursor = col_sinhvien.find({"MaSV": {"$in": class_info["DSSinhVien"]}})
    known_face_encodings = []
    known_face_metadata = []

    for sv in valid_students_cursor:
        if "data" in sv and len(sv["data"]) == 128:
            known_face_encodings.append(np.array(sv["data"]))
            known_face_metadata.append({"MaSV": sv["MaSV"], "TenSV": sv["TenSV"]})

    # 3. Phát hiện vị trí và trích xuất vector 128D từ webcam
    face_locations = face_recognition.face_locations(rgb_small_frame, model="hog")
    face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)

    current_date = datetime.now().strftime("%Y-%m-%d")
    current_time = datetime.now().strftime("%H:%M:%S")

    for face_encoding, face_location in zip(face_encodings, face_locations):
        if len(known_face_encodings) == 0:
            continue

        # 4. Tính toán khoảng cách Euclidean
        face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
        best_match_index = np.argmin(face_distances)

        if face_distances[best_match_index] <= 0.50:  # Ngưỡng nghiêm ngặt
            matched_student = known_face_metadata[best_match_index]
            ma_sv = matched_student["MaSV"]
            ten_sv = matched_student["TenSV"]

            # Kiểm tra xem sinh viên đã được điểm danh trong ngày chưa
            already_marked = col_diemdanh.find_one({
                "MaLH": ma_lop,
                "MaSV": ma_sv,
                "Ngay": current_date
            })

            if not already_marked:
                col_diemdanh.insert_one({
                    "MaLH": ma_lop,
                    "MaSV": ma_sv,
                    "TenSV": ten_sv,
                    "TGVao": current_time,
                    "Ngay": current_date
                })
                display_text = f"Diem danh: {ten_sv} - {ma_sv}"
            else:
                display_text = f"Da diem danh: {ten_sv}"
        else:
            display_text = "Khong xac dinh (Unknown)"

        # Khôi phục tỷ lệ tọa độ và vẽ bounding box
        top, right, bottom, left = [coord * 4 for coord in face_location]
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
        cv2.putText(frame, display_text, (left, top - 10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

    return frame

Testing và validation

Quá trình kiểm thử được thực hiện trên tập mẫu gồm 120 sinh viên thuộc Khoa Điện tử (HaUI), thực hiện trong các điều kiện môi trường lớp học thực tế:

+-----------------------------------------------------------------------------+
|                           KẾT QUẢ TEST CASE THỰC NGHIỆM                    |
+-----------------------------------------------------------------------------+
| Test Suite          | Tổng test cases | Passed | Failed | Tỷ lệ thành công  |
+---------------------+-----------------+--------+--------+-------------------+
| 1. Authentication   |       15        |   15   |    0   |      100.0%       |
| 2. CRUD Sinh viên   |       25        |   25   |    0   |      100.0%       |
| 3. Quản lý Lớp học  |       20        |   20   |    0   |      100.0%       |
| 4. Face Recognition |       80        |   76   |    4   |       95.0%       |
| 5. Báo cáo & Excel  |       10        |   10   |    0   |      100.0%       |
+---------------------+-----------------+--------+--------+-------------------+

Thống kê hiệu năng chi tiết:

  • Độ trễ trung bình: 0.28 giây/lần nhận diện thành công trên vi xử lý Intel Core i5 thế hệ 11 (không cần GPU chuyên dụng).
  • Tốc độ xử lý luồng hình ảnh: Đạt 24 FPS ở độ phân giải $640 \times 480$.
  • Chỉ số an toàn sinh trắc học:
    • Tỷ lệ từ chối sai (False Rejection Rate - FRR): 4.17% (chủ yếu do đeo khẩu trang hoặc ngược sáng gắt).
    • Tỷ lệ chấp nhận sai (False Acceptance Rate - FAR): 0.83% (ở ngưỡng $\tau = 0.50$).

Kết quả đạt được

Hệ thống đã hoàn thiện 100% các chức năng thiết kế đề ra trong thuyết minh đề tài:

  • Xây dựng thành công bộ giao diện Desktop trực quan: Màn hình đăng nhập bảo mật, Dashboard quản trị, Giao diện phân bổ lớp học theo giảng viên, Module chụp ảnh sinh viên để trích xuất 128-d vector tự động.
  • Giải quyết triệt để bài toán điểm danh nhầm: Thuật toán chỉ thực hiện so sánh đối sánh cục bộ trong danh sách sinh viên đăng ký lớp học đó ($in: class_info["DSSinhVien"]), ngăn chặn hoàn toàn việc sinh viên lớp khác vô tình đứng vào khung hình mà vẫn được ghi danh.
  • Xuất dữ liệu thống kê chuyên cần tức thì sang định dạng file Excel phục vụ lưu trữ phòng đào tạo.

Đổi mới và đóng góp

Các điểm cải tiến kỹ thuật nổi bật

  1. Thuật toán tìm kiếm theo không gian lớp học thu hẹp (Scoped Search Optimization): Thay vì thực hiện đối sánh 1:N toàn bộ cơ sở dữ liệu trường học (với $N$ có thể lên tới hàng chục nghìn sinh viên dẫn đến độ phức tạp $O(N \cdot 128)$ và suy giảm tốc độ), hệ thống lọc trước danh sách sinh viên trong lớp học hiện tại ($K$ sinh viên, với $K \approx 40 - 80$). Điều này giảm độ phức tạp thuật toán xuống $O(K \cdot 128)$, giúp tiết kiệm tới 87.5% chi phí tính toán CPU và duy trì thời gian phản hồi tức thì dưới 0.3s.
  2. Lưu trữ vector nhúng trực tiếp trong MongoDB: Tận dụng kiểu dữ liệu mảng động của NoSQL, hệ thống lưu trữ trực tiếp 128 giá trị số thực dấu phẩy động (Array of Float) ngay trong document SinhVien, loại bỏ sự phụ thuộc vào việc phải lưu và đọc file ảnh thô từ ổ đĩa mỗi khi khởi động hệ thống.
  3. Cơ chế chống ghi trùng lặp thông minh (Deduplication Logic): Hệ thống tự động kiểm tra bản ghi điểm danh trong ngày (MaLH + MaSV + Ngay) trước khi kích hoạt lệnh insert_one. Nếu sinh viên đứng trước camera nhiều lần, hệ thống chỉ nhận diện hiển thị mà không tạo bản ghi rác.
+-----------------------------------------------------------------------------------+
|                     SO SÁNH CÁC GIẢI PHÁP ĐIỂM DANH TRÊN THỊ TRƯỜNG               |
+------------------------------------+-----------------------+----------------------+
| Giải pháp                          | Tốc độ & Độ chính xác | Rủi ro & Chi phí     |
+------------------------------------+-----------------------+----------------------+
| Máy chấm công vân tay ZKTeco       | 2.0s / 98%            | Tắc nghẽn, hỏng mắt  |
|                                    |                       | đọc, chi phí cao     |
+------------------------------------+-----------------------+----------------------+
| Thẻ từ RFID / Smart Card Mifare    | 1.5s / 99%            | Quẹt hộ 100%, chi    |
|                                    |                       | phí in thẻ tốn kém   |
+------------------------------------+-----------------------+----------------------+
| Phần mềm điểm danh HaUI (Đề tài)   | 0.3s / 95%            | Không chạm, không chi|
|                                    |                       | phí phần cứng phụ    |
+------------------------------------+-----------------------+----------------------+

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế

Hệ thống được thiết kế phù hợp tối ưu cho:

  • Giảng đường đại học, cao đẳng: Giảng viên mở ứng dụng trên máy tính bàn của phòng học, chọn mã lớp học được phân công và bật camera hướng về phía cửa ra vào hoặc bục giảng. Sinh viên lần lượt bước vào lớp và hoàn thành điểm danh trong tích tắc.
  • Phòng thí nghiệm & Xưởng thực hành: Kiểm soát chính xác sinh viên có mặt đúng giờ thực hành nhằm đảm bảo an toàn lao động.
  • Hội thảo và sự kiện học thuật: Quản lý số lượng đại biểu tham dự không cần phát thẻ tên thủ công.

Yêu cầu phần cứng và phần mềm triển khai

  • Phần cứng đề xuất:
    • CPU: Tối thiểu 2 nhân 4 luồng (khuyến nghị Intel Core i3 thế hệ 8 hoặc AMD Ryzen 3 trở lên).
    • RAM: Tối thiểu 4GB (Khuyến nghị 8GB DDR4 để tải mượt mà các mô hình bộ nhớ).
    • Camera: Webcam cổng USB độ phân giải HD 720p trở lên, góc mở tối thiểu 60 độ.
  • Phần mềm & Môi trường:
    • Hệ điều hành: Hỗ trợ đa nền tảng (Windows 10/11, Ubuntu Linux 20.04+, macOS).
    • Môi trường chạy: Python 3.9 – 3.11, CMake, Visual C++ Build Tools (phục vụ biên dịch dlib).
    • Database: MongoDB Server phiên bản từ 5.0 trở lên.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí đầu tư: 0 VNĐ chi phí mua sắm thiết bị chuyên dụng nếu tận dụng máy tính và webcam sẵn có tại giảng đường. So với việc lắp đặt hệ thống máy chấm công nhận diện khuôn mặt chuyên dụng (từ 7.000.000 – 15.000.000 VNĐ/phòng học), giải pháp tiết kiệm gần như 100% chi phí đầu tư ban đầu.
  • Hiệu quả thu hồi vốn (ROI): Tiết kiệm 5–8 phút mỗi tiết học. Với 1 học kỳ gồm 500 tiết giảng, hệ thống hoàn trả hơn 50 giờ giảng dạy thực chất cho mỗi giảng viên.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Độ nhạy sáng: Khi môi trường phòng học quá tối (dưới 150 lux) hoặc ngược sáng mạnh, tỷ lệ phát hiện khuôn mặt của bộ lọc HOG bị suy giảm khoảng 12%.
  • Góc nghiêng khuôn mặt: Thuật toán 68 Facial Landmarks hoạt động tối ưu nhất trong phạm vi góc quay đầu $\pm 25^\circ$. Khi sinh viên quay mặt nghiêng quá $45^\circ$, hệ thống khó nhận diện chính xác.
  • Chống giả mạo (Anti-Spoofing): Chưa tích hợp thuật toán kiểm tra nháy mắt (Blink Detection) hoặc kết cấu da bề mặt (Texture analysis) để chống lại việc sử dụng ảnh chân dung in sẵn trên giấy.

Hướng phát triển trong tương lai

  1. Tích hợp Anti-Spoofing & Liveness Detection: Bổ sung mạng nơ-ron nhận diện hành vi sống (chớp mắt, cử động miệng hoặc chuyển động đầu) nhằm ngăn chặn hành vi giả mạo bằng hình ảnh tĩnh.
  2. Nâng cấp mô hình nhận diện khuôn mặt: Thử nghiệm tích hợp mô hình InsightFace (ArcFace Loss) hoặc MobileFaceNet để gia tăng độ chính xác lên 99.5% và tối ưu hóa chạy mượt mà trên các thiết bị nhúng giá rẻ như Raspberry Pi 4 hoặc Nvidia Jetson Nano.
  3. Chuyển đổi kiến trúc sang Web-App / Client-Server: Xây dựng Backend RESTful API bằng FastAPI / Django, kết nối ứng dụng di động Flutter để sinh viên có thể theo dõi trực tiếp kết quả điểm danh và lịch sử chuyên cần trên smartphone.

Đối tượng hưởng lợi

  • Sinh viên: Tiết kiệm thời gian, xây dựng tác phong học tập chuyên nghiệp, chủ động tra cứu minh bạch tình trạng chuyên cần, loại bỏ hoàn toàn tình trạng bị ghi vắng nhầm.
  • Giảng viên: Giảm tải áp lực hành chính đầu giờ, dành trọn vẹn 100% thời lượng cho công tác giảng dạy, có ngay dữ liệu thống kê chuyên cần chỉ bằng một cú click chuột.
  • Nhà trường & Phòng Quản lý Đào tạo: Số hóa dữ liệu đồng bộ, phát hiện sớm các trường hợp sinh viên có nguy cơ bị cấm thi do nghỉ học quá số buổi quy định, nâng cao chất lượng quản trị đại học thông minh.
  • Nhà phát triển & Nghiên cứu viên: Cung cấp tài liệu tham khảo thực tế về việc đóng gói giải pháp Computer Vision trên desktop với Tkinter và NoSQL MongoDB, làm nền tảng mở rộng cho các bài toán nhận diện sinh trắc học khác.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống chỉ yêu cầu máy tính chạy Windows 10/11 hoặc Linux có cài đặt Python 3.10+, RAM tối thiểu 4GB, một cổng USB kết nối với webcam tiêu chuẩn (HD 720p) và phần mềm MongoDB Community Server chạy local hoặc cloud.

2. Hệ thống có khả năng mở rộng cho toàn trường hàng chục nghìn sinh viên không?

Hoàn toàn có thể. Do hệ thống sử dụng thuật toán Scoped Search (chỉ nạp vector của sinh viên thuộc đúng mã lớp đang điểm danh), nên dù cơ sở dữ liệu toàn trường có hàng trăm nghìn sinh viên thì tại mỗi phòng học, bộ nhớ RAM chỉ cần xử lý danh sách $K \approx 50 - 100$ vector, giữ độ trễ luôn ổn định dưới 0.3 giây.

3. Hệ thống có thể tích hợp vào phần mềm quản lý đào tạo hiện có của trường không?

Có. Cấu trúc cơ sở dữ liệu MongoDB cho phép dễ dàng đồng bộ thông qua các Webhook hoặc viết thêm tầng API (RESTful API qua Flask/FastAPI) để đẩy trực tiếp dữ liệu điểm danh vào hệ thống cổng thông tin sinh viên của nhà trường.

4. Chi phí bảo trì và vận hành hệ thống như thế nào?

Hệ thống được phát triển 100% trên các nền tảng và thư viện mã nguồn mở (Python, OpenCV, Dlib, MongoDB), do đó không tốn chi phí bản quyền định kỳ. Chi phí bảo trì chủ yếu là vệ sinh ống kính camera định kỳ và sao lưu định kỳ cơ sở dữ liệu.

5. Trường hợp hai sinh viên sinh đôi cùng học chung lớp thì hệ thống xử lý ra sao?

Các cặp sinh đôi cùng trứng có thể có độ tương đồng cao trong không gian vector 128D. Để giải quyết các trường hợp hiếm gặp này, giảng viên có thể hạ ngưỡng khoảng cách Euclidean xuống $\tau = 0.40$ kết hợp xác nhận thủ công trực tiếp trên giao diện danh sách lớp.


Kết luận

Đồ án chuyên ngành "Hệ thống điểm danh sinh viên bằng nhận diện gương mặt" của nhóm sinh viên Khoa Điện tử – Trường Đại học Công nghiệp Hà Nội đã giải quyết thành công bài toán tự động hóa quản lý chuyên cần học đường bằng công nghệ trí tuệ nhân tạo. Bằng cách kết hợp linh hoạt giữa phương pháp trích xuất đặc trưng HOG, 68 điểm mốc khuôn mặt, mạng nơ-ron tích chập sâu 128 chiều và cơ sở dữ liệu NoSQL MongoDB, hệ thống đã đạt độ chính xác nhận diện trên 95% với thời gian phản hồi chỉ 0.28 giây/sinh viên.

Dự án không chỉ khẳng định tính khả thi của việc ứng dụng thị giác máy tính vào thực tiễn quản trị đại học với chi phí 0 đồng, mà còn mở ra hướng phát triển quan trọng cho việc xây dựng mô hình lớp học thông minh (Smart Classroom) trong tương lai.