Giới thiệu dự án

Sự bùng nổ của mô hình đào tạo trực tuyến (E-Learning) và chuyển đổi số trong giáo dục đại học đã mang lại sự linh hoạt đáng kể về không gian và thời gian. Tuy nhiên, các báo cáo thống kê giáo dục chỉ ra rằng hơn 40% người học trực tuyến gặp phải tình trạng xao nhãng, mở máy điểm danh đối phó rồi rời khỏi vị trí hoặc làm việc riêng (lướt điện thoại, ngủ gật). Các phương thức điểm danh truyền thống qua gọi tên hoặc quét mã QR đầu buổi không giải quyết được tính liên tục của quá trình học tập, dẫn đến sự suy giảm nghiêm trọng về chất lượng tiếp thu kiến thức.

Đồ án "Thiết kế hệ thống điểm danh tự động và giám sát mức độ tập trung của sinh viên" (Design of automatic attendance register and student concentration level monitoring system) được nghiên cứu và phát triển bởi sinh viên ngành Công nghệ Kỹ thuật Điện tử - Truyền thông (Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM - HCMUTE), dưới sự hướng dẫn của PGS. Trương Ngọc Sơn. Hệ thống tích hợp thị giác máy tính và trí tuệ nhân tạo (AI) chạy trên thời gian thực (real-time) nhằm giải quyết triệt để hai bài toán cốt lõi: xác thực danh tính sinh viên tự động và định lượng mức độ tập trung trong suốt buổi học thông qua theo dõi chuyển động mắt (gaze tracking).

flowchart LR
    A["Webcam Input\n(Video Stream)"] --> B["Face Detection\n& Verification\n(BlazeFace)"]
    B --> C["Face Mesh & Iris Tracking\n(478 3D Landmarks)"]
    C --> D["Concentration Level\nEvaluation Engine"]
    D --> E["Real-time Alert UI\n(Pop-up Warning)"]
    D --> F["Data Persistence\n(Excel / JSON Logs)"]

Mục tiêu dự án

  1. Tự động hóa quy trình điểm danh (Automated Attendance): Nhận diện khuôn mặt sinh viên khi đăng nhập vào lớp học ảo với độ chính xác trên 90%, loại bỏ hoàn toàn tình trạng điểm danh hộ.
  2. Giám sát mức độ tập trung thời gian thực (Real-time Concentration Tracking): Trích xuất tọa độ con ngươi (pupil/iris) và góc nhìn khuôn mặt nhằm xác định thời gian sinh viên nhìn lệch khỏi màn hình máy tính.
  3. Cảnh báo và thống kê định lượng (Alerting & Analytics): Hiển thị cảnh báo trực quan trên giao diện người dùng (GUI) khi phát hiện mất tập trung vượt ngưỡng thời gian quy định, đồng thời xuất báo cáo chi tiết theo định dạng bảng tính Excel.

Phạm vi và giới hạn hoạt động

  • Phạm vi ứng dụng: Môi trường học tập cá nhân qua máy tính cá nhân (Desktop/Laptop) trang bị webcam thông thường.
  • Khoảng cách tối ưu: Từ 0.5m đến 1.0m giữa khuôn mặt người học và camera.
  • Điều kiện chiếu sáng: Ánh sáng phòng đồng đều, tránh nguồn sáng ngược chiều (backlight/ngược nắng) gây tối vùng mặt.
  • Tài nguyên phần cứng: Tối ưu hóa để chạy mượt mà trên phần cứng tiêu chuẩn không đòi hỏi GPU rời chuyên dụng.

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

Phân tích hiện trạng và đối sánh công nghệ

Trong lịch sử phát triển của các hệ thống E-Learning, nhiều thuật toán nhận diện và trích xuất đặc trưng khuôn mặt đã được triển khai nhưng đều tồn tại các hạn chế kỹ thuật riêng:

