Giới thiệu dự án

Hệ thống giao thông đường bộ tại các đô thị lớn đang đối mặt với áp lực gia tăng mật độ phương tiện đột biến. Theo thống kê của Tổ chức Y tế Thế giới (WHO), tai nạn giao thông liên quan đến phương tiện hai bánh chiếm hơn 21% tổng số ca tử vong toàn cầu, tập trung cao tại khu vực Đông Nam Á. Tại Việt Nam, một trong những nguyên nhân hàng đầu gây ra các vụ va chạm và ùn tắc nghiêm trọng là hành vi chuyển làn bất hợp pháp, lấn làn xe cơ giới/thô sơ trên các tuyến đường phân cách bằng vạch kẻ liền (vạch đơn màu trắng nét liền 1.1 và vạch đơn màu vàng nét liền 1.2 theo Quy chuẩn QCVN 41:2019/BGTVT).

Việc kiểm soát thủ công bởi lực lượng Cảnh sát Giao thông tại hiện trường bộc lộ nhiều điểm nghẽn: nguy cơ mất an toàn khi dừng xe tốc độ cao, giới hạn nhân lực kiểm soát liên tục 24/7 và hạn chế góc quan sát trên các tuyến quốc lộ 4 làn xe. Đồ án khóa luận tốt nghiệp ngành Kỹ thuật Máy tính tại Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (2024) do sinh viên Dương Thành Đạt thực hiện dưới sự hướng dẫn của TS. Phạm Quốc Hùng và ThS. Phan Đình Duy đã phát triển thành công: "Hệ thống phân loại và phát hiện phương tiện giao thông di chuyển sai làn đường" (Lane-Change Violation Detection and Classification System).

Hệ thống hướng tới các mục tiêu kỹ thuật cụ thể:

  1. Xây dựng pipeline tự động phát hiện và phân loại chính xác 4 nhóm phương tiện: Xe máy (Motorcycle), Ô tô con (Car), Xe tải (Truck) và Xe buýt (Bus).
  2. Định vị không gian làn đường và phát hiện hành vi đè vạch/lấn làn trái phép theo thời gian thực (Real-time).
  3. Tích hợp thuật toán theo dõi đa đối tượng (Multi-Object Tracking - MOT) nhằm gán ID duy nhất và truy vết quỹ đạo di chuyển liên tục, loại bỏ hiện tượng đếm trùng lặp.
  4. Tự động trích xuất vùng quan tâm (Region of Interest - ROI) biển số và nhận diện ký tự quang học để lưu trữ bằng chứng vi phạm phục vụ xử phạt nguội.

Hệ thống áp dụng kiến trúc mạng nơ-ron tích chập đơn tầng (Single-stage CNN) tiên tiến YOLOv8 kết hợp thuật toán ByteTrack và thư viện xử lý ảnh OpenCV. Phạm vi ứng dụng tập trung vào các tuyến đường một chiều hoặc hai chiều có camera giám sát (CCTV) góc cao, hoạt động tối ưu trong điều kiện ánh sáng ban ngày với tốc độ xử lý đạt 22–26 khung hình/giây (FPS) trên phần cứng thương mại.

                    KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+------------------------------------------------------------------+
|                    Nguồn Video CCTV (RTSP / File)                |
+---------------------------------+--------------------------------+
                                  |
                                  v
+---------------------------------+--------------------------------+
| Tiền xử lý & Khởi tạo Vùng Làn (OpenCV Masking / Poly ROI)       |
+---------------------------------+--------------------------------+
                                  |
                                  v
+---------------------------------+--------------------------------+
| Nhận diện & Bounding Box (YOLOv8 Single-stage Detector)          |
+---------------------------------+--------------------------------+
                                  |
                                  v
+---------------------------------+--------------------------------+
| Truy vết Quỹ đạo & Gán ID (ByteTrack: High & Low Score Matching) |
+---------------------------------+--------------------------------+
                                  |
                                  v
