Giới thiệu dự án

Sự gia tăng nhanh chóng của mật độ phương tiện tại các đô thị hiện đại đặt ra thách thức lớn đối với hạ tầng quản trị giao thông thông minh (Intelligent Transportation Systems - ITS). Theo thống kê từ Tổ chức Y tế Thế giới (WHO), chạy quá tốc độ quy định là một trong những nguyên nhân hàng đầu dẫn đến hơn 30% tổng số vụ tai nạn giao thông nghiêm trọng. Các giải pháp truyền thống như lắp đặt súng bắn tốc độ chuyên dụng (Radar/LIDAR speed gun) hay vòng từ cảm ứng dưới lòng đường (inductive loops) bộc lộ nhiều hạn chế: chi phí trang bị phần cứng đắt đỏ ($5,000 - $15,000/vị trí), quy trình bảo trì phức tạp và đòi hỏi can thiệp trực tiếp vào kết cấu mặt đường gây gián đoạn lưu thông.

Trước thực trạng đó, bài toán đặt ra là: Làm thế nào để phát hiện, truy vết chính xác nhiều phương tiện đồng thời và tự động ước tính tốc độ di chuyển theo thời gian thực chỉ thông qua luồng video từ một camera giám sát tĩnh (Monocular Traffic Camera) với chi phí thấp nhất?

Đề tài khóa luận tốt nghiệp ngành Khoa học Máy tính tại Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (thực hiện bởi sinh viên Phạm Mạnh Tiến và Nguyễn Quốc Cường, dưới sự hướng dẫn của PGS. TS. Vũ Đức Lung) tập trung giải quyết trọn vẹn bài toán này. Mục tiêu cụ thể của dự án bao gồm:

  1. Nghiên cứu và hệ thống hóa toàn diện cơ sở lý thuyết của các kiến trúc học sâu cho bài toán Theo dõi nhiều vật thể (Multiple Object Tracking - MOT), phân chia theo hai trường phái: Tách biệt phát hiện và truy vết (Separated Detection and Tracking - SDE) và Tích hợp phát hiện cùng truy vết (Joint Detection and Embedding - JDE).
  2. Thực nghiệm, đánh giá định lượng hiệu năng của các giải thuật MOT tiêu biểu (IoUTracker, VIoUTracker, SORT, DeepSORT, CenterTrack, FairMOT, Tracktor) trên tập dữ liệu chuẩn về giao thông UA-DETRAC.
  3. Nghiên cứu và hiện thực giải thuật tự động hiệu chỉnh thông số camera (Camera Calibration) dựa trên các điểm biến mất (Vanishing Points) nhằm chuyển đổi tọa độ điểm ảnh 2D ($u, v$) sang tọa độ thực tế 3D ($X_w, Y_w, Z_w$) mà không cần can thiệp đo đạc thủ công tại hiện trường.
  4. Xây dựng pipeline hoàn chỉnh ước tính tốc độ phương tiện di chuyển qua video, đánh giá sai số vận tốc tuyệt đối (Absolute Speed Error - MAE) và sai số phần trăm trên bộ dữ liệu chuẩn quốc tế BrnoCompSpeed.

Phạm vi và giới hạn: Hệ thống tập trung xử lý dữ liệu video/stream thu được từ camera giám sát tĩnh gắn ở vị trí trên cao (chiều cao đặt camera $h \ge 5\text{m}$), tiêu cự cố định, hướng về luồng giao thông của các phương tiện cơ giới (ô tô con, xe tải, xe buýt, xe van) trong điều kiện ánh sáng ban ngày và độ phân giải từ chuẩn HD (720p) đến Full HD (1080p).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Hiện nay, các giải pháp giám sát tốc độ phương tiện giao thông trên thị trường được chia thành ba nhóm công nghệ chính:

Tiêu chí so sánh Cảm biến từ dưới mặt đường (Inductive Loop) Súng bắn tốc độ Radar/LIDAR Camera thị giác máy tính (Giải pháp đề tài)
Chi phí phần cứng & lắp đặt Rất cao ($8,000 - $12,000/làn) Cao ($5,000 - $10,000/thiết bị) Thấp ($300 - $800/camera thông thường)
Tác động hạ tầng giao thông Cắt đường, phá hủy mặt nhựa Gắn cột tĩnh hoặc cầm tay Tận dụng camera giao thông có sẵn
Khả năng mở rộng (Scalability) Kém, cố định theo vị trí rải cáp Trung bình, giới hạn góc quét Rất cao qua phần mềm quản lý tập trung
Độ phủ đối tượng Chỉ đo được xe đi đúng vệt cảm biến Đo đơn mục tiêu tại một thời điểm Theo dõi đa mục tiêu trên toàn khung hình
Sai số vận tốc trung bình $\le 1.5\text{ km/h}$ $\le 1.0\text{ km/h}$ $1.5 - 3.0\text{ km/h}$

Yêu cầu hệ thống theo mô hình MoSCoW:

  • Must-have: Phát hiện bounding box xe với độ chính xác $\text{mAP} \ge 85%$; duy trì ID định danh không bị hoán đổi (ID Switch thấp); ước tính tốc độ với sai số tuyệt đối $\text{MAE} < 3.5\text{ km/h}$.
  • Should-have: Tự động hiệu chỉnh góc đặt camera qua vanishing points; tốc độ xử lý đạt $\ge 25\text{ FPS}$ trên GPU tầm trung.
  • Could-have: Nhận diện loại phương tiện (Sedan, SUV, Truck, Bus); cảnh báo vi phạm trực quan trên giao diện.
  • Won't-have (giai đoạn hiện tại): Xử lý camera quay quét cơ học (PTZ xoay liên tục) và giám sát ban đêm không có đèn đường.

Thiết kế hệ thống

Kiến trúc hệ thống được thiết kế theo dạng Pipeline 3 tầng mô-đun hóa cao:

[Luồng Video Đầu Vào (Frame t)]
[Kết quả: ID, Bounding Box, Vận tốc (km/h)]

Ngăn xếp công nghệ (Technology Stack)

  • Hệ điều hành & Nền tảng: Ubuntu 20.04 LTS, CUDA Toolkit 11.3, cuDNN 8.2.
  • Ngôn ngữ & Thư viện lõi: Python 3.8.10, PyTorch 1.10.0, Torchvision 0.11.1.
  • Xử lý ảnh & Tính toán khoa học: OpenCV 4.5.5, NumPy 1.21.5, SciPy 1.7.3, FilterPy 1.4.5 (phục vụ Kalman Filter).
  • Mô hình học sâu tích hợp: FairMOT (DLA-34 backbone), CenterTrack, DeepSORT (với feature extractor ResNet-18/Wide-ResNet).

Cơ sở toán học chuyển đổi tọa độ không gian (Camera Calibration)

Để chuyển đổi tọa độ điểm tiếp đất của phương tiện $(u, v)$ trong ảnh sang tọa độ thực tế $(X_w, Y_w, 0)$ trên mặt đường phẳng, hệ thống tính toán ma trận Homography $\mathbf{H} \in \mathbb{R}^{3 \times 3}$ thông qua hai điểm biến mất trực giao $VP_1$ (dọc theo hướng di chuyển của làn đường) và $VP_2$ (vuông góc với hướng di chuyển):

$$\begin{bmatrix} X_w \ Y_w \ 1 \end{bmatrix} \sim \mathbf{H}^{-1} \begin{bmatrix} u \ v \ 1 \end{bmatrix}$$

Vận tốc của phương tiện ID $k$ giữa hai khung hình $t_1$ và $t_2$ (với tần số quét $\text{FPS}$) được tính theo công thức:

$$v_k = \frac{\sqrt{(X_w^{(t_2)} - X_w^{(t_1)})^2 + (Y_w^{(t_2)} - Y_w^{(t_1)})^2}}{(t_2 - t_1) / \text{FPS}} \times 3.6 \quad (\text{km/h})$$

Methodology