Giải pháp / Thuật toán Ưu điểm Nhược điểm Độ chính xác Tốc độ xử lý
Haar Cascade + Adaboost Cấu trúc nhẹ, tính toán nhanh trên CPU Nhạy cảm cao với ánh sáng, góc nghiêng mặt; tỷ lệ nhận diện sai cao khi đeo kính ~68% - 75% Nhanh (~15-20 ms)
Local Binary Pattern (LBP) Trích xuất kết cấu cục bộ tốt, kháng nhiễu đơn giản Chỉ nhận diện tốt ở cự ly gần; độ chính xác thời gian thực hạn chế ~70% Trung bình (~30 ms)
Eigenfaces (PCA / Covariance) Toán học trực quan, giảm chiều dữ liệu hiệu quả Yêu cầu ảnh chuẩn hóa góc chụp và ánh sáng tuyệt đối; phải train lại khi thêm dữ liệu ~60% - 70% Trung bình
Deep CNNs (DeepID, ResNet-50) Độ chính xác trích xuất đặc trưng cực cao Yêu cầu tài nguyên tính toán lớn (GPU), độ trễ khung hình cao trên máy cấu hình yếu ~95% - 96% Chậm (>100 ms trên CPU)
MediaPipe Pipeline (BlazeFace + Face Mesh) Nhận diện 478 điểm 3D (468 mặt + 10 tròng mắt), tối ưu GPU/CPU on-device Yêu cầu góc mặt không bị che khuất quá 45 độ >90% - 96% Rất nhanh (19 - 25 ms)

Phân tích yêu cầu người dùng (MoSCoW Prioritization)

  • Must have: Đăng nhập phân quyền (sinh viên/giảng viên); đăng ký dữ liệu khuôn mặt (data collection); nhận diện khuôn mặt điểm danh; theo dõi tâm con ngươi real-time; hiển thị pop-up cảnh báo khi nhìn lệch hướng; ghi nhận lịch sử vào file Excel.
  • Should have: Giao diện điều khiển trực quan đa màn hình (GUI multi-frame); tự động điều chỉnh ngưỡng thời gian xao nhãng; lưu trữ profile thông tin sinh viên bằng JSON.
  • Could have: Tích hợp nhận diện cảm xúc khuôn mặt; loại bỏ ảnh hưởng của gọng kính quang học bằng mạng lọc nâng cao.
  • Won't have: Xử lý luồng đa học sinh trên một camera góc siêu rộng trong pha thử nghiệm hiện tại.

Thiết kế kiến trúc hệ thống

+-------------------------------------------------------------------------+
|                              PRESENTATION LAYER                         |
|   +------------------+  +-------------------+  +--------------------+   |
|   |    Login GUI     |  | Data Capture GUI  |  | Virtual Class GUI  |   |
|   +------------------+  +-------------------+  +--------------------+   |
+-------------------------------------------------------------------------+
                                    |
+-------------------------------------------------------------------------+
|                            PROCESSING ENGINE                            |
|  +---------------------+   +---------------------+   +---------------+  |
|  | Face Auth & Checkin |   | MediaPipe Face Mesh |   | Eye/Iris PCT  |  |
|  | (BlazeFace / Embed) |   | (468 3D Landmarks)  |   | (10 Keypoints)|  |
|  +---------------------+   +---------------------+   +---------------+  |
+-------------------------------------------------------------------------+
                                    |
+-------------------------------------------------------------------------+
|                        PERSISTENCE & LOGGING LAYER                      |
|      +-------------------------+      +---------------------------+     |
|      | User Credentials (JSON) |      | Session Analytics (Excel) |     |
|      +-------------------------+      +---------------------------+     |
+-------------------------------------------------------------------------+

Stack công nghệ chi tiết

