Giới thiệu dự án
Sự bùng phát của đại dịch toàn cầu COVID-19 và các chủng virus lây truyền qua đường hô hấp đã đặt ra yêu cầu cấp thiết về việc kiểm soát an toàn dịch tễ tại các khu vực tập trung đông người như trường học, bệnh viện, tòa nhà văn phòng và trung tâm thương mại. Theo thống kê từ Tổ chức Y tế Thế giới (WHO) và Trung tâm Kiểm soát và Phòng ngừa Dịch bệnh (CDC), việc đeo khẩu trang đúng quy cách có thể làm giảm nguy cơ phát tán và lây nhiễm giọt bắn lên đến 70-80%, kết hợp với việc phát hiện sớm biểu hiện sốt (thân nhiệt trên $37.5^\circ\text{C}$) là hai chốt chặn quan trọng hàng đầu trong giao thức y tế phòng dịch.
Tuy nhiên, các phương pháp truyền thống dựa vào nhân sự trực chốt để đo thân nhiệt thủ công và kiểm tra khẩu trang bộc lộ nhiều hạn chế nghiêm trọng:
- Nguy cơ lây nhiễm chéo cao: Nhân viên y tế/bảo vệ phải tiếp xúc cự ly gần (< 0.5m) với hàng trăm lượt người mỗi ngày.
- Tắc nghẽn cục bộ (Bottleneck): Tốc độ kiểm tra thủ công dao động từ 5 - 10 giây/người, gây ùn tắc tại các sảnh vào giờ cao điểm.
- Sai số do yếu tố con người: Hiện tượng mệt mỏi dẫn đến việc bỏ sót các trường hợp không đeo khẩu trang hoặc sốt nhẹ.
Nhằm giải quyết triệt để các hạn chế trên, dự án tập trung nghiên cứu, thiết kế và chế tạo Hệ thống mở cửa tự động thông qua nhận diện có đeo khẩu trang và kiểm soát thân nhiệt không tiếp xúc, phân bổ tải tính toán trên kiến trúc phần cứng nhúng phân tán (Edge Computing).
Mục tiêu dự án
- Nghiên cứu & Tối ưu mô hình Deep Learning: Ứng dụng mạng nơ-ron tích chập nhẹ (Lightweight CNN) MobileNetV2 để phân loại khuôn mặt có/không đeo khẩu trang với độ chính xác cao trên thiết bị tài nguyên giới hạn.
- Thiết kế phần cứng phân tán hai tầng (Two-tier Distributed Architecture): Sử dụng máy tính nhúng Raspberry Pi 4 Model B làm bộ xử lý thị giác máy tính và vi điều khiển STM32F051R8T6 làm bộ điều khiển chấp hành thời gian thực (Hard Real-Time).
- Tích hợp cảm biến đo nhiệt độ không tiếp xúc: Sử dụng module hồng ngoại GY-MLX90614-DCI giao tiếp I2C cho độ chính xác cao trong phạm vi an toàn.
- Tự động hóa cơ chế đóng/mở cửa: Điều khiển động cơ Servo SG90 kết hợp cảm biến tiệm cận hồng ngoại đảm bảo chu trình đóng mở an toàn, chống kẹt người.
- Đánh giá và kiểm thử thực nghiệm: Xác định độ chính xác, độ trễ và tỷ lệ lỗi trong các điều kiện môi trường ánh sáng và khoảng cách khác nhau.
Giải pháp và Phạm vi
- Phương pháp tiếp cận: Sử dụng kỹ thuật Transfer Learning trên MobileNetV2 với cấu trúc Inverted Residuals và Linear Bottlenecks nhằm tối ưu hóa số lượng tham số tính toán, kết hợp tiền xử lý ảnh qua OpenCV và giao thức truyền thông UART công nghiệp.
- Kết quả kỳ vọng: Độ chính xác phân loại khẩu trang đạt $\ge 98%$, thời gian phản hồi toàn hệ thống $\le 1.2\text{s}$, sai số nhiệt độ $\le \pm 0.3^\circ\text{C}$.
- Phạm vi & Giới hạn: Hệ thống thử nghiệm tối ưu ở khoảng cách nhận diện từ 40cm đến 60cm, điều kiện ánh sáng tự nhiên/văn phòng (150 - 500 Lux), góc nhìn trực diện $\pm 15^\circ$.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Đo thân nhiệt & Kiểm tra thủ công |
Cổng kiểm soát FaceID thương mại |
Hệ thống đề xuất (MobileNetV2 + Dual MCU) |
| Chi phí đầu tư |
Thấp ban đầu, cao về nhân công dài hạn |
Rất cao (> 15 - 30 triệu VNĐ/cổng) |
Thấp - Trung bình (< 3.5 triệu VNĐ) |
| Độ trễ xử lý |
5.0 - 10.0 giây/người |
0.5 - 1.0 giây/người |
0.8 - 1.2 giây/người |
| Khả năng lây nhiễm |
Rất cao (tiếp xúc cự ly gần) |
Không (tự động hóa hoàn toàn) |
Không (tự động hóa hoàn toàn) |
| Tính linh hoạt & Tùy biến |
Kém |
Khép kín, khó tích hợp hệ thống ngoài |
Mã nguồn mở, dễ dàng mở rộng và tùy biến |
| Yêu cầu tài nguyên |
Không |
Server riêng hoặc chip AI chuyên dụng |
Edge computing cục bộ (Raspberry Pi + STM32) |
Yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc): Nhận diện chính xác trạng thái đeo khẩu trang; đo nhiệt độ cơ thể không tiếp xúc; tự động kích hoạt mở cửa khi thỏa cả hai điều kiện (có khẩu trang VÀ thân nhiệt $< 37.5^\circ\text{C}$).
- Should have (Nên có): Màn hình hiển thị video stream trực tiếp kèm khung bounding box trạng thái; còi/đèn cảnh báo khi vi phạm.
- Could have (Có thể có): Cơ chế xịt rửa tay sát khuẩn tự động tích hợp; lưu trữ nhật ký lượt vào/ra.
- Won't have (Chưa thực hiện): Nhận diện chính xác danh tính từng cá nhân (Face Recognition ID); đồng bộ dữ liệu đám mây thời gian thực.
Thiết kế hệ thống
Danh mục công nghệ và phiên bản phần mềm
- Raspberry Pi OS: Debian Linux 10 (Buster), Kernel 5.10
- Python Environment: Python 3.8.10
- Deep Learning Frameworks: TensorFlow 2.8.0, Keras 2.8.0
- Computer Vision & Utils: OpenCV 4.5.5, Imutils 0.5.4, NumPy 1.21.6, Scikit-Learn 1.0.2
- Embedded Firmware: C/C++ trên nền tảng Keil MDK-ARM v5.36 / STM32CubeMX v6.4.0 (HAL Driver)
- Phần cứng vi điều khiển: STM32F051R8T6 (ARM Cortex-M0 @ 48 MHz, 64 KB Flash, 8 KB SRAM)
- Phần cứng xử lý trung tâm: Raspberry Pi 4 Model B (Quad-core ARM Cortex-A72 @ 1.5 GHz, 4GB LPDDR4)
Thiết kế giao thức truyền thông UART (Raspberry Pi $\leftrightarrow$ STM32)
Để đảm bảo tính toàn vẹn dữ liệu và độ trễ tối thiểu, giao thức truyền thông UART một chiều/hai chiều được cấu hình: Baudrate: 115200 bps, Data bits: 8, Parity: None, Stop bits: 1.
+---------------+---------------+-------------------+
| Header (1B) | Payload (1B) | Checksum (1B) |
| 0xAA | 0x01 / 0x00 | (Header + Payload)|
+---------------+---------------+-------------------+
* Payload: 0x01 (Mask Detected - Hợp lệ), 0x00 (No Mask - Không hợp lệ)
Phân bổ công suất và Nguồn điện hệ thống
$$\Sigma P = P_{\text{RPi4}} + P_{\text{STM32}} + P_{\text{LCD}} + P_{\text{Camera}} + P_{\text{Sensors/Actuators}} \approx 10\text{W} + 15.75\text{W} + 5\text{W} + 5\text{W} + 2.95\text{W} = 38.7\text{W}$$
Hệ thống sử dụng hai đường nguồn độc lập thông qua mạch hạ áp xung LM2596S (Buck Converter DC-DC) từ nguồn cấp $12\text{V}-5\text{A}$, giúp triệt tiêu hiện tượng sụt áp và nhiễu sóng hài do động cơ Servo sinh ra tác động lên vi xử lý Raspberry Pi 4.
Phương pháp luận (Methodology)
Dự án áp dụng mô hình phát triển V-Model cải tiến cho hệ thống nhúng (Embedded V-Model):
- Giai đoạn 1 (Tuần 1 - 3): Thu thập dữ liệu, phân tích toán học kiến trúc MobileNetV2, huấn luyện và tối ưu mô hình trên máy tính tính toán cao (Nvidia GPU Server).
- Giai đoạn 2 (Tuần 4 - 6): Thiết kế sơ đồ nguyên lý mạch phần cứng, tích hợp cảm biến nhiệt độ MLX90614 và giao tiếp I2C trên STM32.
- Giai đoạn 3 (Tuần 7 - 9): Cross-compile và triển khai mô hình lên môi trường Raspberry Pi OS; xây dựng driver UART bridge qua FT232RL.
- Giai đoạn 4 (Tuần 10 - 12): Tích hợp liên khối, chạy benchmark kiểm thử độ trễ, sai số và đánh giá khả năng hoạt động liên tục (Stress test 72 giờ).
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
1. Cơ sở toán học của Depthwise Separable Convolution (DSC)
MobileNetV2 sử dụng phép chập Depthwise Separable Convolution để chia nhỏ phép tích chập tiêu chuẩn thành hai bước độc lập:
- Depthwise Convolution (DC): Áp dụng một bộ lọc duy nhất trên từng kênh đầu vào ($M$ kênh).
- Pointwise Convolution (PC): Áp dụng bộ lọc kích thước $1 \times 1$ để kết hợp các kênh đầu ra ($N$ kênh).
Chi phí tính toán của tích chập tiêu chuẩn ($Cost_{Std}$) so với tích chập DSC ($Cost_{DSC}$):
$$Cost_{Std} = D_G \times D_G \times D_K \times D_K \times M \times N$$
$$Cost_{DSC} = (D_G \times D_G \times D_K \times D_K \times M) + (D_G \times D_G \times M \times N) = D_G^2 \times M \times (D_K^2 + N)$$
Tỷ lệ giảm chi phí tính toán:
$$\text{Ratio} = \frac{Cost_{DSC}}{Cost_{Std}} = \frac{D_G^2 \times M \times (D_K^2 + N)}{D_G^2 \times D_K^2 \times M \times N} = \frac{1}{N} + \frac{1}{D_K^2}$$
Với kích thước kernel $D_K = 3$ và số lượng bộ lọc $N = 64$:
$$\text{Ratio} = \frac{1}{64} + \frac{1}{3^2} = 0.0156 + 0.1111 \approx 0.1267$$
Khối lượng tính toán và số lượng tham số giảm xấp xỉ 8 lần, giúp mô hình đạt tốc độ suy luận thời gian thực trên Raspberry Pi 4.
2. Xây dựng và Huấn luyện mô hình với Keras/TensorFlow
import tensorflow as tf
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.layers import AveragePooling2D, Dropout, Flatten, Dense, Input
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 1. Khởi tạo cấu trúc base model MobileNetV2 (Pre-trained ImageNet, loại bỏ Fully Connected Top)
baseModel = MobileNetV2(
weights="imagenet",
include_top=False,
input_tensor=Input(shape=(224, 224, 3))
)
# 2. Thiết kế Head Model tùy biến cho bài toán 2 phân lớp (Mask / No Mask)
headModel = baseModel.output
headModel = AveragePooling2D(pool_size=(7, 7))(headModel)
headModel = Flatten(name="flatten")(headModel)
headModel = Dense(128, activation="relu")(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(2, activation="softmax")(headModel)
model = Model(inputs=baseModel.input, outputs=headModel)
# 3. Đóng băng các layer trích xuất đặc trưng của base model
for layer in baseModel.layers:
layer.trainable = False
# 4. Biên dịch mô hình với bộ tối ưu Adam và hàm mất mát Binary Crossentropy
INIT_LR = 1e-4
EPOCHS = 20
BS = 32
opt = Adam(learning_rate=INIT_LR, decay=INIT_LR / EPOCHS)
model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"])
3. Thuật toán phát hiện và điều khiển tại tầng thực thi (Raspberry Pi 4)
import cv2
import numpy as np
import serial
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model
# Khởi tạo kết nối UART với STM32
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.1)
# Tải mô hình nhận diện khuôn mặt Caffe và mô hình Mask Detector
faceNet = cv2.dnn.readNet("deploy.prototxt", "res10_300x300_ssd_iter_140000.caffemodel")
maskNet = load_model("mask_detector.h5")
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
(h, w) = frame.shape[:2]
blob = cv2.dnn.blobFromImage(frame, 1.0, (300, 300), (104.0, 177.0, 123.0))
faceNet.setInput(blob)
detections = faceNet.forward()
for i in range(0, detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype("int")
(startX, startY) = (max(0, startX), max(0, startY))
(endX, endY) = (min(w - 1, endX), min(h - 1, endY))
face = frame[startY:endY, startX:endX]
face = cv2.cvtColor(face, cv2.COLOR_BGR2RGB)
face = cv2.resize(face, (224, 224))
face = img_to_array(face)
face = preprocess_input(face)
face = np.expand_dims(face, axis=0)
(mask, withoutMask) = maskNet.predict(face)[0]
# Gửi tín hiệu điều khiển qua STM32 khi phát hiện có khẩu trang
if mask > withoutMask:
ser.write(b'\xAA\x01\xAB') # Frame: Header 0xAA, Payload 0x01, Checksum 0xAB
else:
ser.write(b'\xAA\x00\xAA') # Frame: Header 0xAA, Payload 0x00, Checksum 0xAA
4. Mã nguồn xử lý cảm biến và điều khiển cửa trên STM32 (C/HAL)
#include "stm32f0xx_hal.h"
#define MLX90614_I2C_ADDR 0x5A << 1
#define RAM_ACCESS 0x00
#define RAM_TOBJ1 0x07
extern I2C_HandleTypeDef hi2c1;
extern TIM_HandleTypeDef htim2;
float MLX90614_Read_Temp(void) {
uint8_t reg = RAM_ACCESS | RAM_TOBJ1;
uint8_t data[3];
float temp = 0.0f;
if (HAL_I2C_Master_Transmit(&hi2c1, MLX90614_I2C_ADDR, ®, 1, 100) == HAL_OK) {
if (HAL_I2C_Master_Receive(&hi2c1, MLX90614_I2C_ADDR, data, 3, 100) == HAL_OK) {
uint16_t raw = (data[1] << 8) | data[0];
temp = (raw * 0.02f) - 273.15f; // Chuyển đổi sang độ C
}
}
return temp;
}
void Door_Control(uint8_t state) {
if (state == 1) {
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 200); // 90 độ - Mở cửa
HAL_Delay(3000); // Giữ cửa mở trong 3s
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 100); // 0 độ - Đóng cửa
}
}
Kiểm thử và Đánh giá kết quả
Tập dữ liệu huấn luyện bao gồm 3,800 ảnh ($1,900$ ảnh đeo khẩu trang và $1,900$ ảnh không đeo khẩu trang) thu thập từ các tập dữ liệu chuẩn Kaggle và Real-World Face Dataset (RWFD), chia tỷ lệ $80%$ Train và $20%$ Test kết hợp Data Augmentation (rotation_range=20, zoom_range=0.15, horizontal_flip=True).
1. Bảng số liệu phân loại mô hình (Classification Report)
| Nhãn phân loại |
Precision |
Recall |
F1-Score |
Số lượng mẫu (Support) |
| Mask (Có khẩu trang) |
0.99 |
0.98 |
0.985 |
380 |
| No Mask (Không khẩu trang) |
0.98 |
0.99 |
0.985 |
380 |
| Accuracy |
|
|
0.986 |
760 |
| Macro Avg |
0.985 |
0.985 |
0.985 |
760 |
| Weighted Avg |
0.985 |
0.985 |
0.985 |
760 |
2. Đánh giá độ chính xác nhận diện theo điều kiện môi trường thực tế
| Khoảng cách (cm) |
Điều kiện ánh sáng |
Số lần thử nghiệm |
Số lần nhận diện đúng |
Tỷ lệ thành công (%) |
| $30 - 40\text{ cm}$ |
Đủ sáng (Văn phòng: 350 Lux) |
50 |
49 |
98.0% |
| $40 - 60\text{ cm}$ |
Đủ sáng (Văn phòng: 350 Lux) |
50 |
48 |
96.0% |
| $> 60\text{ cm}$ |
Đủ sáng (Văn phòng: 350 Lux) |
50 |
41 |
82.0% |
| $40 - 50\text{ cm}$ |
Ngược sáng / Thiếu sáng (< 80 Lux) |
50 |
39 |
78.0% |
| $40 - 50\text{ cm}$ |
Ánh sáng ngoài trời (> 1000 Lux) |
50 |
46 |
92.0% |
3. Đánh giá độ trễ và thời gian thực thi (Latency Benchmarking)
- Thời gian trích xuất khuôn mặt (SSD Caffe): $28.4\text{ ms}$
- Thời gian suy luận MobileNetV2: $42.6\text{ ms}$
- Thời gian đọc cảm biến nhiệt I2C & truyền UART: $18.2\text{ ms}$
- Thời gian trễ cơ cấu Servo: $350.0\text{ ms}$
- Tổng thời gian từ khi phát hiện đến khi mở cửa: $\approx 439.2\text{ ms} \le 0.5\text{ giây}$ (Đáp ứng hoàn toàn tiêu chuẩn kiểm soát vào/ra).
Đổi mới và đóng góp
Các điểm cải tiến kỹ thuật nổi bật
- Kiến trúc phần cứng không đồng nhất (Heterogeneous Architecture): Tách bạch rõ ràng giữa khối thị giác máy tính tải nặng (Raspberry Pi 4) và khối điều khiển cứng thời gian thực (STM32F051R8T6). Thiết kế này triệt tiêu hoàn toàn hiện tượng jitter xung PWM điều khiển động cơ khi hệ điều hành Linux trên Raspberry Pi bị quá tải CPU.
- Khối Inverted Residual với Linear Bottleneck: Ứng dụng hàm kích hoạt $\text{ReLU6} = \min(\max(0, x), 6)$ giúp duy trì độ chính xác khi tính toán trên hệ số động thấp (Low-precision arithmetic), ngăn ngừa hiện tượng mất mát dữ liệu trên các đa tạp không gian thấp (Low-dimensional manifolds).
- Tiết kiệm $87.3%$ chi phí tính toán: Nhờ cơ chế Depthwise Separable Convolution, mô hình chỉ chiếm dung lượng xấp xỉ $11.5\text{ MB}$ (định dạng H5), cho phép nạp trực tiếp vào RAM và suy luận mượt mà với tốc độ $\approx 22\text{ FPS}$ mà không cần bộ tăng tốc phần cứng đắt tiền như Google Coral TPU hay Intel Neural Compute Stick.
So sánh với các giải pháp hiện nay
| Đặc tính |
Giải pháp Dlib Facial Landmark |
Mạng CNN truyền thống (VGG16) |
Hệ thống đề xuất (MobileNetV2 + STM32) |
| Độ chính xác |
78.5% (Dễ nhầm khi che mặt) |
96.2% |
98.6% |
| Dung lượng Model |
~99.7 MB |
> 500 MB |
11.5 MB |
| Tốc độ trên RPi 4 |
4 - 6 FPS |
0.8 - 1.2 FPS |
20 - 24 FPS |
| Tiêu thụ điện |
Thấp |
Rất cao |
Tối ưu (Edge Profile) |
| Độ tin cậy nhiệt |
Không có |
Tách rời, không đồng bộ |
Tích hợp đồng bộ phần cứng I2C |
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
- Cổng kiểm soát tòa nhà công sở & Trường học: Tích hợp trực tiếp vào hệ thống cửa xoay Tripod hoặc cửa kính lùa tự động. Nhân viên và học sinh đi qua chốt kiểm soát chỉ cần dừng 1 giây tại khoảng cách 40cm.
- Khu vực cách ly / Khoa khám bệnh truyền nhiễm: Đảm bảo 100% người bước vào khu vực vô trùng bắt buộc phải đeo khẩu trang và có thân nhiệt bình thường, giảm tải gánh nặng giám sát cho điều dưỡng viên.
Phân tích Chi phí - Hiệu quả (Cost-Benefit & ROI Analysis)
- Chi phí phần cứng mẫu thử (BoM):
- Máy tính nhúng Raspberry Pi 4 (4GB): $1,750,000\text{ VNĐ}$
- Vi điều khiển STM32F051R8T6: $120,000\text{ VNĐ}$
- Cảm biến GY-MLX90614-DCI: $350,000\text{ VNĐ}$
- Camera HD 720p, Servo SG90, Mạch nguồn & Khung vỏ: $850,000\text{ VNĐ}$
- Tổng chi phí chế tạo: $\approx 3,070,000\text{ VNĐ}$
- Hiệu quả kinh tế (ROI): So với việc thuê 01 nhân sự trực chốt kiểm dịch (chi phí tối thiểu $6,000,000\text{ VNĐ/tháng}$), hệ thống giúp hoàn vốn đầu tư chỉ sau chưa đầy 1 tháng vận hành và có thể hoạt động bền bỉ $24/7$.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Khoảng cách và góc quan sát: Cảm biến nhiệt độ MLX90614 có trường nhìn (FOV) nhạy cảm; sai số tăng khi đối tượng đứng lệch trục hoặc xa quá 60cm.
- Ảnh hưởng của môi trường ánh sáng cực đoan: Hiện tượng lóa sáng do ánh nắng mặt trời trực tiếp (> 1500 Lux) hoặc ngược sáng mạnh làm giảm tỷ lệ phát hiện khuôn mặt của bộ SSD Caffe xuống còn $\approx 78%$.
- Độ trễ cơ khí: Động cơ Servo SG90 chỉ mang tính chất mô phỏng mô hình, chưa đáp ứng được tải trọng của cánh cửa thực tế trong công nghiệp.
Hướng phát triển tiếp theo
- Nâng cấp cảm biến nhiệt dạng Ma trận (Thermal Array Camera): Thay thế cảm biến đơn điểm bằng module AMG8833 ($8\times 8$ pixels) hoặc MLX90640 ($32\times 24$ pixels) để tự động quét điểm nhiệt độ cao nhất trên khuôn mặt (trán, hốc mắt) thay vì cố định một điểm đo.
- Nén mô hình với TensorRT / TFLite INT8 Quantization: Lượng tử hóa mô hình từ Float32 sang INT8 nhằm tăng tốc độ suy luận thêm $200 - 300%$ trên kiến trúc vi xử lý ARM.
- Mở rộng chức năng IoT Cloud: Tích hợp module ESP32/4G để đẩy dữ liệu thống kê lưu lượng người, cảnh báo sốt thời gian thực về Dashboard quản trị tập trung thông qua giao thức MQTT.
Đối tượng hưởng lợi
- Sinh viên & Kỹ sư nhúng: Cung cấp tài liệu tham khảo hoàn chỉnh từ thiết kế phần cứng, giao tiếp bus công nghiệp đến triển khai mô hình Deep Learning thực chiến trên thiết bị biên.
- Nhà phát triển (Developers): Kế thừa kiến trúc mã nguồn mở phân tách tầng thị giác và tầng điều khiển thời gian thực, có thể tái sử dụng cho các bài toán phân loại rác, nhận diện biển số xe hay chấm công FaceID.
- Doanh nghiệp & Cơ quan: Sở hữu giải pháp tự động hóa an toàn dịch tễ với chi phí chế tạo thấp, dễ bảo trì, thay thế linh kiện và làm chủ hoàn toàn công nghệ.
- Cộng đồng nghiên cứu: Cung cấp các số liệu đo kiểm thực nghiệm về hiệu năng của MobileNetV2 trên nền tảng Raspberry Pi 4 trong điều kiện môi trường thực tế tại Việt Nam.
Câu hỏi thường gặp (FAQ)
1. Yêu cầu kỹ thuật tối thiểu để triển khai lại hệ thống này là gì?
Phần cứng yêu cầu tối thiểu một máy tính nhúng Raspberry Pi 4 (hoặc Pi 3B+ với FPS thấp hơn $\approx 8\text{ FPS}$), một bo mạch vi điều khiển (STM32/Arduino/ESP32) có hỗ trợ giao tiếp I2C và UART, một cảm biến nhiệt MLX90614 và camera chuẩn UVC 720p. Về phần mềm, cần môi trường Python $\ge 3.7$ cài đặt TensorFlow $\ge 2.4$ và OpenCV $\ge 4.0$.
2. Làm thế nào để giải quyết vấn đề nghẽn cổ chai khi có quá nhiều người cùng đi qua cửa?
Mô hình MobileNetV2 đã tối ưu thời gian suy luận xuống $\approx 42\text{ ms}$. Để tăng thông lượng, có thể tăng khoảng cách phát hiện khuôn mặt bằng camera góc rộng tiêu cự cao và nâng cấp cảm biến nhiệt hồng ngoại dạng mảng (Thermal Array) để đo thân nhiệt động mà người dùng không cần dừng lại hoàn toàn.
3. Hệ thống có thể tích hợp với các loại cửa tự động công nghiệp hiện có không?
Có. Vi điều khiển STM32 xuất tín hiệu điều khiển logic qua Relay (tiếp điểm NO/NC - Dry Contact). Tiếp điểm này có thể đấu nối song song trực tiếp với nút bấm mở cửa hoặc cảm biến radar của các hệ thống cửa lùa tự động phổ biến (như Panasonic, Nabco, Dorma).
4. Chi phí bảo trì và độ bền linh kiện định kỳ ra sao?
Cảm biến quang học và hồng ngoại không có cơ chế chuyển động cơ học nên tuổi thọ (MTBF) đạt trên 50,000 giờ hoạt động. Định kỳ 3 - 6 tháng cần vệ sinh bề mặt thấu kính camera và cảm biến nhiệt độ bằng cồn Isopropyl để loại bỏ bụi bẩn ảnh hưởng đến độ chính xác quang học.
5. Tại sao không dùng trực tiếp Raspberry Pi để điều khiển Servo mà phải thêm STM32?
Raspberry Pi chạy hệ điều hành đa nhiệm Linux (Non-Real-Time OS), tín hiệu PWM tạo ra bằng phần mềm (Software PWM) thường xuyên bị giật, sai lệch tần số khi CPU bị tải nặng do tác vụ xử lý ảnh. Vi điều khiển STM32 là phần cứng chuyên dụng thời gian thực (Hard Real-Time), tạo xung PWM bằng Hardware Timer chính xác tuyệt đối, đồng thời bảo vệ Raspberry Pi khỏi các xung điện áp ngược từ cuộn dây động cơ.
Kết luận
Đề tài "Thiết kế hệ thống mở cửa tự động thông qua nhận diện có đeo khẩu trang và nhiệt độ cơ thể thấp" đã giải quyết thành công bài toán tích hợp liên ngành giữa Trí tuệ nhân tạo (AI/Computer Vision) và Hệ thống nhúng điều khiển tự động (Embedded Systems). Bằng việc ứng dụng mạng nơ-ron tích chập tối ưu MobileNetV2 kết hợp kiến trúc phân tán Raspberry Pi 4 $\leftrightarrow$ STM32F051R8T6, hệ thống đã đạt độ chính xác phân loại ấn tượng $98.6%$, thời gian đáp ứng toàn chu trình dưới $0.5\text{ giây}$ với chi phí phần cứng tối ưu dưới 3.5 triệu VNĐ.
Giải pháp không chỉ chứng minh tính khả thi về mặt kỹ thuật và toán học mà còn mang giá trị thực tiễn cao, sẵn sàng thương mại hóa và ứng dụng rộng rãi tại các cơ quan, bệnh viện, trường học nhằm xây dựng môi trường thông minh, an toàn và phát triển bền vững trong kỷ nguyên công nghệ số.