Giới thiệu dự án

Trong kỷ nguyên công nghiệp 4.0 và sự bùng nổ của Internet of Things (IoT), các hệ thống an ninh và kiểm soát truy cập vật lý đang chuyển dịch mạnh mẽ từ phương thức truyền thống sang sinh trắc học thông minh. Theo các báo cáo công nghệ thị trường, số lượng thiết bị IoT kết nối toàn cầu đã vượt mốc 50 tỷ thiết bị, đặt ra yêu cầu cấp thiết về các giải pháp bảo mật thời gian thực, tiêu thụ năng lượng thấp và vận hành tin cậy tại biên (Edge Computing).

Các giải pháp truyền thống như khóa cơ khí, mã số PIN hoặc thẻ từ RFID đơn thuần tồn tại nhiều lỗ hổng: dễ bị mất cắp, sao chép trái phép hoặc quên mã. Ngược lại, các hệ thống nhận diện khuôn mặt dựa trên mạng nơ-ron tích chập sâu (Deep Convolutional Neural Network - DCNN) hiện đại như ArcFace, CosFace hay ResNet-100 đòi hỏi cấu hình phần cứng đắt đỏ (GPU chuyên dụng dung lượng lớn), tiêu tốn điện năng cao và độ trễ đường truyền lớn nếu xử lý qua Cloud.

Đề tài "Nhận diện khuôn mặt Real-time dùng HOG-SVM và ứng dụng trong việc điều khiển cửa phòng" (Real-time Face Recognition Using HOG-SVM Architecture for Room Door Application) được nghiên cứu và thực hiện bởi sinh viên Phạm Nguyễn Tấn Phát dưới sự hướng dẫn của PGS.TS Vũ Đức Lung và Th.S Phan Đình Duy tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (UIT). Đề tài giải quyết bài toán cân bằng giữa độ chính xác nhận dạng, tốc độ xử lý thời gian thực và chi phí phần cứng triển khai trên nền tảng nhúng.

+-------------------------------------------------------------------------------+
|                             KIẾN TRÚC TỔNG THỂ HỆ THỐNG                       |
+-------------------------------------------------------------------------------+
|                                                                               |
|   +---------------------+        UART        +----------------------------+   |
|   |  Giao diện C++ UI   | <----------------> |    Vi điều khiển ESP32     |   |
|   |  (WinForms/OpenCV)  |   (Baud 115200)    |  - Quét thẻ RFID RC522     |   |
|   +----------+----------+                    |  - Đóng/Mở relay chốt cửa  |   |
|              |                               +----------------------------+   |
|              | HTTP/REST API                                                  |
|              v                                                                |
|   +---------------------+                    +----------------------------+   |
|   |  Firebase Cloud DB  | <----------------- |     Nvidia Jetson Nano     |   |
|   | - Firestore (JSON)  |   Sync Embeddings  |  - HOG Face Detection      |   |
|   | - Storage (Images)  |                    |  - 68 Landmarks Alignment  |   |
|   +---------------------+                    |  - 128-d OpenFace Vector   |   |
|                                              |  - Linear SVM Classifier   |   |
|                                              +----------------------------+   |
+-------------------------------------------------------------------------------+

Mục tiêu cụ thể của dự án bao gồm:

  1. Nghiên cứu và hiện thực hóa quy trình xử lý thị giác máy tính rút gọn: kết hợp thuật toán trích xuất đặc trưng Histogram of Oriented Gradients (HOG) với mô hình phân loại Support Vector Machine (SVM) để tối ưu hóa hiệu năng tính toán.
  2. Xây dựng pipeline nhận dạng khuôn mặt 4 bước đạt độ chính xác $> 80%$ với tốc độ xử lý thực tế $\ge 5\text{ FPS}$ trên phần cứng máy tính nhúng Nvidia Jetson Nano.
  3. Thiết kế hệ thống nhúng IoT lai kết hợp vi điều khiển ESP32, module đọc/ghi thẻ RFID RC522 (tần số $13.56\text{ MHz}$) qua giao tiếp SPI, đóng vai trò cơ chế xác thực kép và sao lưu dự phòng.
  4. Phát triển ứng dụng quản trị đa luồng (Multi-threaded GUI) bằng C++ (OpenCV, RapidJSON) tích hợp đồng bộ dữ liệu người dùng và hình ảnh lên nền tảng đám mây Firebase (Firestore và Cloud Storage).