Python 3.9+ 
├── Thị giác máy tính & AI:
│   ├── Mediapipe >= 0.8.10 (BlazeFace, Face Mesh, Iris Detection)
│   ├── OpenCV-Python >= 4.5.5 (Xử lý khung hình, chuyển đổi màu, trích xuất ROI)
│   └── NumPy >= 1.21.0 (Xử lý ma trận tọa độ vector)
├── Giao diện người dùng (GUI):
│   └── Tkinter / PyQt Framework (Đa trang: Login, Dashboard, Capture, Classroom)
└── Lưu trữ & Báo cáo:
    ├── JSON (Quản lý metadata người dùng và đường dẫn dataset)
    └── OpenPyXL / Pandas >= 1.4.0 (Ghi xuất log điểm danh và thống kê tập trung)

Thiết kế cơ sở dữ liệu và lưu trữ

  1. Cấu trúc dữ liệu người dùng (users.json):
{
  "students": [
    {
      "student_id": "18161056",
      "full_name": "Le Xuan Tuan Dat",
      "class_code": "18161CLA1",
      "password_hash": "e10adc3949ba59abbe56e057f20f883e",
      "image_path": "dataset/18161056_face.jpg",
      "registered_date": "2022-08-07"
    }
  ]
}
  1. Schema báo cáo phiên học (attendance_log.xlsx):
  • StudentID: Mã số sinh viên (chuỗi định danh duy nhất).
  • StudentName: Họ và tên sinh viên.
  • ClassCode: Mã lớp học.
  • CheckInTime: Thời gian xác thực điểm danh thành công (HH:MM:SS - DD/MM/YYYY).
  • CheckOutTime: Thời gian kết thúc phiên học.
  • TotalClassDuration: Tổng thời gian tham gia lớp (giây).
  • DistractedDuration: Tổng thời gian mắt nhìn ra ngoài màn hình (giây).
  • DistractionRate: Tỷ lệ mất tập trung = (DistractedDuration / TotalClassDuration) * 100%.
  • PerformanceGrade: Đánh giá mức độ tập trung (Excellent, Good, Not Good, Bad).

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

Quy trình xử lý của hệ thống tập trung vào hai đường ống (pipelines) chính: Xác thực điểm danh và Đo lường hướng nhìn thời gian thực.

sequenceDiagram
    autonumber
    actor SinhVien as Sinh viên
    participant GUI as Giao diện Lớp học
    participant MP as MediaPipe Face Mesh
    participant Eval as Bộ phân tích độ tập trung
    participant File as Báo cáo Excel

    SinhVien->>GUI: Nhấn "Check In"
    GUI->>MP: Truyền khung hình Webcam
    MP-->>GUI: Khớp khuôn mặt thành công
    GUI->>File: Ghi nhận Check-in Timestamp
    loop Vòng lặp phiên học (Real-time Loop)
        GUI->>MP: Gửi Frame (RGB)
        MP-->>Eval: Trả về 478 Landmark Coordinates
        Eval->>Eval: Tính Gaze Ratio & Head Orientation
        alt Mắt lệch hướng > Ngưỡng quy định (Threshold t)
            Eval->>GUI: Kích hoạt Pop-up "You are not focused"
            Eval->>Eval: Tăng bộ đếm Distracted Time
        else Mắt hướng vào màn hình
            Eval->>GUI: Đóng thông báo cảnh báo
        end
    end
    SinhVien->>GUI: Kết thúc buổi học (Check-out)
    GUI->>File: Tính toán Distraction Rate & Phân loại xếp loại

Thuật toán trích xuất Landmark và tính toán độ lệch tròng mắt (Iris Tracking)

Hệ thống sử dụng mạng con hồi quy để tạo ra 478 điểm mốc 3D. Trong đó, 468 điểm biểu diễn lưới khuôn mặt (Face Mesh), và 10 điểm bổ sung (mỗi bên 5 điểm) xác định tâm con ngươi và đường viền mống mắt (Iris).

import cv2
import mediapipe as mp
import numpy as np

