Giới thiệu dự án
Trong bối cảnh chuyển đổi số giáo dục đại học (Higher Education Digital Transformation), quản lý chuyên cần đóng vai trò then chốt trong việc kiểm soát chất lượng đào tạo và đánh giá thái độ học tập của sinh viên. Các phương thức điểm danh truyền thống như gọi tên, ký danh giấy, quét thẻ RFID (Radio Frequency Identification) hay quét mã QR tĩnh bộc lộ nhiều lỗ hổng nghiêm trọng: tiêu tốn từ 10–15% thời lượng buổi học, tỷ lệ điểm danh hộ (proxy attendance) lên tới 15–20%, và quan trọng nhất là không thể giám sát sự hiện diện liên tục của người học trong suốt thời gian diễn ra lớp học.
Đề tài "Nghiên cứu, phát triển hệ thống điểm danh cho lớp học thông minh sử dụng công nghệ Bluetooth năng lượng thấp (BLE) và nhận diện gương mặt" được thực hiện bởi nhóm nghiên cứu tại Khoa Mạng máy tính và Truyền thông, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM. Dự án giải quyết triệt để bài toán xác thực sự hiện diện theo thời gian thực (Continuous Presence Verification) thông qua mô hình IoT đa phương thức (Multi-modal IoT System) kết hợp tính toán biên (Edge Computing) và xử lý luồng dữ liệu phân tán (Distributed Stream Processing).
+-----------------------------------------------------------------------------+
| MÔ HÌNH HỆ THỐNG ĐIỂM DANH TỰ ĐỘNG |
+-----------------------------------------------------------------------------+
| [Edge Nodes: Pi 4 + Jetson] ---> [Brokers: Kafka + MQTT] ---> [Server ML] |
| - Camera ghi hình liên tục - Kafka: Stream Face Crops - FaceNet |
| - BLE Station quét MAC - MQTT: Stream BLE Packets - SVM Model |
| | |
| [Web App (Flutter/Admin)] <--- [Spring Boot API + PostgreSQL] <----+ |
+-----------------------------------------------------------------------------+
Mục tiêu của dự án
- Thiết kế và triển khai mô hình phần cứng IoT tại biên: Bố trí mạng lưới camera trần góc rộng cùng trạm thu phát Bluetooth Low Energy (BLE Station) để thu thập liên tục dữ liệu thị giác và sóng vô tuyến trong phòng học.
- Xây dựng pipeline xử lý thị giác máy tính hai tầng (Two-Tier Computer Vision Pipeline): Phát hiện khuôn mặt tại biên bằng mô hình You Only Look Once (YOLOv5) tối ưu hóa TensorRT, truyền tải vector ảnh khuôn mặt đã cắt về máy chủ để trích xuất đặc trưng với FaceNet và phân loại danh tính bằng Support Vector Machine (SVM).
- Thiết kế kiến trúc truyền thông phân tán chịu tải cao: Tích hợp Apache Kafka và MQTT Broker để thu nạp và phân phối hàng nghìn bản tin hình ảnh và tín hiệu RSSI (Received Signal Strength Indication) theo thời gian thực.
- Đề xuất thuật toán hợp nhất dữ liệu đa nguồn (Multi-Source Data Fusion Algorithm): Xác định tỷ lệ tham gia lớp học thực tế ($T_{presence}$) dựa trên sự giao thoa giữa dữ liệu thị giác nhận diện và tín hiệu BLE broadcast từ smartphone của sinh viên.
- Phát triển hệ sinh thái ứng dụng hoàn chỉnh: Xây dựng Backend API Server trên nền tảng Spring Boot, cơ sở dữ liệu PostgreSQL, ứng dụng di động cho sinh viên và bảng điều khiển quản trị Web App bằng Flutter.
Phạm vi và giới hạn
- Phạm vi thử nghiệm: Triển khai thực tế tại phòng thực nghiệm mạng máy tính E3.1, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM.
- Giới hạn kỹ thuật: Hệ thống xử lý tối ưu với góc nghiêng khuôn mặt (yaw/pitch) trong khoảng $\pm 45^\circ$, khoảng cách nhận diện từ camera trần đến bàn học từ 1.0m đến 6.0m, và hỗ trợ các thiết bị smartphone bật Bluetooth Low Energy.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Phương pháp điểm danh |
Ưu điểm |
Nhược điểm & Lỗ hổng |
Thời gian tiêu tốn |
Độ chính xác |
| Gọi tên / Ký danh |
Đơn giản, không tốn chi phí đầu tư thiết bị |
Dễ điểm danh hộ, gián đoạn bài giảng, dữ liệu giấy khó tổng hợp |
10 - 15 phút / buổi |
60 - 70% |
| Thẻ từ RFID |
Tốc độ quét nhanh (< 1s/người) |
Sinh viên quẹt thẻ giúp nhau, không kiểm soát được việc rời lớp sớm |
3 - 5 phút (xếp hàng) |
75% |
| Quét mã QR động / Web |
Triển khai nhanh trên điện thoại |
Chia sẻ ảnh chụp mã QR ra bên ngoài lớp học |
2 - 3 phút |
80% |
| Nhận diện khuôn mặt độc lập (Kiosk) |
Xác thực sinh trắc học chính xác |
Ùn tắc tại cửa ra vào, chỉ điểm danh tại một thời điểm check-in |
5 - 10 phút (xếp hàng) |
85 - 90% |
| Giải pháp đề xuất (YOLOv5 + BLE + Kafka) |
Tự động hóa 100%, phi tiếp xúc, theo dõi liên tục, xác thực 2 lớp |
Cần hạ tầng máy tính nhúng và hệ thống camera cố định |
0 phút (Hoàn toàn ngầm) |
> 98% |
Ma trận yêu cầu hệ thống theo mô hình MoSCoW
- Must-have (Bắt buộc):
- Tự động nhận diện danh tính sinh viên từ luồng video camera trong phòng học với độ trễ dưới 2 giây.
- Quét và ghi nhận định danh Bluetooth MAC/UUID của thiết bị di động trong bán kính lớp học.
- Xử lý phân luồng dữ liệu truyền phát liên tục bằng Kafka Broker mà không gây tràn bộ đệm tại biên.
- Tính toán tổng thời gian hiện diện thực tế $T_{active}$ so với tổng thời lượng phiên học $T_{total}$.
- Should-have (Nên có):
- Tối ưu hóa mô hình AI tại thiết bị biên bằng NVIDIA TensorRT để đạt tốc độ xử lý trên 20 FPS.
- Cơ chế tự động lập lịch phiên điểm danh thông qua
crontab đồng bộ từ RESTful API Server.
- Giao diện tra cứu lịch sử chuyên cần chi tiết theo từng mốc 5 phút cho sinh viên.
- Could-have (Có thể có):
- Tích hợp mạng sinh ảnh đối kháng siêu phân giải (SRGAN) để phục hồi khuôn mặt mờ ở khoảng cách xa (> 6m).
- Tự động gửi cảnh báo qua email/thông báo đẩy khi sinh viên vắng mặt quá 30% thời lượng môn học.
- Won't-have (Chưa thực hiện):
- Tự động nhận diện hành vi sinh viên (ngủ gật, sử dụng điện thoại) bằng skeleton tracking.
Thiết kế kiến trúc hệ thống
Kiến trúc giải pháp được thiết kế theo mô hình 4 tầng phân tán:
graph TD
subgraph Edge Layer [Tầng Thiết Bị Biên - IoT Edge]
CAM[USB Wide-Angle Camera] -->|Video Stream| RPI[Raspberry Pi 4 / Jetson Nano]
RPI -->|YOLOv5 Inference| DET[Face Detection & Crop]
BLE_STATION[ESP32 / Jetson BLE Module] -->|BLE Passive Scan| SCAN[Bluetooth MAC Collector]
end
subgraph Transport Layer [Tầng Truyền Tải Phân Tán]
DET -->|Protobuf/JSON Frames| KAFKA[Apache Kafka Cluster: Topics per Class]
SCAN -->|JSON Payload| MQTT[Eclipse Mosquitto MQTT Broker]
end
subgraph Processing Layer [Tầng Xử Lý Trung Tâm - Backend Worker]
KAFKA -->|Kafka Consumer Group| PROC_CV[Process 1: FaceNet Embedding + SVM Classifier]
MQTT -->|MQTT Subscriber| PROC_BLE[Process 2: BLE RSSI Filtering & MAC Matching]
PROC_CV & PROC_BLE -->|Time-Window Aggregator| FUSION[Multi-Source Presence Fusion Engine]
end
subgraph Storage & Application Layer [Tầng Lưu Trữ & Ứng Dụng]
FUSION -->|Batch Write| DB[(PostgreSQL 15)]
API[Spring Boot 3.x REST API Server] <-->|Spring Data JPA| DB
ADMIN[Web Admin Portal - Flutter Web] <-->|HTTPS/WSS| API
STUDENT[Mobile App - Flutter Android/iOS] <-->|HTTPS/JWT| API
end
Danh mục công nghệ và phiên bản triển khai
- AI/Computer Vision Frameworks: PyTorch v2.1.0, CUDA Toolkit v11.8, TensorRT v8.6.1, OpenCV v4.8.0.
- Mô hình học sâu: YOLOv5s (Ultralytics v7.0), FaceNet Inception-ResNet-v1 (Pre-trained on VGGFace2 & LFW), Support Vector Classifier (Scikit-Learn v1.3.0).
- Hạ tầng truyền thông: Apache Kafka v3.5.1 (Confluent Platform), Eclipse Mosquitto MQTT Broker v2.0.18.
- Hệ thống Backend: Java 17 LTS, Spring Boot v3.1.5, Spring Security + JWT, Hibernate ORM.
- Cơ sở dữ liệu: PostgreSQL v15.4 (Hỗ trợ cấu trúc lưu trữ
JSONB cho raw detection logs và indexing đa cột).
- Frontend / Client: Flutter SDK v3.16.0 (Dart v3.2.0) cho cả nền tảng Mobile (Android/iOS) và Web Dashboard.
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu PostgreSQL được chuẩn hóa tối ưu cho việc truy vấn log chuỗi thời gian (Time-series log analysis):
-- Bảng tài khoản sinh viên và giảng viên
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
student_code VARCHAR(20) UNIQUE NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(20) DEFAULT 'ROLE_STUDENT',
ble_mac_address VARCHAR(17) UNIQUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Bảng thông tin buổi học
CREATE TABLE classroom_sessions (
id BIGSERIAL PRIMARY KEY,
subject_code VARCHAR(30) NOT NULL,
room_name VARCHAR(50) NOT NULL,
start_time TIMESTAMP WITH TIME ZONE NOT NULL,
end_time TIMESTAMP WITH TIME ZONE NOT NULL,
kafka_topic VARCHAR(100) NOT NULL,
status VARCHAR(20) DEFAULT 'SCHEDULED'
);
-- Bảng log điểm danh định kỳ (ghi nhận mỗi epoch 30 giây)
CREATE TABLE attendance_check_logs (
id BIGSERIAL PRIMARY KEY,
session_id BIGINT REFERENCES classroom_sessions(id) ON DELETE CASCADE,
user_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
face_verified BOOLEAN DEFAULT FALSE,
ble_verified BOOLEAN DEFAULT FALSE,
confidence_score FLOAT DEFAULT 0.0,
camera_id VARCHAR(50)
);
CREATE INDEX idx_session_user_time ON attendance_check_logs(session_id, user_id, timestamp);
Implementation và kết quả
Quy trình phát triển và thuật toán cốt lõi
1. Phát hiện khuôn mặt tại biên (Face Detection at Edge)
Hệ thống sử dụng mô hình YOLOv5s được huấn luyện lại trên tập dữ liệu kết hợp FDDB (Face Detection Dataset and Benchmark) và 3,500 ảnh chụp thực tế tại phòng học với các điều kiện che khuất, đeo khẩu trang và góc nhìn xiên. Mô hình sau đó được xuất (export) sang định dạng ONNX và biên dịch thành tệp thực thi tối ưu TensorRT Engine chạy trực tiếp trên máy tính nhúng NVIDIA Jetson Nano / Raspberry Pi 4.
Hàm tính toán chỉ số Intersection over Union (IoU) và lọc Non-Maximum Suppression (NMS):
$$\text{IoU} = \frac{\text{Area}(\mathcal{B}{pred} \cap \mathcal{B}{gt})}{\text{Area}(\mathcal{B}{pred} \cup \mathcal{B}{gt})}$$
2. Trích xuất đặc trưng với FaceNet & Phân loại với SVM
Các khuôn mặt sau khi cắt (crop) từ luồng video được chuẩn hóa về kích thước $160 \times 160 \times 3$, cân bằng độ sáng và truyền qua mạng Inception-ResNet-v1 để tạo ra vector nhúng 128 chiều (128-dimensional embedding vector). Mạng được huấn luyện dựa trên hàm mất mát Triplet Loss:
$$\mathcal{L}(A, P, N) = \max \left( |f(A) - f(P)|_2^2 - |f(A) - f(N)|_2^2 + \alpha, 0 \right)$$
Trong đó $A$ (Anchor) là ảnh gốc, $P$ (Positive) là ảnh cùng đối tượng, $N$ (Negative) là ảnh đối tượng khác, và $\alpha = 0.2$ là biên an toàn (margin).
Sau khi thu được vector $e \in \mathbb{R}^{128}$, mô hình Support Vector Machine (SVM) với hàm nhân RBF (Radial Basis Function) thực hiện phân loại đa lớp để gán định danh sinh viên $y_i \in {1, \dots, C}$:
$$K(\mathbf{x}, \mathbf{x}') = \exp\left(-\gamma |\mathbf{x} - \mathbf{x}'|^2\right)$$
3. Pipeline thu thập và đóng gói dữ liệu tại Edge
Đoạn mã Python thực thi tại thiết bị biên quét tín hiệu BLE và đẩy dữ liệu lên MQTT Broker:
import time
import json
import paho.mqtt.client as mqtt
from bluepy.btle import Scanner, DefaultDelegate
class BLEScanDelegate(DefaultDelegate):
def __init__(self):
DefaultDelegate.__init__(self)
def run_ble_station(broker_ip, broker_port, topic_name, room_id):
client = mqtt.Client(client_id=f"BLE_Station_{room_id}")
client.connect(broker_ip, broker_port, 60)
scanner = Scanner().withDelegate(BLEScanDelegate())
while True:
devices = scanner.scan(5.0) # Scan window 5 seconds
scanned_payload = {
"room_id": room_id,
"timestamp": int(time.time()),
"devices": []
}
for dev in devices:
scanned_payload["devices"].append({
"mac": dev.addr.upper(),
"rssi": dev.rssi
})
payload_str = json.dumps(scanned_payload)
client.publish(topic_name, payload_str, qos=1)
time.sleep(10) # Chu kỳ quét lặp lại
if __name__ == "__main__":
run_ble_station("192.168.1.100", 1883, "classroom/E3.1/ble", "E3.1")
Đoạn mã phía Server tiếp nhận ảnh từ Kafka, trích xuất đặc trưng và xác thực danh tính:
import json
import numpy as np
import cv2
from kafka import KafkaConsumer
from facenet_pytorch import InceptionResnetV1
import joblib
import torch
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
resnet = InceptionResnetV1(pretrained='vggface2').eval().to(device)
svm_classifier = joblib.load('models/svm_face_classifier.pkl')
consumer = KafkaConsumer(
'class_session_e31',
bootstrap_servers=['localhost:9092'],
auto_offset_reset='latest',
value_deserializer=lambda x: json.loads(x.decode('utf-8'))
)
def extract_embedding(face_img_array):
img = cv2.resize(face_img_array, (160, 160))
img = img.transpose((2, 0, 1)).astype(np.float32) / 255.0
tensor = torch.tensor(img).unsqueeze(0).to(device)
with torch.no_grad():
embedding = resnet(tensor).cpu().numpy()
return embedding
for message in consumer:
record = message.value
raw_img = np.array(record['cropped_face_bytes'], dtype=np.uint8)
face_crop = cv2.imdecode(raw_img, cv2.IMREAD_COLOR)
emb = extract_embedding(face_crop)
probabilities = svm_classifier.predict_proba(emb)[0]
best_class_idx = np.argmax(probabilities)
confidence = probabilities[best_class_idx]
if confidence >= 0.85:
student_id = svm_classifier.classes_[best_class_idx]
print(f"Xác nhận sinh viên {student_id} với độ tin cậy {confidence:.4f}")
# Lưu bản ghi xác nhận vào Database
Đánh giá thực nghiệm và kết quả đo lường
Hệ thống được kiểm thử thực tế với 45 sinh viên trong buổi học kéo dài 90 phút tại phòng E3.1. Các chỉ số được đo lường chi tiết:
1. Hiệu năng mô hình phát hiện khuôn mặt (Face Detection)
| Mô hình kiểm thử |
Phần cứng |
Độ phân giải |
mAP@0.5 (%) |
FPS trung bình |
Công suất tiêu thụ (W) |
| Haar Cascade |
Raspberry Pi 4 |
1080p |
64.2% |
12.4 |
4.8W |
| MTCNN |
Jetson Nano |
1080p |
89.5% |
4.2 |
8.5W |
| SSD-MobileNetV2 |
Jetson Nano |
720p |
88.1% |
18.6 |
7.9W |
| YOLOv5s (PyTorch) |
Jetson Nano |
1080p |
94.8% |
11.5 |
9.2W |
| YOLOv5s (TensorRT FP16) |
Jetson Nano |
1080p |
94.6% |
23.8 |
7.4W |
2. Độ chính xác nhận diện theo khoảng cách và góc nhìn
| Khoảng cách từ Camera |
Góc nhìn trực diện ($0^\circ$) |
Góc xiên $30^\circ$ |
Góc xiên $45^\circ$ |
Đeo khẩu trang / Kính |
| 1.0m - 2.5m |
99.4% |
98.2% |
95.7% |
92.1% |
| 2.5m - 4.5m |
98.1% |
96.5% |
92.3% |
88.4% |
| 4.5m - 6.0m |
93.5% |
89.8% |
84.2% |
76.8% |
3. Ma trận đánh giá thuật toán tích hợp (Multi-Modal Fusion Evaluation)
Hệ thống chia thời gian buổi học 90 phút thành 180 cửa sổ thời gian (epoch 30s). Sinh viên được tính là có mặt trong 1 epoch nếu:
- Điều kiện 1: Nhận diện thành công khuôn mặt (Camera Verification = True).
- Điều kiện 2: Hoặc tín hiệu BLE xuất hiện với $\text{RSSI} \ge -85 \text{ dBm}$ trong trường hợp sinh viên cúi đầu viết bài hoặc bị camera che khuất tạm thời.
Kết quả thực nghiệm cho thấy:
- Tỷ lệ nhận diện đúng (True Positive Rate): Đạt 98.67%.
- Tỷ lệ nhận diện nhầm (False Positive Rate): Giảm xuống 0.22% (nhờ cơ chế kiểm tra chéo BLE MAC đã đăng ký).
- Phát hiện sinh viên ra ngoài lớp học: Xác định chính xác 100% các trường hợp sinh viên rời phòng học quá 15 phút.
Đổi mới và đóng góp
- Kiến trúc xác thực sinh trắc kết hợp vô tuyến hai lớp (Dual-Factor Ambient Verification): Khắc phục điểm yếu chí mạng của hệ thống nhận diện khuôn mặt đơn thuần (dễ bị che khuất, phụ thuộc ánh sáng) bằng cách bổ sung sóng Bluetooth Low Energy làm lớp kiểm chứng phụ trợ không gián đoạn.
- Quy trình xử lý phân tán Edge-Cloud tối ưu: Đẩy công đoạn xử lý nặng về tính toán không gian (Bounding Box Regression) xuống biên với TensorRT trên Jetson Nano, trong khi tập trung tác vụ phân loại danh tính và quản lý dữ liệu lớn lên Kafka Cluster và Cloud Server, giúp giảm 78% băng thông mạng truyền tải so với việc stream raw video trực tiếp lên máy chủ.
- Mô hình tính điểm chuyên cần theo chuỗi thời gian liên tục: Thay đổi hoàn toàn tư duy điểm danh "một chạm" (single point in time) sang đánh giá tỷ lệ thời gian tham gia thực tế ($T_{active} / T_{total} \times 100%$), loại bỏ triệt để hành vi sinh viên có mặt đầu giờ rồi bỏ tiết.
Ứng dụng thực tế và triển khai
Kịch bản vận hành thực tế tại giảng đường
[Giảng viên mở lớp trên Web Dashboard]
│
▼
[Hệ thống tự động kích hoạt Kafka Topic & Lập lịch Edge Nodes qua MQTT]
│
▼
[Trong suốt 90 phút: Camera + BLE Scanner thu thập dữ liệu ngầm không làm phiền lớp học]
│
▼
[Giờ giải lao: Sinh viên ra ngoài -> Log ghi nhận trạng thái rời lớp tạm thời]
│
▼
[Kết thúc buổi học: Server tự động đóng Topic, tổng hợp % chuyên cần và gửi báo cáo]
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)
- Chi phí phần cứng cho 1 phòng học 60 sinh viên:
- 02 Camera góc rộng 1080p: $2 \times 450,000 \text{ VNĐ} = 900,000 \text{ VNĐ}$.
- 01 Máy tính nhúng NVIDIA Jetson Nano 4GB: $2,800,000 \text{ VNĐ}$.
- 02 Module ESP32 BLE Station: $2 \times 120,000 \text{ VNĐ} = 240,000 \text{ VNĐ}$.
- Phụ kiện, nguồn, dây dẫn: $500,000 \text{ VNĐ}$.
- Tổng chi phí phần cứng: $\approx 4,440,000 \text{ VNĐ}$ / phòng học.
- Hiệu quả thu lại (ROI):
- Tiết kiệm 10 phút/buổi học $\times$ 4 ca/ngày = 40 phút giảng dạy hữu ích mỗi ngày trên một phòng học.
- Loại bỏ hoàn toàn chi phí in ấn biểu mẫu giấy và thời gian nhập liệu thủ công của phòng đào tạo (ước tính tiết kiệm 120 giờ làm việc/kỳ/khoa).
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Cơ chế xoay địa chỉ MAC ngẫu nhiên (MAC Randomization): Một số hệ điều hành di động mới (iOS 14+, Android 10+) tự động thay đổi địa chỉ MAC khi ở chế độ quét, yêu cầu sinh viên phải cài đặt ứng dụng Flutter đồng hành để phát gói tin BLE Advertisement chứa UUID định danh riêng.
- Hiện tượng che khuất nghiêm trọng (Severe Occlusion): Trong các giảng đường bậc thang có mật độ sinh viên quá dày đặc, sinh viên ngồi hàng sau có thể bị che khuất một phần khuôn mặt bởi hàng ghế trước nếu camera đặt ở góc chưa đủ cao.
Hướng phát triển tiếp theo
- Tích hợp mô hình chống giả mạo khuôn mặt (Face Anti-Spoofing & Liveness Detection): Áp dụng mạng MiniFASNet để ngăn chặn hoàn toàn việc sử dụng hình ảnh hoặc video phát lại trên máy tính bảng để qua mặt camera.
- Ứng dụng mô hình nén mạng thần kinh sâu (Deep Compression / Pruning): Tinh gọn mô hình FaceNet để thực thi trích xuất vector đặc trưng trực tiếp tại chip biên NPU (Neural Processing Unit).
Đối tượng hưởng lợi
- Sinh viên: Không cần xếp hàng chờ đợi điểm danh; theo dõi minh bạch thời lượng tham gia lớp học và lịch sử chuyên cần trực tiếp trên ứng dụng di động cá nhân.
- Giảng viên: Tối ưu hóa 100% thời lượng bài giảng; nhận danh sách thống kê sinh viên vắng mặt hoặc đi muộn theo thời gian thực mà không cần thao tác thủ công.
- Nhà trường & Quản trị viên: Số hóa toàn diện dữ liệu đào tạo; dễ dàng phát hiện sinh viên có nguy cơ bỏ học thông qua biểu đồ phân tích dữ liệu chuyên cần tập trung.
- Cộng đồng nghiên cứu & Lập trình viên: Cung cấp một kiến trúc tham chiếu mẫu (Reference Architecture) hoàn chỉnh về việc kết hợp Edge AI, Message Broker phân tán (Kafka/MQTT) và hệ sinh thái Spring Boot / Flutter.
Câu hỏi thường gặp
1. Hệ thống yêu cầu cấu hình máy chủ và thiết bị biên tối thiểu như thế nào?
Tại phòng học, hệ thống yêu cầu tối thiểu 01 máy tính nhúng NVIDIA Jetson Nano (hoặc Raspberry Pi 4 Model B 4GB/8GB) kết nối camera USB Full HD 1080p và 01 trạm thu BLE (ESP32 hoặc BLE tích hợp). Phía máy chủ Backend yêu cầu tối thiểu 4 vCPU, 8GB RAM, hỗ trợ GPU NVIDIA (GTX 1650 hoặc cao hơn) để phục vụ tác vụ trích xuất vector đặc trưng FaceNet đa luồng.
2. Hệ thống xử lý thế nào khi mạng Internet của phòng học bị mất kết nối?
Thiết bị biên được thiết kế với bộ đệm cục bộ (Local Circular Buffer). Khi mất kết nối đến Kafka/MQTT Broker, dữ liệu hình ảnh khuôn mặt đã cắt và log BLE sẽ được tạm lưu vào thẻ nhớ microSD tại biên và tự động đẩy dồn (backpressure sync) về máy chủ ngay khi kết nối mạng được khôi phục.
3. Làm thế nào để giải quyết vấn đề địa chỉ MAC Bluetooth bị thay đổi ngẫu nhiên trên smartphone?
Hệ thống sử dụng ứng dụng di động Flutter đồng hành dành cho sinh viên. Khi sinh viên đăng nhập, ứng dụng sẽ chạy một tiến trình ngầm phát tín hiệu BLE Advertiser với trường dữ liệu tùy biến (Custom Manufacturer Data) chứa mã token phiên học đã được mã hóa bằng thuật toán HMAC-SHA256, giúp BLE Station nhận diện chính xác danh tính sinh viên bất kể địa chỉ MAC phần cứng bị ẩn.
4. Chi phí bảo trì và vận hành hệ thống hàng tháng là bao nhiêu?
Hệ thống tận dụng hoàn toàn các công nghệ mã nguồn mở (PostgreSQL, Apache Kafka, Mosquitto, Spring Boot, PyTorch), do đó không tốn chi phí bản quyền phần mềm định kỳ. Chi phí vận hành chỉ bao gồm điện năng tiêu thụ cho thiết bị biên (< 15W/phòng) và chi phí duy trì hạ tầng máy chủ Cloud/VPS (ước tính từ 500,000 – 1,500,000 VNĐ/tháng cho quy mô 20 phòng học).
5. Dữ liệu hình ảnh sinh viên có được bảo mật và tuân thủ quyền riêng tư không?
Hệ thống chỉ lưu trữ vĩnh viễn vector số học 128 chiều đại diện cho đặc trưng khuôn mặt (Embeddings). Hình ảnh khuôn mặt cắt từ luồng video sau khi được trích xuất thành vector tại Server sẽ tự động bị xóa khỏi bộ đệm Kafka sau 24 giờ, đảm bảo tuân thủ nghiêm ngặt các quy định về bảo vệ dữ liệu cá nhân.
Kết luận
Đồ án tốt nghiệp "Nghiên cứu, phát triển hệ thống điểm danh cho lớp học thông minh sử dụng công nghệ Bluetooth năng lượng thấp và nhận diện gương 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 giáo dục đại học. Bằng việc kết hợp sáng tạo giữa mô hình học sâu đơn giai đoạn YOLOv5 tại biên, mạng trích xuất đặc trưng FaceNet cùng bộ phân loại SVM tại máy chủ, và sóng vô tuyến Bluetooth Low Energy làm lớp kiểm chứng độc lập, hệ thống đạt độ chính xác 98.67% trong môi trường thực nghiệm lớp học.
Giải pháp không chỉ mang lại giá trị công nghệ cao trong việc ứng dụng AI và IoT vào trường học thông minh (Smart Campus), mà còn tối ưu hóa thời gian giảng dạy, nâng cao tính minh bạch và cung cấp một nền tảng mở cho các nghiên cứu tiếp theo về phân tích hành vi người học trong kỷ nguyên giáo dục 4.0.