Giới thiệu dự án

Tại các đô thị lớn tại Việt Nam, tốc độ gia tăng phương tiện giao thông cá nhân đang tạo áp lực khổng lồ lên hạ tầng đô thị. Theo thống kê của Bộ Giao thông Vận tải, tính đến cuối năm 2019, cả nước có khoảng 60 triệu xe máy đang lưu thông và con số này tiếp tục tăng trưởng nhanh chóng. Trong khi đó, quỹ đất dành cho bãi đỗ xe tĩnh chỉ đáp ứng được một phần nhỏ nhu cầu thực tế.

Phần lớn các điểm trông giữ xe hiện nay vẫn vận hành theo mô hình truyền thống sử dụng vé giấy hoặc thẻ từ RFID bán tự động. Các hệ thống này bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Phụ thuộc hoàn toàn vào nhân sự túc trực tại barrier dẫn đến hiện tượng ùn ứ kéo dài vào khung giờ cao điểm.
  • Rủi ro thất lạc, hư hỏng thẻ từ gây phát sinh chi phí và gián đoạn vận hành.
  • Các giải pháp nhận diện biển số xe (Automatic License Plate Recognition - ALPR) ứng dụng điện toán đám mây (Cloud Computing) tập trung thường gặp độ trễ đường truyền lớn, tốn kém băng thông và phụ thuộc vào kết nối Internet ổn định.
+-------------------------------------------------------------------------------+
|                             BÀI TOÁN HỆ THỐNG                                 |
|                                                                               |
| [Vé giấy / Thẻ từ RFID]  ---> Ùn tắc cao điểm + Chi phí nhân sự              |
| [Cloud-based ALPR]       ---> Độ trễ mạng cao + Rủi ro gián đoạn kết nối      |
|                                                                               |
|                                GIẢI PHÁP ĐỀ XUẤT                              |
| [Edge AI trên Raspberry Pi 4] ---> Xử lý thời gian thực + Chi phí tối ưu      |
+-------------------------------------------------------------------------------+

Dự án "Tìm hiểu và đánh giá các kỹ thuật học máy và học sâu sử dụng để nhận diện biển số xe" (Benchmark for License Plate Detection and Recognition) được thực hiện nhằm giải quyết triệt để bài toán trên thông qua việc ứng dụng điện toán biên (Edge Computing).

Mục tiêu dự án

  1. Xây dựng tập dữ liệu chuẩn hóa: Thu thập, tiền xử lý và gán nhãn tập dữ liệu ảnh/video biển số xe máy thực tế tại bãi giữ xe Trường Đại học Công nghệ Thông tin (UIT - ĐHQG TP.HCM).
  2. Nghiên cứu và huấn luyện đa mô hình: Triển khai huấn luyện các thuật toán Học máy (Machine Learning) truyền thống và Học sâu (Deep Learning) bao gồm: Haar Cascade, LBP Cascade, SSD (MobileNet v2, SSDLite, Inception v2, Quantized v2), YOLO (YOLOv4, YOLOv4-tiny) kết hợp SVM (Support Vector Machine) cho bài toán nhận diện ký tự.
  3. Đánh giá Benchmark toàn diện: Đo lường chi tiết các chỉ số độ chính xác (Precision, Recall, mAP, IoU) và hiệu năng tính toán (FPS, Latency, Resource Usage) trên cả máy trạm GPU và thiết bị nhúng.
  4. Triển khai thực nghiệm trên Edge Device: Đóng gói và tối ưu hóa mô hình hoạt động trực tiếp trên máy tính nhúng Raspberry Pi 4 Model B với đầu vào là luồng video thời gian thực.

Phương pháp tiếp cận và Phạm vi nghiên cứu

Dự án tiếp cận bài toán theo quy trình 2 giai đoạn (Two-stage pipeline):

  • Giai đoạn 1 (Plate Detection): Xác định vị trí tọa độ hộp bao (Bounding Box) của biển số xe từ frame ảnh đầu vào.
  • Giai đoạn 2 (Character Segmentation & Recognition): Cắt phân vùng biển số, tách từng ký tự bằng kỹ thuật phân tích đường viền (Contour Analysis) và phân loại ký tự bằng bộ phân lớp đa lớp SVM.

