Bối cảnh và vấn đề nghiên cứu

Sự gia tăng nhanh chóng của các phương tiện giao thông cá nhân, đặc biệt là ô tô 4 đến 7 chỗ tại các đô thị ở các quốc gia đang phát triển như Việt Nam, đã tạo ra áp lực lớn lên cơ sở hạ tầng giao thông và bãi đỗ xe. Theo số liệu khảo sát được nhóm tác giả trích dẫn từ tài liệu Intro Smart Parking (2021), quá trình người điều khiển phương tiện tìm kiếm vị trí đỗ xe là một trong những nguyên nhân hàng đầu gây ùn tắc giao thông đô thị, chiếm tới 30% tổng lượng tắc nghẽn. Tình trạng này không chỉ gây lãng phí thời gian, tiêu tốn nhiên liệu mà còn gia tăng lượng khí thải nhà kính ra môi trường.

Để giải quyết tình trạng trên, đồ án tốt nghiệp kỹ sư ngành Kỹ thuật Máy tính (Chương trình Chất lượng cao MT19CLC, Trường Đại học Bách Khoa – ĐHQG-HCM) của nhóm tác giả Trần Vĩnh Tiến và Nguyễn Thành Lộc đã đề xuất đề tài: "A Jetson Xavier-Based Smart Parking" (Xây dựng hệ thống quản lý giữ xe thông minh sử dụng Jetson Xavier). Đồ án được thực hiện dưới sự hướng dẫn của PGS. Phạm Quốc Cường và ThS. Băng Ngọc Bảo Tâm, cùng sự phản biện của PGS. Trần Ngọc Thịnh.

Nhiệm vụ nghiên cứu được giao chính thức bao gồm 4 nội dung cụ thể:

  1. Thực hiện khảo sát toàn diện về chủ đề bãi đỗ xe thông minh ứng dụng các thiết bị tính toán biên (Edge devices).
  2. Đề xuất kiến trúc hệ thống quản trị bãi đỗ xe thông minh dựa trên nền tảng phần cứng NVIDIA Jetson Xavier.
  3. Hiện thực hóa (triển khai) kiến trúc đã đề xuất trên nền tảng phần cứng và phần mềm cụ thể.
  4. Thực hiện các thử nghiệm thực tế và đánh giá hiệu năng của hệ thống với các bộ dữ liệu khác nhau.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng: Hệ thống quản lý đỗ xe ô tô tự động tích hợp xử lý thị giác máy tính tại biên (Edge AI) để nhận diện trạng thái chỗ trống và nhận diện biển số xe, kết hợp máy chủ quản lý trung tâm và ứng dụng di động cho người dùng.
  • Phạm vi không gian: Triển khai thử nghiệm thực tế tại khu vực bãi đỗ xe ô tô khuôn viên Trường Đại học Bách Khoa – ĐHQG-HCM (HCMUT).
  • Phạm vi phương tiện: Áp dụng cho các dòng ô tô con loại từ 4 đến 7 chỗ.
  • Phạm vi thời gian: Nhiệm vụ được giao ngày 10/01/2023 và hoàn thành bảo vệ vào tháng 06/2023.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ nền tảng