+---------------------------------+--------------------------------+
| Kiểm tra Vi phạm Giao cắt Làn (Ray-Casting / Centroid Trajectory)|
+---------------------------------+--------------------------------+
                                  |
                 +----------------+----------------+
                 |                                 |
           [Đúng làn]                         [Sai làn]
                 |                                 |
                 v                                 v
          Tiếp tục tracking           +------------+------------+
                                      | Trích xuất ROI Biển số  |
                                      | (EasyOCR / YOLOv8-Plate)|
                                      +------------+------------+
                                                   |
                                                   v
                                      +------------+------------+
                                      | Ghi log dữ liệu vi phạm |
                                      | (Ảnh + Biển số + Time)  |
                                      +-------------------------+

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

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

Các phương pháp phát hiện phương tiện truyền thống và học sâu giai đoạn trước bộc lộ nhiều hạn chế khi áp dụng vào bài toán giám sát giao thông thực tế tại Việt Nam:

Tiêu chí Phương pháp HOG + SVM Faster R-CNN + DeepSORT Đề xuất: YOLOv8 + ByteTrack
Tốc độ xử lý (FPS) 8 – 12 FPS (Không đạt real-time) 10 – 15 FPS (Nặng về tài nguyên) 22 – 26 FPS (Đạt chuẩn real-time)
Độ phức tạp tính toán Thấp, trích xuất đặc trưng thủ công Rất cao (Two-stage Region Proposal) Tối ưu hóa nhờ Anchor-free Head
Xử lý che khuất (Occlusion) Rất kém, mất dấu khi xe sát nhau Trung bình, phụ thuộc Re-ID vector Xuất sắc, tận dụng hộp tin cậy thấp
Yêu cầu phần cứng CPU tiêu chuẩn GPU chuyên dụng cao cấp (VRAM > 12GB) GPU tầm trung (VRAM 6GB - 8GB)
Độ chính xác phân loại Dễ nhầm lẫn giữa xe tải và xe buýt Cao (> 88% mAP) Rất cao (> 90% mAP)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW:

  • Must have: Phân loại chính xác 4 loại phương tiện, truy vết ID không đứt đoạn, phát hiện xe đè vạch liền, chụp ảnh bằng chứng vi phạm.
  • Should have: Nhận diện ký tự biển số xe vi phạm bằng EasyOCR, xuất báo cáo thống kê lưu lượng xe theo khung giờ.
  • Could have: Tích hợp mô hình học máy thứ cấp SVM để hiệu chỉnh nhãn phân loại trong trường hợp biên bounding box không ổn định.
  • Won't have (lần này): Tự động xử lý phạt nguội ban đêm dưới điều kiện mưa bão gây lóa đèn pha hoặc camera biến dạng góc nhìn cực hạn.

Thiết kế hệ thống

Kiến trúc hệ thống bao gồm 4 khối xử lý chính:

  1. Module Nhận diện Đối tượng (Object Detection Module): Triển khai mạng YOLOv8x. Mô hình nhận diện bounding box $(x, y, w, h)$ cùng điểm tin cậy (Confidence Score) và nhãn phân loại (Class ID).
  2. Module Truy vết Đa đối tượng (Tracking Module): Thuật toán ByteTrack duy trì vector trạng thái chuyển động của phương tiện thông qua bộ lọc Kalman Filter: $$x = [u, v, s, r, \dot{u}, \dot{v}, \dot{s}]^T$$ Trong đó $(u, v)$ là tọa độ tâm hộp, $s$ là tỉ lệ diện tích, $r$ là tỉ lệ khung hình.
  3. Module Phân tích Không gian Làn đường (Lane Analysis Module): Sử dụng các mặt nạ đa giác (Polygon Masks) định nghĩa tọa độ làn đường hợp lệ cho từng nhóm phương tiện dựa trên ảnh tĩnh tham chiếu từ camera.
  4. Module Nhận diện Biển số (ANPR Module): Cắt lớp ảnh ROI của phương tiện vi phạm, áp dụng giải thuật tiền xử lý ảnh nhị phân hóa cục bộ và nhận diện chuỗi ký tự qua EasyOCR.
