Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số ngành giáo dục mầm non, việc ứng dụng các giải pháp công nghệ thông tin nhằm tối ưu hóa quy trình quản trị trường học đóng vai trò then chốt. Theo các khảo sát thực tế tại các trường mầm non khu vực TP. Hồ Chí Minh (như Mầm non Vàng Anh - 500 trẻ, Mầm non Hoa Hồng - 160 trẻ, Mầm non Sơn Ca - 270 trẻ), công tác quản lý hiện diện và tài chính bán trú đang đối mặt với nhiều bất cập lớn:

  • Tốn kém thời gian và nhân lực: Phương pháp điểm danh truyền thống (gọi tên, sổ tay, thẻ giấy/thẻ từ RFID) tiêu tốn từ 15–20 phút mỗi buổi sáng cho một lớp 30–35 học sinh, làm gián đoạn thời gian ổn định đầu giờ của giáo viên.
  • Sai lệch dữ liệu bán trú và tính toán học phí: Việc tổng hợp số ngày vắng học để khấu trừ tiền ăn vào cuối tháng thực hiện hoàn toàn thủ công trên Excel, dẫn đến tỷ lệ sai sót từ 5–8% và gây áp lực lớn lên bộ phận kế toán.
  • Thiếu tính minh bạch và cảnh báo tức thời: Phụ huynh khó nắm bắt chính xác thời điểm con em vào lớp, tiềm ẩn nguy cơ về an toàn và bảo đảm sĩ số.
+-----------------------------------------------------------------------------------+
| THỰC TRẠNG QUẢN LÝ MẦM NON TRUYỀN THỐNG                                           |
|                                                                                   |
| GIẢI PHÁP ĐỀ XUẤT (SMART KINDERGARTEN SYSTEM)                                     |
|   (Nhận diện <200ms)    (Trích xuất 512D Vector)     (Tự động hóa đơn & Email)    |
+-----------------------------------------------------------------------------------+

Mục tiêu đề tài

  1. Xây dựng module nhận diện khuôn mặt cục bộ trên thiết bị di động (On-device Edge AI) với độ chính xác cao nhằm tự động hóa quy trình điểm danh học sinh.
  2. Thiết kế và phát triển hệ thống Web Application tập trung phục vụ toàn diện công tác quản trị: Quản lý học sinh, giáo viên, nhân viên, thực đơn dinh dưỡng và phân quyền theo vai trò (Role-Based Access Control - RBAC).
  3. Xây dựng cơ chế tự động hóa quy trình tài chính: Tính toán tiền ăn dựa trên dữ liệu điểm danh thực tế, tự động sinh hóa đơn học phí định kỳ qua Laravel Scheduler (Cronjob) và gửi thông báo thanh toán qua Email đến phụ huynh.
  4. Triển khai và đánh giá hiệu năng hệ thống trên môi trường máy chủ đám mây thực tế.

Phương pháp tiếp cận và Phạm vi

Hệ thống kết hợp mô hình điện toán biên di động (Edge Computing on Android) để xử lý ảnh khuôn mặt thời gian thực nhằm đảm bảo tốc độ và giảm tải băng thông cho server, cùng kiến trúc Web API hướng dịch vụ (RESTful API) trên nền tảng Laravel và Vue.js.

Phạm vi áp dụng: Áp dụng cho các cơ sở giáo dục mầm non quy mô từ 100 đến 600 học sinh, vận hành trên thiết bị di động của giáo viên và trình duyệt web quản trị của nhà trường.


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 Chi phí vận hành
Sổ tay truyền thống Đơn giản, không phụ thuộc hạ tầng Tốn thời gian, dễ nhầm lẫn, khó tổng hợp Thấp (nhưng tốn nhân công)
Thẻ từ RFID / Quét mã QR Tương đối nhanh, có lưu log Trẻ nhỏ dễ làm mất thẻ/mã, tốn chi phí in ấn Trung bình
Nhận diện khuôn mặt (Đề xuất) Tự động, không chạm (Touchless), chính xác cao, chống gian lận Cần thuật toán tối ưu trên thiết bị di động Tiết kiệm chi phí phần cứng