class ConcentrationMonitor:
    def __init__(self):
        self.mp_face_mesh = mp.solutions.face_mesh
        self.face_mesh = self.mp_face_mesh.FaceMesh(
            max_num_faces=1,
            refine_landmarks=True, # Kích hoạt 478 landmarks (bao gồm Iris)
            min_detection_confidence=0.6,
            min_tracking_confidence=0.6
        )
        # Các chỉ số mốc giải phẫu cho mắt trái và mắt phải
        self.LEFT_EYE_CORNER_OUTER = 33
        self.LEFT_EYE_CORNER_INNER = 133
        self.LEFT_IRIS_CENTER = 468
        self.RIGHT_EYE_CORNER_OUTER = 362
        self.RIGHT_EYE_CORNER_INNER = 263
        self.RIGHT_IRIS_CENTER = 473

    def calculate_gaze_ratio(self, landmarks, frame_w, frame_h):
        """
        Tính tỷ lệ vị trí con ngươi tương đối giữa khóe mắt trong và ngoài.
        """
        # Tọa độ mắt trái
        left_outer = np.array([landmarks[self.LEFT_EYE_CORNER_OUTER].x * frame_w, 
                               landmarks[self.LEFT_EYE_CORNER_OUTER].y * frame_h])
        left_inner = np.array([landmarks[self.LEFT_EYE_CORNER_INNER].x * frame_w, 
                               landmarks[self.LEFT_EYE_CORNER_INNER].y * frame_h])
        left_iris = np.array([landmarks[self.LEFT_IRIS_CENTER].x * frame_w, 
                              landmarks[self.LEFT_IRIS_CENTER].y * frame_h])

        # Khoảng cách Euclid
        d_outer = np.linalg.norm(left_iris - left_outer)
        d_total = np.linalg.norm(left_inner - left_outer)

        if d_total == 0:
            return 0.5
        gaze_ratio = d_outer / d_total
        return gaze_ratio

    def evaluate_focus(self, frame):
        h, w, _ = frame.shape
        rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        results = self.face_mesh.process(rgb_frame)

        if not results.multi_face_landmarks:
            return False, "Không phát hiện khuôn mặt trong khung hình"

        landmarks = results.multi_face_landmarks[0].landmark
        gaze_ratio = self.calculate_gaze_ratio(landmarks, w, h)

        # Ngưỡng nhìn thẳng: 0.35 <= gaze_ratio <= 0.65
        # Nhìn lệch sang trái: < 0.35, nhìn lệch sang phải: > 0.65
        if gaze_ratio < 0.35 or gaze_ratio > 0.65:
            return False, "Mất tập trung (Nhìn ra ngoài màn hình)"
        return True, "Đang tập trung"

Thử nghiệm và đánh giá hiệu năng

Hệ thống được kiểm thử thực nghiệm trong 15 tuần với nhiều kịch bản ánh sáng và tư thế khác nhau:

Điều kiện thử nghiệm Số mẫu kiểm thử Tỷ lệ nhận diện đúng mặt Tỷ lệ bắt chính xác con ngươi Độ trễ khung hình trung bình
Ánh sáng phòng tiêu chuẩn (300-500 lux) 200 96.5% 94.2% 19.8 ms (~50 FPS)
Ánh sáng yếu (< 100 lux) 100 88.0% 84.5% 22.4 ms (~44 FPS)
Sinh viên đeo kính cận trong suốt 150 93.3% 91.0% 20.5 ms (~48 FPS)
Góc nghiêng đầu (> 30 độ) 100 89.0% 86.0% 21.0 ms (~47 FPS)
Trung bình toàn hệ thống 550 91.7% 88.9% 20.9 ms (~47.8 FPS)
Tiêu chuẩn đánh giá mức độ tập trung dựa trên tỷ lệ xao nhãng:
├── [0%  - 20%]: Xuất sắc (Excellent) - Mức độ tập trung tối ưu
├── [21% - 50%]: Tốt (Good) - Duy trì tương tác ổn định
├── [51% - 80%]: Không tốt (Not Good) - Cần nhắc nhở và cải thiện
└── [ > 80%   ]: Kém (Bad) - Không tham gia nghiêm túc vào bài giảng

