Giới thiệu dự án
Trong bối cảnh hệ thống y tế toàn cầu thường xuyên đối mặt với nguy cơ quá tải—đặc biệt sau những làn sóng dịch bệnh truyền nhiễm như COVID-19—nhu cầu chuyển dịch mô hình điều trị và theo dõi sang chăm sóc sức khỏe tại nhà (Home Healthcare) đang gia tăng với tốc độ nhanh chóng. Theo Tổ chức Y tế Thế giới (WHO), sự thiếu hụt nhân lực y tế ước tính lên tới 10 triệu nhân viên vào năm 2030, đòi hỏi các giải pháp giám sát tự động phải có khả năng cảnh báo sớm các dấu hiệu nguy kịch để can thiệp kịp thời.
+-----------------------------------------------------------------------------------+
| TỔNG THỂ HỆ THỐNG GIÁM SÁT |
+-----------------------------------------------------------------------------------+
| [IP/USB Camera] ---> [MediaPipe Pose] ---> [Vector Tọa Độ 3D] |
| | | |
| v v |
| (33 Landmarks x,y,z) (99 Đặc Trưng Số) |
| | |
| v |
| [Cảnh Báo Email/SMS] <--- [Ngưỡng Xác Suất] <--- [Mạng LSTM / RNN] |
+-----------------------------------------------------------------------------------+
Tuy nhiên, các hệ thống camera giám sát truyền thống (CCTV) hiện nay chủ yếu đóng vai trò ghi nhận thụ động hoặc áp dụng các giải pháp thị giác máy tính (Computer Vision) phân tích trực tiếp trên từng khung ảnh pixel (Pixel-level Processing). Cách tiếp cận này bộc lộ những nhược điểm cố hữu:
- Đòi hỏi năng lực tính toán cực lớn (yêu cầu GPU rời đắt đỏ để chạy các mạng tích chập 3D - 3D CNN).
- Dễ suy giảm hiệu năng do thay đổi về phông nền, góc máy, ánh sáng và kích thước cơ thể.
- Tiềm ẩn rủi ro nghiêm trọng về quyền riêng tư của bệnh nhân khi phải liên tục truyền tải và lưu trữ luồng video nguyên bản (Raw Video Streams).
Đề tài khóa luận "Nghiên cứu và ứng dụng các thuật toán nhận dạng hành động bất thường của bệnh nhân tại nhà" (Tác giả: Nguyễn Minh Tâm, Giảng viên hướng dẫn: TS. Đoàn Thanh Nghị - Đại học An Giang) giải quyết bài toán này thông qua việc xây dựng một hệ thống thông minh giám sát thời gian thực (Real-Time Intelligent Monitoring System). Thay vì phân tích toàn bộ không gian ảnh, giải pháp tập trung trích xuất 33 điểm mốc khung xương 3D (3D Skeletal Landmarks) thông qua thư viện MediaPipe Pose (BlazePose), sau đó phân loại chuỗi động học thời gian qua mạng nơ-ron hồi quy LSTM (Long Short-Term Memory), kết hợp chặt chẽ với quy trình tự động hóa Train Pipeline.
+-----------------------------------------------------------------------------------+
| MỤC TIÊU VÀ CHỈ SỐ ĐO LƯỜNG (KPI) |
+-----------------------------------------------------------------------------------+
| 1. Trích xuất đặc trưng: 33 khớp 3D (99 tọa độ x,y,z) thời gian thực |
| 2. Phân loại chuỗi: Nhận dạng chính xác >= 95% trên 16 lớp hành động |
| 3. Tối ưu phần cứng: Độ trễ xử lý < 30ms/chuỗi trên CPU thông dụng |
| 4. Xử lý cảnh báo: Tự động gửi Email/Thông báo kèm ảnh bằng chứng < 2 giây |
| 5. Bảo mật dữ liệu: Mã hóa tọa độ, không lưu trữ video raw của bệnh nhân |
+-----------------------------------------------------------------------------------+
Hệ thống được thiết kế để vận hành tối ưu trên môi trường Linux/Windows với cấu hình phần cứng phổ thông, cung cấp cơ chế tự động gửi email cảnh báo kèm hình ảnh bằng chứng khi phát hiện các biến cố nguy hiểm như ngất xỉu, té ngã, đau ngực, đau đầu hay khó thở.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Các công trình nghiên cứu hiện nay về nhận dạng hành động người (Human Action Recognition - HAR) chủ yếu phân tách thành hai trường phái kỹ thuật: xử lý dựa trên đặc trưng hình ảnh trực tiếp (Image-based Features) và xử lý dựa trên chuỗi tọa độ khung xương (Skeleton-based Features).
| Tiêu chí so sánh |
Phương pháp 2D/3D CNN truyền thống |
Phương pháp Mô hình Khung xương (MediaPipe + LSTM) |
| Kích thước dữ liệu đầu vào |
Cực lớn ($C \times T \times H \times W$, ví dụ: $3 \times 30 \times 224 \times 224 \approx 4.5 \times 10^6$ giá trị) |
Cực nhỏ ($T \times K \times D = 30 \times 33 \times 3 = 2,970$ giá trị số thực) |
| Độ phức tạp tính toán |
$O(T \cdot K_w \cdot K_h \cdot C_{in} \cdot C_{out})$ - Yêu cầu GPU mạnh |
$O(T \cdot (d \cdot h + h^2))$ - Vận hành mượt mà trên CPU |
| Độ nhạy cảm ánh sáng/nền |
Cao (dễ bị nhiễu do màu áo, ánh sáng phòng, bóng râm) |
Rất thấp (chỉ quan tâm đến tương quan tọa độ vị trí khớp) |
| Bảo mật quyền riêng tư |
Thấp (hình ảnh nhạy cảm của bệnh nhân được lưu trữ/truyền tải) |
Cao (dữ liệu biến đổi thành các vector tọa độ trừu tượng) |
| Tốc độ xử lý (Inference) |
10 - 15 FPS trên CPU trung bình |
30 - 60 FPS trên CPU tiêu chuẩn |
Qua khảo sát các nghiên cứu liên quan như Tsai et al. (2020) áp dụng 3D CNN kết hợp YOLOv3 chỉ đạt 82.9% độ chính xác và tiêu tốn nhiều tài nguyên, hay mô hình 3D ResNet-34 trên tập STAIR Actions đạt độ chính xác 76.46%, phương pháp Skeleton-based tiếp cận qua MediaPipe Pose và LSTM chứng minh sự vượt trội toàn diện về cả độ chính xác lẫn hiệu năng triển khai thực tế.
+-----------------------------------------------------------------------------------+
| MA TRẬN ƯU TIÊN YÊU CẦU HỆ THỐNG (MoSCoW) |
+-----------------------------------------------------------------------------------+
| [MUST HAVE] |
| - Trích xuất tọa độ 33 điểm mốc 3D thời gian thực qua OpenCV và MediaPipe. |
| - Phân loại chuỗi chuyển động qua mô hình hồi quy LSTM. |
| - Cơ chế kích hoạt cảnh báo bất đồng bộ qua giao thức SMTP. |
+-----------------------------------------------------------------------------------+
| [SHOULD HAVE] |
| - Train Pipeline đóng gói toàn bộ quy trình tiền xử lý và chuẩn hóa dữ liệu. |
| - Bộ đệm trượt (Sliding Window Buffer) 30 khung hình cho luồng video liên tục. |
+-----------------------------------------------------------------------------------+
| [COULD HAVE] |
| - Dashboard quản lý cấu hình ngưỡng kích hoạt và lịch sử biến cố. |
| - Khả năng tích hợp thêm MobileNetV2 để nhận diện ngữ cảnh vật thể phụ trợ. |
+-----------------------------------------------------------------------------------+
| [WON'T HAVE] |
| - Lưu trữ liên tục video raw 24/7 lên dịch vụ điện toán đám mây. |
| - Yêu cầu bắt buộc phải có phần cứng tăng tốc GPU chuyên dụng. |
+-----------------------------------------------------------------------------------+
Thiết kế hệ thống
Kiến trúc tổng thể của hệ thống được chia thành 4 khối chức năng chính: Khối thu nhận hình ảnh (Video Acquisition), Khối trích xuất khung xương (Landmark Extraction), Khối suy luận chuỗi (Sequence Inference Engine), và Khối dịch vụ cảnh báo (Alerting Service).
+------------------+ +--------------------+ +--------------------+
| Video Capture | ---> | MediaPipe Pose | ---> | Coordinate Buffer |
| (OpenCV VideoIO) | | (BlazePose 33 pts) | | (Array: 30 x 99) |
+------------------+ +--------------------+ +--------------------+
|
v
+------------------+ +--------------------+ +--------------------+
| SMTP Mail / Logs | <--- | Threshold Logic | <--- | LSTM Classifier |
| (Alert Engine) | | (Prob >= 0.85) | | (Softmax Output) |
+------------------+ +--------------------+ +--------------------+
-
Technology Stack & Specifications:
- Ngôn ngữ cốt lõi: Python 3.9+
- Thị giác máy tính & Xử lý khung hình: OpenCV 4.5.5 (Module:
core, imgproc, videoio, highgui)
- Trích xuất đặc trưng tư thế: MediaPipe 0.8.9+ (MediaPipe Pose Solution / BlazePose)
- Học sâu & Xây dựng mô hình: TensorFlow 2.8.0 / Keras 2.8.0
- Xây dựng luồng dữ liệu: Scikit-Learn 1.0.2 (
sklearn.pipeline.Pipeline, StandardScaler)
- Xử lý ma trận & Dữ liệu: NumPy 1.21.6, Pandas 1.4.2
-
Thiết kế cấu trúc dữ liệu lưu trữ: Dữ liệu trích xuất từ các video được cấu trúc thành các ma trận mảng đa chiều (Tensors). Mỗi mẫu hành động là một chuỗi tuần tự thời gian gồm $T = 30$ frames liên tiếp, mỗi frame chứa $33$ điểm mốc, mỗi điểm gồm 3 tọa độ không gian $(x, y, z)$. Kích thước vector đầu vào của một bước thời gian là:
$$\dim(x_t) = 33 \times 3 = 99 \text{ chiều}$$
-
An toàn và Bảo mật: Dữ liệu hình ảnh được xử lý trực tiếp tại bộ nhớ đệm (In-memory RAM Buffer) và được giải phóng ngay sau khi trích xuất tọa độ. Chỉ khi phát hiện xác suất hành động bất thường vượt ngưỡng tin cậy ($P_{\text{abnormal}} \ge 0.85$), hệ thống mới trích xuất ảnh chụp tĩnh (Snapshot Frame) tại thời điểm xảy ra sự cố để đính kèm vào email gửi qua giao thức bảo mật TLS/SSL.
Methodology
Dự án áp dụng phương pháp luận phát triển lặp từng bước (Iterative Engineering Methodology), kết hợp chặt chẽ giữa nghiên cứu lý thuyết, thực nghiệm mô hình hóa và kiểm thử thực địa:
[Phase 1: Thu Thập & Chuẩn Hóa]
|---> Thu thập video RGB (KARD, NTU RGB+D, Dữ liệu thực tế phòng bệnh)
|---> Trích xuất Landmark qua MediaPipe Pose -> Xuất file CSV đặc trưng
[Phase 2: Thiết Kế & Huấn Luyện Pipeline]
|---> Tích hợp Sklearn Pipeline + StandardScaler
|---> Thiết kế mạng nơ-ron hồi quy LSTM (3 lớp ẩn, Dropout 0.2)
[Phase 3: Tích Hợp Hệ Thống Thực Tế]
|---> Xây dựng Threading kép: Luồng Inference và Luồng Alerting riêng biệt
|---> Tối ưu hóa độ trễ vòng lặp trượt (Sliding Window) trên OpenCV
[Phase 4: Đánh Giá & Tinh Chỉnh]
|---> Kiểm thử ma trận nhầm lẫn (Confusion Matrix), Precision, Recall, F1
|---> Benchmark tốc độ suy luận và mức tiêu thụ RAM/CPU trên thiết bị mục tiêu
Implementation và kết quả
Development process
Cốt lõi của quá trình triển khai là sự kết hợp giữa thuật toán phát hiện tư thế BlazePose và mạng nơ-ron hồi quy LSTM. Trong mỗi tế bào nhớ LSTM (LSTM Cell), hiện tượng biến mất đạo hàm (Vanishing Gradient) được triệt tiêu nhờ cơ chế 3 cổng điều khiển dòng thông tin: Cổng quên (Forget Gate $f_t$), Cổng vào (Input Gate $i_t$), và Cổng ra (Output Gate $o_t$).
$$\begin{aligned}
f_t &= \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \
i_t &= \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \
\tilde{C}t &= \tanh(W_c \cdot [h{t-1}, x_t] + b_c) \
C_t &= f_t \odot C_{t-1} + i_t \odot \tilde{C}t \
o_t &= \sigma(W_o \cdot [h{t-1}, x_t] + b_o) \
h_t &= o_t \odot \tanh(C_t)
\end{aligned}$$
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
def build_action_recognition_lstm(input_shape=(30, 99), num_classes=16):
"""
Xay dung kien truc mang LSTM nhan dang hanh dong tu chuoi toa do 3D Skeleton.
input_shape: (Sequence_Length=30, Landmarks_Features=33*3=99)
"""
model = Sequential([
LSTM(64, return_sequences=True, activation='relu', input_shape=input_shape),
Dropout(0.2),
LSTM(128, return_sequences=True, activation='relu'),
Dropout(0.2),
LSTM(64, return_sequences=False, activation='relu'),
Dense(64, activation='relu'),
Dense(32, activation='relu'),
Dense(num_classes, activation='softmax')
])
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(
optimizer=optimizer,
loss='categorical_crossentropy',
metrics=['categorical_accuracy']
)
return model
# Khoi tao mo hinh voi 16 lop hanh dong
model = build_action_recognition_lstm(input_shape=(30, 99), num_classes=16)
model.summary()
Đoạn mã sau thực hiện trích xuất tọa độ trực tiếp từ luồng webcam bằng MediaPipe và đưa vào hàng đợi suy luận:
import cv2
import mediapipe as mp
import numpy as np
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
def extract_keypoints(results):
"""Trích xuất và làm phẳng 33 điểm mốc 3D thành vector 1 chiều 99 phần tử"""
if results.pose_landmarks:
keypoints = np.array([[res.x, res.y, res.z] for res in results.pose_landmarks.landmark]).flatten()
else:
keypoints = np.zeros(33 * 3)
return keypoints
def process_video_stream():
sequence = []
predictions = []
threshold = 0.85
cap = cv2.VideoCapture(0)
with mp_pose.Pose(min_detection_confidence=0.7, min_tracking_confidence=0.7) as pose:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
image, results = mediapipe_detection(frame, pose)
keypoints = extract_keypoints(results)
sequence.append(keypoints)
sequence = sequence[-30:] # Giữ cửa sổ trượt đúng 30 frames
if len(sequence) == 30:
res = model.predict(np.expand_dims(sequence, axis=0), verbose=0)[0]
action_id = np.argmax(res)
confidence = res[action_id]
if confidence > threshold:
# Kích hoạt luồng cảnh báo nếu rơi vào lớp hành động bất thường
trigger_alert_if_abnormal(action_id, frame)
cv2.imshow('Smart Camera Monitoring', frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Testing và validation
Mô hình được huấn luyện và đánh giá trên bộ dữ liệu tổng hợp gồm 16 lớp hành động được chọn lọc từ bộ dữ liệu chuẩn KARD (Kinetics Activity Recognition Dataset), NTU RGB+D, kết hợp dữ liệu ghi hình thực nghiệm trực tiếp từ bệnh nhân và người cao tuổi.
+-----------------------------------------------------------------------------------+
| KẾT QUẢ ĐÁNH GIÁ ĐỘ CHÍNH XÁC THEO CHIỀU DÀI CHUỖI |
+-----------------------------------------------------------------------------------+
| Phân đoạn chuỗi (Sequence Length) | Thời lượng video (s) | Độ chính xác (Accuracy)|
+-----------------------------------+----------------------+------------------------+
| 15 khung hình (Frames) | ~ 0.5s | 88.42% |
| 30 khung hình (Frames) - Tối ưu | ~ 1.0s | 95.85% |
| 45 khung hình (Frames) | ~ 1.5s | 96.10% |
| 60 khung hình (Frames) | ~ 2.0s | 94.75% |
+-----------------------------------------------------------------------------------+
Nhận xét thực nghiệm: Chuỗi $T=30$ frames (tương đương 1 giây với tốc độ quét 30 FPS) mang lại điểm cân bằng tối ưu giữa độ chính xác nhận dạng ($95.85%$) và độ trễ phản hồi hệ thống ($< 1.2\text{s}$ từ lúc bắt đầu hành vi đến khi gửi cảnh báo).
+-----------------------------------------------------------------------------------+
| KẾT QUẢ PHÂN LOẠI CHI TIẾT TRÊN 16 LỚP HÀNH ĐỘNG |
+-----------------------------------------------------------------------------------+
| Nhóm hành động | Lớp cụ thể | Precision | Recall | F1-Score |
+------------------------+------------------------+-----------+---------+-----------+
| Hành động thông thường | Đi bộ (Walking) | 0.98 | 0.97 | 0.975 |
| | Ngồi xuống (Sit down) | 0.96 | 0.95 | 0.955 |
| | Đứng lên (Stand up) | 0.95 | 0.96 | 0.955 |
| | Vẫy tay (Waving) | 0.99 | 0.98 | 0.985 |
+------------------------+------------------------+-----------+---------+-----------+
| Bất thường / Cấp cứu | Té ngã (Falling) | 0.97 | 0.98 | 0.975 |
| | Ngất xỉu (Fainting) | 0.95 | 0.94 | 0.945 |
| | Đau tức ngực | 0.94 | 0.93 | 0.935 |
| | Đau đầu | 0.93 | 0.95 | 0.940 |
| | Đau bụng | 0.94 | 0.92 | 0.930 |
| | Đau lưng | 0.96 | 0.94 | 0.950 |
| | Đau cổ | 0.95 | 0.93 | 0.940 |
| | Ho / Hắt hơi | 0.97 | 0.96 | 0.965 |
| | Buồn nôn | 0.92 | 0.91 | 0.915 |
+------------------------+------------------------+-----------+---------+-----------+
| TRUNG BÌNH TOÀN BỘ | 16 Lớp Hành Động | 0.954 | 0.951 | 0.952 |
+------------------------+------------------------+-----------+---------+-----------+
Kết quả đạt được
Hệ thống hoàn thành toàn diện các yêu cầu đặt ra ban đầu, thể hiện qua các chỉ số định lượng cụ thể:
- Tốc độ xử lý: Đạt $32.4 \text{ FPS}$ ổn định trên CPU máy tính xách tay tiêu chuẩn (Intel Core i5-10300H, RAM 8GB), không cần kích hoạt GPU.
- Mức độ tiêu thụ tài nguyên: RAM chiếm dụng $< 380 \text{ MB}$, mức tải CPU trung bình $< 28%$.
- Độ tin cậy cảnh báo: Tự động phát hiện và gửi thông báo qua email kèm hình ảnh sự cố chỉ trong vòng $1.45 \text{ giây}$ kể từ thời điểm hành vi bất thường đạt ngưỡng xác nhận.
Đổi mới và đóng góp
+-----------------------------------------------------------------------------------+
| CÁC ĐỔI MỚI KỸ THUẬT NỔI BẬT |
+-----------------------------------------------------------------------------------+
| 1. Giảm tải không gian tính toán: Nén ma trận pixel xuống 99 giá trị tọa độ 3D. |
| 2. Đóng gói Train Pipeline: Tự động hóa tiền xử lý, tránh rò rỉ dữ liệu (Data Leak)|
| 3. Kiến trúc Đa luồng (Multi-threading): Tách biệt hoàn toàn Suy luận & Cảnh báo. |
| 4. Khả năng bảo mật quyền riêng tư: Giám sát chuẩn xác không cần lưu trữ video. |
+-----------------------------------------------------------------------------------+
- Chuyển đổi biểu diễn đặc trưng không gian sang chuỗi động học: Thay vì sử dụng mạng 3D CNN (như C3D, I3D) vốn yêu cầu hàng triệu tham số để quét qua khối voxel video, giải pháp chuyển hóa khung video thành mảng vector tọa độ $33 \times 3$. Bước đột phá này giúp giảm hơn $99.8%$ dung lượng dữ liệu cần tính toán tại mỗi frame.
| Giải pháp so sánh |
Kiến trúc mô hình |
Độ chính xác |
Tốc độ xử lý (Inference) |
Yêu cầu phần cứng |
| Tsai et al. (2020) |
3D CNN + YOLOv3 |
82.90% |
~ 12 FPS |
GPU chuyên dụng (NVIDIA GTX 1080+) |
| STAIR Actions (ResNet34) |
3D ResNet-34 |
76.46% |
~ 16 FPS |
GPU máy chủ |
| Giải pháp đề xuất |
MediaPipe + LSTM |
95.85% |
32.4 FPS |
CPU phổ thông (Intel Core i3/i5) |
- Quy trình Train Pipeline khép kín: Áp dụng mô hình pipeline chuẩn của Scikit-Learn đảm bảo tính nhất quán tuyệt đối giữa dữ liệu huấn luyện và dữ liệu thời gian thực (Data Transformation Consistency), ngăn chặn hiện tượng rò rỉ dữ liệu (Data Leakage) và hỗ trợ mở rộng thêm các lớp cử chỉ mới một cách thuận tiện.
- Giải pháp hướng tới bảo mật quyền riêng tư (Privacy-First Architecture): Hệ thống chỉ lưu trữ và xử lý các mảng số tọa độ, hoàn toàn phù hợp để triển khai tại các không gian sinh hoạt cá nhân nhạy cảm như phòng ngủ, phòng bệnh nhân nội trú mà không gây lo ngại về lộ lọt hình ảnh riêng tư.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Giám sát bệnh nhân và người cao tuổi đơn thân tại nhà: Tự động phát hiện các sự cố đột ngột như trượt chân ngã trong phòng khách/hành lang, ngất xỉu, đột quỵ, tự động kích hoạt chuông báo động tại chỗ và gửi thông báo khẩn cấp đến điện thoại của người thân.
- Khu điều trị nội trú và phòng cách ly y tế: Hỗ trợ điều dưỡng theo dõi liên tục hàng chục bệnh nhân mà không cần trực tiếp có mặt 24/7 trong phòng bệnh, giảm thiểu nguy cơ lây nhiễm chéo trong các đợt dịch bệnh truyền nhiễm.
- Trung tâm dưỡng lão và vật lý trị liệu: Theo dõi tần suất vận động, hỗ trợ đánh giá mức độ phục hồi chức năng của người bệnh dựa trên dữ liệu thống kê cử chỉ sinh hoạt hàng ngày.
+-----------------------------------------------------------------------------------+
| HẠ TẦNG VÀ LỘ TRÌNH TRIỂN KHAI |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1: Triển khai thí điểm tại 1 phòng bệnh (1 Edge Device + 1 Camera) |
| Giai đoạn 2: Kết nối mạng LAN nội bộ, tập trung dữ liệu tọa độ về Gateway mini |
| Giai đoạn 3: Mở rộng tích hợp API Telegram/Zalo Bot và SMS Cấp cứu 115 |
+-----------------------------------------------------------------------------------+
- Yêu cầu phần cứng triển khai tối thiểu:
- Thiết bị xử lý trung tâm (Edge Unit): Mini PC / Máy tính xách tay / Raspberry Pi 4 (khuyến nghị RAM $\ge 4\text{GB}$, CPU 4 nhân $\ge 2.0\text{GHz}$).
- Camera thu nhận: Camera USB hoặc Camera IP hỗ trợ chuẩn luồng RTSP, độ phân giải HD 720p @ 30 FPS.
- Môi trường hệ điều hành: Linux (Ubuntu 20.04 LTS trở lên) hoặc Windows 10/11 64-bit.
- Băng thông mạng: Yêu cầu tối thiểu $512 \text{ Kbps}$ (chỉ dùng khi gửi email cảnh báo).
Hạn chế và hướng phát triển
Mặc dù đạt được những kết quả khả quan, đề tài vẫn tồn tại một số hạn chế cần được tiếp tục hoàn thiện trong các nghiên cứu tiếp theo:
+-----------------------------------------------------------------------------------+
| HẠN CHẾ VÀ HƯỚNG KHẮC PHỤC |
+-----------------------------------------------------------------------------------+
| [Hạn chế hiện tại] |
| - Vật cản che khuất (Occlusion): Bị chăn, mền, bàn ghế che khuất chi dưới. |
| - Điều kiện thiếu sáng: Camera thông thường giảm độ chính xác khi nhận diện khớp. |
| - Xử lý đa đối tượng: Dễ nhầm lẫn khi có từ 2 người trở lên trong cùng khung hình.|
+-----------------------------------------------------------------------------------+
| [Hướng phát triển tương lai] |
| - Nâng cấp mô hình mạng đồ thị không gian-thời gian: ST-GCN / CTR-GC. |
| - Tích hợp camera hồng ngoại / cảm biến độ sâu RGB-D chuyên dụng. |
| - Kết hợp thuật toán theo dõi đa đối tượng: ByteTrack / DeepSORT. |
+-----------------------------------------------------------------------------------+
- Bài toán vật cản che khuất (Occlusion Problem): Khi bệnh nhân nằm trên giường và đắp chăn dày, các khớp chi dưới bị che khuất dẫn đến việc trích xuất điểm mốc không đầy đủ, làm giảm độ tin cậy của thuật toán.
- Nâng cấp kiến trúc mạng đồ thị (Skeletal Graph Neural Networks): Hướng phát triển tiếp theo là áp dụng mạng tích chập đồ thị không gian - thời gian (Spatial-Temporal Graph Convolutional Networks - ST-GCN) hoặc CTR-GC nhằm mô hình hóa trực tiếp cấu trúc liên kết giải phẫu tự nhiên giữa các khớp xương, giúp tăng độ chính xác phân loại trong các tư thế phức tạp lên $> 98%$.
Đối tượng hưởng lợi
- Sinh viên & Học viên ngành CNTT/Khoa học Dữ liệu: Tiếp cận mã nguồn thực tế về cách kết hợp giữa các framework xử lý thị giác máy tính hiện đại (MediaPipe, OpenCV) và các mô hình học sâu chuỗi thời gian (LSTM, RNN), hiểu sâu phương pháp đóng gói Train Pipeline.
- Kỹ sư AI & Lập trình viên hệ thống nhúng: Sở hữu mô hình mẫu có khả năng tối ưu hóa để triển khai các ứng dụng suy luận AI thời gian thực (Edge AI Inference) trên phần cứng chi phí thấp mà không phụ thuộc vào hạ tầng đám mây đắt đỏ.
- Cơ sở y tế & Doanh nghiệp thiết bị y tế: Có được bản thiết kế kiến trúc hoàn chỉnh để thương mại hóa thành các sản phẩm camera AI chăm sóc sức khỏe gia đình với chi phí sản xuất thấp, tính khả thi cao và đáp ứng nghiêm ngặt các tiêu chuẩn về an toàn dữ liệu cá nhân.
Câu hỏi thường gặp
1. Hệ thống có thể chạy ổn định trên các máy tính cấu hình yếu không?
Có. Nhờ việc trích xuất các điểm khung xương qua BlazePose và mô hình hóa bằng mạng LSTM nhỏ gọn (chỉ xử lý 99 đặc trưng số mỗi frame), hệ thống đạt tốc độ xử lý trên 30 FPS trên các dòng CPU phổ thông (Intel Core i3/i5 thế hệ 8 trở lên) mà không yêu cầu card đồ họa rời GPU.
2. Độ chính xác của hệ thống bị ảnh hưởng như thế nào trong điều kiện ánh sáng yếu?
MediaPipe Pose phụ thuộc vào camera RGB, do đó trong điều kiện phòng tối hoàn toàn, độ chính xác định vị khớp xương sẽ giảm. Để triển khai thực tế ban đêm, hệ thống cần được trang bị camera có đèn hồng ngoại (Infrared Night Vision) nhằm đảm bảo hình ảnh tương phản rõ nét cho thuật toán trích xuất khung xương.
3. Hệ thống phân biệt các hành động có cử chỉ tương đồng (như ho và đau răng) như thế nào?
Mô hình LSTM học các đặc trưng biến thiên theo chuỗi thời gian của toàn bộ 33 khớp thay vì từng khung ảnh tĩnh. Cử chỉ ho thường đi kèm với sự rung lắc nhẹ của lồng ngực và vùng đầu cúi nhanh về phía trước, trong khi đau răng có xu hướng giữ yên tay tại vị trí má trong thời gian dài hơn.
4. Hệ thống có lưu lại video sinh hoạt cá nhân của bệnh nhân không?
Không. Hệ thống hoạt động theo nguyên tắc xử lý luồng tức thời (Streaming In-Memory). Toàn bộ khung ảnh sau khi trích xuất ra tọa độ số sẽ bị hủy khỏi RAM. Chỉ khi xuất hiện hành vi nguy hiểm được xác nhận với độ tin cậy cao, một ảnh chụp đơn tại thời điểm xảy ra sự cố mới được trích xuất để gửi email cho người giám hộ.
5. Chi phí phần cứng để lắp đặt một điểm giám sát hoàn chỉnh là bao nhiêu?
Chi phí phần cứng ước tính cho một điểm giám sát dao động từ 2.000.000 VNĐ đến 3.500.000 VNĐ (gồm một thiết bị máy tính nhúng mini hoặc PC cũ kết hợp một camera USB góc rộng 1080p), thấp hơn 70-80% so với việc đầu tư máy chủ GPU chuyên dụng.
Kết luận
Khóa luận tốt nghiệp "Nghiên cứu và ứng dụng các thuật toán nhận dạng hành động bất thường của bệnh nhân tại nhà" của tác giả Nguyễn Minh Tâm (dưới sự hướng dẫn của TS. Đoàn Thanh Nghị) đã giải quyết hiệu quả bài toán giám sát sức khỏe từ xa bằng thị giác máy tính. Bằng việc kết hợp sáng tạo giữa công nghệ trích xuất 33 điểm mốc khung xương 3D của MediaPipe Pose, mạng nơ-ron hồi quy LSTM và quy trình Scikit-Learn Train Pipeline, hệ thống đạt độ chính xác nhận dạng ấn tượng 95.85% trên 16 lớp hành vi, vận hành thời gian thực mượt mà trên phần cứng phổ thông.
Công trình không chỉ đóng góp một giải pháp kỹ thuật khả thi, tiết kiệm chi phí cho hệ thống y tế thông minh mà còn mở ra hướng tiếp cận bền vững trong việc bảo vệ an toàn và quyền riêng tư cho người bệnh tại gia đình.