+-----------------------------------------------------------------------+
|                           CẤU HÌNH TECH STACK                         |
|  - Python 3.10.12         - PyTorch 2.1.0+cu118     - Ultralytics 8.0+|
|  - OpenCV-Python 4.8.1    - ByteTrack 0.3.1         - EasyOCR 1.7.1   |
|  - NumPy 1.24.3           - CUDA Compiler 11.8      - OS: Ubuntu 22.04|
+-----------------------------------------------------------------------+
{
  "violation_event_id": "VN-HCM-2024-0512-0042",
  "timestamp": "2024-05-12T14:32:18.420Z",
  "camera_id": "CCTV_Q9_HANOI_HIGHWAY_01",
  "vehicle_info": {
    "track_id": 142,
    "class_name": "motorcycle",
    "confidence": 0.934,
    "bbox": [845.2, 512.6, 910.4, 630.1]
  },
  "violation_details": {
    "type": "LANE_CROSSING_SOLID_LINE",
    "lane_assigned": "CAR_ONLY_LANE_02",
    "evidence_snapshot": "/evidence/20240512/track_142_violation.jpg",
    "license_plate": {
      "detected": true,
      "plate_number": "59-X3 884.12",
      "ocr_confidence": 0.892
    }
  }
}

Methodology

Quy trình phát triển tuân theo phương pháp Agile/Iterative qua 5 giai đoạn:

  • Thu thập dữ liệu: Trích xuất 12.000 khung hình từ video camera giao thông thực tế tại TP. Hồ Chí Minh, Biên Hòa và Quốc lộ 51.
  • Tiền xử lý và Gán nhãn: Chuẩn hóa kích thước hình ảnh về $640 \times 640$ pixels, gán nhãn 4 lớp phương tiện định dạng YOLO.
  • Huấn luyện mô hình: Huấn luyện YOLOv8 với hàm tối ưu Stochastic Gradient Descent (SGD), learning rate khởi tạo $\alpha = 0.01$, batch size 16 qua 300 epochs.
  • Tích hợp Pipeline: Kết nối luồng xử lý giữa Detector, ByteTracker và Lane Logic.
  • Đánh giá và Tinh chỉnh: Kiểm thử độ trễ, tối ưu hóa ma trận nhầm lẫn (Confusion Matrix) và giảm thiểu tỷ lệ False Positive.

Implementation và kết quả

Development process

Quá trình cài đặt lõi hệ thống tập trung vào giải thuật phát hiện giao cắt làn đường và tích hợp mô hình theo dõi ByteTrack:

import cv2
import numpy as np
from ultralytics import YOLO