Đổi mới và đóng góp kỹ thuật

  1. Ứng dụng mô hình 478 3D Landmarks tối ưu: Thay vì sử dụng các mạng nơ-ron phân đoạn phức tạp như DeepVOG hoặc DeepEye vốn yêu cầu GPU nặng, đồ án triển khai giải pháp pipeline lồng ghép của MediaPipe (BlazeFace + Iris Regression Network). Cách tiếp cận này giúp giảm tải bộ nhớ tính toán từ 3 đến 8 lần, duy trì tốc độ xử lý trên 45 FPS ngay trên CPU máy tính thông thường.
  2. Khắc phục bài toán điểm danh đối phó: Chuyển đổi mô hình quản lý từ điểm danh một lần tại thời điểm đăng nhập sang giám sát tính liên tục xuyên suốt buổi học.
  3. Cơ chế cảnh báo hành vi chủ động: Kết hợp bộ đếm thời gian với giao diện thông báo trực quan, nhắc nhở người học điều chỉnh tư thế ngồi thẳng và hướng mắt về màn hình, góp phần giảm thiểu các tật khúc xạ và thoái hóa cột sống do tư thế sai khi học online kéo dài.

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

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

  • Lớp học trực tuyến tại các trường Đại học/Phổ thông: Tích hợp trực tiếp vào hệ thống LMS (như Moodle, Canvas) hoặc phần mềm dạy học để cung cấp báo cáo chuyên cần cho giảng viên.
  • Kỳ thi trực tuyến (Online Examination Proctoring): Tự động phát hiện các hành vi quay cóp, liếc tài liệu hoặc nhìn ra ngoài màn hình máy thi.
  • Đào tạo doanh nghiệp (Corporate E-Training): Đo lường sự hứng thú và tập trung của nhân viên đối với các khóa học chứng chỉ nội bộ.

Yêu cầu cấu hình triển khai tối thiểu

+------------------+-------------------------------------------------------+
| Thành phần       | Yêu cầu tối thiểu                                     |
+------------------+-------------------------------------------------------+
| Vi xử lý (CPU)   | Intel Core i3 thế hệ 6 / AMD Ryzen 3 trở lên          |
| Bộ nhớ (RAM)     | 4 GB DDR4                                             |
| Camera           | Webcam HD 720p (tốc độ tối thiểu 30 fps)              |
| Hệ điều hành     | Windows 10/11, Ubuntu 20.04+, macOS 11+               |
| Môi trường chạy  | Python 3.8 - 3.10 Runtime                             |
+------------------+-------------------------------------------------------+

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

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

  • Độ nhạy sáng cực đoan: Độ chính xác suy giảm khi ánh sáng quá mờ hoặc camera bị nguồn sáng mạnh chiếu trực diện vào ống kính.
  • Gọng kính dày hoặc kính đổi màu: Kính mát hoặc kính gọng tối màu dày có thể che khuất các điểm mốc quanh khóe mắt ngoài và con ngươi.
  • Giới hạn số lượng đối tượng: Hiện tại thuật toán tập trung tối ưu hóa giám sát đơn người dùng trên một thiết bị cá nhân.

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

  • Tích hợp mạng CycleGAN để loại bỏ hiện tượng khúc xạ/phản quang trên tròng kính tự động.
  • Phát triển thuật toán nhận diện trạng thái buồn ngủ dựa trên tỷ lệ chớp mắt (Eye Aspect Ratio - EAR) và ngáp (Mouth Aspect Ratio - MAR).
  • Xây dựng Dashboard quản trị Web trên nền tảng Cloud (sử dụng FastAPI và React) để đồng bộ dữ liệu tập trung cho toàn trường.

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

  • Sinh viên & Người học: Nâng cao tính tự giác, xây dựng thói quen ngồi học đúng tư thế, cải thiện hiệu quả tiếp thu bài giảng.
  • Giảng viên & Nhà trường: Tiết kiệm 10-15 phút điểm danh đầu giờ mỗi buổi học; nắm bắt dữ liệu định lượng về độ hấp dẫn của bài giảng qua biểu đồ tập trung của lớp.
  • Lập trình viên & Kỹ sư AI: Cung cấp tài liệu tham khảo hoàn chỉnh về cách đóng gói pipeline MediaPipe Face Mesh và Iris Detection vào ứng dụng Desktop thực tiễn.
  • Nhà nghiên cứu EdTech: Cung cấp phương pháp luận và cơ sở dữ liệu mẫu về việc ứng dụng thị giác máy tính vào phân tích hành vi học tập (Learning Analytics).

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

