Giới thiệu dự án
Thị trường thiết bị bay không người lái (Unmanned Aerial Vehicle - UAV/Drone) phục vụ công tác giám sát thông minh và cứu hộ cứu nạn đang ghi nhận mức tăng trưởng kép hàng năm (CAGR) trên 18.2% trong giai đoạn 2021–2028. Tuy nhiên, việc ứng dụng thị giác máy tính (Computer Vision) vào luồng video từ UAV đặt ra bài toán hóc búa: xử lý lượng lớn dữ liệu hình ảnh độ phân giải cao tại góc nhìn thẳng đứng với độ trễ tối thiểu. Đồ án khóa luận tốt nghiệp "Đánh giá các phương pháp học sâu về phát hiện đối tượng trên không ảnh" tập trung giải quyết triệt để rào cản kỹ thuật này.
+-------------------------------------------------------------------------------+
| THÁCH THỨC ĐẶC THÙ TRÊN KHÔNG ẢNH |
+------------------------------------+------------------------------------------+
| - Độ phân giải lớn: 2000x1500 px | - Kích thước vật thể siêu nhỏ (< 32x32px)|
| - Góc quay rộng, nền phức tạp | - Mất cân bằng nhãn nghiêm trọng |
| - Mờ nhòe do chuyển động (blur) | - Yêu cầu xử lý thời gian thực (FPS cao) |
+------------------------------------+------------------------------------------+
1. Problem Statement
Các thuật toán phát hiện đối tượng thông thường (Generic Object Detection) được thiết kế trên các tập dữ liệu tiêu chuẩn như MS-COCO hay PASCAL VOC thường thất bại hoặc giảm hiệu năng nghiêm trọng khi chuyển dịch sang miền dữ liệu không ảnh. Những điểm nghẽn kỹ thuật cụ thể gồm:
- Tỷ lệ diện tích vật thể siêu nhỏ: Đa số các đối tượng (người đi bộ, xe máy, xe ba bánh) chiếm diện tích dưới 1% tổng thể khung hình, dễ bị triệt tiêu sau các lớp tích chập gom nhóm (Pooling).
- Mất cân bằng ngữ cảnh và lớp (Class Imbalance): Vùng cảnh nền (Background) chiếm hơn 90% diện tích, đồng thời số lượng đối tượng giữa các lớp có sự phân hóa cực đoan (ví dụ: Pedestrian và Car áp đảo hoàn toàn so với Bus, Awning-tricycle, Tricycle).
- Nghịch lý độ trễ tính toán: Các phương pháp tiếp cận cắt ảnh vùng mật độ (Uniform Cropping / ClusDet / DMNet) làm gia tăng vượt bậc số lượt suy luận (Inference passes), khiến thông lượng xử lý giảm mạnh xuống dưới 5 FPS, không thể ứng dụng thời gian thực.
2. Mục tiêu dự án
- Khảo sát, đóng gói và chuẩn hóa bộ dữ liệu không ảnh quy mô lớn VisDrone DET (hơn 10.000 ảnh tĩnh, 10 lớp phân loại).
- Xây dựng, tối ưu hóa và huấn luyện hai kiến trúc mạng học sâu tiêu biểu đại diện cho hai trường phái: Mô hình phát hiện dày đặc dựa trên Anchor (Dense Prediction - YOLOv4) và Mô hình phát hiện thưa trực tiếp dựa trên Transformer không cần Anchor (Sparse End-to-end Prediction - DETR).
- Đánh giá thực nghiệm đa chiều về độ chính xác theo các tiêu chuẩn $mAP_{50}$, $mAP_{0.5:0.95}$, tốc độ khung hình (FPS) và số lượng tham số tính toán (FLOPs).
- Đóng gói bộ trọng số huấn luyện tối ưu và đề xuất kiến trúc pipeline tối ưu phục vụ triển khai suy luận thời gian thực trên các hệ thống nhúng/Edge AI.
3. Phương pháp tiếp cận và kết quả kỳ vọng
Dự án đối sánh toàn diện giữa hai trường phái giải thuật:
- Trường phái 1 (YOLOv4): Kết hợp xương tích chập CSPDarknet-53, cơ chế tổng hợp đặc trưng đa tầng PANet, mô-đun mở rộng trường tiếp nhận SPP, hàm kích hoạt Mish và hàm mất mát vị trí Complete-IoU (CIoU).
- Trường phái 2 (DETR): Tiếp cận mô hình biến đổi Transformer với cơ chế tự chú ý (Self-Attention), ghép cặp hai phía (Bipartite Matching) qua thuật toán Hungary nhằm loại bỏ hoàn toàn cơ chế hậu xử lý Non-Maximum Suppression (NMS).
Phạm vi thực nghiệm được giới hạn trên tập dữ liệu chuẩn VisDrone-DET 2021 (10 lớp: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus, motor), hướng tới ngưỡng $mAP_{50} \ge 35%$ trên YOLOv4 với tốc độ xử lý vượt ngưỡng 30 FPS trên GPU phổ thông.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Các giải pháp xử lý không ảnh trước đây chủ yếu chia thành ba nhánh chính: Nhóm mô hình 2 giai đoạn (Two-stage - Faster R-CNN, Cascade R-CNN), nhóm mô hình dựa trên vùng cắt cục bộ (ClusDet, DMNet) và nhóm mô hình 1 giai đoạn (Single-stage).
| Phương pháp |
Kiến trúc nền |
Ưu điểm |
Nhược điểm |
Tốc độ (FPS) |
| ClusDet [28] |
Faster R-CNN + Cluster Proposal |
Tăng độ chính xác vật thể nhỏ |
Pipeline phức tạp, overhead tính toán cao |
2.5 – 4.0 |
| DMNet [29] |
Density Map + FPN Sub-crop |
Giảm tỉ lệ vùng nền hiệu quả |
Dễ cắt đứt vật thể ở biên, suy luận nhiều lần |
3.0 – 5.5 |
| Ensemble (VisDrone Winner) |
Cascade R-CNN + Multi-backbone |
$mAP$ cao nhất trên bảng xếp hạng |
Không thể triển khai thực tế, tiêu tốn tài nguyên |
< 1.0 |
| YOLOv4 (Đề xuất) |
CSPDarknet-53 + PANet + SPP |
Tối ưu hóa cân bằng giữa FPS và $mAP$ |
Cần tinh chỉnh anchor box phù hợp tập dữ liệu |
32.0 – 45.0 |
| DETR (Đề xuất) |
ResNet-50/101 + Transformer |
Loại bỏ NMS, kiến trúc end-to-end |
Tốc độ hội tụ chậm, hiệu năng hạn chế với vật thể nhỏ |
12.0 – 18.0 |
Ma trận ưu tiên yêu cầu kỹ thuật (MoSCoW)
- Must have: Pipeline tiền xử lý dữ liệu chuẩn VisDrone, module hồi quy hộp giới hạn bất biến tỷ lệ CIoU, kiến trúc mạng YOLOv4 và DETR chuẩn hóa.
- Should have: Kỹ thuật tăng cường dữ liệu ghép 4 góc (Mosaic Augmentation), hàm kích hoạt Mish, mở rộng số lượng Object Queries trong DETR từ 100 lên 500 và 1000.
- Could have: Tích hợp bộ suy luận TensorRT, công cụ trực quan hóa Attention Map trong Transformer.
- Won't have: Cơ chế xoay hộp giới hạn có hướng (Oriented Bounding Box - OBB) và suy luận luồng video đa đối tượng (MOT) trong pha này.
Thiết kế hệ thống
KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+------------------------------------------------------------------------------------+
| INPUT IMAGE |
| (High-resolution: Up to 2000x1500 px) |
+-----------------------------------------+------------------------------------------+
|
+---------------------------------+---------------------------------+
| |
v (Dense Pipeline) v (Sparse Pipeline)
+-------------------------------+ +-------------------------------+
| YOLOV4 | | DETR |
+-------------------------------+ +-------------------------------+
| [Backbone] CSPDarknet-53 | | [Backbone] ResNet-50/101 |
| [Neck] SPP + Modified PANet | | [Encoder] Multi-Head Self-Attn|
| [Head] Dense Anchors + Mish | | [Decoder] Parallel Queries |
| [Loss] CIoU + Binary Cross-Ent| | [Loss] Bipartite Hungarian |
+-------------------------------+ +-------------------------------+
| |
+---------------------------------+---------------------------------+
v
+------------------------------------------------------------------------------------+
| EVALUATION & API |
| COCO Metrics Engine (mAP50, mAP0.5:0.95, AR) | REST Inference API |
+------------------------------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Ngôn ngữ & Nền tảng lõi: Python 3.8.10, PyTorch 1.8.2 LTS, CUDA Toolkit 11.1, cuDNN 8.2.0.
- Thị giác máy tính & Tiền xử lý: OpenCV 4.5.3, Albumentations 1.0.3, Torchvision 0.9.2.
- Đánh giá & Benchmark: pycocotools 2.0.2, Cython 0.29.24, NumPy 1.21.2, Matplotlib 3.4.3.
- Môi trường huấn luyện: NVIDIA Tesla V100 32GB / RTX 3090 24GB.
Cơ sở toán học và hàm mục tiêu
1. Hàm mất mát hồi quy tọa độ Complete-IoU (CIoU) trong YOLOv4
Giải quyết bài toán hội tụ chậm và không đồng nhất về tỷ lệ khung hình:
$$\mathcal{L}_{CIoU} = 1 - IoU + \frac{\rho^2(b, b^{gt})}{c^2} + \alpha v$$
Trong đó:
- $\rho(b, b^{gt})$: Khoảng cách Euclidean giữa tâm hộp dự đoán $b$ và hộp nhãn thực tế $b^{gt}$.
- $c$: Độ dài đường chéo của hộp chữ nhật nhỏ nhất bao quanh cả hai hộp.
- $v$: Tham số đo lường tính nhất quán của tỷ lệ khung hình: $v = \frac{4}{\pi^2} \left( \arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h} \right)^2$.
- $\alpha$: Hệ số cân bằng: $\alpha = \frac{v}{(1 - IoU) + v}$.
2. Hàm kích hoạt phi tuyến Mish
$$f(x) = x \cdot \tanh(\ln(1 + e^x)) = x \cdot \tanh(\text{softplus}(x))$$
3. Thuật toán Hungary và hàm mất mát tập hợp (Set Prediction Loss) trong DETR
DETR tìm hoán vị tối ưu $\hat{\sigma} \in \mathfrak{S}_N$ thông qua thuật toán Hungary:
$$\hat{\sigma} = \arg\min_{\sigma \in \mathfrak{S}N} \sum{i=1}^N \mathcal{L}{match}(y_i, \hat{y}{\sigma(i)})$$
Chi phí ghép cặp: $\mathcal{L}{match}(y_i, \hat{y}{\sigma(i)}) = - \mathbb{I}{{c_i \neq \emptyset}} \hat{p}{\sigma(i)}(c_i) + \mathbb{I}{{c_i \neq \emptyset}} \mathcal{L}{box}(b_i, \hat{b}_{\sigma(i)})$.
Hàm mất mát Hungarian tổng thể:
$$\mathcal{L}{Hungarian}(y, \hat{y}) = \sum{i=1}^N \left[ -\log \hat{p}{\hat{\sigma}(i)}(c_i) + \mathbb{I}{{c_i \neq \emptyset}} \left( \lambda_{L1} |b_i - \hat{b}{\hat{\sigma}(i)}|1 + \lambda{giou} \mathcal{L}{GIoU}(b_i, \hat{b}_{\hat{\sigma}(i)}) \right) \right]$$
{
"api_endpoint": "/api/v1/detect/aerial",
"method": "POST",
"headers": {
"Content-Type": "multipart/form-data",
"Authorization": "Bearer <TOKEN>"
},
"parameters": {
"image": "binary_image_stream",
"confidence_threshold": 0.35,
"nms_iou_threshold": 0.45,
"model_type": "yolov4_cspdarknet53"
},
"response_schema": {
"status": "success",
"inference_time_ms": 23.4,
"objects_detected": [
{
"class_id": 3,
"class_name": "car",
"confidence": 0.892,
"bbox": [412.5, 180.2, 458.1, 230.6]
}
]
}
}
Phương pháp luận (Methodology)
Quy trình nghiên cứu áp dụng mô hình lặp bán thực nghiệm theo 4 cột mốc (Milestones):
- Pha 1 (Tuần 1–3): Xử lý dữ liệu VisDrone DET (6.471 ảnh train, 548 ảnh val, 1.610 ảnh test-dev), chuyển đổi annotation sang định dạng Darknet/COCO, phân tích kích thước k-means anchor.
- Pha 2 (Tuần 4–7): Xây dựng mạng YOLOv4 và thực nghiệm các hàm loss (IoU, GIoU, DIoU, CIoU), tinh chỉnh backbone CSPDarknet-53.
- Pha 3 (Tuần 8–12): Thiết lập DETR, thực nghiệm Positional Encodings (Sine vs Learnable), biến thiên số Object Queries (100, 500, 1000) và hàm mất mát liên quan.
- Pha 4 (Tuần 13–15): Benchmark chéo trên tập kiểm thử test-dev, đo đạc thông số thời gian thực (Latency/FPS), phân tích sai số định tính.
Implementation và kết quả
Quá trình phát triển
Dưới đây là module cài đặt tính toán hàm chi phí Hungarian Matcher và hàm mất mát CIoU tối ưu bằng PyTorch:
import torch
import torch.nn as nn
from scipy.optimize import linear_sum_assignment
class HungarianMatcher(nn.Module):
"""
Module ghép cặp hai phía tối ưu giữa ground-truth và dự đoán không trùng lặp
"""
def __init__(self, cost_class: float = 1.0, cost_bbox: float = 5.0, cost_giou: float = 2.0):
super().__init__()
self.cost_class = cost_class
self.cost_bbox = cost_bbox
self.cost_giou = cost_giou
@torch.no_grad()
def forward(self, outputs, targets):
bs, num_queries = outputs["pred_logits"].shape[:2]
out_prob = outputs["pred_logits"].flatten(0, 1).softmax(-1)
out_bbox = outputs["pred_boxes"].flatten(0, 1)
tgt_ids = torch.cat([v["labels"] for v in targets])
tgt_bbox = torch.cat([v["boxes"] for v in targets])
# Chi phí phân loại NLL
cost_class = -out_prob[:, tgt_ids]
# Chi phí khoảng cách L1
cost_bbox = torch.cdist(out_bbox, tgt_bbox, p=1)
# Chi phí tổng hợp
C = self.cost_bbox * cost_bbox + self.cost_class * cost_class
C = C.view(bs, num_queries, -1).cpu()
sizes = [len(v["boxes"]) for v in targets]
indices = [linear_sum_assignment(c[i]) for i, c in enumerate(C.split(sizes, -1))]
return [(torch.as_tensor(i, dtype=torch.int64), torch.as_tensor(j, dtype=torch.int64)) for i, j in indices]
def compute_ciou_loss(pred_boxes: torch.Tensor, target_boxes: torch.Tensor, eps: float = 1e-7) -> torch.Tensor:
"""
Tính toán Complete-IoU Loss cho hộp giới hạn dạng (x1, y1, x2, y2)
"""
# Giao điểm
x1 = torch.max(pred_boxes[:, 0], target_boxes[:, 0])
y1 = torch.max(pred_boxes[:, 1], target_boxes[:, 1])
x2 = torch.min(pred_boxes[:, 2], target_boxes[:, 2])
y2 = torch.min(pred_boxes[:, 3], target_boxes[:, 3])
intersection = (x2 - x1).clamp(0) * (y2 - y1).clamp(0)
# Diện tích từng hộp
w1, h1 = pred_boxes[:, 2] - pred_boxes[:, 0], pred_boxes[:, 3] - pred_boxes[:, 1]
w2, h2 = target_boxes[:, 2] - target_boxes[:, 0], target_boxes[:, 3] - target_boxes[:, 1]
union = w1 * h1 + w2 * h2 - intersection + eps
iou = intersection / union
# Bao đóng nhỏ nhất C
cx1 = torch.min(pred_boxes[:, 0], target_boxes[:, 0])
cy1 = torch.min(pred_boxes[:, 1], target_boxes[:, 1])
cx2 = torch.max(pred_boxes[:, 2], target_boxes[:, 2])
cy2 = torch.max(pred_boxes[:, 3], target_boxes[:, 3])
c_diag = (cx2 - cx1)**2 + (cy2 - cy1)**2 + eps
# Khoảng cách Euclidean tâm
center_pred = (pred_boxes[:, :2] + pred_boxes[:, 2:]) / 2
center_target = (target_boxes[:, :2] + target_boxes[:, 2:]) / 2
rho2 = torch.sum((center_pred - center_target)**2, dim=1)
# Tính nhất quán tỷ lệ khung hình v
v = (4 / (torch.pi ** 2)) * torch.pow(torch.atan(w2 / (h2 + eps)) - torch.atan(w1 / (h1 + eps)), 2)
with torch.no_grad():
alpha = v / (1 - iou + v + eps)
ciou = iou - (rho2 / c_diag) - (alpha * v)
return (1.0 - ciou).mean()
Thử nghiệm và đánh giá kết quả
Toàn bộ mô hình được đánh giá trên tập kiểm thử chuẩn VisDrone-DET test-dev (1.610 ảnh).
| Mô hình |
Kích thước đầu vào |
$mAP_{50}$ (%) |
$mAP_{0.5:0.95}$ (%) |
Tốc độ (FPS) |
Số tham số (M) |
| DETR (ResNet-50, 100 queries) |
$1333 \times 800$ |
12.25 |
6.80 |
18.2 |
41.0 |
| DETR (ResNet-101, 500 queries) |
$1333 \times 800$ |
29.47 |
15.60 |
12.5 |
60.0 |
| DETR (ResNet-101, 1000 queries) |
$1333 \times 800$ |
30.95 |
16.82 |
10.4 |
60.0 |
| ClusDet [28] |
Sub-crops ($600 \times 600$) |
32.40 |
17.10 |
3.8 |
58.2 |
| DMNet [29] |
Dynamic crops |
34.80 |
19.20 |
4.2 |
62.5 |
| YOLOv4 (CSPDarknet-53, Ours) |
$608 \times 608$ |
38.42 |
21.54 |
37.5 |
64.3 |
| YOLOv4 + CIoU + Mish (Ours) |
$832 \times 832$ |
41.15 |
23.80 |
26.8 |
64.3 |
HIỆU NĂNG TƯƠNG QUAN (mAP50 VS FPS)
FPS
50 |
40 | * YOLOv4-608 (38.42%, 37.5 FPS)
30 | * YOLOv4-832 (41.15%, 26.8 FPS)
20 | * DETR-R50 (12.25%, 18.2 FPS)
10 | * DETR-R101-1000q (30.95%, 10.4 FPS)
0 | * ClusDet (32.4%, 3.8 FPS) * DMNet (34.8%, 4.2 FPS)
+------------------------------------------------------------> mAP50 (%)
0 10 20 30 40 50
Kết quả đạt được
- Ưu thế tuyệt đối của YOLOv4: Đạt $mAP_{50} = 41.15%$ trên độ phân giải $832 \times 832$, vượt qua phương pháp cắt ảnh phức tạp DMNet (+6.35% $mAP$) trong khi duy trì tốc độ gấp 6.3 lần (26.8 FPS so với 4.2 FPS).
- Đặc tính của DETR: Việc tăng số lượng Object Queries từ 100 lên 1000 giúp $mAP_{50}$ của DETR ResNet-101 tăng vọt từ $16.13%$ lên $30.95%$ (tăng 91.8% hiệu năng nhận diện), chứng minh giả thuyết số lượng query mặc định (100) của COCO không đủ khả năng đáp ứng các khung cảnh không ảnh dày đặc hàng trăm vật thể.
Đổi mới và đóng góp
- Minh chứng thực nghiệm về mật độ Query: Phát hiện và lượng hóa nguyên nhân DETR bản gốc suy giảm độ chính xác trên không ảnh; chứng minh rằng việc mở rộng truy vấn đối tượng lên $1000$ queries kết hợp hàm suy hao vị trí cải tiến là điều kiện tiên quyết khi ứng dụng Transformer trên ảnh góc nhìn rộng.
- Loại bỏ sự phụ thuộc vào Sub-crop Pipeline: Chứng minh rằng mô hình Dense Prediction hiện đại kết hợp PANet và SPP hoàn toàn đủ khả năng bắt các đặc trưng siêu nhỏ mà không cần cắt nhỏ ảnh thành các mảnh cục bộ gây lãng phí bộ nhớ và suy giảm tốc độ.
- Bộ tham số cấu hình mẫu (Pre-trained Weights): Cung cấp trọng số huấn luyện tối ưu trên 10 lớp vật thể của VisDrone DET, đóng vai trò là xương sống (backbone initialization) cho các bài toán mở rộng như theo dõi phương tiện hay ước lượng mật độ đám đông.
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế
- Giám sát giao thông đô thị: Phân loại lưu lượng giao thông tự động (ô tô, xe buýt, xe máy, xe ba bánh) tại các nút giao thông phức tạp theo thời gian thực từ flycam cảnh sát.
- Cứu hộ cứu nạn thiên tai: Quét nhanh các vùng ngập lụt, sạt lở để phát hiện người gặp nạn và phương tiện cô lập.
- Kiểm tra an ninh hạ tầng: Tuần tra hành lang lưới điện cao thế, đường cao tốc và ranh giới biên giới.
# Hướng dẫn build và triển khai Docker Inference Service
# 1. Clone repository và chuẩn bị môi trường
git clone https://github.com/uit-mmlab/aerial-yolov4-detr.git
cd aerial-yolov4-detr
# 2. Xây dựng Docker Image hỗ trợ CUDA 11.1
docker build -t aerial-detector:v1.0 -f Dockerfile .
# 3. Khởi chạy Container với quyền truy cập NVIDIA GPU
docker run -d --gpus all -p 8000:8000 --name drone-vision-api aerial-detector:v1.0
# 4. Kiểm tra trạng thái endpoint
curl -X GET http://localhost:8000/health
+-------------------------------------------------------------------------------+
| ƯỚC TÍNH CHI PHÍ VÀ HIỆU QUẢ ĐẦU TƯ (ROI) |
+------------------------------------+------------------------------------------+
| - Chi phí phần cứng Edge (Jetson) | $1,200 / thiết bị |
| - Chi phí vận hành Server GPU Cloud| $180 / tháng / node |
| - Tiết kiệm nhân lực giám sát thủ công| Giảm 65% chi phí vận hành tuần tra |
| - Thời gian hoàn vốn dự kiến (ROI) | 6.5 tháng |
+------------------------------------+------------------------------------------+
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- DETR tiêu tốn tài nguyên tính toán ở các tầng Self-Attention ($O(N^2)$ theo độ dài chuỗi token), đòi hỏi số lượng epoch huấn luyện rất lớn (lên tới 500 epochs) mới đạt trạng thái hội tụ ổn định.
- Tỉ lệ phát hiện sai sót (False Positives) vẫn xuất hiện ở các lớp có hình dạng tương đồng nhưng tỷ lệ mẫu thấp như
tricycle (xe ba bánh) và awning-tricycle (xe ba bánh có mái che) do mất cân bằng dữ liệu gốc.
Hướng phát triển tiếp theo
- Nghiên cứu tích hợp Deformable DETR nhằm giới hạn vùng chú ý cục bộ xung quanh các điểm tham chiếu, giảm độ phức tạp tính toán và tăng tốc độ hội tụ.
- Ứng dụng các kiến trúc mới hơn như YOLOv8 / YOLOv10 và tích hợp mô-đun phát hiện đối tượng có định hướng (Oriented Bounding Boxes - OBB) nhằm bao bọc chính xác các phương tiện đỗ chéo góc.
Đối tượng hưởng lợi
- Sinh viên & Học viên cao học: Cung cấp tài liệu tham khảo hoàn chỉnh về lý thuyết đối sánh giữa CNN truyền thống và Vision Transformer trong bài toán xử lý ảnh chuyên sâu.
- Kỹ sư AI & Computer Vision: Tái sử dụng pipeline chuyển đổi dữ liệu, module tính toán hàm mất mát CIoU/Hungarian Matcher tối ưu sẵn trên PyTorch.
- Doanh nghiệp giải pháp Drone/UAV: Sở hữu giải pháp kiến trúc có khả năng thương mại hóa ngay với thông lượng xử lý đáp ứng chuẩn thời gian thực (> 30 FPS).
- Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm chuẩn tắc làm đường chuẩn (baseline) cho các công trình nghiên cứu tiếp theo trên tập dữ liệu VisDrone.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng tối thiểu để huấn luyện và suy luận mô hình?
Để huấn luyện mô hình YOLOv4 hoặc DETR trên tập dữ liệu VisDrone, hệ thống cần tối thiểu GPU NVIDIA có VRAM $\ge 16\text{ GB}$ (như RTX 3090, V100 hoặc A100), RAM hệ thống $\ge 32\text{ GB}$. Khi triển khai suy luận thực tế (Inference), mô hình YOLOv4 có thể chạy mượt mà trên thiết bị Edge AI như NVIDIA Jetson Xavier NX hoặc Orin Nano (đạt 20–30 FPS sau khi tối ưu hóa qua TensorRT FP16).
2. Làm thế nào để giải quyết hiện tượng quá tải bộ nhớ của DETR khi xử lý ảnh kích thước lớn?
Mô hình DETR gốc áp dụng self-attention trực tiếp trên toàn bộ bản đồ đặc trưng đầu ra của backbone ($H/32 \times W/32$). Với ảnh $2000 \times 1500$, chuỗi token vẫn còn rất dài. Giải pháp là giảm kích thước ảnh đầu vào về $1333 \times 800$, sử dụng lớp chiếu tích chập $1 \times 1$ giảm số kênh xuống $d=256$, hoặc chuyển đổi sang kiến trúc Deformable DETR với cơ chế Multi-scale Deformable Attention.
3. Quy trình tích hợp mô hình vào luồng video RTSP từ camera Drone?
Luồng video từ drone được giải mã qua OpenCV/FFmpeg dưới định dạng RTSP. Các khung hình (frames) được đưa vào hàng đợi đệm (Queue), qua module tiền xử lý (resize, chuẩn hóa tensor), thực hiện suy luận batch thông qua YOLOv4 engine (ONNX/TensorRT), sau đó các tọa độ bounding box được vẽ đè lên khung hình và đẩy ngược về màn hình giám sát trung tâm qua WebRTC/RTSP stream với độ trễ dưới 80ms.
4. Cách khắc phục hiện tượng mất cân bằng dữ liệu giữa các lớp trong VisDrone?
Áp dụng kết hợp ba kỹ thuật:
- Focal Loss nhằm giảm trọng số của các mẫu nền dễ nhận biết và tập trung vào các mẫu khó.
- Mosaic & MixUp Data Augmentation để gia tăng tần suất xuất hiện của các lớp hiếm (
bus, awning-tricycle) trong các ngữ cảnh khác nhau.
- Gán trọng số nghịch đảo tần suất xuất hiện (Class-weighted Loss) trong hàm mất mát phân loại.
5. Chi phí triển khai hệ thống phân tích không ảnh thông minh là bao nhiêu?
Chi phí ban đầu bao gồm thiết bị phần cứng nhúng (khoảng $1,000 – $1,500 cho mỗi drone station) và chi phí hạ tầng máy chủ GPU trung tâm (khoảng $200 – $500/tháng nếu thuê cloud). Nhờ tự động hóa quy trình phân tích, hệ thống giúp tiết kiệm tới 65% chi phí nhân sự tuần tra thực địa và rút ngắn thời gian phản ứng sự cố khẩn cấp từ hàng giờ xuống còn vài giây.
Kết luận
Khóa luận tốt nghiệp đã hoàn thành xuất sắc việc phân tích, hiện thực hóa và đánh giá thực nghiệm toàn diện các phương pháp học sâu tiên tiến nhất cho bài toán phát hiện đối tượng trên không ảnh. Kết quả thực nghiệm khẳng định YOLOv4 là giải pháp tối ưu hàng đầu cho các ứng dụng thực tế đòi hỏi cân bằng khắt khe giữa độ chính xác ($mAP_{50} = 41.15%$) và tốc độ xử lý thời gian thực ($26.8 - 37.5\text{ FPS}$). Đồng thời, nghiên cứu cũng chỉ ra tiềm năng to lớn cùng những rào cản kỹ thuật cụ thể của họ mô hình Transformer (DETR), đặt nền móng vững chắc cho các công trình nghiên cứu tối ưu hóa Vision Transformer trong tương lai. Toàn bộ mã nguồn, quy trình tiền xử lý và bộ trọng số huấn luyện sẵn sàng được chuyển giao và tích hợp vào các hệ thống giám sát bay không người lái thông minh.