Quy trình phát triển được tổ chức theo mô hình lặp thực nghiệm khoa học qua 5 giai đoạn:

(UA-DETRAC, Brno)      (SDE vs JDE Baselines)       (Benchmark MOTA/FPS)    (Vanishing Points & IPM)     (Sai số MAE < 3 km/h)
  • Quản lý rủi ro:
    • Rủi ro trôi vết (ID Switch khi xe che khuất): Khắc phục bằng cách áp dụng Matching Cascade trong DeepSORT hoặc Re-ID embedding 128 chiều trong FairMOT kết hợp khoảng cách Cosine.
    • Rủi ro sai số biến đổi phối cảnh xa-gần: Thiết lập vùng quan tâm (ROI - Region of Interest) tại khu vực trung tâm camera nơi độ biến dạng quang học là nhỏ nhất.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc cài đặt và tinh chỉnh hai thuật toán trung tâm: Bộ lọc Kalman kết hợp Giải thuật Hungary cho tầng truy vết và thuật toán ước lượng dịch chuyển không gian thực.

Mô hình hóa Bộ lọc Kalman cho chuyển động 2D Bounding Box

Trạng thái của hộp giới hạn tại thời điểm $k$ được biểu diễn bởi vector 8 chiều:

$$\mathbf{x}_k = [u, v, s, r, \dot{u}, \dot{v}, \dot{s}, \dot{r}]^T$$

Trong đó $(u, v)$ là tâm hộp giới hạn, $s$ là diện tích (scale), $r$ là tỷ lệ khung hình (aspect ratio), và $(\dot{u}, \dot{v}, \dot{s}, \dot{r})$ là các vận tốc biến thiên tương ứng.

import numpy as np
from scipy.optimize import linear_sum_assignment

class KalmanBoxTracker:
    count = 0
    def __init__(self, bbox):
        # Khởi tạo ma trận trạng thái: [u, v, s, r, u_dot, v_dot, s_dot, r_dot]
        self.kf = CustomKalmanFilter(dim_x=8, dim_z=4)
        self.kf.F = np.eye(8)  # State Transition Matrix
        for i in range(4):
            self.kf.F[i, i+4] = 1.0
        self.kf.H = np.eye(4, 8)  # Measurement Matrix
        
        # Khởi tạo ma trận hiệp phương sai sai số R và P
        self.kf.R[2:, 2:] *= 10.0
        self.kf.P[4:, 4:] *= 1000.0  # Độ bất định vận tốc ban đầu lớn
        self.kf.P *= 10.0
        self.kf.Q[-1, -1] *= 0.01
        self.kf.Q[4:, 4:] *= 0.01

        self.kf.x[:4] = convert_bbox_to_z(bbox)
        self.time_since_update = 0
        self.id = KalmanBoxTracker.count
        KalmanBoxTracker.count += 1
        self.history = []
        self.hits = 0
        self.hit_streak = 0
        self.age = 0

    def update(self, bbox):
        self.time_since_update = 0
        self.history = []
        self.hits += 1
        self.hit_streak += 1
        self.kf.update(convert_bbox_to_z(bbox))

    def predict(self):
        if (self.kf.x[6] + self.kf.x[2]) <= 0:
            self.kf.x[6] = 0.0
        self.kf.predict()
        self.age += 1
        if self.time_since_update > 0:
            self.hit_streak = 0
        self.time_since_update += 1
        self.history.append(convert_x_to_bbox(self.kf.x))
        return self.history[-1]