Nghiên cứu kết hợp nhiều lĩnh vực công nghệ thuộc mạng lưới vạn vật kết nối (IoT), tính toán biên (Edge Computing) và trí tuệ nhân tạo (AI):

  • Tính toán biên và Edge AI: Sử dụng bo mạch nhúng NVIDIA Jetson Xavier NX Developer Kit nhằm thực hiện toàn bộ tác vụ tiền xử lý, suy luận mạng nơ-ron (DNN/CNN) trực tiếp tại hiện trường. Điều này giảm thiểu việc truyền tải toàn bộ luồng video độ phân giải cao lên máy chủ trung tâm, tiết kiệm băng thông mạng và giảm độ trễ xử lý.
  • Các mô hình thị giác máy tính:
    • Mô hình phát hiện đối tượng: YOLOv4 (huấn luyện trên tập dữ liệu chuẩn COCO với 80 lớp đối tượng) dùng cho bài toán phát hiện vị trí ô tô trong bãi.
    • Mô hình nhận diện biển số: YOLOv4-tiny tùy biến (custom) để định vị khung biển số xe và mạng tích chập (CNN) cơ bản để phân loại ký tự (gồm 31 ký tự chữ/số và 1 lớp Background cho dữ liệu rác phân đoạn).
  • Nền tảng tăng tốc phần cứng: Sử dụng OpenCV biên dịch với hỗ trợ CUDA, cuDNN và thư viện tối ưu hóa NVIDIA TensorRT để chuyển đổi các mô hình từ Darknet/ONNX sang định dạng engine chạy ở độ chính xác dấu chấm động 16-bit (FP16).
  • Ngăn xếp phần mềm quản lý và ứng dụng:
    • Back-end / Database Server: Xây dựng bằng ngôn ngữ Python với Django Web Framework, cơ sở dữ liệu SQLite3, giao tiếp thông qua REST API / HTTP CRUD và tài liệu hóa qua Swagger UI tại endpoint /swagger.
    • Ứng dụng di động: Xây dựng trên nền tảng Flutter (Android), tích hợp các dịch vụ bên thứ ba: OpenRouteService (lấy dữ liệu định tuyến định dạng GeoJSON), Google Maps API (hiển thị bản đồ) và Google Places API (tìm kiếm địa điểm).

Phương pháp nghiên cứu thực tế

Nhóm tác giả đã sử dụng phối hợp các phương pháp kỹ thuật:

  • Phương pháp khảo sát, phân tích tổng hợp: Nghiên cứu phân loại các hướng tiếp cận bãi đỗ xe thông minh trên thế giới (quản lý tại cổng - Gate Management, quản lý đơn bãi - Mono-parking, quản lý đa bãi - Multi-parking, sử dụng mạng cảm biến không dây WSN, mạng VANET hoặc xử lý ảnh).
  • Phương pháp thiết kế và tích hợp hệ thống: Phân chia hệ thống thành 3 khối độc lập (Edge Computing Hardware, Central API/Database Server, Mobile Application) giao tiếp đồng bộ qua định dạng JSON.
  • Phương pháp thực nghiệm kiểm thử: Đánh giá tốc độ khung hình (FPS) trước và sau khi tối ưu hóa bằng TensorRT, đo đạc thời gian đáp ứng API, kiểm tra độ tin cậy của việc kết nối thiết bị biên và kiểm thử các kịch bản người dùng thực tế.

Thiết kế và triển khai hệ thống

Hệ thống được tổ chức thành một chu trình khép kín gồm 3 thành phần chính:

Thành phần Công nghệ / Nền tảng Chức năng kỹ thuật chính
Edge Device (Khối xử lý biên) NVIDIA Jetson Xavier NX, USB Camera, TensorRT, CUDA, OpenCV Thu nhận video thời gian thực; nhận diện biển số xe (Check-in/Check-out); phát hiện ô tô và xác định trạng thái chiếm chỗ bãi đỗ.
Server & Database (Khối máy chủ) Python Django Framework, SQLite3, REST API Tiếp nhận và xử lý dữ liệu từ thiết bị biên; lưu trữ dữ liệu người dùng, lượt đặt chỗ (Bookings), thông tin bãi; đồng bộ dữ liệu tới ứng dụng.
Mobile Client (Khối người dùng) Flutter (Android), OpenRouteService, Google Maps/Places API Đăng ký/đăng nhập, tìm kiếm vị trí bãi đỗ gần nhất, đặt chỗ (Booking), nhận điều hướng đường đi qua GPS và thanh toán.