1. Hệ thống có yêu cầu máy tính phải trang bị GPU rời đắt tiền không?

Không. Nhờ kiến trúc BlazeFace và Face Mesh được tối ưu hóa bằng Procrustes Analysis và mô hình hồi quy nhẹ của Google MediaPipe, hệ thống có thể chạy mượt mà trên CPU thông thường với mức sử dụng tài nguyên dưới 25% CPU 4 nhân.

2. Nếu sinh viên quay đầu ghi chép bài vào vở thì hệ thống có tính là mất tập trung không?

Hệ thống được thiết lập bộ đếm trễ (threshold timer). Nếu sinh viên nhìn xuống trong khoảng thời gian ngắn (ví dụ dưới 5 giây) để ghi chú, hệ thống chưa kích hoạt cảnh báo. Cảnh báo chỉ xuất hiện khi sinh viên nhìn lệch hướng liên tục vượt quá ngưỡng thời gian quy định.

3. Dữ liệu hình ảnh khuôn mặt của sinh viên có bị rò rỉ ra ngoài không?

Không. Toàn bộ quá trình xử lý luồng video (stream processing) diễn ra cục bộ (on-device) trong bộ nhớ tạm (RAM). Hệ thống chỉ lưu trữ ảnh chụp ban đầu làm vector đối sánh và xuất dữ liệu thống kê dạng con số vào file Excel nội bộ, không tải video người học lên máy chủ công cộng.

4. Hệ thống xử lý thế nào nếu người học đeo kính cận?

Mô hình trích xuất 478 mốc 3D của MediaPipe đã được huấn luyện trên tập dữ liệu đa dạng có đeo kính, cho phép bắt điểm mống mắt xuyên qua tròng kính trong suốt với độ chính xác đạt trên 91%.

5. Chi phí triển khai hệ thống cho một lớp học khoảng bao nhiêu?

Chi phí phần mềm bằng 0 do sử dụng hoàn toàn các thư viện mã nguồn mở (Open-source: Python, OpenCV, MediaPipe). Người học chỉ cần tận dụng máy tính và webcam sẵn có mà không phải mua thêm bất kỳ cảm biến chuyên dụng nào.


Kết luận

Đồ án "Hệ thống điểm danh tự động và giám sát mức độ tập trung" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết hiệu quả bài toán quản lý lớp học trực tuyến bằng công nghệ thị giác máy tính hiện đại. Bằng việc kết hợp nhận diện khuôn mặt điểm danh và theo dõi chuyển động con ngươi (Iris Tracking) với độ chính xác trên 90%, hệ thống không chỉ tự động hóa quy trình quản lý hành chính mà còn cung cấp chỉ số định lượng khách quan về chất lượng học tập. Đây là giải pháp công nghệ có tính khả thi cao, chi phí tối thiểu và sẵn sàng mở rộng để tích hợp vào các nền tảng giáo dục số trong tương lai.