def associate_detections_to_trackers(detections, trackers, iou_threshold=0.3):
    """
    Gán ghép phát hiện với các chuỗi truy vết sử dụng Hungarian Algorithm
    """
    if len(trackers) == 0:
        return np.empty((0, 2), dtype=int), np.arange(len(detections)), np.empty((0, 5), dtype=int)

    iou_matrix = compute_iou_matrix(detections, trackers)
    
    # Áp dụng giải thuật Hungarian (linear_sum_assignment) để tối ưu chi phí
    row_ind, col_ind = linear_sum_assignment(-iou_matrix)
    
    matched_indices = []
    unmatched_detections = []
    unmatched_trackers = []

    for d, det in enumerate(detections):
        if d not in row_ind:
            unmatched_detections.append(d)
    for t, trk in enumerate(trackers):
        if t not in col_ind:
            unmatched_trackers.append(t)

    for r, c in zip(row_ind, col_ind):
        if iou_matrix[r, c] < iou_threshold:
            unmatched_detections.append(r)
            unmatched_trackers.append(c)
        else:
            matched_indices.append([r, c])

    return np.array(matched_indices), np.array(unmatched_detections), np.array(unmatched_trackers)

Testing và validation

Hiệu năng của các mô hình được kiểm thử trên hai tập dữ liệu quy chuẩn:

  1. UA-DETRAC Benchmark: Gồm hơn 140,000 khung hình video giao thông thực tế tại nhiều điều kiện thời tiết (nắng râm, mưa, ban đêm, giờ cao điểm) với hơn 1.21 triệu bounding box xe được gán nhãn thủ công.
  2. BrnoCompSpeed Benchmark: Bộ dữ liệu chuyên biệt gồm 21 phiên video Full HD ghi hình tại các cao tốc và nút giao thông, được đồng bộ nhãn tốc độ chuẩn xác tuyệt đối thông qua hệ thống cảm biến quang học LIDAR kép và máy thu GPS công nghiệp.

Các chỉ số đánh giá bao gồm:

  • MOTA (Multiple Object Tracking Accuracy): Đo lường độ chính xác tổng thể tính đến False Positives, False Negatives và ID Switches.
  • IDF1 (ID F1-Score): Đánh giá khả năng duy trì nhất quán định danh của vật thể xuyên suốt video.
  • MAE (Mean Absolute Error): Sai số tuyệt đối trung bình giữa tốc độ ước tính $v_{est}$ và tốc độ thực $v_{gt}$ ($\text{km/h}$).

$$\text{MOTA} = 1 - \frac{\sum_t (\text{FN}_t + \text{FP}t + \text{IDSW}t)}{\sum_t \text{GT}t}, \quad \text{MAE} = \frac{1}{N} \sum{i=1}^N |v{est}^{(i)} - v{gt}^{(i)}|$$

Kết quả đạt được

1. Đánh giá so sánh các giải thuật truy vết trên tập dữ liệu UA-DETRAC

Giải thuật Hướng tiếp cận Backbone MOTA (%) ↑ IDF1 (%) ↑ ID Switches ↓ Tốc độ xử lý (FPS) ↑
IoUTracker SDE (Heuristic) Không 52.4 48.1 3,120 125.0
SORT SDE (Kalman) Faster R-CNN 58.7 54.3 2,450 45.2
DeepSORT SDE (Kalman + Re-ID) Wide-ResNet 66.8 65.2 890 28.5
Tracktor JDE (Regression) ResNet-101-FPN 64.1 62.9 1,120 8.4
CenterTrack JDE (Point-based) DLA-34 69.3 68.5 640 32.0
FairMOT JDE (Anchor-free Multi-task) DLA-34 (DCN) 73.6 72.8 412 29.4

2. Đánh giá sai số ước tính tốc độ trên BrnoCompSpeed

Phiên thử nghiệm (Session) Số lượng xe đo đạc Tốc độ trung bình thực tế (km/h) Sai số tuyệt đối MAE (km/h) Sai số tương đối (%)
Session 1 (Góc máy thẳng) 342 78.4 1.42 1.81%
Session 2 (Góc nghiêng trung bình) 289 64.2 2.15 3.34%
Session 3 (Mật độ cao, góc chéo) 415 52.8 2.84 5.37%
Trung bình toàn bộ hệ thống 1,046 65.1 2.13 3.51%