Phạm vi và giới hạn: Hệ thống được thiết kế tối ưu cho kiểm soát cửa phòng làm việc, phòng lab, ký túc xá hoặc văn phòng với môi trường ánh sáng tiêu chuẩn ($150 - 800\text{ lux}$), khoảng cách nhận diện từ $0.5\text{ m} - 1.5\text{ m}$ và góc nghiêng khuôn mặt trong phạm vi $\pm 30^\circ$.


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

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

Để lựa chọn hướng tiếp cận tối ưu cho bài toán kiểm soát cửa phòng trên phần cứng giới hạn, bảng phân tích so sánh giữa các phương pháp nhận diện khuôn mặt được thiết lập:

Giải pháp Ưu điểm Nhược điểm Đánh giá tính khả thi trên Edge
Deep DCNN nguyên bản (ArcFace, CosFace, ResNet-100) Độ chính xác rất cao ($> 99.5%$), kháng nhiễu góc mặt và ánh sáng xuất sắc. Dung lượng mô hình lớn ($> 100\text{ MB}$), yêu cầu GPU mạnh, độ trễ cao trên CPU/Edge ($> 200\text{ ms}$). Thấp (Chi phí phần cứng cao, sinh nhiệt lớn khi chạy liên tục).
Đặc trưng bậc thấp truyền thống (SIFT, SURF, Haar Cascades) Thuật toán kinh điển, tốc độ phát hiện nhanh, không cần huấn luyện mạng sâu. Rất nhạy cảm với thay đổi góc quay khuôn mặt, tỉ lệ phân loại sai (False Positive) cao. Trung bình (Tốc độ nhanh nhưng độ chính xác không đạt yêu cầu).
Pipeline HOG + 68 Landmarks + OpenFace (128-d) + Linear SVM (Giải pháp đề xuất) Tốc độ trích xuất nhanh, mô hình SVM gọn nhẹ ($< 5\text{ MB}$), độ chính xác cao ($> 85%$), tiêu thụ ít RAM. Cần bước tiền xử lý căn chỉnh khuôn mặt chuẩn xác trước khi trích xuất vector đặc trưng. Rất cao (Tối ưu hoàn hảo cho Jetson Nano và ESP32).

Yêu cầu hệ thống được phân cấp theo mô hình MoSCoW:

  • Must-have (Bắt buộc): Trích xuất HOG thời gian thực, căn chỉnh 68 điểm đặc trưng khuôn mặt (Facial Landmarks), sinh vector embedding 128 chiều, phân loại SVM nhị phân/đa lớp, đọc/ghi UID thẻ qua RFID RC522, đồng bộ Firebase.
  • Should-have (Cần có): Giao diện quản trị C++ xử lý đa luồng tránh nghẽn luồng giao diện (UI Freeze), cơ chế tính độ tin cậy bằng hàm Logistic Regression.
  • Could-have (Có thể mở rộng): Tự động cảnh báo qua Telegram/Email khi phát hiện đối tượng không hợp lệ (Unknown) nhiều lần.
  • Won't-have (Chưa thực hiện): Nhận diện khuôn mặt 3D chống giả mạo bằng cảm biến chiều sâu (Liveness Detection bằng Structured Light).

Thiết kế hệ thống

Kiến trúc hệ thống bao gồm hai phân hệ chính:

  1. Phân hệ biên thông minh (Smart Edge Node - Jetson Nano & Camera): Tiếp nhận luồng video thời gian thực từ webcam qua OpenCV, phát hiện khuôn mặt bằng bộ lọc HOG chia khối $16 \times 16\text{ pixels}$, căn chỉnh hình học qua phép biến đổi Affine dựa trên 68 điểm mốc (Kazemi & Sullivan), đưa qua mạng nơ-ron rút gọn của OpenFace để tạo ra vector đặc trưng 128 chiều, sau đó phân loại bằng mô hình Linear SVM.
  2. Phân hệ điều khiển và giao tiếp (IoT Node - ESP32 & RFID RC522): Đảm nhiệm việc đọc mã định danh UID từ thẻ từ qua bus giao tiếp SPI, điều khiển relay mở chốt điện từ, đồng thời kết nối Wi-Fi/UART để truyền nhận trạng thái đóng/mở cửa với hệ thống trung tâm.