1. Phân hệ nhận diện biển số xe (License Plate Recognition - LPR)

  • Tiền xử lý: Khung hình xe từ USB camera được chuyển đổi sang ảnh mức xám (Grayscale) để loại bỏ sự phụ thuộc vào màu sắc biển số (trắng, xanh, vàng tại Việt Nam) trong khi vẫn giữ nguyên đặc trưng hình học và kích thước.
  • Phát hiện biển số: Mô hình YOLOv4-tiny tùy biến suy luận vị trí biển số, sau đó tiến hành cắt (crop) vùng ảnh chứa biển số.
  • Phân đoạn và nhận dạng ký tự: Vùng biển số được chuyển sang không gian màu HSV, nhị phân hóa để phân tách từng ký tự. Các ký tự này được đưa vào mạng CNN để phân loại nhận diện.
  • Hậu xử lý: Tự động định dạng biển số theo cấu trúc 1 dòng hoặc 2 dòng dựa trên tọa độ bounding box của các ký tự phân đoạn trước khi gửi kết quả về máy chủ.

2. Phân hệ phát hiện trạng thái ô đỗ (Parking Lot Occupancy Detection)

  • Thiết lập ban đầu: Ảnh toàn cảnh bãi đỗ được chụp và vẽ thủ công các khung hình chữ nhật tương ứng từng vị trí đỗ. Tọa độ 4 đỉnh của từng ô đỗ được lưu vào tệp cấu hình .yml.
  • Phát hiện thời gian thực: Luồng video từ USB camera được chuẩn hóa về kích thước $416 \times 416 \times 3$ làm đầu vào cho mô hình YOLOv4 đã tối ưu hóa TensorRT FP16.
  • Thuật toán xác định chiếm chỗ: Tính toán tỷ lệ diện tích giao nhau (overlap) giữa bounding box của phương tiện được phát hiện và bounding box của ô đỗ. Nếu diện tích chồng lấn vượt quá 80%, ô đỗ đó được xác định là có xe (Occupied), ngược lại là trống (Free).
  • Cơ chế tối ưu hóa tài nguyên: Hệ thống lưu trữ số lượng phương tiện phát hiện được trong khung hình hiện tại. Nếu ở khung hình tiếp theo số lượng xe không thay đổi, hệ thống sẽ bỏ qua bước tính toán lại diện tích chồng lấn, giúp tiết kiệm bộ nhớ và chu kỳ tính toán của thiết bị biên.

3. Quy trình tương tác 6 bước của người dùng

  1. Bước 1: Khách hàng mở ứng dụng di động để tìm kiếm và đặt trước chỗ đỗ xe dựa trên các gợi ý tối ưu.
  2. Bước 2: Ứng dụng điều hướng khách hàng từ vị trí hiện tại đến bãi đỗ xe thông qua bản đồ và API OpenRouteService.
  3. Bước 3: Khách hàng đến cổng bãi, thiết bị biên nhận diện biển số xe và tự động thực hiện thủ tục Check-in trên máy chủ.
  4. Bước 4: Phương tiện vào vị trí đỗ, thiết bị biên giám sát trạng thái ô đỗ và hệ thống tính toán thời gian đỗ thực tế.
  5. Bước 5: Khách hàng tiến hành thanh toán phí gửi xe dựa trên tổng thời gian sử dụng.
  6. Bước 6: Khách hàng di chuyển ra cổng, thiết bị biên nhận diện biển số xe một lần nữa để xác nhận Check-out hoàn tất phiên gửi xe.

Nội dung chính theo từng chương

Chương 1: Giới thiệu (Introduction)

Chương 1 phân tích tính cấp thiết của việc áp dụng tự động hóa và công nghệ thông minh trong quản lý đô thị. Tác giả chỉ ra các hệ lụy của việc thiếu quy hoạch bãi đỗ xe, đặt ra bài toán nghiên cứu kèm theo các ràng buộc kỹ thuật: phục vụ ô tô 4–7 chỗ tại bãi đỗ Trường Đại học Bách Khoa TP.HCM, yêu cầu người dùng đăng ký tài khoản qua di động và đặt mục tiêu phần cứng Jetson Xavier NX phải hoạt động ổn định với tốc độ xử lý đạt tối thiểu từ 17 đến 24 FPS.

Chương 2: Cơ sở kiến thức và các công trình liên quan (Background and Related work)