So với các giải pháp thương mại quốc tế như Kindertales hay Brightwheel, hệ thống đề xuất tập trung giải quyết bài toán đặc thù của trường mầm non Việt Nam: đồng bộ tự động giữa lịch sử điểm danh thực tế với công thức hoàn tiền ăn bán trú theo quy định, đồng thời hỗ trợ giao diện tiếng Việt và phân quyền 4 nhóm đối tượng độc lập.

Ma trận ưu tiên yêu cầu hệ thống (MoSCoW):

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc đa lớp (Multi-tier Architecture), tách biệt giữa tầng hiển thị (Presentation Layer), tầng xử lý nghiệp vụ (Business Logic Layer) và tầng dữ liệu (Data Access Layer).

graph TD
    subgraph "Client Layer"
        A1[Android Mobile App - Java]
        A2[Web Browser - Vue.js SPA]
    end

    subgraph "Edge AI Processing (Mobile)"
        B1[Camera Frame Stream]
        B2[Google ML Kit Face Detection]
        B3[TensorFlow Lite FaceNet - 512D Vector]
        B1 --> B2 --> B3
    end
    A1 <--> B1

    subgraph "Application Gateway / Server (Plesk Hosting)"
        C1[Nginx / Apache Web Server]
        C2[Laravel 10 RESTful API]
        C3[Task Scheduler / Cronjob Engine]
        C4[Mail Service - SMTP]
        C1 --> C2
        C2 <--> C3
        C2 --> C4
    end

    subgraph "Database Layer"
        D1[(MySQL Database)]
    end

    A1 -- HTTPS / JSON API --> C1
    A2 -- HTTPS / JSON API --> C1
    B3 -- Euclidean Distance & Sync ID --> C1
    C2 <--> D1

Công nghệ và Phiên bản sử dụng

  • Mobile Client: Java Android SDK 33+, Google ML Kit Vision Face Detection (com.google.android.gms:play-services-mlkit-face-detection:17.1.0), TensorFlow Lite (org.tensorflow:tensorflow-lite:2.14.0).
  • Web Frontend: Vue.js 3.x, HTML5/CSS3, Axios Client, Bootstrap/Admin Dashboard UI.
  • Web Backend: Laravel Framework 10.x, PHP 8.2+, Composer.
  • Database: MySQL 5.5 / 8.0 với mô hình quan hệ chuẩn hóa 3NF.
  • Hạ tầng triển khai: Plesk Web Admin, DigitalOcean Droplet, Vietnix DNS, Giao thức bảo mật SSL/TLS (HTTPS).

Thiết kế Cơ sở dữ liệu trọng tâm

Cơ sở dữ liệu gồm 20+ bảng quan hệ. Dưới đây là lược đồ cấu trúc các bảng cốt lõi liên quan đến xác thực sinh trắc học và tài chính:

-- Bảng lưu trữ thông tin học sinh và embedding khuôn mặt
CREATE TABLE `students` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `code` VARCHAR(20) UNIQUE NOT NULL,
  `full_name` VARCHAR(255) NOT NULL,
  `dob` DATE NOT NULL,
  `gender` ENUM('male', 'female') NOT NULL,
  `face_embedding` LONGTEXT NULL COMMENT 'Chuỗi JSON chứa 512-dimension vector',
  `is_registered_face` TINYINT(1) DEFAULT 0,
  `class_id` BIGINT UNSIGNED NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng ghi nhận lịch sử điểm danh hàng ngày
CREATE TABLE `attendances` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `student_id` BIGINT UNSIGNED NOT NULL,
  `attendance_date` DATE NOT NULL,
  `check_in_time` TIME NOT NULL,
  `status` ENUM('present', 'absent', 'late') DEFAULT 'present',
  `recorded_by` BIGINT UNSIGNED NOT NULL COMMENT 'User ID của giáo viên điểm danh',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY `student_daily_unique` (`student_id`, `attendance_date`),
  FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý hóa đơn tự động tính tiền ăn