+---------------------------------------------------------------------------------------+
|                       SƠ ĐỒ KẾT NỐI CHÂN PHẦN CỨNG ESP32 VÀ RC522                     |
+---------------------------------------------------------------------------------------+
|   ESP32 (Master)                           MFRC522 RFID Reader (Slave)                |
|   +--------------------+                   +--------------------+                     |
|   |         3.3V (VCC) | ----------------> | 3.3V               | (Nguồn cấp 3.3V)    |
|   |                GND | ----------------> | GND                | (Chung Mass)        |
|   |            GPIO 22 | ----------------> | RST                | (Reset Pin)         |
|   |            GPIO 19 | <---------------- | MISO               | (SPI Data In)       |
|   |            GPIO 23 | ----------------> | MOSI               | (SPI Data Out)      |
|   |            GPIO 18 | ----------------> | SCK                | (SPI Serial Clock)  |
|   |             GPIO 5 | ----------------> | SDA / SS           | (Slave Select)      |
|   +--------------------+                   +--------------------+                     |
+---------------------------------------------------------------------------------------+

Bảng cấu hình kết nối phần cứng giữa vi điều khiển ESP32 và đầu đọc thẻ MFRC522:

Chân ESP32 Chân MFRC522 Chuẩn giao tiếp / Chức năng Ghi chú cấu hình
3.3V VCC Cấp nguồn công tác Tuyệt đối không cấp $5\text{V}$ gây hỏng chip MFRC522
GND GND Mass hệ thống Nối chung mass với nguồn ngoài
GPIO 22 RST Tín hiệu Reset phần cứng Điều khiển reset module khi khởi tạo SPI
GPIO 19 MISO Master In Slave Out (SPI) Nhận dữ liệu tuần tự từ thẻ từ
GPIO 23 MOSI Master Out Slave In (SPI) Truyền lệnh và dữ liệu ghi sang thẻ
GPIO 18 SCK Serial Clock (SPI) Xung nhịp đồng bộ SPI (tối đa $10\text{ MHz}$)
GPIO 5 SDA (SS) Slave Select / Chip Select Kích hoạt giao tiếp với module RFID

Methodology

Quy trình phát triển tuân thủ theo mô hình Agile/Scrum gồm 4 giai đoạn chính (Sprints):

  • Sprint 1 (Tuần 1 - 3): Khảo sát phần cứng, thiết lập mạch giao tiếp SPI giữa ESP32 và MFRC522; cấu hình firmware đọc/ghi dữ liệu sector trên thẻ Mifare Classic $1\text{KB}$.
  • Sprint 2 (Tuần 4 - 7): Xây dựng module trích xuất đặc trưng HOG, thuật toán căn chỉnh 68 facial landmarks và kiểm thử mạng sinh vector 128-d trên tập dữ liệu chuẩn.
  • Sprint 3 (Tuần 8 - 11): Phát triển bộ phân loại Linear SVM, tích hợp hàm tính độ tin cậy Logistic Regression, viết giao diện quản trị người dùng C++ WinForms hỗ trợ đa luồng và đồng bộ Cloud Firestore.
  • Sprint 4 (Tuần 12 - 14): Tích hợp toàn diện trên Jetson Nano, đánh giá độ trễ, tối ưu hóa FPS và kiểm thử chấp nhận người dùng (UAT).

Implementation và kết quả

Development process

Quá trình phát triển phần mềm được chia thành các phân đoạn kỹ thuật cụ thể với các chuẩn mã nguồn rõ ràng:

1. Xử lý đa luồng thu nhận hình ảnh (C++ UI)

Để giao diện không bị giật lag khi camera đọc khung hình ở tốc độ $30\text{ FPS}$, một luồng riêng biệt (StreamThread) được khởi tạo độc lập với luồng UI chính. Việc cập nhật hình ảnh lên thành phần đồ họa (PictureBox) bắt buộc phải thông qua cơ chế Delegate và hàm Invoke của Windows Forms để đảm bảo an toàn luồng (Thread-Safety).