Chương này tổng hợp các giải pháp đỗ xe thông minh hiện nay, phân loại theo hai nhóm chính: quản lý theo cổng (Gate Management) và quản lý theo vị trí đỗ (Parking Space Management - gồm đơn bãi Mono-parking và đa bãi Multi-parking). Tác giả so sánh các công nghệ cảm biến không dây (WSN dùng giao thức Zigbee, TinyOS), công nghệ GPS và thị giác máy tính (CV/IM).

Đồng thời, chương giới thiệu chi tiết về nền tảng phần cứng NVIDIA Jetson, vai trò của thư viện OpenCV hỗ trợ CUDA/cuDNN và quy trình hai giai đoạn (Building phase và Running phase) của công cụ tối ưu hóa NVIDIA TensorRT để chuyển đổi các mô hình sang định dạng engine thực thi trên GPU nhúng.

Chương 3: Phương pháp luận (Methodology)

Trình bày chi tiết kiến trúc tổng thể của hệ thống gồm 3 phân hệ: Phần cứng biên (Hardware/Edge device), Máy chủ trung tâm (Cloud-based Server) và Ứng dụng di động (Mobile Application). Chương này mô tả cấu trúc luồng dữ liệu, quy trình tương tác 6 bước của khách hàng, hoạt động lấy tọa độ ô đỗ lưu dưới dạng .yml, cũng như kiến trúc module nhận diện biển số xe LPR và module phát hiện ô đỗ trống.

Chương 4: Hiện thực hóa hệ thống (Implementation)

Mô tả chi tiết các bước cài đặt phần cứng và phát triển phần mềm:

  • Cấu hình môi trường phần cứng với NVIDIA Jetpack, cài đặt OpenCV 4.0 kích hoạt CUDA.
  • Quy trình huấn luyện mô hình YOLOv4 trên tập dữ liệu COCO và mô hình YOLOv4-tiny cho biển số xe Việt Nam; xử lý ảnh mức xám nhằm hạn chế ảnh hưởng của màu sắc biển số; huấn luyện mô hình CNN phân loại 31 ký tự và 1 lớp Background.
  • Thiết kế cơ sở dữ liệu trên Django gồm các bảng chính: Users (người dùng và quản trị viên), Parking lots (thông tin bãi đỗ, vị trí, biểu phí) và Bookings (thông tin phiên đặt chỗ, thời gian, trạng thái).
  • Xây dựng hệ thống API CRUD, tích hợp Swagger UI và phát triển ứng dụng di động bằng Flutter với 4 use case cốt lõi: Đăng nhập (Login), Đăng ký (Sign Up), Đặt chỗ (Booking) và Định tuyến đường đi (Routing qua OpenRouteService dưới định dạng GeoJSON).

Chương 5: Kết quả và đánh giá (Result and Evaluation)

Chương 5 cung cấp các kết quả thực nghiệm hệ thống:

  • Kiểm thử hiệu năng mạng nơ-ron: Tốc độ suy luận (inference speed) của mô hình sau khi tối ưu bằng TensorRT đạt mức 31 FPS, tốc độ xử lý toàn bộ pipeline khung hình đạt từ 17 đến 26 FPS.
  • Kiểm thử các ca sử dụng hệ thống (Testcases 1 đến 7): Nhận diện ô đỗ trống, nhận diện ô đỗ có xe chiếm chỗ, kiểm tra Check-in biển số, kiểm tra Check-out biển số, tạo phiên đặt chỗ, hoàn tất đặt chỗ và kiểm tra độ ổn định kết nối của thiết bị biên.
  • Phân tích một số trường hợp nhận diện sai đối với biển số màu xanh hoặc góc chụp nghiêng.

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

  • Hiệu năng xử lý AI tại biên: Triển khai thành công các mô hình YOLOv4 và YOLOv4-tiny trên kit nhúng NVIDIA Jetson Xavier NX. Tốc độ suy luận thuần đạt 31 FPS và tốc độ xử lý toàn trình (end-to-end frame processing) duy trì ổn định trong khoảng 17 đến 26 FPS (phù hợp với nhận xét của cán bộ phản biện ghi nhận mức 21 đến 30 FPS).
  • Hoàn thiện hệ thống đa nền tảng:
    • Xây dựng hoàn chỉnh máy chủ backend bằng Django tích hợp đầy đủ hệ thống API CRUD phục vụ đồng bộ dữ liệu giữa thiết bị biên và ứng dụng di động.
    • Hoàn thiện ứng dụng di động Flutter hỗ trợ người dùng tìm kiếm, đặt chỗ trước và nhận chỉ dẫn đường đi chính xác tới vị trí bãi đỗ.
  • Thuật toán tối ưu hóa: Triển khai thành công cơ chế phát hiện trạng thái ô đỗ dựa trên ngưỡng chồng lấn diện tích 80% kết hợp bộ đệm kiểm tra biến động số lượng xe để giảm tải chu kỳ tính toán cho phần cứng biên.