Đổi mới và đóng góp

  1. Chuẩn hóa quy trình hiệu chỉnh phối cảnh tự động: Khác với các nghiên cứu trước đây yêu cầu đo đạc thủ công kích thước vạch sơn kẻ đường hoặc chiều dài thực địa, giải pháp ứng dụng tính toán cặp điểm biến mất trực giao ($VP_1, VP_2$) từ các đường thẳng song song trong làn xe và cạnh thân xe, giúp hệ thống tự động thiết lập ma trận Homography $\mathbf{H}$ chỉ sau 100 khung hình khởi động.
  2. Khảo sát hệ thống hóa toàn diện trên bài toán giao thông: Đóng góp bộ phân tích thực nghiệm sâu sắc về sự khác biệt giữa mô hình 2 pha (SDE) và tích hợp (JDE) khi xử lý video giao thông có tính chất vật thể chuyển động nhanh, mật độ dày và che khuất liên tục.
  3. Cải tiến tỷ lệ ghép cặp thành công: Tích hợp Deformable Convolutional Networks (DCNv2) vào backbone DLA-34 giúp mô hình thích ứng linh hoạt với sự thay đổi kích thước hình học của xe khi di chuyển từ xa lại gần, giảm tỷ lệ gán nhầm định danh (ID Switches) xuống 41.2% so với DeepSORT truyền thống.

Ứng dụng thực tế và triển khai

Tình huống ứng dụng thực tế (Real-world Use Cases)

  • Hệ thống phạt nguội tự động (Automated Speed Enforcement): Phát hiện tức thời các phương tiện vượt ngưỡng tốc độ cho phép trên cao tốc, tự động trích xuất chuỗi khung hình vi phạm và biển số phục vụ công tác xử phạt vi phạm giao thông.
  • Phân tích lưu lượng và cảnh báo tắc nghẽn thông minh: Đo đạc phân bố vận tốc trung bình của từng làn đường theo thời gian thực; khi vận tốc trung bình giảm đột ngột dưới $15\text{ km/h}$, hệ thống kích hoạt tín hiệu cảnh báo ùn tắc về trung tâm điều hành ITS.

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)

  • Triển khai trên 50 nút giao thông trọng điểm:
    • Chi phí giải pháp cảm biến Radar truyền thống: $50 \times $8,000 = $400,000$.
    • Chi phí giải pháp phần mềm thị giác máy tính (tận dụng camera hiện hữu + 5 máy chủ GPU biên): $5 \times $3,500 + $25,000\text{ (Setup)} = $42,500$.
    • Tiết kiệm trực tiếp: Hơn 89.3% chi phí đầu tư ban đầu với thời gian hoàn vốn đầu tư (ROI) ước tính dưới 4 tháng thông qua nâng cao hiệu quả giám sát an toàn.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Điều kiện thời tiết khắc nghiệt: Trong điều kiện trời mưa to dẫn đến lóa nước trên mặt đường hoặc sương mù dày đặc, độ chính xác phát hiện tâm xe của mạng backbone giảm khoảng $12 - 18%$.
  • Rung lắc camera: Gió mạnh làm camera rung lắc nhẹ có thể làm dịch chuyển tọa độ của các điểm biến mất (Vanishing Points), gây sai số tích lũy cục bộ trong ma trận $\mathbf{H}$.

Hướng phát triển tương lai

  • Ứng dụng kỹ thuật ước lượng Bounding Box 3D trực tiếp (3D Oriented Bounding Box) kết hợp điểm ảnh lưới xe (3D Mesh) để triệt tiêu hoàn toàn sự phụ thuộc vào ma trận Homography mặt phẳng.
  • Mở rộng hệ thống sang bài toán theo dõi phương tiện liên camera (Multi-Target Multi-Camera Tracking - MTMCT) nhằm giám sát hành trình và tốc độ trung bình theo hành lang di chuyển dài.

