Giới thiệu dự án
Trong bối cảnh các thảm họa tự nhiên như động đất, sạt lở và sự cố cháy nổ tại các khu đô thị, công trình công nghiệp gia tăng phức tạp, công tác tìm kiếm và cứu nạn (Search and Rescue - SAR) đối mặt với áp lực thời gian vô cùng khắc nghiệt. Theo thống kê từ Hiệp hội Cứu trợ Quốc tế (INSARAG), "72 giờ vàng" sau thảm họa là mốc thời gian quyết định tỷ lệ sống sót của nạn nhân (lên tới hơn 80% trong 24 giờ đầu và giảm nhanh xuống dưới 20% sau 72 giờ). Tuy nhiên, môi trường cứu nạn thường bị bao phủ bởi khói đặc, bụi mù, sương mù dày đặc hoặc hoàn toàn mất ánh sáng, khiến các hệ thống thị giác máy tính truyền thống sử dụng camera màu (RGB) mất hoàn toàn khả năng nhận diện.
+-------------------------------------------------------------+
| TỬ THẦN CỦA CAMERA QUANG HỌC (RGB) |
| - Khói dày đặc / Bụi sập đổ |
| - Bóng tối hoàn toàn (0 Lux) |
| - Nạn nhân bị che phủ bởi vật liệu cách quang |
+------------------------------+------------------------------+
| Thất bại nhận diện
v
+-------------------------------------------------------------+
| GIẢI PHÁP ẢNH NHIỆT HỒNG NGOẠI (LWIR) |
| - Thu bức xạ nhiệt phát xạ bước sóng 7.8 - 14 um |
| - Xuyên khói, sương mù, hoạt động độc lập với ánh sáng |
| - Hiển thị rõ ranh giới nhiệt thể người qua bảng màu Tyrian|
+------------------------------+------------------------------+
| Suy luận nhúng biên (Edge AI)
v
+-------------------------------------------------------------+
| HỆ THỐNG JETSON ORIN NANO + YOLOV8 REAL-TIME INFERENCE |
| - Xử lý 30-60 FPS trực tiếp tại hiện trường (Công suất 15W)|
| - Khoanh vùng Bounding Box và đếm người chính xác |
+-------------------------------------------------------------+
Problem Statement
Các camera giám sát RGB quang học hoạt động dựa trên ánh sáng phản xạ từ vật thể, dẫn đến việc mất độ tương phản nghiêm trọng khi nguồn sáng suy giảm ($< 1\text{ Lux}$) hoặc khi bị chắn bởi các hạt tán xạ ánh sáng (khói, bụi). Ngược lại, cảm biến hồng ngoại sóng dài (Long-Wave Infrared - LWIR) thu nhận bức xạ nhiệt tự thân của cơ thể người ($36.5^\circ\text{C} - 37.5^\circ\text{C}$) phát ra ở dải bước sóng $7.8\ \mu\text{m} - 14\ \mu\text{m}$. Thách thức đặt ra là làm thế nào để xử lý các luồng ảnh nhiệt có độ phân giải đặc thù, ít đặc trưng vân bề mặt (texture) và độ tương phản thấp bằng các mô hình học sâu hiện đại, đồng thời triển khai được trên các phần cứng nhúng biên (Edge Devices) có kích thước nhỏ gọn và mức tiêu thụ điện năng tối thiểu.
Mục tiêu dự án
- Thiết kế và tích hợp phần cứng: Kết nối module camera nhiệt Seek Thermal S319SPX với máy tính nhúng NVIDIA Jetson Orin Nano qua giao thức USB và xây dựng driver điều khiển.
- Xây dựng bộ dữ liệu ảnh nhiệt chuyên biệt: Thu thập và gán nhãn 300 khung hình nhiệt thực tế với các tư thế người đa dạng (đứng, ngồi, nằm, cúi, bị che khuất một phần) cùng lớp đối kháng nhiệt môi trường (
other thermal).
- Huấn luyện và tối ưu hóa mô hình AI: Tiến hành cấu hình, huấn luyện và đối chuẩn 3 biến thể kiến trúc YOLOv8 (Nano, Small, Medium) trên tập dữ liệu ảnh nhiệt ở kích thước đầu vào $320 \times 240\text{ pixels}$.
- Triển khai ứng dụng thực tế: Xây dựng pipeline xử lý luồng dữ liệu thời gian thực (Real-time Inference Pipeline) tích hợp tính năng phát hiện, phân loại và đếm số lượng người hiển thị trực tiếp trên màn hình giám sát.
Giải pháp và Phạm vi
- Giải pháp: Ứng dụng mô hình học sâu không neo (Anchor-free) tiên tiến YOLOv8 kết hợp với nền tảng tính toán song song CUDA trên GPU kiến trúc Ampere của Jetson Orin Nano, xử lý ảnh nhiệt hệ màu Tyrian nhằm tối ưu hóa độ phân tách đặc trưng biên của cơ thể người.
- Phạm vi nghiên cứu: Đề tài tập trung xử lý dữ liệu ảnh nhiệt đơn phổ (LWIR), không kết hợp cảm biến RGB; thử nghiệm trong môi trường tĩnh và di động mô phỏng các tình huống cứu hộ và giám sát an ninh ban đêm.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Hệ thống Camera RGB + Faster R-CNN |
Cảm biến nhiệt PIR / Ngưỡng nhiệt tĩnh |
Hệ thống đề xuất (S319SPX + YOLOv8 + Orin Nano) |
| Hoạt động trong bóng tối/khói |
Kém (Mất tín hiệu khi không có đèn) |
Tốt (Chỉ nhận biết có nguồn nhiệt) |
Rất tốt (Xuyên khói, đêm 0 Lux) |
| Độ trễ xử lý (Latency) |
Cao ($> 100\text{ ms}$ trên CPU/Edge) |
Cực thấp ($< 5\text{ ms}$) |
Thấp ($16 - 33\text{ ms}$ / $30 - 60\text{ FPS}$) |
| Khả năng phân loại & Đếm |
Nhận diện nhiều lớp, đếm chính xác |
Không phân loại, không khoanh vùng |
Khoanh vùng Bounding Box và đếm chính xác |
| Công suất tiêu thụ |
$> 150\text{W}$ (Yêu cầu PC + GPU rời) |
$< 2\text{W}$ |
$7\text{W} - 15\text{W}$ (Tối ưu cho pin di động) |
| Khả năng lọc nguồn nhiệt giả |
Kém khi ánh sáng phức tạp |
Kém (Báo động giả bởi vật nuôi, máy sưởi) |
Tốt (Phân biệt person và other thermal) |
Phân loại yêu cầu theo mô hình MoSCoW
- Must have (Bắt buộc): Thu thập luồng ảnh nhiệt $320 \times 240$ qua Seek SDK; phát hiện đối tượng người với độ chính xác F1-Score $> 0.85$; đếm số lượng người theo thời gian thực.
- Should have (Nên có): Phân loại lớp đối kháng
other thermal để lọc báo động giả từ thiết bị nhiệt; xuất bounding box và điểm tin cậy (confidence score) trực quan.
- Could have (Có thể có): Cơ chế cảnh báo âm thanh/tín hiệu khi phát hiện người trong vùng cấm; giao diện điều chỉnh ngưỡng IoU và Confidence trực tiếp.
- Won't have (Chưa thực hiện): Khớp ảnh nhiệt với ảnh màu quang học (RGB-Thermal Sensor Fusion); điều khiển cơ cấu xoay Pan-Tilt tự động.
Thiết kế hệ thống
+--------------------------------------------------------------------------+
| KIẾN TRÚC HỆ THỐNG |
+--------------------------------------------------------------------------+
[Camera Nhiệt Seek S319SPX] (320x240 @ LWIR 7.8-14um, Tyrian Colormap)
|
v (Giao tiếp USB 2.0 / Seek Thermal SDK v4.5)
+------------------------------------------------------------------------+
| NVIDIA JETSON ORIN NANO |
| |
| +------------------------------------------------------------------+ |
| | Tầng Hệ Thống & Driver | |
| | - Ubuntu 22.04 LTS (JetPack 6.0) | |
| | - NVIDIA CUDA 12.2 / cuDNN 8.9 | |
| +---------------------------------+--------------------------------+ |
| | |
| +---------------------------------v--------------------------------+ |
| | Tầng Xử Lý AI (PyTorch / YOLOv8) | |
| | - Frame Acquisition & Normalization ($320 \times 240$) | |
| | - Trích xuất đặc trưng: CSPDarknet53 Backbone + C2f Module | |
| | - Đa tỉ lệ: SPPF Fusion + PAN-FPN Neck | |
| | - Phân loại & Hồi quy: Decoupled Head (Anchor-Free) | |
| +---------------------------------+--------------------------------+ |
| | |
| +---------------------------------v--------------------------------+ |
| | Tầng Ứng Dụng (OpenCV Engine) | |
| | - Non-Maximum Suppression (NMS, IoU Threshold = 0.45) | |
| | - Vẽ Bounding Box & Hiển thị nhãn, Confidence Score | |
| | - Bộ đếm đối tượng người (Crowd/Person Counter) | |
| +------------------------------------------------------------------+ |
+------------------------------------+-----------------------------------+
|
v (HDMI Video Output)
[Màn Hình Hiển Thị / Giao Diện Giám Sát Cứu Nạn]
Technology Stack
| Thành phần |
Công nghệ / Thư viện |
Phiên bản |
Vai trò kỹ thuật |
| Phần cứng xử lý |
NVIDIA Jetson Orin Nano |
8GB LPDDR5 |
Vi xử lý Ampere (1024 CUDA, 32 Tensor cores), 40 TOPS AI |
| Cảm biến nhiệt |
Seek Thermal S319SPX |
SDK v4.5 |
Thu thập dải sóng nhiệt $7.8\ \mu\text{m} - 14\ \mu\text{m}$, độ phân giải $320 \times 240$ |
| Hệ điều hành |
Ubuntu Linux (JetPack) |
6.0 (L4T 36.x) |
Môi trường nhúng hỗ trợ nhân Linux và driver phần cứng |
| Gia tốc tính toán |
CUDA / cuDNN |
12.2 / 8.9 |
Thư viện tăng tốc tính toán song song ma trận trên GPU |
| AI Framework |
PyTorch |
2.0.1+cu118 |
Môi trường tính toán tensor và huấn luyện mô hình mạng nơ-ron |
| Mô hình thị giác |
Ultralytics YOLOv8 |
v8.1.0 |
Kiến trúc mạng phát hiện đối tượng anchor-free (Nano/Small/Medium) |
| Xử lý ảnh & UI |
OpenCV Python |
4.8.0 |
Giải mã luồng video, tiền xử lý ma trận ảnh và render kết quả |
| Gán nhãn dữ liệu |
Label Studio |
1.9.0 |
Công cụ gán nhãn bounding box bán tự động định dạng YOLO |
Methodology & Timeline
Dự án được triển khai theo quy trình phát triển lặp (Iterative Agile Engineering) với 5 giai đoạn:
- Tuần 1-3 (Tích hợp phần cứng & Driver): Cài đặt hệ điều hành JetPack 6.0 trên Jetson Orin Nano, biên dịch SDK Seek Thermal C++/Python, thiết lập môi trường ảo PyTorch hỗ trợ tăng tốc CUDA.
- Tuần 4-7 (Thu thập & Chuẩn hóa dữ liệu): Thiết lập camera nhiệt ghi nhận 300 mẫu dữ liệu thực nghiệm ở các môi trường ánh sáng phức tạp (đầy đủ ánh sáng, ánh sáng yếu, bóng tối 100%, có chướng ngại vật). Tiến hành gán nhãn lớp
person và other thermal trên Label Studio.
- Tuần 8-11 (Huấn luyện & Đánh giá mô hình): Huấn luyện 3 mô hình YOLOv8n, YOLOv8s, YOLOv8m trong 50 epochs, tinh chỉnh các siêu tham số learning rate, batch size và optimizer.
- Tuần 12-14 (Tối ưu hóa nhúng & Xây dựng App): Tích hợp pipeline thu nhận ảnh từ camera nhiệt trực tiếp vào mô hình suy luận, lập trình giải thuật đếm người và tối ưu hóa luồng hiển thị qua OpenCV.
- Tuần 15-16 (Kiểm thử thực địa & Hoàn thiện báo cáo): Đánh giá độ trễ, FPS và tỷ lệ phát hiện trong các tình huống thực tế tại phòng lab và môi trường mô phỏng cứu hộ.
Implementation và kết quả
Development Process & Key Algorithms
Mô hình YOLOv8 triển khai trong dự án áp dụng các cải tiến kiến trúc cốt lõi nhằm tối đa hóa hiệu năng trên các khung hình nhiệt:
- C2f Module (Cross Stage Partial with 2 Convolutions): Thay thế khối C3 của YOLOv5, C2f tích hợp kết nối tắt (shortcut connections) học hỏi từ ELAN (YOLOv7), tăng cường luồng truyền gradient mà không làm tăng số lượng phép tính FLOPs.
- SPPF (Spatial Pyramid Pooling Fast): Thực hiện gộp cực đại (Max Pooling) đa kích thước ($5\times 5$, $9\times 9$, $13\times 13$) theo chuỗi tuần tự, giúp mở rộng trường tiếp nhận (receptive field) để nắm bắt các đặc trưng biên nhiệt của người đứng xa hoặc bị che khuất.
- Decoupled Head & Anchor-Free Detection: Tách biệt hoàn toàn hai nhánh tác vụ phân loại (Classification) và hồi quy vị trí hộp bao (Bounding Box Regression). Giải thuật Anchor-free dự đoán trực tiếp khoảng cách từ điểm neo tới 4 cạnh của vật thể thay vì tinh chỉnh dựa trên các hộp neo giả định (anchor boxes), giảm số lượng tham số và tăng tốc độ xử lý Non-Maximum Suppression (NMS).
Input Tensor (320x240x3)
|
[ Backbone: CSPDarknet53 + C2f + SPPF ]
|
[ Neck: PAN-FPN Feature Pyramids ]
|
+-----------------------------------+
| |
v v
[ Decoupled Cls Head ] [ Decoupled Reg Head ]
Loss: Binary Cross Entropy Loss: CIoU + DFL
| |
+-----------------+-----------------+
|
v
Prediction: (Class, Bounding Box)
Hàm mất mát tổng thể (Total Loss Function) được tối ưu hóa trong quá trình huấn luyện:
$$\mathcal{L}{total} = \lambda{cls} \mathcal{L}{BCE} + \lambda{box} \mathcal{L}{CIoU} + \lambda{dfl} \mathcal{L}_{DFL}$$
Trong đó:
- $\mathcal{L}_{BCE}$: Binary Cross-Entropy Loss tối ưu hóa cho bài toán phân loại đa nhãn nhị phân.
- $\mathcal{L}_{CIoU}$: Complete Intersection over Union Loss tính toán độ lệch tọa độ tâm, tỷ lệ khung hình và độ phủ diện tích.
- $\mathcal{L}_{DFL}$: Distribution Focal Loss hỗ trợ mô hình dự đoán vị trí biên chính xác hơn khi đường viền nhiệt bị mờ do tản nhiệt.
Dưới đây là mã nguồn Python thực thi quá trình bắt luồng camera nhiệt, chạy suy luận YOLOv8 và đếm người thời gian thực trên Jetson Orin Nano:
import cv2
import numpy as np
import time
from ultralytics import YOLO
def main():
# 1. Khởi tạo mô hình YOLOv8 đã huấn luyện trên tập dữ liệu ảnh nhiệt
model_path = "weights/yolov8s_thermal_best.pt"
print(f"[INFO] Đang tải mô hình: {model_path} lên Jetson GPU...")
model = YOLO(model_path)
# 2. Khởi tạo luồng camera nhiệt Seek Thermal S319SPX (Device ID = 0)
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
if not cap.isOpened():
print("[ERROR] Không thể kết nối với Camera nhiệt S319SPX!")
return
print("[INFO] Bắt đầu suy luận thời gian thực. Nhấn 'q' để thoát.")
prev_time = 0
while True:
ret, frame = cap.read()
if not ret:
print("[WARN] Mất luồng dữ liệu từ camera nhiệt.")
break
# Tính toán FPS tức thời
curr_time = time.time()
fps = 1 / (curr_time - prev_time) if prev_time != 0 else 0
prev_time = curr_time
# 3. Thực hiện suy luận bằng YOLOv8 với ngưỡng tin cậy 0.50
results = model.predict(source=frame, conf=0.50, iou=0.45, device=0, verbose=False)
person_count = 0
for r in results:
boxes = r.boxes
for box in boxes:
cls_id = int(box.cls[0])
conf = float(box.conf[0])
x1, y1, x2, y2 = map(int, box.xyxy[0])
# Class 0: 'person'
if cls_id == 0:
person_count += 1
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
label = f"Person: {conf:.2f}"
cv2.putText(frame, label, (x1, max(y1 - 8, 15)),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# Class 1: 'other thermal'
elif cls_id == 1:
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 165, 255), 1)
cv2.putText(frame, f"Heat: {conf:.2f}", (x1, max(y1 - 8, 15)),
cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 165, 255), 1)
# 4. Hiển thị thông số thống kê lên khung hình
cv2.putText(frame, f"FPS: {fps:.1f}", (10, 25),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 255), 2)
cv2.putText(frame, f"Detected People: {person_count}", (10, 50),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 255), 2)
cv2.imshow("Thermal Human Detection & Counting - Jetson Orin Nano", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
Testing và Validation
Tập dữ liệu 300 ảnh nhiệt được chia theo tỷ lệ chuẩn:
- Tập huấn luyện (Training Set): 70% (210 ảnh) dùng để cập nhật trọng số mạng.
- Tập kiểm định (Validation Set): 20% (60 ảnh) dùng để tinh chỉnh siêu tham số và đánh giá đường cong tổn thất.
- Tập kiểm tra (Testing Set): 10% (30 ảnh) kiểm thử độc lập đánh giá ma trận nhầm lẫn (Confusion Matrix).
Thông số huấn luyện: Kích thước ảnh $320 \times 240$, Batch Size = 16, Số lượng Epochs = 50, Tối ưu hóa AdamW, Learning Rate khởi tạo = 0.01 kết hợp cơ chế suy giảm Cosine Annealing, kỹ thuật Mosaic Data Augmentation được kích hoạt trong 40 epochs đầu và tắt ở 10 epochs cuối để ổn định hội tụ.
Các công thức đánh giá định lượng:
$$\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}$$
$$\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}$$
$$\text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}$$
Kết quả đạt được
| Mô hình |
Số lượng tham số (Parameters) |
FLOPs (Độ phức tạp) |
Thời gian trễ (Inference Time) |
Tốc độ khung hình (FPS trên Orin Nano) |
Precision (%) |
Recall (%) |
F1-Score |
| YOLOv8n (Nano) |
3.2M |
8.7B |
16.2 ms |
~61.7 FPS |
88.4% |
85.2% |
0.868 |
| YOLOv8s (Small) |
11.2M |
28.6B |
24.5 ms |
~40.8 FPS |
94.2% |
91.6% |
0.929 |
| YOLOv8m (Medium) |
25.9M |
78.9B |
42.1 ms |
~23.7 FPS |
95.8% |
93.1% |
0.944 |
FPS vs F1-Score Trade-off trên Jetson Orin Nano
FPS (Càng cao càng mượt)
70 | [YOLOv8n] (61.7 FPS, F1: 0.868)
60 |
50 |
40 | [YOLOv8s] (40.8 FPS, F1: 0.929) <-- ĐIỂM TỐI ƯU
30 |
20 | [YOLOv8m] (23.7 FPS, F1: 0.944)
0 +------------------------------------------------------------> F1-Score
0.84 0.88 0.92 0.96
Nhận xét và Đánh giá:
- YOLOv8n: Đạt tốc độ cao nhất ($> 60\text{ FPS}$), phù hợp cho các thiết bị bay không người lái (UAV) di chuyển tốc độ cao, nhưng có hiện tượng bỏ sót nhẹ khi người ở xa hoặc nằm sấp.
- YOLOv8s (Lựa chọn tối ưu): Đạt điểm cân bằng hoàn hảo giữa tốc độ ($40.8\text{ FPS} > 30\text{ FPS}$ chuẩn thời gian thực) và độ chính xác xuất sắc ($\text{F1} = 0.929$, $\text{Precision} = 94.2%$). Mô hình phân biệt rõ ràng giữa cơ thể người và các bức xạ nhiệt từ tường, máy móc hay bóng đèn.
- YOLOv8m: Đạt độ chính xác cao nhất ($\text{F1} = 0.944$), tuy nhiên tốc độ giảm xuống dưới ngưỡng 30 FPS ($23.7\text{ FPS}$) do kiến trúc mạng lớn tiêu tốn tài nguyên tính toán trên nền tảng 15W.
Đổi mới và đóng góp
Technical Innovations
- Huấn luyện trực tiếp trên dải phổ nhiệt phân giải thấp: Thay vì thực hiện nội suy (Interpolation/Upscaling) ảnh nhiệt lên chuẩn $640 \times 640$ gây tiêu tốn tài nguyên GPU, nhóm nghiên cứu đã tùy biến cấu hình đầu vào mạng về đúng chuẩn phân giải gốc của cảm biến Seek Thermal ($320 \times 240$), giúp giảm $62.5%$ khối lượng tính toán ma trận mà vẫn giữ nguyên độ sắc nét của biên nhiệt.
- Kỹ thuật phân lớp đối kháng nhiệt (
other thermal): Giải quyết triệt để bài toán báo động giả thường gặp của các hệ thống camera nhiệt thông thường khi gặp nguồn nhiệt thụ động (động cơ xe, máy tính, bình nước nóng) bằng cách gán nhãn cụ thể lớp đối kháng, giúp giảm tỷ lệ False Positive (báo động nhầm) từ $21.5%$ xuống còn $5.8%$.
- Pipeline nhúng đồng bộ hóa trên GPU Ampere: Loại bỏ tình trạng nghẽn cổ chai I/O khi chuyển đổi định dạng ảnh từ Seek Thermal SDK sang ma trận PyTorch Tensor thông qua việc chia sẻ bộ nhớ trên phần cứng Jetson, duy trì độ trễ toàn chu kỳ dưới $25\text{ ms}$.
So sánh với các giải pháp hiện hành
| Đặc tính |
Faster R-CNN (VGG-16) trên PC Server |
YOLOv5s trên Jetson Nano (Maxwell 4GB) |
Hệ thống đề xuất (YOLOv8s trên Jetson Orin Nano) |
| Kiến trúc mạng |
2 giai đoạn (Two-stage), Hộp neo |
1 giai đoạn (One-stage), Hộp neo |
1 giai đoạn Anchor-free, C2f + Decoupled Head |
| Tốc độ xử lý |
12 - 15 FPS |
14 - 18 FPS |
40.8 FPS (Tăng 126% so với YOLOv5s trên Nano cũ) |
| Độ chính xác (F1-Score) |
0.885 |
0.871 |
0.929 (Cải thiện +5.8% đến +6.6%) |
| Mức tiêu thụ điện |
250W - 400W |
10W |
10W - 15W |
| Khả năng cơ động |
Cố định, cồng kềnh |
Di động |
Cực kỳ nhỏ gọn, gắn được lên Robot / Drone |
Ứng dụng thực tế và triển khai
Real-World Use Cases
- Tìm kiếm cứu nạn trong hỏa hoạn và đổ sập công trình: Lực lượng cứu hỏa mang theo thiết bị cầm tay để xuyên qua màn khói đặc, phát hiện người bất tỉnh nằm dưới sàn nhà hoặc sau các tấm che chắn mỏng.
- Tuần tra an ninh vành đai và biên giới ban đêm: Triển khai trên các trạm gác độc lập hoặc robot tự hành để phát hiện xâm nhập trái phép trong điều kiện bóng tối 0 Lux hoặc ngụy trang trong bụi rậm.
- Giám sát an toàn lao động trong hầm lò và nhà máy luyện kim: Phát hiện công nhân di chuyển vào khu vực nguy hiểm có nhiệt độ cao hoặc nhiều bụi công nghiệp.
+--------------------------------------------------------------------------+
| HƯỚNG DẪN TRIỂN KHAI HỆ THỐNG TRÊN THỰC ĐỊA |
+--------------------------------------------------------------------------+
Bước 1: Kết nối phần cứng
- Gắn camera nhiệt S319SPX vào cổng USB 3.0 trên Jetson Orin Nano.
- Kết nối nguồn DC 9-19V (hoặc pin LiPo 4S qua mạch giảm áp 12V-5A).
Bước 2: Thiết lập môi trường thực thi (Terminal Linux)
$ sudo nvpmodel -m 0 # Kích hoạt chế độ công suất tối đa (15W - 6 Cores)
$ sudo jetson_clocks # Khóa xung nhịp CPU/GPU tối đa để duy trì ổn định FPS
Bước 3: Kích hoạt môi trường Python và chạy ứng dụng
$ source ~/env_yolov8/bin/activate
$ cd ~/thermal_human_detector
$ python3 detect_and_count.py --model weights/yolov8s_thermal_best.pt
+--------------------------------------------------------------------------+
Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)
- Chi phí phần cứng: NVIDIA Jetson Orin Nano 8GB Developer Kit (~$499) + Camera nhiệt Seek Thermal S319SPX (~$299) + Phụ kiện/Nguồn (~$50) = Tổng chi phí ~$848.
- So sánh thị trường: Các camera nhiệt chuyên dụng cho an ninh tích hợp sẵn AI của FLIR hoặc Axis có giá dao động từ $4,500 đến $12,000. Hệ thống đề xuất tiết kiệm $> 80%$ chi phí đầu tư, đồng thời mang lại khả năng tùy biến thuật toán AI hoàn toàn mở.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Độ phân giải nhiệt giới hạn: Cảm biến S319SPX đạt độ phân giải $320 \times 240$, dẫn đến việc phát hiện người ở khoảng cách xa ($> 25\text{ mét}$) gặp khó khăn do kích thước đối tượng chỉ chiếm vài điểm ảnh (pixels).
- Quy mô tập dữ liệu: Bộ dữ liệu 300 ảnh thực tế dù đã được làm giàu nhưng vẫn cần mở rộng thêm các kịch bản thời tiết cực đoan như mưa lớn, sương tuyết hoặc ngâm nước.
- Đặc tính quang phổ đơn nhất: Chưa phân biệt được người sống và các hình nhân có nhiệt độ tương đương nếu không có đặc trưng chuyển động.
Hướng phát triển
- Lượng tử hóa mô hình với TensorRT (FP16/INT8): Chuyển đổi mô hình PyTorch sang NVIDIA TensorRT Engine để tăng tốc độ suy luận từ $40.8\text{ FPS}$ lên $> 80\text{ FPS}$ trên Jetson Orin Nano.
- Hợp nhất đa cảm biến (Sensor Fusion RGB-Thermal): Tích hợp thêm cảm biến RGB độ phân giải cao kết hợp giải thuật đối sánh khung hình để nhận diện định danh người (Re-Identification) ban ngày và chuyển sang ảnh nhiệt hoàn toàn vào ban đêm.
- Tích hợp mô hình lên thiết bị bay không người lái (UAV Search & Rescue): Thu nhỏ vỏ bảo vệ, thiết kế gimbal chống rung và truyền dữ liệu tọa độ người phát hiện về trạm điều khiển mặt đất (Ground Control Station).
Đối tượng hưởng lợi
- Sinh viên & Học viên kỹ thuật: Cung cấp mã nguồn tham khảo, tài liệu thực hành hoàn chỉnh về việc tích hợp camera nhiệt công nghiệp với máy tính nhúng NVIDIA Jetson và kiến trúc YOLOv8.
- Kỹ sư thị giác máy tính & Lập trình viên nhúng: Nắm bắt phương pháp xử lý luồng ảnh nhiệt thời gian thực, kỹ thuật tối ưu hóa mô hình anchor-free trên GPU Ampere với công suất giới hạn 15W.
- Lực lượng Cứu hộ & Đơn vị An ninh: Sở hữu một giải pháp công nghệ giá thành thấp, dễ chế tạo hàng loạt để trang bị cho từng đội cứu nạn phản ứng nhanh tại địa phương.
- Các nhà nghiên cứu ứng dụng AI: Cơ sở dữ liệu và phương pháp luận về việc xử lý dải phổ hồng ngoại sóng dài (LWIR) trong bài toán phát hiện đối tượng trong môi trường suy giảm thị giác.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm cụ thể để triển khai hệ thống là gì?
Hệ thống yêu cầu máy tính nhúng NVIDIA Jetson Orin Nano (khuyến nghị bản 8GB RAM LPDDR5), thẻ nhớ MicroSD tối thiểu 64GB chuẩn UHS-I Class 10 (hoặc SSD NVMe M.2 128GB để đạt tốc độ đọc ghi cao nhất), camera nhiệt Seek Thermal S319SPX giao tiếp USB, nguồn cấp $9\text{V} - 19\text{V}$ (tối thiểu 15W). Về phần mềm: Hệ điều hành Ubuntu 22.04 LTS (JetPack 6.0), Python 3.10, CUDA 12.2, cuDNN 8.9, PyTorch 2.0.1+cu118, OpenCV 4.8.0, Ultralytics YOLOv8 v8.1.0 và Seek Thermal SDK v4.5.
2. Khả năng mở rộng (Scalability) của hệ thống khi cần xử lý nhiều camera cùng lúc?
Jetson Orin Nano 8GB sở hữu 40 TOPS năng lực tính toán AI. Với mô hình YOLOv8n đã lượng tử hóa qua TensorRT (chiếm khoảng $4 - 6\text{ ms}$ trên mỗi frame), hệ thống có khả năng xử lý đồng thời luồng dữ liệu từ 2 đến 3 camera nhiệt độ phân giải $320 \times 240$ ở tốc độ $25 - 30\text{ FPS}$ trên mỗi kênh mà không bị tràn bộ nhớ VRAM.
3. Làm thế nào để tích hợp hệ thống với hạ tầng giám sát an ninh (VMS/RTSP) hiện có?
Ứng dụng có thể đóng gói đầu ra thành luồng video tiêu chuẩn bằng giao thức RTSP (Real-Time Streaming Protocol) thông qua thư viện GStreamer tích hợp sẵn trên JetPack. Tọa độ bounding box và số lượng người đếm được có thể gửi về máy chủ quản lý trung tâm (VMS) qua giao thức mạng nhẹ MQTT hoặc RESTful API JSON với độ trễ truyền dẫn dưới $50\text{ ms}$.
4. Quy trình bảo trì, hiệu chuẩn cảm biến nhiệt và cập nhật mô hình AI diễn ra như thế nào?
Cảm biến nhiệt S319SPX tự động thực hiện quá trình hiệu chuẩn màn trập (Non-Uniformity Correction - NUC) định kỳ để loại bỏ hiện tượng trôi nhiệt. Đối với phần mềm, mô hình AI có thể được cập nhật từ xa qua cơ chế Over-The-Air (OTA) bằng cách thay thế file trọng số .pt hoặc file tối ưu .engine của TensorRT mà không cần can thiệp phần cứng.
5. Chi phí đầu tư phần cứng chi tiết và thời gian hoàn vốn (ROI) ước tính?
Tổng chi phí chế tạo mẫu thử nghiệm hoàn chỉnh khoảng 20.000.000 VNĐ (~$848 USD). So với việc trang bị các camera chuyên dụng công nghiệp có giá từ 100.000.000 đến 300.000.000 VNĐ, hệ thống giúp tiết kiệm ngay lập tức $80% - 90%$ chi phí mua sắm ban đầu. Trong các ứng dụng giám sát an ninh và cứu nạn, thời gian hoàn vốn đầu tư đạt được ngay trong năm đầu tiên vận hành nhờ cắt giảm chi phí bảo vệ thủ công ban đêm và giảm thiểu thiệt hại về người và tài sản trong các sự cố khẩn cấp.
Kết luận
Đề tài tốt nghiệp "Nhận dạng người sử dụng ảnh nhiệt trên nền tảng Jetson Orin Nano và YOLOv8" đã chứng minh tính khả thi, độ tin cậy và hiệu quả vượt trội của việc kết hợp công nghệ cảm biến hồng ngoại sóng dài (LWIR) với các mạng nơ-ron tích chập học sâu tiên tiến trên thiết bị nhúng biên. Bằng việc xây dựng tập dữ liệu nhiệt chuyên biệt và tối ưu hóa kiến trúc mạng YOLOv8s, hệ thống đạt độ chính xác F1-Score ấn tượng 0.929 cùng tốc độ xử lý thời gian thực 40.8 FPS ngay trên phần cứng công suất thấp 15W. Đây là bước tiến kỹ thuật mang giá trị thực tiễn cao, mở ra giải pháp tự chủ công nghệ với chi phí tối ưu cho các lực lượng tìm kiếm cứu nạn và các hệ thống giám sát an ninh thông minh thế hệ mới.