Phạm vi & Giới hạn: Hệ thống tập trung tối ưu cho biển số xe máy tiêu chuẩn tại Việt Nam (biển vuông 2 dòng ký tự), dữ liệu đầu vào thu nhận từ camera giám sát góc chuẩn tại lối vào bãi đỗ xe trường đại học.


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

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

Tiêu chí Vé giấy truyền thống Thẻ từ RFID ALPR Cloud-based Giải pháp Edge ALPR (Đề tài)
Thời gian xử lý/xe 8 - 15 giây 3 - 5 giây 1.5 - 3 giây < 0.5 - 1.2 giây
Chi phí phần cứng Rất thấp Trung bình (Đầu đọc RFID) Rất cao (Server GPU) Thấp (Raspberry Pi 4)
Độ phụ thuộc mạng Không Không 100% Internet Xử lý Offline tại trạm
Tính bảo mật & Riêng tư Rất thấp Trung bình Rủi ro rò rỉ dữ liệu đám mây Bảo mật cục bộ (Local)
Khả năng mở rộng Kém Kém Tốn chi phí băng thông Module hóa linh hoạt

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

  • Must have: Phát hiện chính xác khung biển số xe máy với IoU $\ge 0.5$; Tách và nhận diện chính xác chuỗi ký tự số và chữ cái; Chạy thực nghiệm được trên Raspberry Pi 4 Model B.
  • Should have: Đạt tốc độ xử lý chấp nhận được trên CPU nhúng ($\ge 5 - 10$ FPS đối với mô hình rút gọn); Chống chịu tốt với điều kiện ánh sáng thay đổi nhẹ.
  • Could have: Tích hợp mô hình Quantization để giảm dung lượng file weight xuống dưới 10MB; Giao diện hiển thị trực quan thông tin biển số và thời gian vào/ra.
  • Won't have: Nhận diện biển số xe ô tô dài 1 dòng; Xử lý các trường hợp biển số bị che khuất quá 40% hoặc biến dạng cơ học nặng.

Thiết kế hệ thống

Kiến trúc luồng xử lý dữ liệu từ camera đến kết quả nhận diện:

[ Camera Input (Video Stream / Frames) ]
[ Cơ sở dữ liệu lưu trữ / Điều khiển Barrier ]

Technology Stack và Phiên bản

  • Hệ điều hành: Ubuntu 18.04 LTS (Training Machine), Raspberry Pi OS (32-bit/64-bit Buster trên Edge Device).
  • Ngôn ngữ lập trình: Python 3.7+, C++ (Darknet framework backend).
  • Thư viện Thị giác máy tính & Học máy:
    • OpenCV: 4.5.1 (Xử lý ảnh, Haar/LBP Cascade, Contour).
    • TensorFlow / TensorFlow Lite: 1.15.0 & 2.4.0 (Huấn luyện và tối ưu SSD Models).
    • Darknet Framework: Bản phân nhánh AlexeyAB (Huấn luyện YOLOv4, YOLOv4-tiny).
    • Scikit-Learn: 0.24.2 (Huấn luyện mô hình SVM phân loại ký tự).
  • Phần cứng thực nghiệm:
    • Training: Workstation Intel Xeon E5-2678v3, 32GB RAM, GPU NVIDIA GeForce GTX 1080Ti 11GB / Google Colab Pro GPU Tesla T4.
    • Inference Edge: Raspberry Pi 4 Model B (Broadcom BCM2711, Quad-core Cortex-A72 1.5GHz, 4GB LPDDR4 SDRAM).

Phương pháp nghiên cứu và Lộ trình (Methodology)

Dự án áp dụng phương pháp nghiên cứu thực nghiệm lặp (Iterative Empirical Methodology) chia làm 4 giai đoạn rõ ràng:

+-----------------------------------------------------------------------------------+
| Giai đoạn 1 (01/03/2021 - 21/03/2021): Khảo sát, thu thập và gán nhãn Dataset     |
| Giai đoạn 2 (22/03/2021 - 09/05/2021): Huấn luyện các mô hình ML và Deep Learning |
| Giai đoạn 3 (10/05/2021 - 31/05/2021): Porting & Benchmark trên Raspberry Pi 4    |
| Giai đoạn 4 (01/06/2021 - 26/06/2021): Đánh giá, tối ưu và viết báo cáo tổng kết  |
+-----------------------------------------------------------------------------------+

Implementation và kết quả

Chi tiết giải thuật và Kỹ thuật thực thi

1. Trích xuất đặc trưng LBP (Local Binary Patterns) và Haar-like

Đối với mô hình Machine Learning truyền thống, thuật toán Viola-Jones sử dụng bảng ảnh tích hợp (Integral Image) để tính toán tổng mật độ điểm ảnh của các đặc trưng Haar trong thời gian $O(1)$:

$$\text{Sum} = I(C) + I(A) - [I(B) + I(D)]$$

Đặc trưng LBP được mô tả toán học nhằm mã hóa cấu trúc cục bộ quanh điểm ảnh tâm $(x_c, y_c)$ với bán kính $R$ và $P$ điểm lấy mẫu:

$$\text{LBP}{P, R}(x_c, y_c) = \sum{p=0}^{P-1} s(i_p - i_c) 2^p \quad \text{với} \quad s(x) = \begin{cases} 1, & x \ge 0 \ 0, & x < 0 \end{cases}$$

2. Kiến trúc mạng học sâu (SSD MobileNet v2 vs YOLOv4-tiny)

  • Depthwise Separable Convolution trong MobileNet v2: Giảm khối lượng tính toán bằng cách tách phép tích chập tiêu chuẩn thành hai bước: Depthwise Convolution (lọc không gian từng kênh) và Pointwise Convolution ($1 \times 1$ conv để kết hợp các kênh). Tỷ lệ chi phí tính toán giảm xấp xỉ:

$$\frac{\text{Cost}{\text{Depthwise Separable}}}{\text{Cost}{\text{Standard Conv}}} = \frac{D_K \cdot D_K \cdot D_F \cdot D_F \cdot M + M \cdot N \cdot D_F \cdot D_F}{D_K \cdot D_K \cdot M \cdot N \cdot D_F \cdot D_F} = \frac{1}{N} + \frac{1}{D_K^2}$$

  • YOLOv4-tiny: Sử dụng mạng backbone CSPOSANet rút gọn với 2 nhánh phát hiện đối tượng tại các scale $13 \times 13$ và $26 \times 26$, tối ưu hóa số lượng tham số để phù hợp với bộ nhớ đệm CPU của thiết bị nhúng.

3. Pipeline tách và nhận diện ký tự bằng SVM

Sau khi cắt vùng biển số từ bounding box, thuật toán tiền xử lý và phân tách ký tự được thực hiện qua đoạn mã Python dưới đây:

import cv2
import numpy as np