Đố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 chi tiết về toán học chuyển đổi không gian, mã nguồn thực thi giải thuật Kalman-Hungarian và phương pháp đánh giá benchmark chuẩn.
  • Kỹ sư AI & Thị giác máy tính: Nắm bắt kỹ thuật tối ưu hóa luồng suy luận đa tác vụ (Multi-task learning cho Detection + Re-ID) và xử lý video luồng thực tế.
  • Doanh nghiệp & Cơ quan quản lý đô thị: Sở hữu giải pháp công nghệ khả thi cao, chi phí thấp nhằm hiện đại hóa hệ thống giao thông thông minh đô thị mà không cần phá vỡ cấu trúc hạ tầng hiện hữu.

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai mô hình là gì?

Hệ thống yêu cầu máy chủ biên trang bị tối thiểu 01 GPU NVIDIA (từ GTX 1660 Super 6GB hoặc NVIDIA Jetson Xavier NX trở lên), CPU 4 nhân, 8GB RAM để xử lý thời gian thực luồng video Full HD 1080p ở tốc độ $\ge 25\text{ FPS}$. Khi chuyển đổi mô hình sang định dạng TensorRT FP16, tốc độ suy luận có thể tăng gấp $2.2$ lần.

2. Khi phương tiện bị che khuất tạm thời (Occlusion), thuật toán xử lý ra sao?

Bộ lọc Kalman tiếp tục duy trì trạng thái dự đoán vị trí hình học của phương tiện trong tối đa $N$ khung hình (mặc định $N = 30$ frames tương đương 1 giây). Nếu xe xuất hiện trở lại và độ tương đồng vector đặc trưng Re-ID (Cosine similarity) vượt ngưỡng $0.6$, ID cũ sẽ được tái liên kết chính xác thay vì tạo ID mới.

3. Làm thế nào để hệ thống hoạt động chính xác khi góc đặt camera thay đổi?

Hệ thống tích hợp mô-đun tự động hiệu chỉnh (Auto-calibration). Khi phát hiện góc camera bị lệch (thông qua sự thay đổi đường chân trời quang học), mô-đun sẽ tự động kích hoạt tính toán lại hai điểm biến mất $VP_1, VP_2$ từ các quỹ đạo di chuyển gần nhất để cập nhật ma trận $\mathbf{H}$ mới mà không cần can thiệp thủ công.

4. Hệ thống tích hợp với các phần mềm ITS hiện có như thế nào?

Dữ liệu đầu ra được đóng gói theo chuẩn RESTful API hoặc đẩy trực tiếp qua giao thức MQTT dưới định dạng JSON bao gồm: track_id, timestamp, bbox [x, y, w, h], speed_kmh, vehicle_class. Nhờ đó, hệ thống dễ dàng kết nối với các phần mềm quản lý điều hành giao thông đô thị sẵn có.

5. Chi phí bảo trì định kỳ của giải pháp là bao nhiêu?

Vì giải pháp hoàn toàn dựa trên phần mềm xử lý hình ảnh quang học thuần túy, không có bộ phận chuyển động cơ học hay cảm biến ngầm, chi phí bảo trì định kỳ hàng năm ước tính dưới $5%$ tổng giá trị dự án, chủ yếu tập trung vào việc vệ sinh bề mặt kính camera định kỳ.


Kết luận

Đề tài khóa luận tốt nghiệp "Phát hiện và truy vết vật thể trong video và ứng dụng ước tính tốc độ phương tiện giao thông" của nhóm sinh viên Phạm Mạnh Tiến và Nguyễn Quốc Cường (Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) đã giải quyết thành công bài toán giám sát tốc độ phương tiện giao thông tự động với chi phí tối ưu. Bằng việc kết hợp chặt chẽ giữa các mạng học sâu hiện đại (FairMOT/CenterTrack), giải thuật tối ưu tổ hợp (Hungarian, Kalman Filter) và kỹ thuật hình học biến đổi phối cảnh (Vanishing Points Calibration), hệ thống đạt độ chính xác theo dõi 73.6% MOTA và sai số vận tốc tuyệt đối ấn tượng chỉ 2.13 km/h trên các tập benchmark chuẩn. Kết quả này khẳng định tiềm năng ứng dụng to lớn của công nghệ thị giác máy tính trong việc xây dựng các đô thị thông minh an toàn và văn minh.