Đóng góp thực tiễn của đề tài

  • Đề xuất một mô hình kiến trúc đỗ xe thông minh hoàn chỉnh, kết hợp xử lý Edge AI tại chỗ thay vì đẩy toàn bộ dữ liệu video về máy chủ trung tâm, giúp tiết kiệm băng thông và tăng cường tính riêng tư, bảo mật.
  • Kết hợp hoàn chỉnh giữa phần cứng nhúng, trí tuệ nhân tạo, backend dịch vụ web và ứng dụng di động phía người dùng trong một giải pháp đồng bộ.

Hạn chế và hướng nghiên cứu tiếp

Theo các đánh giá từ cán bộ hướng dẫn (PGS. Phạm Quốc Cường) và cán bộ phản biện (PGS. Trần Ngọc Thịnh), đồ án còn tồn tại một số hạn chế cần khắc phục:

  • Tập dữ liệu biển số xe còn nhỏ: Dữ liệu huấn luyện cho biển số xe Việt Nam chưa đủ lớn và chưa bao quát hết các điều kiện thực tế (nhóm tác giả được khuyến nghị nên tham khảo thêm đề tài trước đó: "An edge ai hardware acceleration solution for smart parking").
  • Lỗi nhận diện trong các trường hợp phức tạp: Hệ thống vẫn xuất hiện lỗi nhận diện khi biển số có nền màu xanh hoặc khi camera thu nhận hình ảnh ở các góc chụp quá nghiêng.
  • Phạm vi thử nghiệm hẹp: Hệ thống mới chỉ được thiết kế và kiểm nghiệm thực tế cho khu vực bãi đỗ xe ô tô trong khuôn viên Trường Đại học Bách Khoa TP.HCM, chưa được mở rộng và tổng quát hóa cho các bãi đỗ xe công cộng quy mô lớn.
  • Vấn đề tài liệu và phần mềm: Còn một số lỗi nhỏ về ngữ pháp và định dạng trong thuyết minh; bản phát hành Jetpack mới trên Jetson Xavier NX chưa hỗ trợ trực tiếp tensorflow-gpu cho mô hình phân loại ký tự CNN, dẫn đến việc phải điều chỉnh quy trình thực thi.

Giá trị tham khảo

Đồ án là tài liệu tham khảo có giá trị cao đối với:

  • Sinh viên ngành Kỹ thuật Máy tính, Công nghệ Thông tin, Kỹ thuật Điện - Điện tử: Học tập phương pháp triển khai và tối ưu hóa các mô hình học sâu (Deep Learning) trên các thiết bị phần cứng nhúng của NVIDIA (Jetson Nano, Jetson Xavier NX) sử dụng CUDA, cuDNN và TensorRT.
  • Kỹ sư phát triển hệ thống IoT và Edge AI: Tham khảo kiến trúc tích hợp hệ thống đa thành phần, từ khâu xử lý thị giác máy tính tại biên, xây dựng REST API trên Django cho đến phát triển giao diện người dùng bằng Flutter.
  • Các nghiên cứu phát triển tiếp theo: Kế thừa giải pháp phân đoạn và nhận diện biển số xe 1 dòng / 2 dòng tại Việt Nam, cũng như thuật toán xác định ô đỗ dựa trên tính toán tỷ lệ diện tích chồng lấn bounding box.

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

