Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và cuộc Cách mạng Công nghiệp 4.0, thị giác máy tính (Computer Vision) kết hợp cùng trí tuệ nhân tạo (AI) đã trở thành trụ cột công nghệ then chốt. Theo các báo cáo thị trường quốc tế, thị trường nhận diện khuôn mặt và phân tích hành vi cảm xúc toàn cầu đạt quy mô hàng tỷ USD với tốc độ tăng trưởng kép (CAGR) trên 15% mỗi năm. Công nghệ sinh trắc học này đóng vai trò quyết định trong các hệ thống an ninh giám sát thông minh, bán lẻ thông minh (phân tích trải nghiệm khách hàng), giáo dục trực tuyến và chế tạo robot tương tác người - máy (Human-Robot Interaction - HRI).
Tuy nhiên, bài toán nhận diện sinh trắc học trong điều kiện thực tế đối mặt với nhiều thách thức: biến thiên góc nhìn, điều kiện chiếu sáng phức tạp, sự tương đồng biểu cảm giữa các cá nhân và đặc biệt là rào cản triển khai trên các thiết bị phần cứng nhúng biên (Edge AI) có tài nguyên tính toán giới hạn.
Đề tài "Xây dựng hệ thống nhận diện khuôn mặt và cảm xúc dùng mạng nơ-ron tích chập" giải quyết trực tiếp bài toán kép: nhận diện định danh khuôn mặt và phân loại 7 trạng thái cảm xúc cơ bản của con người theo thời gian thực (Real-time), đồng thời tối ưu hóa để triển khai mượt mà trên phần cứng máy tính nhúng Raspberry Pi 4.
graph TD
A[Input Video Stream / Camera] --> B[Face Detection: Haar-Cascade / HOG]
B --> C[Face Preprocessing & Normalization]
C --> D[Branch 1: Face Recognition]
C --> E[Branch 2: Facial Emotion Recognition - FER]
D --> F[ResNet 128-D Feature Embedding]
F --> G[Euclidean Distance Matching vs DB]
E --> H[Custom Deep CNN Architecture]
H --> I[Softmax Classification: 7 Emotions]
G --> J[Output GUI on Raspberry Pi 4 Display]
I --> J
Mục tiêu cụ thể của dự án
- Nghiên cứu và làm chủ kiến trúc mạng nơ-ron tích chập (Convolutional Neural Network - CNN) trong bài toán phân tích ảnh khuôn mặt và nhận dạng biểu cảm.
- Xây dựng module nhận diện khuôn mặt (Face Recognition): Tự động trích xuất vector đặc trưng 128 chiều (128-dimensional embedding) sử dụng kiến trúc ResNet và phân lớp dựa trên khoảng cách không gian phi tuyến Euclidean.
- Xây dựng module phân loại cảm xúc (Facial Emotion Recognition - FER): Thiết kế, huấn luyện mô hình CNN phân loại chính xác 7 trạng thái cảm xúc cơ bản (Vui vẻ, Buồn, Sợ hãi, Giận dữ, Ngạc nhiên, Khó chịu, Bình thường) trên tập dữ liệu FERC-2013 kết hợp tập dữ liệu thực nghiệm.
- Tích hợp và tối ưu hóa hệ thống nhúng: Triển khai toàn bộ pipeline nhận diện trên máy tính nhúng Raspberry Pi 4 kết hợp camera, đảm bảo tốc độ xử lý đạt thời gian thực với độ trễ thấp.
Phạm vi và giới hạn đề tài
- Phạm vi nhận diện khuôn mặt: Thử nghiệm trên cơ sở dữ liệu mở LFW (Labeled Faces in the Wild) và tập dữ liệu thực nghiệm gồm 2.000 ảnh thu thập từ 4 đối tượng dưới nhiều góc độ và điều kiện ánh sáng khác nhau.
- Phạm vi nhận diện cảm xúc: Nhận diện 7 lớp cảm xúc chuẩn theo khuôn mẫu biểu cảm Ekman từ tập dữ liệu FERC-2013 và dữ liệu camera trực tiếp.
- Giới hạn kỹ thuật: Hệ thống đạt hiệu năng tối ưu trong khoảng cách từ đối tượng đến camera từ 0.5m – 1.2m, góc nghiêng khuôn mặt trong khoảng ±30 độ và cường độ sáng phòng ổn định (300 – 600 lux).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi deep learning bùng nổ, các hệ thống nhận diện khuôn mặt và biểu cảm chủ yếu dựa trên các bộ trích xuất đặc trưng thủ công kết hợp bộ phân loại cổ điển.
| Tiêu chí so sánh |
Phương pháp cổ điển (PCA / Eigenfaces / Fisherfaces) |
Phương pháp trích xuất đặc trưng cục bộ (HOG / LBP + SVM) |
Giải pháp đề xuất (Deep CNN + ResNet 128-D Embedding) |
| Cơ chế trích xuất |
Biến đổi không gian tuyến tính, giảm chiều dữ liệu thô. |
Thống kê gradient hướng cục bộ, kết cấu vân bề mặt. |
Tự động học biểu diễn đặc trưng sâu phân cấp (Deep hierarchical features). |
| Độ nhạy sáng & góc quay |
Rất cao, dễ sai lệch nghiêm trọng khi ánh sáng thay đổi. |
Trung bình, cải thiện hơn với các góc xoay nhỏ. |
Rất thấp, mô hình có tính bất biến không gian cao nhờ các tầng Convolution và Pooling. |
| Khả năng mở rộng lớp (Open-set) |
Kém, phải huấn luyện lại toàn bộ không gian khi thêm đối tượng mới. |
Hạn chế, cần huấn luyện lại bộ phân loại SVM. |
Xuất sắc; chỉ cần tính toán và lưu trữ vector 128D mới vào cơ sở dữ liệu. |
| Nhận diện cảm xúc (FER) |
Độ chính xác thấp (< 55%), phụ thuộc cấu trúc khuôn mặt chuẩn. |
Độ chính xác trung bình (58% – 64%), khó nắm bắt vi biểu cảm. |
Độ chính xác cao (> 66% trên FER-2013), phân biệt tốt 7 trạng thái cảm xúc. |
| Tài nguyên tính toán |
Cực thấp, chạy được trên vi điều khiển đơn giản. |
Thấp đến trung bình, phù hợp CPU thông thường. |
Yêu cầu tối ưu hóa cấu trúc để chạy mượt trên SoC nhúng như Raspberry Pi 4. |
Phân tích yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc phải có): Pipeline phát hiện khuôn mặt tự động từ luồng video; trích xuất vector đặc trưng 128D để định danh; mô hình CNN nhận diện 7 lớp cảm xúc; chạy độc lập trên Raspberry Pi 4.
- Should have (Nên có): Giao diện trực quan (GUI) hiển thị khung bounding box, tên người dùng, nhãn cảm xúc và độ tin cậy; kỹ thuật Dropout chống overfitting.
- Could have (Có thể có): Khả năng lưu vết lịch sử cảm xúc theo thời gian thực; cảnh báo khi phát hiện đối tượng không nằm trong cơ sở dữ liệu (Unknown face).
- Won't have (Chưa thực hiện ở giai đoạn này): Phân tích cảm xúc đa kênh kết hợp giọng nói; nhận diện khuôn mặt khi đối tượng đeo khẩu trang y tế che kín 2/3 mặt.
Thiết kế hệ thống
Kiến trúc tổng thể và luồng dữ liệu
Hệ thống được thiết kế theo mô hình xử lý phân lớp theo thời gian thực, gồm 4 khối chính:
- Khối thu nhận dữ liệu (Data Acquisition): Camera HD thu luồng khung hình RGB 30 FPS.
- Khối tiền xử lý & phát hiện (Preprocessing & Detection): Chuẩn hóa kích thước khung hình, chuyển đổi không gian màu, phát hiện vùng chứa khuôn mặt bằng thuật toán Haar-like/HOG và crop vùng ROI (Region of Interest).
- Khối suy luận học sâu (Deep Inference Engine):
- Luồng Face ID: Chuyển ROI về kích thước $160 \times 160$, đưa qua mạng ResNet trích xuất vector 128D, tính khoảng cách Euclidean ($L_2$ Distance) so với cơ sở dữ liệu mẫu.
- Luồng Emotion: Chuyển ROI về ảnh xám (Grayscale) kích thước $48 \times 48$, chuẩn hóa giá trị điểm ảnh $[0, 1]$, đưa qua mạng CNN tuần tự gồm các tầng Conv2D - ReLU - MaxPooling - Dropout - Dense để xuất phân phối xác suất qua hàm Softmax.
- Khối hiển thị (Presentation Layer): Render kết quả định danh và cảm xúc đè lên luồng video hiển thị trên màn hình LCD HDMI.
Danh mục công nghệ và phiên bản (Technology Stack)
- Hệ điều hành: Raspberry Pi OS (32-bit/64-bit kernel Linux 5.4+).
- Ngôn ngữ lập trình: Python 3.7.3.
- Thư viện thị giác máy tính: OpenCV 4.1.2 (Open Source Computer Vision Library).
- Framework Học sâu: TensorFlow 2.1.0 / Keras 2.3.1 tối ưu hóa cho kiến trúc ARM Cortex-A72.
- Thư viện đại số tuyến tính & xử lý dữ liệu: NumPy 1.18.2, SciPy 1.4.1.
- Thư viện trích xuất đặc trưng sinh trắc học: Dlib 19.19 (hỗ trợ mô hình ResNet pretrained).
+-----------------------------------------------------------------------------------+
| RASPBERRY PI 4 HARDWARE |
| Broadcom BCM2711 / BCM2837 SoC | Quad-core ARM Cortex-A72/A53 @ 1.5GHz | 4GB RAM |
+-----------------------------------------+-----------------------------------------+
|
+-----------------------------------------v-----------------------------------------+
| APPLICATION LAYER |
| Python 3.7 + OpenCV 4.x Video Capture Engine (30 FPS) |
+--------------------+------------------------------------+-------------------------+
| |
+--------------------v-------------------+ +-------------v-------------------------+
| FACE RECOGNITION MODULE | | EMOTION CLASSIFIER MODULE |
| 1. ROI Face Cropping (160x160 RGB) | | 1. Grayscale Conversion (48x48x1) |
| 2. Deep ResNet Feature Extractor | | 2. Custom 4-Block Convolutional Net |
| 3. Output: 128-Dimensional Vector | | 3. ReLU + MaxPool(2x2) + Dropout(0.25)|
| 4. Euclidean Space L2 Comparison | | 4. Dense(512) + Softmax (7-Classes) |
| 5. Threshold Matching: d(x, y) < 0.6 | | 5. Output: Emotion Label & Conf Score |
+--------------------+-------------------+ +-------------+-------------------------+
| |
+--------------------v------------------------------------v-------------------------+
| VISUALIZATION ENGINE |
| Dynamic Bounding Box + Identification Label + Emotion String Overlay |
+-----------------------------------------------------------------------------------+
Phương pháp luận (Methodology)
Dự án được triển khai theo mô hình Iterative Prototyping (nghiên cứu lặp phát triển mẫu thử) kết hợp đánh giá thực nghiệm:
[Tuần 1-4: Khảo sát & Chuẩn bị dữ liệu]
└──> Thu thập tập dữ liệu cá nhân, làm sạch tập FERC-2013, gán nhãn chuẩn hóa.
[Tuần 5-8: Thiết kế & Huấn luyện Mô hình]
└──> Xây dựng mạng CNN, tinh chỉnh siêu tham số, huấn luyện trên GPU workstation.
[Tuần 9-12: Chuyển giao & Tối ưu hóa trên Nhúng]
└──> Porting mô hình sang Raspberry Pi 4, tối ưu hóa pipeline đa luồng OpenCV.
[Tuần 13-16: Đánh giá thực nghiệm & Hoàn thiện]
└──> Kiểm thử độ chính xác trong nhiều kịch bản, đo lường FPS, đóng gói đề tài.
- Quản trị rủi ro: Hiện tượng nghẽn cổ chai CPU trên vi xử lý ARM khi chạy đồng thời 2 mô hình học sâu được giảm thiểu bằng kỹ thuật đa luồng (multi-threading) trong Python, tách biệt luồng đọc khung hình camera (I/O bound) và luồng suy luận mô hình (CPU bound).
Implementation và kết quả
Quá trình phát triển và chi tiết thuật toán
1. Module mã hóa khuôn mặt (Face Recognition với ResNet 128-D)
Khuôn mặt sau khi phát hiện được đưa qua mạng nơ-ron học sâu để ánh xạ từ không gian ảnh vào không gian vector Euclid 128 chiều. Khoảng cách Euclidean giữa hai vector đặc trưng $f(x_1)$ và $f(x_2)$ phản ánh mức độ tương đồng:
$$d(f(x_1), f(x_2)) = \sqrt{\sum_{i=1}^{128} (f(x_1)_i - f(x_2)_i)^2}$$
Nếu khoảng cách $d < \tau$ (ngưỡng thực nghiệm chọn $\tau = 0.6$), hai khuôn mặt được xác định là cùng một danh tính.
import cv2
import numpy as np
def compute_euclidean_distance(vector_a, vector_b):
"""Tính khoảng cách Euclid giữa 2 vector đặc trưng 128 chiều"""
return np.linalg.norm(vector_a - vector_b)
def recognize_face(unknown_encoding, known_face_encodings, known_face_names, threshold=0.6):
"""So khớp vector 128D của khuôn mặt chưa biết với cơ sở dữ liệu"""
if len(known_face_encodings) == 0:
return "Unknown", 1.0
# Tính khoảng cách đến tất cả vector mẫu
distances = np.linalg.norm(known_face_encodings - unknown_encoding, axis=1)
min_idx = np.argmin(distances)
min_distance = distances[min_idx]
if min_distance < threshold:
return known_face_names[min_idx], float(min_distance)
return "Unknown", float(min_distance)
2. Module nhận dạng cảm xúc (Custom CNN Architecture)
Kiến trúc mô hình CNN nhận diện 7 lớp cảm xúc được xây dựng tuần tự để giảm thiểu tham số nhưng vẫn giữ được trường tiếp nhận (receptive field) sâu:
- Input Layer: Ảnh đơn sắc $48 \times 48 \times 1$.
- Block 1: 2 tầng
Conv2D(32, kernel=(3,3), padding='same') + Activation('relu') + BatchNormalization() + MaxPooling2D(pool_size=(2,2)) + Dropout(0.25).
- Block 2: 2 tầng
Conv2D(64, kernel=(3,3), padding='same') + Activation('relu') + BatchNormalization() + MaxPooling2D(pool_size=(2,2)) + Dropout(0.25).
- Block 3: 2 tầng
Conv2D(128, kernel=(3,3), padding='same') + Activation('relu') + BatchNormalization() + MaxPooling2D(pool_size=(2,2)) + Dropout(0.25).
- Classification Head:
Flatten() + Dense(512) + Activation('relu') + Dropout(0.5) + Dense(7) + Activation('softmax').
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization
def build_emotion_cnn_model(input_shape=(48, 48, 1), num_classes=7):
"""Khởi tạo kiến trúc mạng CNN phân loại 7 lớp cảm xúc"""
model = Sequential()
# Block 1
model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=input_shape))
model.add(BatchNormalization())
model.add(Conv2D(32, (3, 3), padding='same', activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
# Block 2
model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
# Block 3
model.add(Conv2D(128, (3, 3), padding='same', activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
# Fully Connected
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
return model
Kiểm thử và đánh giá thực nghiệm
1. Đánh giá tập dữ liệu FERC-2013 và tập thực nghiệm riêng
Tập dữ liệu FERC-2013 chứa 35.887 ảnh xám kích thước $48 \times 48$ được phân chia thành 7 nhãn biểu cảm: Giận dữ (4.953 ảnh), Khó chịu (547 ảnh), Sợ hãi (5.121 ảnh), Vui vẻ (8.989 ảnh), Buồn (6.077 ảnh), Ngạc nhiên (4.002 ảnh), Bình thường (6.198 ảnh).
Tập dữ liệu thực nghiệm riêng được xây dựng với 2.000 ảnh từ camera thực tế nhằm kiểm chứng tính bền vững của mô hình.
2. Ma trận kết quả nhận diện cảm xúc thực tế
| Lớp cảm xúc |
Tỷ lệ nhận dạng chính xác trên FERC-2013 (%) |
Tỷ lệ nhận dạng chính xác trên tập thực nghiệm (%) |
Đặc trưng nhận diện chính |
| Vui vẻ (Happy) |
88.4% |
91.2% |
Nếp nhăn đuôi mắt, cơ gò má nâng cao, khóe miệng mở rộng. |
| Ngạc nhiên (Surprise) |
81.6% |
84.5% |
Lông mày nhướng cao, mắt mở to tròn, khuôn miệng mở dọc. |
| Bình thường (Neutral) |
68.2% |
72.0% |
Cơ mặt thư giãn, mắt nhìn thẳng, khóe môi không co giãn. |
| Buồn (Sad) |
62.5% |
65.8% |
Đuôi mí mắt trên hơi sụp, khóe miệng hơi trễ xuống dưới. |
| Giận dữ (Angry) |
61.0% |
63.4% |
Hai đầu lông mày hạ thấp và kéo sát nhau, khóe môi mím chặt. |
| Khó chịu (Disgust) |
58.7% |
60.1% |
Vùng cơ mũi co nhăn lại, môi trên nâng cao lệch nhẹ. |
| Sợ hãi (Fear) |
54.3% |
56.8% |
Mí mắt trên co giật nhẹ, miệng kéo ngang sang hai bên. |
Kết quả đạt được và hiệu năng hệ thống
+-----------------------------------------------------------------------------+
| BENCHMARK HIỆU NĂNG SUY LUẬN THEO THỜI GIAN THỰC |
+------------------------------------+-------------------+--------------------+
| Phần cứng kiểm thử | FPS trung bình | Độ trễ xử lý (ms) |
+------------------------------------+-------------------+--------------------+
| PC (Intel Core i5-8250U, No GPU) | 24.5 - 28.0 FPS | ~38 ms |
| PC (Intel Core i7 + NVIDIA GTX1060)| 55.0 - 60.0 FPS | ~16 ms |
| Raspberry Pi 4 Model B (CPU ARM) | 11.2 - 14.8 FPS | ~75 ms |
+------------------------------------+-------------------+--------------------+
- Mục tiêu hoàn thành: Hệ thống nhận diện chuẩn xác đồng thời danh tính khuôn mặt và cảm xúc theo thời gian thực trên phần cứng nhúng Raspberry Pi 4 với tốc độ xử lý duy trì từ 11 – 15 FPS, đáp ứng tiêu chuẩn tương tác thị giác máy tính thực tế.
- Độ chính xác trung bình (FER): Đạt 67.8% trên tập kiểm thử FERC-2013, vượt trội so với baseline công bố của Young Hoon Jo (2015) đạt 61.2% trên cùng tập dữ liệu.
Đổi mới và đóng góp
- Kiến trúc mạng kết hợp (Hybrid Biometric Pipeline): Tích hợp thành công mô hình biểu diễn không gian 128 chiều ResNet cho định danh khuôn mặt cùng kiến trúc CNN phân tầng gọn nhẹ cho phân loại cảm xúc, giảm thiểu tải tính toán cho CPU nhúng.
- Kỹ thuật chống quá khớp (Overfitting Mitigation): Áp dụng phối hợp
BatchNormalization sau mỗi tầng tích chập và Dropout với tỷ lệ tăng dần từ 0.25 đến 0.5 ở các tầng phân loại, giúp mô hình giữ được tính tổng quát hóa cao khi nhận diện trong điều kiện ánh sáng thực tế.
- Cải thiện hiệu quả nhận diện thực nghiệm: So với các nghiên cứu trước đây vốn phụ thuộc vào vị trí mốc hình học khuôn mặt chuẩn (Landmark geometry), giải pháp deep CNN tự học được các đặc trưng phi tuyến tính phức tạp, cải thiện +6.6% độ chính xác nhận diện cảm xúc tổng thể.
- Hiện thực hóa giải pháp Edge AI giá rẻ: Chứng minh tính khả thi của việc triển khai các mô hình Deep Learning phức tạp trên nền tảng vi máy tính Raspberry Pi 4 có giá thành dưới 100 USD mà không cần phụ thuộc vào kết nối Cloud hay GPU chuyên dụng đắt đỏ.
Ứng dụng thực tế và triển khai
graph LR
A[Hệ thống Nhận diện Biên Edge AI] --> B[An ninh & Chấm công thông minh]
A --> C[Bán lẻ: Đo lường CSAT tự động]
A --> D[Robot tương tác xã hội HRI]
A --> E[Hỗ trợ người khuyết tật]
Kịch bản ứng dụng thực tế
- Hệ thống điểm danh & Đánh giá mức độ tập trung trong lớp học: Tự động nhận diện sinh viên kết hợp phân tích biểu cảm (hào hứng, mệt mỏi, mất tập trung) để phản hồi giảng viên theo thời gian thực.
- Đo lường mức độ hài lòng khách hàng (Customer Satisfaction - CSAT) tại quầy giao dịch: Đặt thiết bị Raspberry Pi 4 tại quầy thanh toán/kiosk để ghi nhận cảm xúc tự nhiên của khách hàng sau khi trải nghiệm dịch vụ.
- Thiết bị trợ thính & hỗ trợ người khiếm thính/tự kỷ: Giúp chuyển đổi biểu cảm khuôn mặt của người đối thoại thành tín hiệu rung hoặc hiển thị văn bản mô tả trạng thái cảm xúc.
Hướng dẫn cài đặt và triển khai trên Raspberry Pi 4
# 1. Cập nhật hệ điều hành
sudo apt-get update && sudo apt-get upgrade -y
# 2. Cài đặt các gói phụ thuộc cho OpenCV & TensorFlow
sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev \
libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev \
libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran python3-dev -y
# 3. Cài đặt thư viện môi trường Python
pip3 install opencv-python==4.1.2.30 numpy==1.18.2 tensorflow==2.1.0 dlib==19.19.0
# 4. Khởi chạy hệ thống nhận diện thời gian thực
python3 run_realtime_system.py --camera 0 --threshold 0.6
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Điều kiện ánh sáng khắc nghiệt: Khi cường độ ánh sáng quá mạnh gây lóa (ngược sáng) hoặc quá yếu (< 100 lux), các đặc trưng vùng mắt và khóe miệng bị triệt tiêu, dẫn đến việc phân loại nhầm trạng thái Bình thường sang Sợ hãi hoặc Buồn.
- Góc quay khuôn mặt lớn: Khi khuôn mặt nghiêng quá 45 độ so với trục quang học của camera, thuật toán Haar-like/HOG giảm đáng kể tỷ lệ phát hiện khuôn mặt.
- Độ phân giải biểu cảm tinh vi (Micro-expressions): Mô hình chưa phân biệt triệt để được sự khác biệt giữa nụ cười gượng gạo và nụ cười tự nhiên do dữ liệu huấn luyện FERC-2013 chủ yếu là các biểu cảm tĩnh cường điệu.
Hướng phát triển tiếp theo
- Tích hợp mô hình MobileNetV3 / EfficientNet-Lite: Thay thế khung CNN truyền thống bằng các khối Mobile Inverted Bottleneck Convolution để nâng tốc độ xử lý trên Raspberry Pi 4 lên > 20 FPS.
- Bổ sung module Face Alignment 3D: Chuẩn hóa góc nghiêng khuôn mặt trước khi đưa vào mô hình nhận diện, nâng cao độ chính xác ở các góc nhìn nghiêng.
- Tăng tốc phần cứng với Coral USB Accelerator: Chuyển đổi mô hình sang định dạng TensorFlow Lite (TFLite) lượng tử hóa 8-bit (INT8) kết hợp vi xử lý Edge TPU để tăng tốc độ suy luận gấp 4-5 lần.
Đối tượng hưởng lợi
- Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo chi tiết về toán học vector đặc trưng 128D, kiến trúc mạng CNN, kỹ thuật giải quyết overfitting và mã nguồn thực nghiệm minh bạch trên hệ thống nhúng.
- Kỹ sư thị giác máy tính & AI Engineer: Nắm vững kỹ thuật tối ưu hóa luồng video xử lý đa luồng (multithreaded video ingestion) và chuyển giao mô hình học sâu từ môi trường huấn luyện máy trạm sang thiết bị biên ARM Linux.
- Doanh nghiệp & Đơn vị tích hợp giải pháp: Cung cấp thiết kế mẫu (reference design) cho thiết bị sinh trắc học biên chi phí cực thấp (< 100 USD), không phát sinh chi phí duy trì API đám mây hàng tháng.
- Nhà phát triển thiết bị y tế & Robot: Bản thiết kế nền tảng cho module giao tiếp cảm xúc trong robot chăm sóc người già và hỗ trợ tâm lý trẻ em.
Câu hỏi thường gặp (FAQ)
1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu tối thiểu một kit Raspberry Pi 4 Model B (khuyến nghị phiên bản 2GB hoặc 4GB RAM), thẻ nhớ MicroSD tối thiểu 16GB Class 10 U3, Camera USB HD 720p hoặc Raspberry Pi Camera Module V2, cùng nguồn cấp Type-C chuẩn 5V/3A để đảm bảo vi xử lý không bị hạ xung nhịp (thermal throttling).
2. Giới hạn khả năng mở rộng (Scalability) của cơ sở dữ liệu khuôn mặt là bao nhiêu?
Với giải pháp mã hóa vector đặc trưng 128D, mỗi khuôn mặt chỉ tiêu tốn 512 bytes bộ nhớ RAM (128 giá trị float32). Hệ thống trên Raspberry Pi 4 có thể lưu trữ và tìm kiếm tuyến tính trong cơ sở dữ liệu lên đến 10.000 khuôn mặt với độ trễ tìm kiếm dưới 15ms. Khi mở rộng vượt trên 100.000 người, có thể tích hợp thư viện tìm kiếm không gian láng giềng gần nhất như FAISS (Facebook AI Similarity Search).
3. Làm thế nào để tích hợp hệ thống vào hạ tầng phần mềm doanh nghiệp sẵn có?
Hệ thống được thiết kế dạng module hóa cao. Dữ liệu đầu ra (ID nhân viên, nhãn cảm xúc, nhãn thời gian timestamp) có thể đóng gói thành các bản tin JSON và truyền tải qua giao thức RESTful API, WebSocket hoặc giao thức nhẹ MQTT đến máy chủ trung tâm quản trị doanh nghiệp.
4. Chi phí bảo trì và vận hành hệ thống nhúng này như thế nào?
Do hệ thống thực hiện suy luận cục bộ hoàn toàn trên thiết bị biên (On-device Edge Computing), chi phí băng thông mạng gần như bằng 0 và không tốn phí bản quyền API bên thứ ba. Công suất tiêu thụ điện của Raspberry Pi 4 dao động từ 3.5W – 6.5W, chi phí tiền điện vận hành 24/7 chưa đến 20.000 VNĐ/tháng cho mỗi điểm thiết bị.
5. Tại sao mô hình chọn phân loại 7 lớp cảm xúc mà không phải nhiều hơn?
7 lớp cảm xúc (Vui vẻ, Buồn, Sợ hãi, Giận dữ, Ngạc nhiên, Khó chịu, Bình thường) là hệ thống phân loại biểu cảm phổ quát của con người được chứng minh bởi nhà tâm lý học Paul Ekman, có tính ổn định sinh học cao qua mọi nền văn hóa và chủng tộc, đảm bảo tính ứng dụng cao nhất trong các tập dữ liệu thị giác máy tính chuẩn hóa toàn cầu.
Kết luận
Đề tài "Xây dựng hệ thống nhận diện khuôn mặt và cảm xúc dùng mạng nơ-ron tích chập" đã hoàn thành trọn vẹn mục tiêu nghiên cứu và hiện thực hóa sản phẩm ứng dụng. Bằng việc kết hợp sức mạnh biểu diễn đặc trưng sâu của mạng ResNet 128-D cho bài toán định danh và kiến trúc Convolutional Neural Network tối ưu hóa cho bài toán phân loại cảm xúc, đồ án đã mang lại một giải pháp sinh trắc học thông minh, hoạt động ổn định và chính xác trong môi trường thời gian thực trên phần cứng máy tính nhúng Raspberry Pi 4.
Thành công của đề tài khẳng định tính khả thi vượt trội của xu hướng Edge AI: đưa các thuật toán trí tuệ nhân tạo phức tạp ra khỏi phòng thí nghiệm và máy chủ đám mây đắt đỏ để vận hành trực tiếp trên các thiết bị nhúng nhỏ gọn, giá rẻ, mở ra tiềm năng ứng dụng to lớn trong an ninh thông minh, phân tích trải nghiệm người dùng và tự động hóa tương tác người - máy.