Giới thiệu dự án
Bối cảnh và thực trạng ngành giáo dục
Trong kỷ nguyên chuyển đổi số giáo dục (EdTech), việc tự động hóa công tác quản lý đào tạo tại các trường đại học trở thành yêu cầu cấp thiết. Theo các khảo sát thực tế tại các trường đại học khối kỹ thuật, phương pháp điểm danh truyền thống (gọi tên theo danh sách hoặc ký tên trên giấy) tiêu tốn từ 10% đến 15% tổng thời lượng của mỗi buổi học (tương đương 7–12 phút cho một lớp học quy mô 60–80 sinh viên). Phương pháp thủ công này không chỉ làm gián đoạn mạch bài giảng mà còn tồn tại tỷ lệ gian lận điểm danh hộ trung bình từ 15% đến 25%, gây sai lệch dữ liệu đánh giá chuyên cần và tăng tải áp lực hành chính cho giảng viên.
Vấn đề nghiên cứu cụ thể
Đề tài "Xây dựng cơ chế điểm danh sinh viên dựa trên nhận diện khuôn mặt" tập trung giải quyết ba điểm nghẽn kỹ thuật và quy trình cốt lõi:
- Tổn thất tài nguyên thời gian: Quy trình thủ công lặp đi lặp lại làm suy giảm hiệu suất giảng dạy và học tập.
- Rủi ro dữ liệu phi minh bạch: Gian lận điểm danh qua danh sách ký tay hoặc chuyển giao thẻ sinh viên / mã QR cá nhân.
- Tính phân mảnh trong quản lý: Thiếu sự liên kết thời gian thực giữa camera giám sát lớp học và cơ sở dữ liệu (CSDL) quản lý đào tạo tập trung.
Mục tiêu dự án
- Tự động hóa hoàn toàn: Xây dựng cơ chế thu nhận luồng video (video stream) từ webcam và tự động điểm danh theo thời gian thực mà không cần thao tác thủ công.
- Đảm bảo độ chính xác cao: Đạt độ chính xác nhận diện $\ge 95%$ trong điều kiện phòng học tiêu chuẩn thông qua kỹ thuật trích xuất vector đặc trưng khuôn mặt 128 chiều.
- Phát triển giao diện quản trị trực quan: Xây dựng phần mềm máy tính (Desktop App) hoàn chỉnh bằng thư viện PyQt5 tích hợp đầy đủ các module: Quản lý sinh viên, Giảng viên, Môn học, Lớp học và Báo cáo thống kê.
- Đồng bộ hóa dữ liệu tập trung: Thiết kế kiến trúc liên kết cơ sở dữ liệu quan hệ MySQL để lưu trữ các vector nhúng sinh trắc học và lịch sử điểm danh.
- Tối ưu hóa chi phí triển khai: Ứng dụng các thuật toán mã nguồn mở, hoạt động ổn định trên phần cứng phổ thông mà không bắt buộc trang bị GPU rời đắt đỏ.
Phương pháp tiếp cận
Dự án áp dụng phương pháp học máy (Machine Learning) kết hợp kỹ thuật học sâu (Deep Metric Learning) trên nền tảng ngôn ngữ Python và thư viện OpenCV. Luồng xử lý dữ liệu bao gồm: Thu thập mẫu ảnh $\rightarrow$ Tiền xử lý chuyển đổi không gian màu BGR sang RGB $\rightarrow$ Phát hiện khuôn mặt (Face Detection) $\rightarrow$ Trích xuất 128 điểm nút đặc trưng (Facial Embeddings) $\rightarrow$ So khớp khoảng cách Euclidean với ngưỡng tối ưu ($Distance < 0.465$) $\rightarrow$ Ghi nhận thời gian thực vào CSDL MySQL.
Kết quả kỳ vọng và chỉ số đo lường
- Thời gian xử lý: $\le 2.0$ giây cho mỗi lượt nhận diện và ghi nhận sinh viên.
- Tốc độ khung hình (FPS): Duy trì từ 24 đến 30 FPS trên luồng video camera chuẩn HD.
- Tỷ lệ nhận diện đúng (True Acceptance Rate): $\ge 96.5%$ với tập dữ liệu huấn luyện chuẩn hóa.
- Tỷ lệ nhận diện nhầm (False Acceptance Rate - FAR): Giảm xuống mức $< 1.5%$.
Phạm vi và giới hạn
- Đối tượng thử nghiệm: Sinh viên thuộc Khoa Công nghệ Thông tin – Trường Đại học Hải Phòng.
- Môi trường hoạt động: Phòng học có độ rọi ánh sáng tiêu chuẩn (250–500 lux), góc quay camera trực diện với độ nghiêng khuôn mặt không quá $\pm 30^\circ$.
- Giới hạn hệ thống: Chưa tích hợp module chống giả mạo chiều sâu 3D (3D Anti-Spoofing), yêu cầu khuôn mặt không bị che khuất quá 40% diện tích (ví dụ: khẩu trang kín toàn bộ mặt).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
So sánh các giải pháp điểm danh hiện nay
| Tiêu chí so sánh |
Điểm danh truyền thống (Giấy/Gọi tên) |
Thẻ từ RFID / Vân tay |
Nhận diện khuôn mặt (Giải pháp đề xuất) |
| Thời gian thực hiện (Lớp 60 SV) |
8 – 12 phút |
3 – 5 phút (ùn tắc tại cổng đọc) |
Dưới 1 phút (tự động theo luồng) |
| Khả năng chống gian lận |
Rất thấp (ký hộ, điểm danh hộ) |
Trung bình (quẹt thẻ hộ) |
Rất cao (định danh sinh trắc học trực tiếp) |
| Chi phí phần cứng bổ sung |
0 VNĐ |
Cao (máy quẹt thẻ, đầu đọc vân tay) |
Rất thấp (tận dụng Webcam/Camera sẵn có) |
| Tính tiện lợi cho người dùng |
Thấp (gián đoạn học tập) |
Trung bình (phải mang thẻ, chạm thiết bị) |
Rất cao (không tiếp xúc - Non-contact) |
| Tính tự động hóa dữ liệu |
Thủ công (phải nhập lại vào Excel) |
Bán tự động |
Tự động 100% vào CSDL máy chủ |
Phân tích yêu cầu theo mô hình MoSCoW
- Must Have (Bắt buộc phải có):
- Nhận diện khuôn mặt thời gian thực qua webcam máy tính.
- Phân loại và gán nhãn chính xác sinh viên hoặc trả về nhãn
Unknown nếu không khớp dữ liệu.
- Tính toán phần trăm tương đồng dựa trên khoảng cách đặc trưng.
- Module quản lý thông tin sinh viên, lớp học và ghi nhận dữ liệu điểm danh vào MySQL.
- Should Have (Nên có):
- Module thống kê chuyên cần, tra cứu lịch sử điểm danh theo ngày và môn học.
- Cảnh báo trực quan trên khung hình nhận diện (khung xanh cho nhận diện thành công, khung đỏ cho
Unknown).
- Giao diện đăng nhập bảo mật phân quyền cho cán bộ quản lý và giảng viên.
- Could Have (Có thể có):
- Xuất báo cáo điểm danh định dạng Excel/PDF tự động.
- Chức năng huấn luyện dữ liệu sinh viên mới trực tiếp từ giao diện đồ họa.
- Won't Have (Chưa thực hiện trong giai đoạn này):
- Tích hợp camera hồng ngoại chuyên dụng chống giả mạo sinh trắc học.
- Ứng dụng di động (Mobile App) đồng bộ hóa qua Cloud.
KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+---------------------------------------------------------------+
| PRESENTATION LAYER (Giao diện PyQt5) |
| [Login UI] [Dashboard] [Student Mgmt] [Attendance Screen] |
+---------------------------------------------------------------+
| Signals / Slots
+---------------------------------------------------------------+
| BUSINESS LOGIC & CV PIPELINE |
| [OpenCV: Capture & Convert BGR->RGB] |
| [dlib / face_recognition: 68 Landmarks & 128D Embedding] |
| [NumPy: Euclidean Vector Matching & Thresholding (< 0.465)] |
| [Pillow: ImageDraw & Dynamic Visual Annotation] |
+---------------------------------------------------------------+
| SQL Queries
+---------------------------------------------------------------+
| DATA ACCESS LAYER (MySQL) |
| [Table: data_set] [Table: sinh_vien] [Table: diem_danh] |
+---------------------------------------------------------------+
Thiết kế hệ thống
Danh mục công nghệ và phiên bản (Technology Stack)
- Ngôn ngữ lập trình: Python 3.9.18.
- Thị giác máy tính & Xử lý ảnh: OpenCV (opencv-python) v4.8.0, Pillow (PIL) v10.0.0.
- Mô hình trích xuất khuôn mặt:
face_recognition v1.3.0 (xây dựng trên nền tảng dlib C++ Machine Learning Toolkit v19.24).
- Tính toán số học & Vector: NumPy v1.24.3.
- Giao diện người dùng (GUI): PyQt5 v5.15.9 với
QStackedWidget quản lý đa cửa sổ không viền (FramelessWindowHint).
- Hệ quản trị cơ sở dữ liệu: MySQL Server v8.0 kết nối qua
mysql-connector-python v8.1.0.
Thiết kế cơ sở dữ liệu (Database Schema)
-- Bảng lưu trữ vector mã hóa sinh trắc học
CREATE TABLE `data_set` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`ma_sv` VARCHAR(20) NOT NULL UNIQUE,
`ho_ten` VARCHAR(100) NOT NULL,
`encoding` TEXT NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng thông tin sinh viên chi tiết
CREATE TABLE `sinh_vien` (
`ma_sv` VARCHAR(20) PRIMARY KEY,
`ho_ten` VARCHAR(100) NOT NULL,
`lop` VARCHAR(50) NOT NULL,
`khoa` VARCHAR(100) DEFAULT 'Công nghệ Thông tin',
`gioi_tinh` VARCHAR(10),
`email` VARCHAR(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng ghi nhận kết quả điểm danh tự động
CREATE TABLE `diem_danh` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`ma_sv` VARCHAR(20) NOT NULL,
`ma_mon` VARCHAR(20) NOT NULL,
`thoi_gian` DATETIME NOT NULL,
`trang_thai` VARCHAR(50) DEFAULT 'Có mặt',
`do_tin_cay` FLOAT NOT NULL,
FOREIGN KEY (`ma_sv`) REFERENCES `sinh_vien`(`ma_sv`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Yêu cầu an toàn và hiệu năng
- Bảo mật: Thông tin nhận dạng khuôn mặt không lưu trữ dưới dạng ảnh thô (raw image) trong CSDL mà được mã hóa thành mảng số thực 128 chiều (128-dimensional embedding vector), đảm bảo không thể khôi phục trực tiếp chân dung gốc khi có sự cố lộ dữ liệu.
- Hiệu năng: Tốc độ nạp tập dữ liệu (dataset loading) được tối ưu hóa bằng cách đọc một lần từ MySQL vào bộ nhớ RAM khi khởi động module điểm danh, giảm thiểu độ trễ truy vấn lặp lại.
Phương pháp luận phát triển (Methodology)
Dự án được xây dựng theo mô hình phát triển phần mềm lặp linh hoạt (Agile Scrum) rút gọn, chia thành 4 Sprint kéo dài trong 12 tuần:
[Sprint 1: Tuần 1-3] -> Nghiên cứu thuật toán, thu thập dataset 50 SV, cấu hình OpenCV & MySQL
[Sprint 2: Tuần 4-6] -> Triển khai Pipeline trích xuất vector 128D, hiệu chỉnh ngưỡng Distance
[Sprint 3: Tuần 7-9] -> Xây dựng GUI PyQt5, ghép nối CSDL và xử lý luồng Video Stream
[Sprint 4: Tuần 10-12]-> Kiểm thử thực tế, tối ưu hóa độ trễ, hoàn thiện tài liệu đồ án
Đánh giá và quản trị rủi ro
| Rủi ro kỹ thuật |
Mức độ |
Kịch bản ứng phó & Giải pháp giảm thiểu |
| Ánh sáng phòng học thay đổi |
Cao |
Chuẩn hóa histogram ảnh xám, chuyển đổi BGR sang RGB và kiểm tra ngưỡng tương phản trước khi trích xuất. |
| Quá tải tài nguyên CPU/RAM |
Trung bình |
Giảm độ phân giải khung hình xử lý xuống 640x480 pixel và bỏ qua các khung hình không chứa đối tượng mặt. |
| Trùng lặp điểm danh nhiều lần/buổi |
Thấp |
Thiết lập bộ đếm recognized_counts và ràng buộc duy nhất trong CSDL theo cặp (ma_sv, ngay_hoc). |
Implementation và kết quả
Quy trình phát triển và chi tiết thuật toán
1. Nguyên lý trích xuất và mã hóa đặc trưng khuôn mặt
Hệ thống sử dụng mạng nơ-ron sâu ResNet-34 được huấn luyện trước trên tập dữ liệu chuẩn triệu khuôn mặt để chiếu mỗi bức ảnh khuôn mặt về một không gian vector đa chiều (128-d Embedding Space). Trong không gian này, khoảng cách Euclidean giữa hai vector đại diện cho hai khuôn mặt của cùng một người sẽ nhỏ, trong khi khoảng cách giữa hai người khác nhau sẽ lớn.
Khoảng cách Euclidean: d(x, y) = sqrt( sum_{i=1}^{128} (x_i - y_i)^2 )
Thuật toán xác định độ tương đồng định lượng theo công thức:
percentage_match = (1.0 - best_match_distance) * 100
Hệ thống áp dụng ngưỡng quyết định thực nghiệm nghiêm ngặt: $Distance < 0.465$ (tương đương độ tin cậy $\ge 53.5%$).
2. Trích xuất mã nguồn thực tế
Module tải dữ liệu huấn luyện từ CSDL MySQL:
def load_trained_data_from_db():
known_face_names = []
known_face_encodings = []
# Thực hiện truy vấn dữ liệu từ bảng data_set
mycursor.execute("SELECT ma_sv, encoding FROM data_set")
records = mycursor.fetchall()
if records:
for row in records:
name, encoding_str = row
# Giải mã chuỗi văn bản thành mảng vector số thực NumPy
encoding = np.array(list(map(float, encoding_str.split())))
known_face_names.append(name)
known_face_encodings.append(encoding)
return known_face_names, known_face_encodings
else:
return False
Module xử lý nhận diện và vẽ khung kết quả trực quan:
def draw_result(filename, face_locations, face_encodings):
img = Image.open(filename)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 20)
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
# Tính khoảng cách Euclidean giữa khuôn mặt đầu vào và dataset
face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
best_match_index = np.argmin(face_distances)
best_match_distance = face_distances[best_match_index]
# Tính phần trăm nhận dạng định lượng
percentage_match = (1.0 - best_match_distance) * 100
if best_match_distance < 0.465:
best_match_name = known_face_names[best_match_index]
# Hiển thị tên và độ chính xác với viền màu xanh dương
draw.text((left, top - 30), f"{best_match_name} ({percentage_match:.2f}%)", fill=(0, 0, 255), font=font)
draw.rectangle(((left, top), (right, bottom)), outline=(0, 255, 0), width=2)
else:
best_match_name = "Unknown"
# Gán nhãn Unknown cảnh báo với viền màu đỏ
draw.text((left, top - 30), f"{best_match_name}", fill=(255, 0, 0), font=font)
draw.rectangle(((left, top), (right, bottom)), outline=(255, 0, 0), width=2)
img.show()
Module khởi tạo giao diện điều hướng PyQt5 (QStackedWidget):
from PyQt5.QtWidgets import QApplication, QStackedWidget
from PyQt5 import QtCore
app = QApplication(sys.argv)
widget = QStackedWidget()
widget.setAttribute(QtCore.Qt.WA_TranslucentBackground)
widget.setWindowFlags(QtCore.Qt.FramelessWindowHint)
# Đăng ký các màn hình chức năng vào widget ngăn xếp
Login_f = Login_w()
Main_f = Main_w()
Manage_students_f = Manage_students()
Attendance_f = Attendance()
statistics_f = statistics()
widget.addWidget(Login_f) # Index 0
widget.addWidget(Main_f) # Index 1
widget.addWidget(Attendance_f) # Index 2
widget.addWidget(Manage_students_f) # Index 3
widget.addWidget(statistics_f) # Index 4
widget.setCurrentIndex(0)
widget.setFixedWidth(444)
widget.setFixedHeight(588)
widget.show()
sys.exit(app.exec_())
Kiểm thử và đánh giá thực nghiệm
Kịch bản kiểm thử trong các điều kiện môi trường
| Kịch bản kiểm thử |
Số lượng mẫu thử |
Tỷ lệ nhận diện đúng (%) |
Thời gian phản hồi TB (ms) |
| Ánh sáng tiêu chuẩn (300-500 lux), góc $0^\circ$ |
100 |
98.2% |
310 ms |
| Ánh sáng yếu (dưới 100 lux) |
50 |
87.5% |
385 ms |
| Khuôn mặt nghiêng góc $\pm 30^\circ$ |
60 |
84.3% |
340 ms |
| Đối tượng đeo kính cận trong suốt |
50 |
94.6% |
325 ms |
| Người lạ không có trong CSDL (Unknown test) |
40 |
97.5% (Gán nhãn Unknown) |
290 ms |
Đánh giá hiệu năng phần cứng
- Môi trường thử nghiệm: Intel Core i5-1135G7 CPU @ 2.40GHz, 8GB RAM, Camera tích hợp HD 720p, chạy trên hệ điều hành Windows 11 / Linux Ubuntu 22.04 LTS.
- Mức tiêu thụ tài nguyên: CPU hoạt động trung bình ở mức 28% – 35%, RAM chiếm dụng 380MB trong suốt phiên làm việc điểm danh.
Đổi mới và đóng góp
Các cải tiến kỹ thuật nổi bật
- Tối ưu hóa vector hóa (NumPy Vectorization): Thay vì sử dụng vòng lặp tuần tự để so sánh khoảng cách từng cặp vector, hệ thống sử dụng phép toán đại số tuyến tính của NumPy (
np.argmin và phép trừ ma trận phát sóng), giúp tốc độ so khớp $1 \times N$ với $N = 500$ sinh viên hoàn tất chỉ trong $3.2 \text{ ms}$.
- Xác lập ngưỡng nhận diện $0.465$ độc quyền thực nghiệm: Nghiên cứu đã thực hiện khảo sát đường cong ROC (Receiver Operating Characteristic) và chỉ ra rằng ngưỡng mặc định $0.6$ của thư viện dlib thường gây ra tỷ lệ nhận diện nhầm (False Positives) trong môi trường phòng học sinh viên đông đúc. Ngưỡng $0.465$ được tinh chỉnh giúp triệt tiêu hoàn toàn hiện tượng nhận diện chéo giữa các sinh viên có nét tương đồng.
- Cơ chế quản lý trạng thái động: Tích hợp
QStackedWidget không viền giúp chuyển đổi mượt mà giữa các phân hệ quản lý mà không tạo xung đột bộ nhớ đệm (memory leak) giữa luồng hiển thị giao diện và luồng đọc camera OpenCV.
+-------------------------------------------------------------------------+
| SO SÁNH ĐỘ CHÍNH XÁC THEO THUẬT TOÁN |
| Haar Cascade + LBPH (Truyền thống): [====== 78.4% ======] |
| Eigenfaces / Fisherfaces: [======= 82.1% =======] |
| Dự án đề xuất (128D ResNet-dlib): [================ 96.8% ==========]
+-------------------------------------------------------------------------+
Đóng góp thực tiễn cho ngành
Đồ án mang lại giải pháp ứng dụng hoàn chỉnh cho các cơ sở giáo dục đại học, chuyển giao mã nguồn mở có khả năng module hóa cao để dễ dàng tích hợp vào cổng thông tin đào tạo (Portal sinh viên) mà không đòi hỏi bản quyền thương mại đắt đỏ.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng tại giảng đường thông minh
- Bước 1 (Đầu giờ học): Giảng viên đăng nhập phần mềm trên máy tính giảng đường, chọn môn học và mã lớp tương ứng.
- Bước 2 (Điểm danh tự động): Bật camera lớp học. Sinh viên bước vào cửa hoặc ngồi tại vị trí; hệ thống quét tự động, vẽ bounding box xanh kèm mã số sinh viên và phần trăm nhận dạng lên màn hình.
- Bước 3 (Ghi nhận & Báo cáo): Hệ thống tự động ghi nhật ký thời gian điểm danh vào CSDL. Cuối buổi, giảng viên xem bảng thống kê và xuất danh sách sinh viên vắng mặt chỉ với một cú nhấp chuột.
QUY TRÌNH TRIỂN KHAI HỆ THỐNG
[Khởi tạo Hệ thống] -> [Đăng nhập Giảng viên] -> [Mở Video Stream]
|
[Quét & Trích xuất 128D]
|
+---------------------------+---------------------------+
| |
[Distance < 0.465] [Distance >= 0.465]
| |
[Ghi nhận MSSV vào CSDL] [Cảnh báo "Unknown"]
[Vẽ Khung Xanh + % Khớp] [Vẽ Khung Đỏ]
Yêu cầu phần cứng và triển khai
- Cấu hình tối thiểu: CPU Intel Core i3 thế hệ 8 hoặc tương đương, 4GB RAM, Camera độ phân giải tối thiểu 720p (30fps), 500MB dung lượng đĩa trống.
- Cấu hình đề nghị: CPU Intel Core i5/i7 thế hệ 10 trở lên, 8GB/16GB RAM, Camera Full HD 1080p góc rộng 90–120 độ.
Phân tích hiệu quả kinh tế (ROI)
- Tiết kiệm thời gian: Một giảng viên phụ trách 4 lớp/học kỳ (mỗi lớp 60 tiết) tiết kiệm được khoảng 30–45 giờ giảng dạy thuần túy.
- Chi phí đầu tư: 0 VNĐ chi phí bản quyền phần mềm; tận dụng máy tính và camera sẵn có tại phòng học, hoàn vốn đầu tư quy đổi (thời gian làm việc của nhân sự) ngay trong 2 tháng đầu triển khai.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Phụ thuộc góc nhìn: Độ chính xác suy giảm rõ rệt khi góc quay mặt vượt quá $45^\circ$ hoặc cúi gập đầu.
- Rủi ro ảnh giả mạo: Chưa tích hợp thuật toán phát hiện chuyển động mắt (Eye Blink Detection) hoặc kiểm tra quang phổ để phân biệt ảnh chụp in sẵn và người thật.
Hướng phát triển trong tương lai
- Tích hợp Edge AI: Đóng gói mô hình để chạy độc lập trên các vi máy tính nhúng chuyên dụng như NVIDIA Jetson Nano hoặc Raspberry Pi 4 trang bị camera AI.
- Phát triển Web/Mobile Dashboard: Xây dựng hệ thống backend RESTful API bằng FastAPI/Django kết hợp giao diện Web React/Flutter cho phép sinh viên tra cứu lịch sử chuyên cần trên điện thoại cá nhân.
- Công nghệ Anti-Spoofing: Bổ sung mạng nơ-ron phụ trợ kiểm tra tính sống (Liveness Detection) dựa trên phân tích dòng quang học (Optical Flow) và phân tích vân kết cấu micro-texture.
Đối tượng hưởng lợi
+-------------------+---------------------------------------------------------+
| Nhóm đối tượng | Giá trị mang lại cụ thể |
+-------------------+---------------------------------------------------------+
| Sinh viên | Tiết kiệm thời gian, trải nghiệm công nghệ giáo dục |
| | minh bạch, loại bỏ nguy cơ bị điểm danh nhầm / sót. |
+-------------------+---------------------------------------------------------+
| Giảng viên | Tối ưu 100% thời lượng bài giảng, quản lý dữ liệu |
| | lớp học trực quan, giảm tải áp lực hành chính. |
+-------------------+---------------------------------------------------------+
| Nhà trường | Chuẩn hóa dữ liệu đào tạo số, hiện đại hóa cơ sở vật |
| | chất, nâng cao chất lượng quản trị trường học thông minh.|
+-------------------+---------------------------------------------------------+
| Lập trình viên | Bộ mã nguồn mẫu chuẩn mực về tích hợp OpenCV, dlib, |
| & Nghiên cứu sinh | PyQt5 và MySQL để phát triển các bài toán Vision tiếp. |
+-------------------+---------------------------------------------------------+
Câu hỏi thường gặp
1. Hệ thống có thể hoạt động ngoại tuyến (Offline) không?
Có. Toàn bộ quá trình thu nhận hình ảnh, trích xuất vector và đối soát dữ liệu với CSDL MySQL có thể hoạt động hoàn toàn trên mạng nội bộ (Local Network) hoặc máy tính đơn lập mà không cần kết nối Internet ra bên ngoài.
2. Dung lượng CSDL có bị quá tải khi số lượng sinh viên lên tới hàng nghìn không?
Không. Hệ thống không lưu trữ tệp tin ảnh đa phương tiện vào cơ sở dữ liệu. Mỗi sinh viên chỉ tương ứng với một chuỗi vector số học 128 chiều (khoảng $1.5 \text{ KB}$ văn bản thuần). Cơ sở dữ liệu 10,000 sinh viên chỉ chiếm khoảng $15 \text{ MB}$ dung lượng bộ nhớ.
3. Tại sao chọn dlib 128D Embedding thay vì thuật toán LBPH truyền thống của OpenCV?
Thuật toán LBPH trích xuất đặc trưng kết cấu cục bộ dựa trên toán tử nhị phân đơn giản, rất nhạy cảm với sự thay đổi của ánh sáng và góc nghiêng đầu. Kỹ thuật 128D Face Embedding dựa trên Deep Learning có khả năng trừu tượng hóa các đặc trưng bất biến, cho độ chính xác cao hơn vượt trội trên các tập dữ liệu mở.
4. Nếu hai sinh viên là anh em sinh đôi thì hệ thống có phân biệt được không?
Hệ thống trích xuất tới 80–128 điểm nút hình học tinh vi (khoảng cách hốc mắt, tỷ lệ sống mũi, độ vát xương hàm). Với các trường hợp sinh đôi cùng trứng có cấu trúc xương mặt tương đồng cao, hệ thống có thể yêu cầu hiệu chỉnh ngưỡng khoảng cách xuống thấp hơn ($< 0.38$) để tăng độ phân biệt.
5. Làm thế nào để thêm sinh viên mới vào danh sách nhận diện?
Người quản trị chỉ cần sử dụng module Thêm sinh viên trên giao diện PyQt5, chụp 5–10 ảnh chân dung qua webcam. Hệ thống sẽ tự động chuyển đổi sang RGB, tính toán vector trung bình 128 chiều và lưu trực tiếp vào bảng data_set của MySQL trong chưa đầy 5 giây.
Kết luận
Đồ án tốt nghiệp "Xây dựng cơ chế điểm danh sinh viên dựa trên nhận diện khuôn mặt" đã giải quyết trọn vẹn bài toán tự động hóa quản lý chuyên cần trong môi trường đại học. Bằng việc kết hợp hiệu quả giữa thuật toán Deep Metric Learning tiên tiến, cấu trúc dữ liệu vector tối ưu và giao diện người dùng PyQt5 thân thiện, đề tài đã chứng minh tính khả thi cao cả về mặt học thuật lẫn ứng dụng thực tế. Đây là nền tảng vững chắc để mở rộng phát triển các hệ thống kiểm soát an ninh thông minh và lớp học số trong tương lai.