class LaneViolationDetector:
    def __init__(self, model_path: str, lane_polygon: np.ndarray, allowed_classes: list):
        self.model = YOLO(model_path)
        self.lane_polygon = lane_polygon  # Định dạng np.array([[x1, y1], [x2, y2], ...])
        self.allowed_classes = allowed_classes

    def calculate_iou(self, boxA, boxB):
        # Tính toán Intersection over Union giữa hai Bounding Box
        xA = max(boxA[0], boxB[0])
        yA = max(boxA[1], boxB[1])
        xB = min(boxA[2], boxB[2])
        yB = min(boxA[3], boxB[3])

        interArea = max(0, xB - xA) * max(0, yB - yA)
        boxAArea = (boxA[2] - boxA[0]) * (boxA[3] - boxA[1])
        boxBArea = (boxB[2] - boxB[0]) * (boxB[3] - boxB[1])

        iou = interArea / float(boxAArea + boxBArea - interArea + 1e-6)
        return iou

    def check_violation(self, bottom_center: tuple, class_id: int) -> bool:
        # Kiểm tra tâm đáy phương tiện nằm trong vùng làn cấm
        is_inside = cv2.pointPolygonTest(self.lane_polygon, bottom_center, False) >= 0
        if is_inside and (class_id not in self.allowed_classes):
            return True
        return False

    def process_frame(self, frame: np.ndarray):
        results = self.model.track(frame, persist=True, tracker="bytetrack.yaml")
        violations = []

        if results[0].boxes.id is not None:
            boxes = results[0].boxes.xyxy.cpu().numpy()
            track_ids = results[0].boxes.id.cpu().numpy().astype(int)
            classes = results[0].boxes.cls.cpu().numpy().astype(int)
            confs = results[0].boxes.conf.cpu().numpy()

            for box, track_id, cls, conf in zip(boxes, track_ids, classes, confs):
                x1, y1, x2, y2 = box
                bottom_center = ((x1 + x2) / 2, y2)
                
                if self.check_violation(bottom_center, cls):
                    violations.append({
                        "track_id": track_id,
                        "class_id": cls,
                        "bbox": (int(x1), int(y1), int(x2), int(y2)),
                        "confidence": float(conf)
                    })
                    # Vẽ cảnh báo vi phạm màu đỏ
                    cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 0, 255), 2)
                    cv2.putText(frame, f"VIOLATION ID: {track_id}", (int(x1), int(y1) - 10),
                                cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
        return frame, violations

Testing và validation

Hiệu năng phát hiện và phân loại của mô hình được kiểm định độc lập trên tập dữ liệu kiểm thử (Test set) gồm 2.500 hình ảnh:

Lớp đối tượng (Class) Số lượng mẫu (Instances) Precision (%) Recall (%) mAP@0.5 (%) F1-Score
Xe máy (Motorcycle) 4.820 92.4% 90.1% 91.8% 0.912
Ô tô con (Car) 3.650 95.1% 94.6% 95.8% 0.948
Xe tải (Truck) 1.120 88.7% 86.3% 87.9% 0.875
Xe buýt (Bus) 740 90.2% 89.5% 90.4% 0.898
Toàn bộ hệ thống 10.330 91.6% 90.1% 91.5% 0.908

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

  1. Hiệu suất xử lý: Tốc độ khung hình duy trì ổn định ở mức 22 – 26 FPS trên GPU NVIDIA GeForce RTX 3060, đáp ứng yêu cầu xử lý trực tiếp các luồng video RTSP từ CCTV mà không bị rớt khung hình (frame drop).
  2. Độ chính xác phát hiện vi phạm: Tỷ lệ phát hiện chính xác hành vi lấn làn đạt 93.4% trong điều kiện giao thông mật độ trung bình.
  3. Giảm thiểu cảnh báo sai (False Positives): Nhờ cơ chế lọc vùng đáy phương tiện (bottom-center point) thay vì toàn bộ bounding box, tỷ lệ nhận diện sai do bóng xe hoặc góc nghiêng camera giảm 38.2% so với phương pháp bounding box overlap thông thường.

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

  • Cơ chế liên kết dữ liệu hai tầng với ByteTrack: Khác với DeepSORT hoặc SORT truyền thống thường loại bỏ các bounding box có độ tin cậy thấp ($Conf < 0.5$), thuật toán ByteTrack giữ lại toàn bộ các phát hiện và phân chia thành hai tập hợp: $D_{high}$ ($Conf \ge 0.6$) và $D_{low}$ ($0.1 \le Conf < 0.6$). Việc liên kết $D_{low}$ với các vết theo dõi chưa khớp (unmatched tracks) giúp duy trì quỹ đạo phương tiện khi bị che khuất một phần bởi xe tải hoặc góc khuất camera, giảm hiện tượng gán nhầm ID (ID Switch) tới 42%.
  • Tối ưu hóa phân loại kết hợp: Ứng dụng mô hình mạng trích xuất đặc trưng Darknet kết hợp tầng Spatial Pyramid Pooling Fast (SPPF) của YOLOv8 giúp tăng độ nhạy đối với các vật thể có tỷ lệ kích thước nhỏ như xe máy ở xa điểm đặt camera.
  • Hệ thống hóa giải pháp xử phạt nguội: Đóng góp quy trình khép kín từ khâu tiếp nhận video thô, phân luồng làn đường hình học, phát hiện vi phạm đến trích xuất ký tự biển số xe với chi phí tính toán tối ưu, phù hợp triển khai tại hạ tầng giao thông đô thị Việt Nam.

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

Kịch bản triển khai thực tế

  • Giám sát cầu cạn và hầm chui đô thị: Kiểm soát các tuyến đường cấm hoàn toàn xe máy lưu thông chung làn với ô tô (như cầu vượt Nguyễn Hữu Cảnh, hầm sông Sài Gòn).
  • Phân làn tuyến cao tốc / Quốc lộ: Phát hiện xe tải di chuyển sai làn quy định tốc độ trên Quốc lộ 51 và Cao tốc TP.HCM - Long Thành.
                              YÊU CẦU PHẦN CỨNG TRIỂN KHAI
+------------------------------------------------------------------------------------+
|  Thành phần           | Cấu hình Tối thiểu (Edge Server) | Cấu hình Đề xuất (Trung tâm)    |
+-----------------------+----------------------------------+---------------------------------+
|  Bộ vi xử lý (CPU)    | Intel Core i5-11400 / AMD R5 5600| Intel Xeon Silver / Core i7-13700|
|  Card đồ họa (GPU)    | NVIDIA RTX 3060 (12GB VRAM)      | NVIDIA RTX 4080 / A4000 (16GB)  |
|  Bộ nhớ RAM           | 16 GB DDR4                       | 32 GB DDR5                      |
|  Chuẩn Camera         | RTSP H.264/H.265 Full HD 1080p   | 4K IP Camera, 30fps, Bitrate >4M|
+------------------------------------------------------------------------------------+

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

Triển khai hệ thống tự động giúp một trạm giám sát 4 làn xe tiết kiệm 70% chi phí nhân lực túc trực, đồng thời nâng cao hiệu suất xử lý vi phạm gấp 8 lần so với trích xuất camera thủ công. Thời gian hoàn vốn đầu tư phần cứng ước tính từ 6 – 9 tháng thông qua việc tối ưu nguồn lực giám sát và giảm thiểu thất thoát trong quản lý trật tự giao thông.


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

Hạn chế kỹ thuật

  • Độ phân giải biển số góc cao: Khi camera quan sát bao quát toàn bộ 4 làn đường, kích thước vùng chứa biển số xe của xe máy ở xa chỉ chiếm diện tích dưới $40 \times 20$ pixels, dẫn đến tỷ lệ nhận diện ký tự của EasyOCR giảm xuống dưới 65%.
  • Điều kiện thời tiết cực đoan: Mưa lớn gây phản xạ ánh sáng trên mặt đường làm lu mờ vạch kẻ nét liền, gây khó khăn cho việc xác định mốc giao cắt tĩnh.

Hướng phát triển

  • Tích hợp mạng siêu phân giải ảnh (Image Super-Resolution - ISR) để phục hồi chi tiết biển số xe kích thước nhỏ trước khi đưa vào module OCR.
  • Áp dụng các kiến trúc phân đoạn làn đường động (Dynamic Lane Segmentation) dựa trên học sâu để tự động nhận diện vạch kẻ đường thay vì cấu hình tĩnh.
  • Triển khai các mô hình nén TensorRT và lượng tử hóa INT8 để vận hành trực tiếp trên các thiết bị nhúng công suất thấp như NVIDIA Jetson Orin Nano tại các cột đèn tín hiệu.

Đối tượng hưởng lợi

  • Sinh viên & Học viên cao học: Tiếp cận mã nguồn mẫu về luồng tích hợp hoàn chỉnh giữa Computer Vision hiện đại (YOLOv8) và Multi-Object Tracking (ByteTrack) trên bài toán thực tế.
  • Kỹ sư phát triển phần mềm (Developers): Tham khảo kiến trúc thiết kế hệ thống xử lý video đa luồng với độ trễ thấp và phương pháp khử nhiễu khi theo dõi quỹ đạo đối tượng.
  • Cơ quan Quản lý Giao thông & Doanh nghiệp: Sở hữu giải pháp giám sát thông minh chi phí thấp, tận dụng hạ tầng camera sẵn có để tự động hóa quy trình phạt nguội, nâng cao ý thức chấp hành luật giao thông đường bộ.
  • Nhà nghiên cứu (Researchers): Cung cấp số liệu thực nghiệm chi tiết về độ chính xác phân loại phương tiện và ma trận nhầm lẫn trong điều kiện giao thông hỗn hợp tại các nước đang phát triển.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu máy chủ trang bị GPU NVIDIA có tối thiểu 6GB VRAM (khuyến nghị RTX 3060 trở lên), hỗ trợ CUDA 11.8+, cùng luồng camera IP chuẩn RTSP với độ phân giải tối thiểu Full HD (1920x1080) tốc độ 25/30 FPS.

2. Giới hạn khả năng mở rộng của hệ thống khi tăng số lượng camera?

Trên một GPU RTX 3060 (12GB VRAM), hệ thống xử lý đồng thời từ 3 đến 4 luồng video 1080p ở tốc độ 22–26 FPS. Khi mở rộng quy mô lên hàng chục camera, kiến trúc cần chuyển đổi sang mô hình Microservices phân tán với hàng đợi tin nhắn (Kafka/RabbitMQ) và cụm máy chủ suy luận (Triton Inference Server).

3. Hệ thống tích hợp với trung tâm điều hành giao thông sẵn có như thế nào?

Hệ thống hỗ trợ xuất dữ liệu cảnh báo dưới dạng RESTful API hoặc Webhook theo định dạng JSON chuẩn, kèm theo đường dẫn ảnh chụp bằng chứng vi phạm, dễ dàng tích hợp vào các hệ thống Smart City / VMS (Video Management System) hiện hữu.

4. Chi phí vận hành và nhu cầu bảo trì hệ thống ra sao?

Chi phí vận hành định kỳ bao gồm điện năng máy chủ và bảo dưỡng camera. Về phần mềm, hệ thống chỉ cần hiệu chỉnh lại tọa độ vùng làn (Lane Polygons) khi có sự thay đổi về tổ chức giao thông hoặc dịch chuyển góc quay camera vật lý.

5. Tại sao lựa chọn ByteTrack thay vì DeepSORT trong bài toán này?

ByteTrack không phụ thuộc vào mạng trích xuất đặc trưng Re-ID nặng nề như DeepSORT, giúp tiết kiệm đáng kể tài nguyên tính toán. Hơn nữa, việc tận dụng các bounding box điểm thấp giúp ByteTrack duy trì việc theo dõi phương tiện mượt mà ngay cả khi xe máy bị che khuất một phần bởi các phương tiện kích thước lớn.


Kết luận

Đồ án khóa luận tốt nghiệp của sinh viên Dương Thành Đạt đã giải quyết triệt để bài toán tự động hóa phát hiện phương tiện giao thông di chuyển sai làn đường thông qua việc kết hợp các công nghệ thị giác máy tính hàng đầu hiện nay: YOLOv8, ByteTrack và OpenCV. Hệ thống không chỉ đạt được các chỉ số kỹ thuật ấn tượng với độ chính xác mAP@0.5 đạt 91.5% và tốc độ xử lý thời gian thực 22–26 FPS, mà còn khẳng định tính khả thi vượt trội khi ứng dụng vào bài toán giao thông đặc thù tại Việt Nam. Đây là nền tảng vững chắc để mở rộng phát triển thành các giải pháp AI Camera thông minh toàn diện, góp phần hiện đại hóa hạ tầng giao thông đô thị trong kỷ nguyên số.