CREATE TABLE `invoices` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `invoice_code` VARCHAR(50) UNIQUE NOT NULL,
  `student_id` BIGINT UNSIGNED NOT NULL,
  `month` INT NOT NULL,
  `year` INT NOT NULL,
  `base_tuition` DECIMAL(12,2) NOT NULL,
  `meal_fee_total` DECIMAL(12,2) NOT NULL,
  `meal_fee_deduction` DECIMAL(12,2) DEFAULT 0.00 COMMENT 'Tiền ăn hoàn trả từ số ngày vắng tháng trước',
  `total_amount` DECIMAL(12,2) NOT NULL,
  `status` ENUM('unpaid', 'paid', 'cancelled') DEFAULT 'unpaid',
  FOREIGN KEY (`student_id`) REFERENCES `students`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế RESTful API

Hệ thống cung cấp hệ thống endpoint đồng bộ dữ liệu chuẩn hóa:

  • POST /api/v1/auth/login: Xác thực người dùng và cấp phát Bearer Token.
  • GET /api/v1/students/class/{classId}: Trích xuất danh sách học sinh kèm trạng thái khuôn mặt.
  • POST /api/v1/students/{id}/register-face: Cập nhật vector embedding 512 chiều lên server.
  • POST /api/v1/attendance/check-in: Ghi nhận dữ liệu điểm danh xác thực thành công.
  • POST /api/v1/invoices/generate-monthly: Kích hoạt tiến trình tạo hóa đơn hàng loạt.

Implementation và kết quả

Development Process & Key Algorithms

Hệ thống được hiện thực hóa qua quy trình phát triển 5 giai đoạn (Tháng 2/2024 – Tháng 7/2024): Khảo sát & Phân tích $\rightarrow$ Thiết kế DB & Kiến trúc $\rightarrow$ Xây dựng Core Web & Mobile App $\rightarrow$ Tích hợp Edge AI & Cronjob $\rightarrow$ Kiểm thử & Triển khai Plesk.

1. Quy trình xử lý nhận diện khuôn mặt trên Android

Ứng dụng sử dụng mô hình kết hợp 2 giai đoạn:

  • Giai đoạn 1 (Phát hiện): Sử dụng Google ML Kit FaceDetector để phát hiện sự hiện diện của khuôn mặt trong ImageReader frame camera, xác định bounding box và kiểm tra chất lượng hình ảnh (landmarks: mắt, mũi, miệng).
  • Giai đoạn 2 (Nhận diện): Vùng ảnh khuôn mặt được cắt (crop), chuyển đổi kích thước chuẩn $160 \times 160$ pixel dạng Bitmap RGB, nạp vào ByteBuffer và đưa qua mô hình facenet.tflite để sinh ra vector đặc trưng 512 chiều:
// Đoạn trích nạp ảnh vào Tensor TFLite và trích xuất vector embedding 512 chiều
private float[][] runFaceNetInference(Bitmap bitmap) {
    Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, 160, 160, true);
    ByteBuffer imgData = ByteBuffer.allocateDirect(1 * 160 * 160 * 3 * 4);
    imgData.order(ByteOrder.nativeOrder());
    imgData.rewind();

    int[] intValues = new int[160 * 160];
    resizedBitmap.getPixels(intValues, 0, resizedBitmap.getWidth(), 0, 0, 
                             resizedBitmap.getWidth(), resizedBitmap.getHeight());

    for (int i = 0; i < 160; ++i) {
        for (int j = 0; j < 160; ++j) {
            int pixelValue = intValues[i * 160 + j];
            // Chuẩn hóa pixel về dải [-1, 1] hoặc [0, 1] cho FaceNet
            imgData.putFloat((((pixelValue >> 16) & 0xFF) - 127.5f) / 127.5f);
            imgData.putFloat((((pixelValue >> 8) & 0xFF) - 127.5f) / 127.5f);
            imgData.putFloat(((pixelValue & 0xFF) - 127.5f) / 127.5f);
        }
    }

    float[][] embeddings = new float[1][512];
    tfliteInterpreter.run(imgData, embeddings);
    return embeddings;
}
  • Giai đoạn 3 (Đối khớp vector): Danh tính học sinh được xác định bằng cách tính khoảng cách Euclidean ($L_2$ Distance) giữa vector thời gian thực $u$ và danh sách vector $v_k$ của học sinh đã đăng ký:

$$d(u, v_k) = \sqrt{\sum_{i=1}^{512} (u_i - v_{k,i})^2}$$

Nếu $\min_k d(u, v_k) < \theta$ (với ngưỡng thực nghiệm $\theta = 0.75$), hệ thống xác nhận nhận diện thành công học sinh $k$, hiển thị dialog thông báo 3 giây và gửi API điểm danh về máy chủ.

2. Thuật toán tự động tính tiền ăn và tạo hóa đơn (Backend)

Tiến trình lập lịch tự động (Cronjob) chạy vào 00:00 ngày đầu tiên mỗi tháng thông qua Laravel Artisan Command CreateInvoices:

// app/Console/Commands/CreateInvoices.php
public function handle()
{
    $previousMonth = Carbon::now()->subMonth()->month;
    $currentMonth = Carbon::now()->month;
    $year = Carbon::now()->year;
    
    $students = Student::where('status', 'active')->get();
    $dailyMealRate = Setting::get('daily_meal_rate', 35000); // 35.000 VNĐ/ngày
    $totalSchoolDaysLastMonth = 22; // Số ngày học chuẩn trong tháng

    foreach ($students as $student) {
        // Đếm số ngày có mặt thực tế tháng trước dựa trên bảng attendances
        $presentDays = Attendance::where('student_id', $student->id)
            ->whereMonth('attendance_date', $previousMonth)
            ->where('status', 'present')
            ->count();

        $absentDays = max(0, $totalSchoolDaysLastMonth - $presentDays);
        $mealDeduction = $absentDays * $dailyMealRate;

        // Tính tổng tiền tháng mới: Học phí cơ bản + Tiền ăn tháng này - Tiền ăn hoàn trả
        $baseTuition = $student->class->grade->tuition_fee;
        $currentMealFee = $totalSchoolDaysLastMonth * $dailyMealRate;
        $totalAmount = $baseTuition + $currentMealFee - $mealDeduction;

        $invoice = Invoice::create([
            'invoice_code' => 'INV-' . $year . $currentMonth . '-' . $student->code,
            'student_id'   => $student->id,
            'month'        => $currentMonth,
            'year'         => $year,
            'base_tuition' => $baseTuition,
            'meal_fee_total' => $currentMealFee,
            'meal_fee_deduction' => $mealDeduction,
            'total_amount' => $totalAmount,
            'status'       => 'unpaid'
        ]);

        // Kích hoạt Event gửi Email hóa đơn đến phụ huynh
        Mail::to($student->parent->email)->queue(new MonthlyInvoiceMail($invoice));
    }
}

Testing và Validation

Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box testing) và kiểm thử hiệu năng (Benchmark) trên thiết bị di động tầm trung (Xiaomi Redmi Note 11, chip Snapdragon 680, 4GB RAM) và máy chủ DigitalOcean:

Tham số kiểm thử Giá trị mục tiêu Kết quả thực nghiệm đạt được
Thời gian phát hiện mặt (ML Kit) $< 100\text{ ms}$ $45\text{ ms} - 65\text{ ms}$
Thời gian trích xuất vector (TFLite) $< 250\text{ ms}$ $110\text{ ms} - 145\text{ ms}$
Tổng thời gian nhận diện 1 học sinh $< 500\text{ ms}$ $210\text{ ms}$ (Hoàn toàn Realtime)
Tỷ lệ nhận diện đúng (Accuracy) $> 95%$ $96.8%$ (Trong điều kiện đủ sáng)
Tỷ lệ nhận sai (False Acceptance Rate - FAR) $< 2%$ $0.8%$ (Với ngưỡng $\theta = 0.75$)
Thời gian tạo 500 hóa đơn tự động $< 30\text{ giây}$ $4.2\text{ giây}$ (Tối ưu qua DB Transaction & Queue)

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

  1. Kiến trúc nhận diện phân tán tối ưu băng thông: Không truyền tải video streaming thô lên máy chủ web, hệ thống thực thi toàn bộ pipeline AI (Detection + FaceNet 512D) ngay tại thiết bị của giáo viên, chỉ gửi ID học sinh đã nhận diện về server. Giải pháp này giúp giảm tải hơn 98% dung lượng mạng so với kiến trúc Cloud AI truyền thống.
  2. Khép kín chu trình dữ liệu Điểm danh $\rightarrow$ Dinh dưỡng $\rightarrow$ Tài chính: Tự động hóa liên thông dữ liệu. Lần đầu tiên, số liệu điểm danh hàng ngày tự động trở thành tham số đầu vào cho công thức khấu trừ tiền ăn bán trú trong hóa đơn học phí của tháng kế tiếp, giúp cắt giảm 95% thời gian xử lý thủ công của nhân viên kế toán.
  3. Tùy biến phân quyền đa vai trò trực quan: Mô hình RBAC quản lý 4 nhóm tác nhân độc lập (Admin, Giáo viên, Kế toán, Đầu bếp) trên cùng một cơ sở dữ liệu tập trung, đảm bảo tính phân tách trách nhiệm và toàn vẹn dữ liệu.
+-----------------------------------------------------------------------------------+
| TỔNG HỢP HIỆU QUẢ CẢI TIẾN                                                        |
+-----------------------------------------------------------------------------------+

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

Kịch bản Triển khai (Deployment Architecture)

Hệ thống được đóng gói và triển khai thành công trên môi trường thực tế:

  • Hạ tầng: Virtual Private Server (DigitalOcean Droplet), chạy hệ điều hành Ubuntu 22.04 LTS, tích hợp bảng điều khiển Plesk Web Hosting.
  • Cấu hình máy chủ: Nginx Reverse Proxy kết hợp Apache, PHP 8.2-FPM với opcache tối ưu hóa, MySQL 8.0 với các chỉ mục (Indexes) trên các trường student_id, attendance_date, invoice_code.
  • Bảo mật: Giao thức HTTPS thông qua chứng chỉ số Let's Encrypt SSL, bảo vệ chống brute-force qua Fail2ban và xác thực API qua Sanctum Token.
Chi phí triển khai ước tính cho 1 trường quy mô 300 trẻ:

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

Hạn chế kỹ thuật

  • Điều kiện môi trường: Độ chính xác của FaceNet có xu hướng giảm khi góc nghiêng khuôn mặt vượt quá 30 độ hoặc trong môi trường ánh sáng quá yếu/ngược sáng gắt.
  • Đặc điểm sinh học trẻ em: Khuôn mặt trẻ em trong độ tuổi 2–5 tuổi thay đổi tương đối nhanh theo thời gian, đòi hỏi nhà trường phải cập nhật lại ảnh chân dung đăng ký định kỳ sau mỗi 6–12 tháng.
  • Phụ thuộc kết nối mạng cục bộ: Thiết bị di động cần kết nối Internet/WiFi để tải trước danh sách vector embedding về máy đầu buổi học.