1. Hệ thống sử dụng mô hình học sâu nào cho các tác vụ thị giác máy tính và được tối ưu hóa ra sao?
Hệ thống sử dụng mô hình YOLOv4 (huấn luyện trên tập COCO với 80 lớp) để phát hiện vị trí ô tô trong bãi và mô hình YOLOv4-tiny tùy biến kết hợp mạng CNN đơn giản (31 ký tự chữ/số + 1 lớp Background) để nhận diện biển số xe. Cả hai mô hình đều được chuyển đổi sang định dạng ONNX và tối ưu hóa thành engine của NVIDIA TensorRT chạy ở độ chính xác FP16 trên bo mạch Jetson Xavier NX.

2. Ngưỡng nào được sử dụng để xác định một ô đỗ xe đang có xe đỗ hay còn trống?
Hệ thống tính toán tỷ lệ diện tích chồng lấn (overlap area) giữa bounding box của ô tô do YOLOv4 phát hiện và bounding box của ô đỗ đã được định nghĩa trước (lưu trong tệp .yml). Nếu tỷ lệ diện tích chồng lấn đạt từ 80% trở lên, ô đỗ được xác định là có xe chiếm chỗ (Occupied), ngược lại là ô trống (Free).

3. Tốc độ xử lý khung hình (FPS) thực tế của thiết bị biên đạt được là bao nhiêu?
Trong giai đoạn suy luận thuần (inference phase), hệ thống đạt tốc độ 31 FPS. Khi xử lý toàn bộ luồng công việc của một khung hình (end-to-end processing), tốc độ đạt trong khoảng từ 17 đến 26 FPS (theo đánh giá của cán bộ phản biện, hệ thống duy trì ở mức 21 đến 30 FPS), đáp ứng yêu cầu xử lý thời gian thực.

4. Khách hàng sử dụng dịch vụ định tuyến đường đi tới bãi đỗ thông qua công nghệ nào trên ứng dụng di động?
Ứng dụng di động (viết bằng Flutter) gửi yêu cầu và nhận dữ liệu điều hướng từ dịch vụ bên thứ ba là OpenRouteService API dưới định dạng GeoJSON. Ứng dụng sau đó chuyển đổi dữ liệu này thành các chỉ dẫn đồ họa và văn bản hiển thị trên nền Google Maps để hướng dẫn người dùng lái xe đến vị trí bãi đỗ.

5. Điểm hạn chế chính của hệ thống nhận diện biển số trong đồ án này là gì?
Hạn chế chính là tập dữ liệu biển số xe Việt Nam còn hạn chế, dẫn đến việc mô hình đôi khi nhận diện sai đối với các loại biển số xe có màu nền đặc biệt (như biển số màu xanh) hoặc khi hình ảnh thu nhận từ camera bị nghiêng góc lớn.


Kết luận

Đồ án tốt nghiệp "A Jetson Xavier-Based Smart Parking" của sinh viên Trần Vĩnh Tiến và Nguyễn Thành Lộc đã thiết kế và hiện thực hóa thành công một hệ thống quản lý bãi đỗ xe thông minh hoàn chỉnh dựa trên công nghệ tính toán biên Edge AI. Bằng việc kết hợp kit nhúng NVIDIA Jetson Xavier NX với công cụ tối ưu hóa TensorRT, máy chủ Django và ứng dụng di động Flutter, hệ thống đã giải quyết hiệu quả bài toán tự động nhận diện biển số xe và giám sát trạng thái ô đỗ theo thời gian thực với tốc độ xử lý đạt từ 17 đến 26 FPS. Mặc dù cần tiếp tục mở rộng quy mô tập dữ liệu biển số xe và nâng cao độ chính xác ở các góc chụp phức tạp, công trình đã hoàn thành xuất sắc các mục tiêu đề ra và được Hội đồng chấm đồ án đánh giá cao (đạt điểm 9,0 từ giảng viên hướng dẫn và điểm 8/10 từ phản biện).