// Trích xuất từ mã nguồn xử lý luồng giao diện C++ WinForms
System::Void StreamThread() {
    capture.open(camera_device);
    if (!capture.isOpened()) {
        MessageBox::Show("Không thể kết nối thiết bị Camera!");
        return;
    }
    while (isStreaming) {
        capture >> frame;
        if (frame.empty()) continue;
        
        // Chuyển đổi khung hình OpenCV Mat sang System::Drawing::Bitmap
        Bitmap^ bitmap = gcnew Bitmap(
            frame.cols, frame.rows, frame.step,
            Imaging::PixelFormat::Format24bppRgb,
            System::IntPtr(frame.data)
        );
        
        // Đồng bộ cập nhật lên giao diện thông qua Delegate Invoke
        if (this->camera_PictureBox->InvokeRequired) {
            UPDATE_FRAME^ cb = gcnew UPDATE_FRAME(this, &Register_UI::UpdateFrame);
            this->Invoke(cb, bitmap);
        } else {
            UpdateFrame(bitmap);
        }
    }
}

2. Cấu trúc và đồng bộ dữ liệu qua Firebase

Dữ liệu người dùng được lưu trữ cục bộ dưới định dạng JSON thông qua thư viện tối ưu bộ nhớ RapidJSON, sau đó được tải lên Firebase Firestore và Cloud Storage thông qua SDK Python.

// Xây dựng chuỗi JSON người dùng sử dụng RapidJSON trong C++
rapidjson::Document document;
document.SetObject();
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();

document.AddMember("username", rapidjson::Value(usernameStr.c_str(), allocator), allocator);
document.AddMember("user_id", rapidjson::Value(idStr.c_str(), allocator), allocator);
document.AddMember("room_id", rapidjson::Value(roomIdStr.c_str(), allocator), allocator);
document.AddMember("reg_time", rapidjson::Value(registrationTimeStr.c_str(), allocator), allocator);

rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
document.Accept(writer);

std::ofstream outputFile(jsonFilePath);
outputFile << buffer.GetString();
outputFile.close();

Kịch bản Python tự động giám sát và đẩy dữ liệu lên Firestore và Storage:

# Script đồng bộ dữ liệu thông tin và hình ảnh người dùng lên Cloud
import os
import json
import firebase_admin
from firebase_admin import credentials, firestore
from google.cloud import storage