Hướng phát triển

  • Tích hợp kỹ thuật Active Liveness Detection (chống giả mạo qua ảnh tĩnh/video).
  • Mở rộng ứng dụng di động riêng biệt cho phụ huynh (Parent Mobile App) tích hợp cổng thanh toán trực tuyến (VNPay, MoMo) và camera theo dõi hành trình xe đưa đón học sinh.
  • Nghiên cứu mô hình nén mạng lượng tử hóa (8-bit Quantized MobileFaceNet) nhằm rút ngắn thời gian xử lý vector xuống dưới 50ms trên các thiết bị cấu hình thấp.

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

  • Sinh viên / Người học: Cung cấp tài liệu tham khảo hoàn chỉnh về cách kết hợp giữa công nghệ AI trên thiết bị di động (Mobile Edge AI) với hệ thống quản trị Web quy mô lớn sử dụng Laravel và Vue.js.
  • Lập trình viên (Developers): Cung cấp các mẫu thiết kế (Design Patterns), cấu trúc dữ liệu lưu trữ vector sinh trắc học trong MySQL và giải pháp tích hợp mô hình TFLite vào vòng đời Activity/Fragment của Android.
  • Cơ sở giáo dục mầm non & Doanh nghiệp: Một giải pháp quản trị số hóa toàn diện, chi phí triển khai thấp, giảm thiểu thất thoát tài chính và nâng cao hình ảnh chuyên nghiệp trong mắt phụ huynh.
  • Nhà nghiên cứu (Researchers): Dữ liệu thực nghiệm về độ chính xác và thời gian đáp ứng của mô hình FaceNet đối với đối tượng trẻ em Việt Nam.

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

1. Yêu cầu phần cứng tối thiểu để triển khai ứng dụng điểm danh di động là gì?

Hệ thống yêu cầu thiết bị chạy hệ điều hành Android 8.0 (API Level 26) trở lên, RAM tối thiểu 3GB, camera trước độ phân giải tối thiểu 5.0 MP để đảm bảo trích xuất đặc trưng khuôn mặt chuẩn xác.

2. Dữ liệu vector khuôn mặt của học sinh có bị lộ ra ngoài nếu mất máy tính bảng?

Không. Hệ thống không lưu trữ ảnh gốc của học sinh trên thiết bị di động mà chỉ lưu trữ mảng vector nhúng 512 chiều (dạng mã hóa số thực). Vector này không thể tái tạo ngược lại thành hình ảnh khuôn mặt ban đầu, đảm bảo tuân thủ tiêu chuẩn an toàn dữ liệu sinh trắc học.

3. Nếu trường mất kết nối Internet đột ngột, việc điểm danh có bị gián đoạn không?

Quá trình nhận diện khuôn mặt diễn ra 100% Offline trên thiết bị di động (nhờ dữ liệu vector được nạp sẵn vào bộ nhớ RAM khi mở ứng dụng). Khi có mạng trở lại, ứng dụng sẽ tự động đồng bộ hàng đợi điểm danh về máy chủ trung tâm.

4. Hệ thống xử lý thế nào trong trường hợp trẻ sinh đôi có nét mặt giống nhau?

Hệ thống cho phép cấu hình nâng cao ngưỡng khoảng cách Euclidean ($\theta$) nghiêm ngặt hơn, hoặc giáo viên có thể thực hiện xác nhận thủ công kèm mã định danh riêng của từng học sinh ngay trên màn hình.

5. Chi phí bảo trì và nâng cấp hệ thống định kỳ bao gồm những gì?

Chi phí duy trì bao gồm phí thuê máy chủ đám mây (Cloud VPS) hàng tháng và chi phí duy trì tên miền hàng năm. Không phát sinh chi phí bản quyền AI do sử dụng các thư viện mã nguồn mở và on-device SDK hoàn toàn miễn phí.


Kết luận

Đồ án "Phát triển ứng dụng quản lý trường mẫu giáo hỗ trợ điểm danh bằng nhận diện khuôn mặt" đã giải quyết triệt để các rào cản trong công tác quản trị mầm non truyền thống thông qua việc kết hợp tinh tế giữa Edge AI và Web Architecture. Hệ thống không chỉ khẳng định tính khả thi vượt trội về mặt kỹ thuật (nhận diện chính xác 96.8% trong 210ms, tự động hóa 100% tiến trình lập hóa đơn) mà còn chứng minh giá trị thực tiễn cao trong việc giải phóng sức lao động cho giáo viên và tối ưu hóa chi phí vận hành cho nhà trường. Đây là bước đệm công nghệ vững chắc, sẵn sàng mở rộng và nhân rộng mô hình trường học thông minh trong tương lai.