def segment_and_recognize_characters(plate_img, svm_model):
    """
    Tiền xử lý ảnh biển số, tách contour ký tự và dự đoán bằng SVM
    """
    # 1. Chuyển đổi ảnh mức xám và khử nhiễu
    gray = cv2.cvtColor(plate_img, cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray, (5, 5), 0)
    
    # 2. Phân ngưỡng nhị phân thích nghi (Adaptive Thresholding)
    thresh = cv2.adaptiveThreshold(
        blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
        cv2.THRESH_BINARY_INV, 19, 9
    )
    
    # 3. Tìm contours của các ký tự
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    char_candidates = []
    for cnt in contours:
        x, y, w, h = cv2.boundingRect(cnt)
        aspect_ratio = h / float(w)
        solidity = cv2.contourArea(cnt) / float(w * h)
        height_ratio = h / float(plate_img.shape[0])
        
        # Lọc contour theo tiêu chuẩn hình học của ký tự biển số Việt Nam
        if 1.2 < aspect_ratio < 4.5 and 0.35 < height_ratio < 0.85 and solidity > 0.15:
            char_candidates.append((x, y, w, h, thresh[y:y+h, x:x+w]))
            
    # Sắp xếp ký tự theo thứ tự từ trên xuống dưới, từ trái qua phải (biển 2 dòng)
    char_candidates = sorted(char_candidates, key=lambda c: (c[1] // (plate_img.shape[0] // 2), c[0]))
    
    plate_text = ""
    for _, _, _, _, char_roi in char_candidates:
        # Resize về kích thước 28x28 chuẩn hóa cho đầu vào SVM
        char_resized = cv2.resize(char_roi, (28, 28)).flatten().reshape(1, -1)
        pred_label = svm_model.predict(char_resized)[0]
        plate_text += str(pred_label)
        
    return plate_text

Kết quả thử nghiệm và Đánh giá Benchmark

Tập dữ liệu kiểm thử độc lập bao gồm 300 video và 1.200 frame ảnh chụp trong các điều kiện: ánh sáng ban ngày chuẩn, ngược sáng, góc nghiêng $15^{\circ} - 30^{\circ}$, và khoảng cách nhận diện từ 1.2m đến 2.5m.

Bảng tổng hợp Benchmark hiệu năng các mô hình phát hiện biển số

STT Mô hình Framework mAP (%) Model Size (MB) FPS (GPU GTX 1080Ti) FPS (Raspberry Pi 4) Độ trễ RPi 4 (ms)
1 YOLOv4 Darknet 98.42% 244.0 MB 45.2 FPS 0.4 FPS ~2500 ms
2 YOLOv4-tiny Darknet 91.15% 23.1 MB 148.0 FPS 6.2 FPS 161 ms
3 SSD Inception v2 TensorFlow 93.60% 98.5 MB 38.5 FPS 0.9 FPS ~1110 ms
4 SSD MobileNet v2 TensorFlow 89.70% 67.2 MB 62.0 FPS 2.1 FPS 476 ms
5 SSDLite MobileNet v2 TensorFlow 86.40% 18.9 MB 78.0 FPS 4.8 FPS 208 ms
6 SSD Quantized v2 TFLite 84.10% 6.4 MB - 8.5 FPS 117 ms
7 Haar Cascade OpenCV C++ 72.30% 1.8 MB - 14.2 FPS 70 ms
8 LBP Cascade OpenCV C++ 68.50% 0.9 MB - 18.5 FPS 54 ms
                       SO SÁNH ĐỘ CHÍNH XÁC VÀ TỐC ĐỘ TRÊN RASPBERRY PI 4
   mAP (%)
       0         3          6           9           12          15

Phân tích kết quả:

  • YOLOv4-tiny đạt điểm cân bằng tốt nhất giữa độ chính xác nhận diện biển số ($\text{mAP} = 91.15%$) và tốc độ xử lý trên vi điều khiển nhúng ($6.2 \text{ FPS}$).
  • SSD Quantized v2 cho tốc độ phản hồi nhanh ($8.5 \text{ FPS}$) với kích thước file siêu nhẹ ($6.4 \text{ MB}$), thích hợp cho các hệ thống vi xử lý có bộ nhớ cực kỳ hạn chế.
  • Haar/LBP Cascade có tốc độ vượt trội ($> 14 \text{ FPS}$) nhưng tỷ lệ False Positive cao và rất nhạy cảm với điều kiện ánh sáng phức tạp hoặc biển số bị nghiêng.
  • Mô hình SVM nhận diện ký tự đạt độ chính xác trung bình $94.8%$ trên tập ký tự tách rời, thời gian phân loại trung bình $< 15\text{ms}$ cho toàn bộ 8-9 ký tự trên một biển số.

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

  1. Bộ dữ liệu Benchmark đặc thù Việt Nam: Xây dựng thành công tập dữ liệu biển số xe máy thực tế tại bãi đỗ xe trường đại học với đa dạng góc quay, giải quyết khoảng trống dữ liệu ALPR góc nhìn camera thực tế tại Việt Nam.
  2. Nghiên cứu Benchmark đa cấu trúc toàn diện: Đặt lên bàn cân 8 mô hình trải dài từ Học máy truyền thống (Haar/LBP) đến Học sâu hiện đại (SSD, YOLO) với các phương pháp tối ưu lượng tử hóa (Quantization).
  3. Hiện thực hóa giải pháp Edge Computing: Chứng minh tính khả thi tuyệt đối của việc triển khai hệ thống ALPR hoàn chỉnh trên thiết bị phần cứng giá rẻ (Raspberry Pi 4 Model B) mà không cần trang bị GPU chuyên dụng đắt tiền, đạt độ trễ thời gian thực ($< 200\text{ms}$ toàn chu trình).

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

Kịch bản triển khai thực tế (Use Cases)

  • Bãi giữ xe thông minh tại các trường đại học, bệnh viện: Tự động hóa hoàn toàn cửa ngõ ra vào, giảm thời gian check-in/out xuống dưới 1 giây/phương tiện.
  • Hệ thống trạm thu phí không dừng (ETC) nội bộ: Ứng dụng tại các khu đô thị sinh thái, khu công nghiệp khép kín.
  • Giám sát an ninh khu dân cư: Tích hợp trực tiếp trên các camera IP biên để cảnh báo xe lạ hoặc xe nằm trong danh sách đen (Blacklist).
|                         SƠ ĐỒ TRIỂN KHAI PHẦN CỨNG                          |
|                                                                             |
|  [ Camera IP / USB Cam ]                                                    |
|  [ Relay -> Mở Barrier tự động ]     [ Web Dashboard Quản trị bãi xe ]       |

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

ƯỚC TÍNH CHI PHÍ VẬN HÀNH 1 CỔNG KIỂM SOÁT TRONG 1 NĂM:

[Hệ thống truyền thống (1 Bảo vệ 3 ca)]

[Hệ thống Edge ALPR đề xuất]
=> TIẾT KIỆM HƠN 90% CHI PHÍ VẬN HÀNH VÀ THU HỒI VỐN (ROI) TRONG VÒNG 1 THÁNG.

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

Hạn chế kỹ thuật

  • Mô hình phân tách ký tự dựa vào Contour truyền thống dễ bị lỗi khi biển số quá bẩn, bị mờ do bùn đất hoặc có đinh ốc vít gắn xuyên qua ký tự.
  • Các trường hợp góc camera nghiêng quá $45^{\circ}$ hoặc phương tiện di chuyển với tốc độ cao ($> 30\text{ km/h}$) làm khung hình bị mờ chuyển động (Motion Blur).
  • Raspberry Pi 4 thuần xử lý CPU dễ bị nóng khi hoạt động liên tục ngoài trời, cần giải pháp tản nhiệt thụ động hoặc quạt cưỡng bức.

Hướng phát triển

  1. End-to-End OCR: Nghiên cứu thay thế bộ tách ký tự Contour + SVM bằng các mạng đọc chuỗi ký tự trực tiếp như LPRNet hoặc CRNN kết hợp CTC Loss.
  2. Phần cứng tăng tốc AI: Bổ sung thanh tăng tốc phần cứng USB Coral Edge TPU hoặc Intel Neural Compute Stick 2 (NCS2) để nâng tốc độ xử lý của YOLOv4-tiny lên trên $25 - 30\text{ FPS}$.
  3. Mở rộng tính năng: Nhận diện loại phương tiện (ô tô, xe máy, xe tải), màu sơn và tích hợp nhận diện khuôn mặt người điều khiển để nâng cao tính an toàn.

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

  • Sinh viên & Học viên: Cung cấp tài liệu tham khảo thực tế về quy trình xây dựng đồ án Thị giác máy tính từ lý thuyết đến triển khai phần cứng nhúng.
  • Kỹ sư AI / IoT: Nắm bắt phương pháp đo lường, tối ưu hóa kích thước mô hình và porting mô hình Deep Learning lên kiến trúc vi xử lý ARM.
  • Doanh nghiệp & Đơn vị quản lý bãi xe: Tiếp cận mô hình chuyển đổi số với chi phí đầu tư thấp, triển khai nhanh và tiết kiệm nhân lực.
  • Nhà nghiên cứu: Cung cấp tập số liệu benchmark thực nghiệm đa giải thuật tin cậy trên môi trường máy tính nhúng tại Việt Nam.

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

1. Cấu hình tối thiểu để triển khai giải pháp này tại bãi xe thực tế là gì?

Hệ thống yêu cầu tối thiểu 01 máy tính nhúng Raspberry Pi 4 Model B (RAM 4GB), thẻ nhớ MicroSD 32GB Class 10 (hoặc ổ SSD rời qua cổng USB 3.0), camera IP độ phân giải tối thiểu Full HD 1080p hỗ trợ chuẩn nén H.264/RTSP và nguồn cấp chuẩn $5\text{V} - 3\text{A}$.

2. Tại sao lại chọn kết hợp YOLOv4-tiny cho phát hiện biển số và SVM cho nhận diện ký tự?

YOLOv4-tiny xử lý phát hiện vùng biển số rất nhanh trên khung hình lớn. Tuy nhiên, việc đưa toàn bộ 36 lớp ký tự (chữ + số) vào cùng một mô hình Deep Learning một giai đoạn sẽ làm tăng dung lượng mạng và giảm tốc độ suy luận trên CPU nhúng. Kết hợp phân tách hình học và phân loại bằng SVM đa lớp giúp giảm tải tính toán, cho tốc độ dự đoán ký tự đạt dưới $15\text{ms}$.

3. Hệ thống có hoạt động tốt vào ban đêm không?

Để hoạt động ổn định ban đêm, hệ thống cần trang bị camera có đèn LED hồng ngoại chuyên dụng cho giao thông hoặc lắp đặt đèn chiếu sáng trợ sáng cố định tại vị trí quét biển số nhằm loại bỏ hiện tượng lóa biển do đèn hậu xe máy.

4. Giải pháp có thể tích hợp với các phần mềm quản lý bãi xe hiện hành không?

Có. Module Edge ALPR có thể đóng gói thành một RESTful API microservice cục bộ hoặc gửi dữ liệu qua giao thức WebSocket/MQTT. Khi có xe vào, hệ thống trích xuất chuỗi ký tự biển số kèm timestamp và gửi trực tiếp về phần mềm quản lý trung tâm.

5. Chi phí đầu tư ban đầu và thời gian hoàn vốn như thế nào?

Chi phí cho 1 làn xe (bao gồm Raspberry Pi 4, camera, vỏ bảo vệ, rơ-le điều khiển barrier) dao động từ 4.500.000 đến 6.500.000 VNĐ. Với việc tiết kiệm chi phí vé thẻ và giảm bớt nhân lực kiểm soát, thời gian hoàn vốn (ROI) thường chỉ mất từ 1 đến 2 tháng vận hành.


Kết luận

Đồ án đã nghiên cứu toàn diện và thực nghiệm thành công bài toán nhận diện biển số xe máy thông qua việc benchmark đa dạng các mô hình học máy và học sâu. Bằng việc chứng minh mô hình YOLOv4-tiny kết hợp SVM có khả năng hoạt động ổn định trên phần cứng nhúng Raspberry Pi 4 Model B với mAP đạt $91.15%$ và tốc độ $6.2\text{ FPS}$, đề tài mang lại giải pháp công nghệ có tính ứng dụng cao, chi phí thấp và giải quyết triệt để bài toán tự động hóa kiểm soát giao thông tĩnh tại các đô thị hiện đại.