# Khởi tạo Firestore Client
cred = credentials.Certificate("API/firebase-credentials.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

def upload_user_data(json_dir, img_dir, bucket_name):
    # Upload Document JSON lên Firestore Collection "Users"
    for filename in os.listdir(json_dir):
        if filename.endswith(".json"):
            filepath = os.path.join(json_dir, filename)
            with open(filepath, 'r', encoding='utf-8') as f:
                data = json.load(f)
            doc_id = os.path.splitext(filename)[0]
            db.collection("Users").document(doc_id).set(data)
            
    # Upload hình ảnh khuôn mặt phục vụ huấn luyện lên Storage Bucket
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    for root, _, files in os.walk(img_dir):
        for file in files:
            local_path = os.path.join(root, file)
            blob_name = f"faces/{file}"
            blob = bucket.blob(blob_name)
            blob.upload_from_filename(local_path)

3. Chuyển đổi mã định danh phòng sang địa chỉ phần cứng

Hệ thống ánh xạ logic số phòng đăng ký sang địa chỉ vật lý MAC của thiết bị ESP32 tương ứng trước khi gửi chuỗi điều khiển qua cổng nối tiếp (UART):

// Hàm ánh xạ Room ID sang phần cứng ESP32 ID từ file cơ sở dữ liệu Databank.json
std::string convertRoomIDtoESP32_ID(std::string roomId) {
    std::ifstream file("Databank.json");
    std::string fileContent((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
    
    rapidjson::Document document;
    document.Parse(fileContent.c_str());
    if (document.HasParseError() || !document.IsArray()) return "";
    
    for (rapidjson::SizeType i = 0; i < document.Size(); i++) {
        const rapidjson::Value& obj = document[i];
        if (obj.HasMember("room_id") && obj["room_id"].GetString() == roomId) {
            return obj["esp32_mac"].GetString();
        }
    }
    return "";
}

Testing và validation

Quá trình kiểm thử được triển khai trên tập dữ liệu thực nghiệm gồm $15$ đối tượng đã đăng ký và $10$ đối tượng chưa đăng ký (Unknown), thực hiện $300$ lượt kiểm thử trong các điều kiện môi trường khác nhau.

+-------------------------------------------------------------------------------+
|                      BIỂU ĐỒ PHÂN BỐ HIỆU NĂNG NHẬN DIỆN THỰC TẾ               |
+-------------------------------------------------------------------------------+
|                                                                               |
|   100% +------------------------------------------------------------------+   |
|        |                                                    [91.3%]       |   |
|    80% |                                      [85.6%]                     |   |
|        |                        [78.4%]                                   |   |
|    60% |                                                                  |   |
|        |                                                                  |   |
|    40% |          [35.2%]                                                 |   |
|        |                                                                  |   |
|    20% |                                                                  |   |
|        |                                                                  |   |
|     0% +------------+--------------+-------------+-------------+----------+   |
|               Góc nghiêng       Ánh sáng yếu   Ánh sáng chuẩn   Khoảng cách   |
|                 > 45 độ          (< 50 lux)     (300 lux)      (0.8 - 1.2m)   |
+-------------------------------------------------------------------------------+

Bảng kết quả thống kê hiệu năng nhận diện và thời gian đáp ứng:

Kịch bản kiểm thử Số lượng mẫu (Frames) Tỉ lệ nhận dạng đúng (Accuracy) Tốc độ khung hình (FPS) Độ trễ trung bình (Latency)
Khuôn mặt đã đăng ký (Ánh sáng chuẩn $300\text{ lux}$) 100 $91.3%$ $6.8\text{ FPS}$ $147\text{ ms}$
Khuôn mặt đã đăng ký (Ánh sáng yếu $< 50\text{ lux}$) 100 $78.4%$ $6.7\text{ FPS}$ $149\text{ ms}$
Đối tượng chưa đăng ký (Unknown) 100 $94.0%$ (Từ chối đúng) $7.1\text{ FPS}$ $140\text{ ms}$
Góc nghiêng khuôn mặt $\pm 30^\circ$ 100 $85.6%$ $6.5\text{ FPS}$ $153\text{ ms}$
Quẹt thẻ RFID RC522 (ESP32) 50 lần $100%$ N/A $22\text{ ms}$

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

  1. Hiệu năng nhận diện: Tốc độ khung hình thực tế đạt từ $6.5 - 7.1\text{ FPS}$ trên Jetson Nano (vượt mục tiêu đề ra là $\ge 5\text{ FPS}$). Độ chính xác trung bình toàn hệ thống đạt $86.3%$ trong điều kiện hoạt động tiêu chuẩn.
  2. Kích thước mô hình tối ưu: File phân loại Linear SVM sau khi huấn luyện có dung lượng chỉ xấp xỉ $1.2\text{ MB}$, cho phép nạp trực tiếp vào RAM của Jetson Nano và thực thi suy luận trong khoảng thời gian chỉ $2.4\text{ ms}$ trên mỗi vector embedding 128 chiều.
  3. Độ ổn định hệ thống: Cơ chế xác thực kép (Khuôn mặt + Thẻ từ RFID) giúp hệ thống duy trì tính sẵn sàng $100%$ ngay cả trong trường hợp camera gặp sự cố mất nguồn hoặc ánh sáng không đảm bảo.

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

  1. Kiến trúc phân tầng Hybrid Edge-IoT: Dự án không đưa luồng video trực tiếp lên đám mây nhằm bảo vệ quyền riêng tư người dùng (Privacy-Preserving) và loại bỏ độ trễ mạng. Toàn bộ khâu tính toán nặng được thực thi tại Jetson Nano, trong khi tác vụ điều khiển chấp hành được phân quyền cho ESP32.
  2. Quy trình trích xuất đặc trưng 4 lớp tinh gọn: Thay vì huấn luyện lại toàn bộ mạng nơ-ron sâu phức tạp, hệ thống sử dụng thuật toán HOG phát hiện vùng mặt $\rightarrow$ thuật toán căn chỉnh 68 mốc hình học (Kazemi & Sullivan) $\rightarrow$ chiếu qua mạng tiền huấn luyện OpenFace rút ra 128 số đo $\rightarrow$ huấn luyện bộ phân loại Linear SVM đa lớp siêu nhẹ kết hợp Platt Scaling tính xác suất.
  3. Cơ chế truyền thông tin cậy: Xây dựng giao thức UART tùy chỉnh giữa ứng dụng quản trị C++ và vi điều khiển ESP32, đảm bảo mã phòng và quyền hạn thẻ được ghi chính xác vào các sector bảo mật của thẻ RFID Mifare mà không xảy ra xung đột dữ liệu.

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

Tình huống sử dụng thực tế (Use Cases)

  • Kiểm soát truy cập văn phòng/phòng nghiên cứu: Nhân viên đăng ký khuôn mặt tại trạm quản trị; khi đến cửa, camera tự động nhận diện và mở khóa trong vòng chưa đầy $0.5\text{ giây}$.
  • Quản lý phòng ký túc xá/khách sạn thông minh: Khách hàng được cấp quyền mở cửa bằng khuôn mặt kèm theo thẻ từ RFID dự phòng trong trường hợp mang khẩu trang hoặc kính râm tối màu.

Phân tích chi phí và hiệu quả đầu tư (BOM & ROI)

Bảng phân tích chi phí linh kiện phần cứng cho 01 điểm kiểm soát cửa (1 Door Node):

STT Thành phần phần cứng Model / Thông số kỹ thuật Số lượng Chi phí ước tính (VNĐ)
1 Máy tính nhúng xử lý AI Nvidia Jetson Nano B01 4GB 01 2.800.000
2 Vi điều khiển IoT ESP32 NodeMCU-WROOM-32 01 120.000
3 Cảm biến đọc/ghi thẻ Module RFID RC522 13.56MHz + Thẻ Mifare 01 45.000
4 Cảm biến hình ảnh Camera USB HD 720p góc rộng 01 250.000
5 Chấp hành khóa Khóa chốt điện từ Dropbolt Lock 12V + Relay 5V 01 350.000
6 Nguồn & Phụ kiện Nguồn tổ ong 12V-5A, hạ áp LM2596, vỏ hộp 01 200.000
Tổng Chi phí phần cứng trọn gói cho 01 cửa ~ 3.765.000 VNĐ

So với các hệ thống kiểm soát cửa thương mại sử dụng giải pháp AI chuyên dụng có giá từ $15.000.000 - 30.000.000\text{ VNĐ}$/cửa, giải pháp HOG-SVM trên Jetson Nano và ESP32 giúp tiết kiệm hơn $70%$ chi phí đầu tư ban đầu, mang lại thời gian hoàn vốn (ROI) ước tính dưới $6\text{ tháng}$ cho các doanh nghiệp vừa và nhỏ.


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

Hạn chế kỹ thuật

  1. Độ nhạy sáng: Khi cường độ sáng môi trường giảm xuống dưới $30\text{ lux}$, độ tương phản gradient của HOG giảm mạnh, dẫn đến việc không thể xác định chính xác bounding box khuôn mặt.
  2. Khả năng chống giả mạo (Anti-Spoofing): Hệ thống hiện tại chưa tích hợp module chống giả mạo khuôn mặt (ảnh in 2D hoặc phát lại trên màn hình điện thoại).
  3. Góc quay lớn: Khi khuôn mặt quay một góc nghiêng quá lớn ($> 45^\circ$), số lượng điểm landmark tìm thấy bị thiếu hụt, làm giảm độ chính xác của vector 128 chiều.

Hướng phát triển

  • Tích hợp thêm cảm biến hồng ngoại IR hoặc camera độ sâu RGB-D (Intel RealSense) để hỗ trợ nhận diện ban đêm và kích hoạt thuật toán chống giả mạo khuôn mặt (Liveness Detection).
  • Nâng cấp mạng trích xuất đặc trưng sang MobileFaceNet hoặc GhostFaceNetV2 biên dịch qua TensorRT nhằm tăng tốc độ xử lý lên trên $20\text{ FPS}$ trên Jetson Nano.
  • Phát triển ứng dụng di động (Flutter/React Native) kết nối trực tiếp Firebase để người dùng có thể cấp quyền truy cập từ xa hoặc xem lịch sử ra vào theo thời gian thực.

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

  • Sinh viên ngành Kỹ thuật Máy tính & CNTT: Tài liệu tham khảo toàn diện về việc kết hợp giữa lý thuyết thị giác máy tính cổ điển (HOG-SVM), deep learning trích xuất đặc trưng và lập trình vi điều khiển IoT thực tế.
  • Kỹ sư nhúng & Lập trình viên AI: Cung cấp mẫu thiết kế (Design Pattern) xử lý giao diện C++ đa luồng, cách giải quyết xung đột luồng (Invoke/Delegate) và kỹ thuật tối ưu hóa mô hình suy luận nhẹ trên biên.
  • Doanh nghiệp & Đơn vị quản lý cơ sở vật chất: Tiếp cận một giải pháp kiểm soát cửa thông minh, bảo mật cao, chi phí lắp đặt thấp và dễ dàng mở rộng quy mô.
  • Nhà nghiên cứu ứng dụng: Cung cấp số liệu thực nghiệm so sánh giữa các phương pháp tiếp cận nhận diện khuôn mặt trên thiết bị biên có năng lượng và tài nguyên hạn chế.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai trạm Edge nhận diện là gì?

Hệ thống yêu cầu bo mạch Nvidia Jetson Nano (phiên bản 2GB hoặc 4GB RAM), cài đặt hệ điều hành JetPack 4.6 (Ubuntu 18.04 LTS), thư viện OpenCV 4.x hỗ trợ CUDA, Python 3.6+ cùng các gói scikit-learn, numpy, dlibfirebase-admin.

2. Dung lượng cơ sở dữ liệu khuôn mặt có làm giảm tốc độ nhận diện của SVM không?

Không đáng kể. Vì vector đặc trưng của mỗi khuôn mặt chỉ có kích thước 128 phần tử kiểu float ($512\text{ bytes}$), mô hình Linear SVM có độ phức tạp suy luận là $\mathcal{O}(d)$ với $d = 128$. Khi cơ sở dữ liệu mở rộng lên đến 1.000 người, thời gian phân loại chỉ tăng thêm dưới $5\text{ ms}$.

3. Làm thế nào để hệ thống giao tiếp khi mất kết nối Internet?

Khi mất Internet, phân hệ Jetson Nano và ESP32 vẫn hoạt động bình thường ở chế độ Local Offline. Dữ liệu khuôn mặt đã được lưu trong file model SVM cục bộ, và quyền thẻ RFID được lưu trong bộ nhớ EEPROM của ESP32. Dữ liệu nhật ký ra vào sẽ được đẩy lên Firebase ngay khi có kết nối trở lại.

4. Chi phí bảo trì định kỳ của hệ thống là bao nhiêu?

Hệ thống sử dụng các linh kiện thể rắn (Solid-state) với độ bền cao. Chi phí bảo trì chủ yếu là vệ sinh ống kính camera định kỳ và kiểm tra nguồn cấp điện, trung bình ước tính dưới $200.000\text{ VNĐ}$/cửa/năm.

5. Tại sao không dùng trực tiếp Deep Learning thuần túy (End-to-End CNN) để phân loại?

Việc huấn luyện lại một mạng nơ-ron sâu mỗi khi có nhân viên mới đăng ký đòi hỏi tài nguyên tính toán khổng lồ và mất nhiều giờ. Việc kết hợp trích xuất embedding 128 chiều cố định qua OpenFace và chỉ huấn luyện lại bộ phân loại Linear SVM cho phép thêm người dùng mới trong thời gian chưa đến $2\text{ giây}$.


Kết luận

Đồ án tốt nghiệp "Nhận diện khuôn mặt Real-time dùng HOG-SVM và ứng dụng trong việc điều khiển cửa phòng" đã giải quyết triệt để bài toán tích hợp giữa xử lý ảnh thông minh và công nghệ nhúng IoT. Bằng việc phối hợp linh hoạt thuật toán HOG, căn chỉnh 68 mốc khuôn mặt, mạng OpenFace và bộ phân loại Linear SVM, hệ thống đã đạt được tốc độ xử lý thực tế ổn định từ $6.5 - 7.1\text{ FPS}$ với độ chính xác trên $86%$ trên phần cứng máy tính nhúng Nvidia Jetson Nano.

Bên cạnh đó, việc kết hợp cơ chế kiểm soát thẻ từ RFID qua vi điều khiển ESP32 và cơ sở dữ liệu thời gian thực Firebase đã hoàn thiện hóa một mô hình kiểm soát ra vào toàn diện, có độ tin cậy cao, chi phí phần cứng tối ưu ($< 4.000.000\text{ VNĐ}$) và sẵn sàng ứng dụng vào thực tế tại các trường học, cơ quan và tòa nhà thông minh. Các mã nguồn mẫu, lược đồ mạch và pipeline xử lý trong đồ án là nền tảng giá trị cho các nghiên cứu chuyên sâu về thị giác máy tính nhúng trong tương lai.