Giới thiệu dự án

Tại các đô thị lớn tại Việt Nam, sự gia tăng nhanh chóng của mật độ phương tiện giao thông cùng với quỹ đất đỗ xe hạn hẹp đã biến việc điều khiển và đỗ xe ô tô trong không gian hẹp thành thách thức lớn đối với người lái. Theo các thống kê từ ngành giao thông, hơn 30% các vụ va quẹt thân vỏ xảy ra trong quá trình lùi, đỗ xe hoặc di chuyển qua các hẻm nhỏ do các vùng mù thị giác (Blind Spots) xung quanh xe bao gồm: điểm mù trước đầu xe, điểm mù đuôi xe và hai bên hông gương chiếu hậu.

Hệ thống hỗ trợ đỗ xe (Parking Assistance System - PAS) truyền thống chủ yếu dựa vào cảm biến siêu âm hoặc camera lùi đơn lẻ với góc nhìn cố định, không cung cấp được cái nhìn toàn cảnh. Trong khi đó, các dòng xe cao cấp (như BMW 7-Series, Acura MDX, Nissan Around View Monitor) đã trang bị hệ thống camera Bird-View (Around View Monitor - AVM) giả lập góc nhìn từ trên cao 360 độ nhưng chi phí bản quyền và phần cứng rất đắt đỏ, hiếm khi xuất hiện trên các phân khúc xe phổ thông từ 2 đến 4 chỗ.

Đồ án tốt nghiệp "Xây dựng chương trình tạo ảnh Bird-View cho xe hơi từ các camera xung quanh" (Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) được nghiên cứu và phát triển nhằm giải quyết triệt để bài toán điểm mù thông qua giải pháp thị giác máy tính kết hợp trí tuệ nhân tạo biên (Edge AI) với chi phí tối ưu.

                    [ 4 Wide-Angle Fisheye Cameras (200° FoV) ]
                                        │
                                        ▼
                  [ NVIDIA Jetson Nano Developer Kit (B01) ]
                 ┌──────────────────────┴──────────────────────┐
                 ▼                                             ▼
     [ Pipeline Xử Lý Thị Giác ]                     [ Pipeline Trí Tuệ Nhân Tạo ]
  • Hiệu chỉnh méo quang học (Calibration)        • SSD-MobileNet V1 Object Detection
  • Biến đổi phối cảnh (Perspective Transform)    • Định vị bounding box đa tỉ lệ
  • Ghép ảnh liền mạch (Seamless Stitching)       • Ước lượng khoảng cách an toàn
  • Cân bằng màu sắc (Color Balancing)            • Cảnh báo va chạm đa vùng (1.0m - 2.0m)
                 └──────────────────────┬──────────────────────┘
                                        ▼
                  [ Môi Trường Hiển Thị 3D (Ratcave Engine) ]
                 ┌──────────────────────┴──────────────────────┐
                 ▼                                             ▼
      [ Giao Diện Bird-View 360° ]                  [ Màn Hình Monitor Điều Khiển ]

Mục tiêu cụ thể của dự án

  1. Thiết kế và lắp đặt hệ thống phần cứng thu nhận hình ảnh: Tích hợp 4 camera góc rộng (bao gồm 2 cảm biến Sony IMX219-200 góc nhìn $200^\circ$ và 2 camera hành trình phụ trợ) tại 4 vị trí chiến lược quanh thân xe (trước, sau, gương trái, gương phải).
  2. Xây dựng thuật toán tạo ảnh Bird-View thời gian thực: Sử dụng ma trận biến đổi phối cảnh (Perspective Transformation Matrix $3 \times 3$), phép chiếu Homography và kỹ thuật ghép ảnh (Seamless Blending) để tạo bức tranh toàn cảnh 360 độ từ trên cao nhìn xuống xe.
  3. Phát triển module AI phát hiện và cảnh báo vật cản: Huấn luyện và tối ưu mạng nơ-ron tích chập sâu Single Shot MultiBox Detector kết hợp kiến trúc MobileNet V1 (SSD-MobileNet V1) để nhận diện thời gian thực các đối tượng: ô tô, xe máy, người đi bộ và động vật (chó, mèo).
  4. Tích hợp mô phỏng không gian 3D: Sử dụng thư viện đồ họa 3D ratcave dựa trên nền tảng OpenGL nhằm kết xuất (render) mô hình 3D xe ô tô đặt trong không gian toàn cảnh giả lập bối cảnh môi trường xung quanh.
  5. Đóng gói và thực thi trên phần cứng nhúng: Tối ưu hóa pipeline xử lý trên bo mạch nhúng NVIDIA Jetson Nano Developer Kit (B01) với mức tiêu thụ năng lượng thấp dưới 5W–10W.

Thông số kỹ thuật và phạm vi giới hạn

  • Phần cứng xử lý: Bo mạch NVIDIA Jetson Nano Developer Kit B01 (128-core Maxwell GPU, Quad-core ARM Cortex-A57 @ 1.43 GHz, 4GB 64-bit LPDDR4).
  • Cảm biến hình ảnh: Sony IMX219 (8 Megapixels, CMOS 1/4 inch, Aperture F2.87, FoV $200^\circ$, Distortion $< 11%$).
  • Độ phân giải hiển thị đầu ra: $200 \times 250$ pixels trên màn hình điều khiển với tốc độ khung hình mục tiêu đạt từ 15 đến 20 FPS (Frames Per Second).
  • Độ chính xác nhận diện vật cản: Đạt $70% - 85%$ mAP trong các điều kiện ánh sáng khác nhau.
  • Phạm vi cảnh báo an toàn: Cảnh báo tức thời khi vật cản tiếp cận trong bán kính $1.5\text{m} - 2.0\text{m}$ (camera trước/sau) và $1.0\text{m}$ (camera hai bên sườn).

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

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

Giải pháp công nghệ Ưu điểm Nhược điểm Chi phí & Khả năng ứng dụng
Cảm biến siêu âm (Ultrasonic PAS) Nhỏ gọn, tuổi thọ cao, ít bị ảnh hưởng bởi thời tiết xấu. Khoảng cách đo ngắn ($< 2.5\text{m}$), độ phân giải góc thấp, không nhận diện được loại vật cản. Rất rẻ, trang bị đại trà nhưng không loại bỏ được điểm mù thị giác.
Máy quét Laser / LiDAR Độ chính xác milimet, ổn định cao, tạo bản đồ 3D chuẩn xác. Chi phí cực cao, kích thước lớn, suy giảm tín hiệu mạnh khi gặp mưa tuyết, tuổi thọ cơ học ngắn. Rất đắt ($> 1,000\text{ USD}$), chỉ phù hợp xe tự hành nghiên cứu (L4/L5).
Radar sóng milimet (mmWave) Xuyên thấu thời tiết xấu (sương mù, mưa lớn), đo vận tốc tức thời tốt. Không hiển thị được hình ảnh trực quan cho người lái, nhận diện vật cản phi kim loại kém. Trung bình - Cao, thường dùng cho phanh khẩn cấp AEB/ACC.
Hệ thống Bird-View dựa trên Vision & Edge AI (Giải pháp đề xuất) Cung cấp hình ảnh 360° trực quan, nhận diện phân loại vật thể chính xác bằng Deep Learning, giá thành tối ưu. Đòi hỏi năng lực tính toán GPU nhúng, hiệu suất giảm khi thiếu sáng trầm trọng (cần bù sáng). Chi phí tối ưu ($< 150\text{ USD}$), khả năng ứng dụng retrofit rộng rãi cho mọi dòng xe.

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

  • Must Have (Bắt buộc phải có): Thu nhận đồng thời 4 luồng video; Chuyển đổi góc nhìn phối cảnh (Perspective Warp); Ghép ảnh 360° liền mạch không gián đoạn; Nhận diện 4 nhóm đối tượng chính (người, xe máy, ô tô, động vật); Phát tín hiệu cảnh báo va chạm theo ngưỡng khoảng cách.
  • Should Have (Nên có): Mô phỏng không gian 3D xung quanh xe thông qua thư viện đồ họa; Cân bằng sáng tự động giữa các mắt camera; Tối ưu hóa GPU CUDA/TensorRT để duy trì FPS $\ge 15$.
  • Could Have (Có thể mở rộng): Vạch định hướng vô lăng động (Dynamic Guidelines) theo góc bẻ lái; Lưu trữ video hành trình 4 kênh đồng thời.
  • Won't Have (Chưa thực hiện trong giai đoạn này): Tự động phanh can thiệp vào hệ thống điều khiển ECU/CAN bus của xe.

Thiết kế hệ thống

+-----------------------------------------------------------------------------------+
|                              KIẾN TRÚC HỆ THỐNG PHẦN CỨNG                         |
+-----------------------------------------------------------------------------------+
| [Cam 1: IMX219 (Trước)]   [Cam 2: IMX219 (Sau)]   [Cam 3: USB (Trái)]   [Cam 4: USB (Phải)] |
|        │                         │                       │                     │  |
|        └────────────┬────────────┘                       └──────────┬──────────┘  |
|                     ▼ (Dual MIPI CSI-2)                             ▼ (USB 3.0)   |
|     +───────────────────────────────────────────────────────────────────────+     |
|     |               NVIDIA Jetson Nano B01 (128-core Maxwell GPU)           |     |
|     |  - OS: Ubuntu 18.04 LTS (JetPack SDK)                                 |     |
|     |  - Giao tiếp: GPIO, I2C, UART, HDMI 2.0                               |     |
|     +───────────────────────────────────┬───────────────────────────────────+     |
+─────────────────────────────────────────┼─────────────────────────────────────────+
                                          ▼
+-----------------------------------------------------------------------------------+
|                               LUỒNG XỬ LÝ PHẦN MỀM (MULTITHREADING)               |
+-----------------------------------------------------------------------------------+
|  [Thread 1: Image Acquisition & Pre-processing]                                   |
|   └── Lọc nhiễu -> Khử méo Fisheye Lens -> Đồng bộ kích thước khung hình          |
|                                         │                                         |
|  [Thread 2: Bird-View Construction Engine]                                        |
|   └── Ma trận Homography 3x3 -> cv2.warpPerspective() -> Seamless Blending        |
|                                         │                                         |
|  [Thread 3: Deep Learning Object Detection]                                       |
|   └── SSD-MobileNet V1 (TensorRT Inference) -> Bounding Box -> Distance Calculation|
|                                         │                                         |
|  [Thread 4: 3D Visualization & Warning UI]                                        |
|   └── Ratcave Engine (.obj Car Mesh) -> Ghép Texture -> Render Màn Hình (HDMI)    |
+-----------------------------------------------------------------------------------+

Bảng thông số Technology Stack

Thành phần Công nghệ / Thư viện Phiên bản Vai trò kỹ thuật
Phần cứng xử lý NVIDIA Jetson Nano B01 Rev B01 (4GB) Xử lý suy luận AI và xử lý đồ họa song song
Hệ điều hành / BSP NVIDIA JetPack SDK 4.4 / 4.5.1 Driver, nhân Linux Ubuntu 18.04 LTS cho ARM64
Tăng tốc tính toán NVIDIA CUDA & cuDNN CUDA 10.2 / cuDNN 8.0 Tận dụng 128 lõi Maxwell tính toán song song
Suy luận Deep Learning TensorRT / PyTorch TensorRT 7.1 / PyTorch 1.6 Tối ưu hóa đồ thị mạng nơ-ron, suy luận FP16
Xử lý thị giác máy tính OpenCV (Python Wrapper) OpenCV 4.4.0 (with CUDA) Biến đổi hình học, warpPerspective, trộn ảnh
Đồ họa không gian 3D Ratcave / Pyglet Ratcave 0.3.x (OpenGL) Đọc file .obj, render xe 3D và phủ texture môi trường
Huấn luyện mô hình NVIDIA DIGITS / PyTorch DIGITS 6.0 Quản lý dataset, gán nhãn DetectNet, train SSD

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

Dự án áp dụng mô hình phát triển phần mềm lặp từng bước (Iterative Engineering & Prototyping) qua 4 mốc quan trọng:

  1. Milestone 1 (Tuần 1 - 4): Khảo sát phần cứng, thiết kế gá đặt camera quanh mô hình xe thử nghiệm, cấu hình môi trường JetPack và driver MIPI CSI-2.
  2. Milestone 2 (Tuần 5 - 8): Xây dựng pipeline biến đổi hình học (Perspective Transform), tinh chỉnh điểm lấy mẫu ma trận biến đổi phối cảnh và thuật toán ghép ảnh 4 kênh.
  3. Milestone 3 (Tuần 9 - 12): Thu thập bộ dữ liệu thực tế tại Việt Nam, gán nhãn bounding box, huấn luyện mô hình SSD-MobileNet V1, tối ưu hóa model suy luận trên Jetson Nano.
  4. Milestone 4 (Tuần 13 - 16): Tích hợp thư viện đồ họa 3D ratcave, thiết lập cơ chế xử lý đa luồng (Multithreading) chống nghẽn I/O, thực nghiệm hiện trường và đánh giá sai số.

Implementation và kết quả

Chi tiết giải thuật và mã nguồn

1. Thuật toán biến đổi phối cảnh (Perspective Transformation)

Để chuyển đổi góc nhìn nghiêng từ camera góc rộng thành góc nhìn phẳng chiếu từ trên xuống (Top-down Bird-View), ta áp dụng ma trận biến đổi phối cảnh kích thước $3 \times 3$. Giả sử điểm đầu vào là $(x, y)$ và điểm sau biến đổi là $(x', y')$:

$$\begin{bmatrix} x' \cdot w \ y' \cdot w \ w \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & a_{13} \ a_{21} & a_{22} & a_{23} \ a_{31} & a_{32} & 1 \end{bmatrix} \begin{bmatrix} x \ y \ 1 \end{bmatrix}$$

Cần xác định tối thiểu 4 cặp điểm tương ứng không thẳng hàng giữa ảnh gốc ($src$) và ảnh đích ($dst$) trên bề mặt mặt phẳng hiệu chuẩn (Calibration Mat).

import cv2
import numpy as np

def generate_birdview_transform(image, src_points, dst_points, output_size):
    """
    Trích xuất ma trận Homography và thực hiện Warp Perspective
    - src_points: Tọa độ 4 điểm trên ảnh camera góc rộng (np.float32)
    - dst_points: Tọa độ 4 điểm chiếu tương ứng trên mặt phẳng Bird-View
    - output_size: Kích thước khung hình đầu ra (width, height)
    """
    # 1. Tính toán ma trận biến đổi phối cảnh 3x3
    matrix_m = cv2.getPerspectiveTransform(src_points, dst_points)
    
    # 2. Áp dụng phép biến đổi hình học lên toàn bộ khung hình
    warped_image = cv2.warpPerspective(
        image, 
        matrix_m, 
        output_size, 
        flags=cv2.INTER_LINEAR, 
        borderMode=cv2.BORDER_CONSTANT, 
        borderValue=(0, 0, 0)
    )
    return warped_image, matrix_m

2. Kiến trúc mạng SSD-MobileNet V1 và Depthwise Separable Convolution

Mô hình MobileNet V1 thay thế các lớp tích chập tiêu chuẩn (Standard Convolution) bằng Depthwise Separable Convolution gồm hai bước:

  • Depthwise Convolution: Tích chập không gian riêng biệt trên từng kênh ($D_K \times D_K \times 1$).
  • Pointwise Convolution: Tích chập $1 \times 1 \times M$ kết hợp tuyến tính các kênh đầu ra.

Chi phí tính toán giảm đáng kể theo tỉ lệ:

$$\text{Tỉ lệ giảm} = \frac{D_K \cdot D_K \cdot M \cdot D_F \cdot D_F + 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}$$

Với kernel $3 \times 3$ ($D_K = 3$), lượng tính toán giảm khoảng $8 - 9$ lần so với tích chập truyền thống với độ chính xác gần như tương đương.

Hàm mất mát MultiBox Loss trong huấn luyện SSD là sự kết hợp có trọng số giữa hàm lỗi phân loại ($L_{conf}$) và hàm lỗi định vị vị trí hộp bao ($L_{loc}$):

$$L(x, c, l, g) = \frac{1}{N} \left( L_{conf}(x, c) + \alpha L_{loc}(x, l, g) \right)$$

Trong đó:

  • $N$ là số lượng default boxes khớp với ground-truth box.
  • $L_{conf}$ sử dụng hàm Softmax Cross-Entropy.
  • $L_{loc}$ sử dụng hàm Smooth L1 Loss giữa tọa độ dự đoán ($l$) và tọa độ thực tế ($g$).
  • $\alpha$ là hệ số cân bằng (thường chọn $\alpha = 1$).
import threading
import queue

class DetectionPipeline(threading.Thread):
    def __init__(self, frame_queue, result_queue, net):
        super(DetectionPipeline, self).__init__()
        self.frame_queue = frame_queue
        self.result_queue = result_queue
        self.net = net
        self.running = True

    def run(self):
        while self.running:
            if not self.frame_queue.empty():
                frame = self.frame_queue.get()
                # Chuẩn hóa kích thước đầu vào cho SSD-MobileNet V1 (300x300)
                blob = cv2.dnn.blobFromImage(frame, 0.007843, (300, 300), 127.5)
                self.net.setInput(blob)
                detections = self.net.forward()
                self.result_queue.put(detections)

3. Mô phỏng không gian 3D với Ratcave

Mô hình 3D chiếc xe (định dạng Wavefront .obj) được nạp vào không gian đồ họa ảo của ratcave. Bốn luồng ảnh xung quanh sau khi biến đổi góc nhìn và ghép (Panorama Stitching) được phủ (map) làm kết cấu nền (texture mapping), cho phép người lái xoay chuyển góc nhìn tự do.

import ratcave as rc

def setup_3d_environment(obj_file_path):
    # Nạp mô hình 3D nguyên mẫu từ Blender Wavefront file
    wavefront_reader = rc.WavefrontReader(obj_file_path)
    car_mesh = wavefront_reader.get_mesh("CarBody")
    car_mesh.position.xyz = [0, 0, -2.0]
    car_mesh.rotation.x = 45.0  # Tạo góc nghiêng quan sát từ trên cao
    
    # Thiết lập camera phối cảnh trong không gian ảo
    scene_camera = rc.Camera(projection='perspective')
    scene = rc.Scene(meshes=[car_mesh], bgColor=(0.1, 0.1, 0.1))
    return scene, car_mesh

Kết quả đo kiểm và Benchmark

Bảng hiệu năng suy luận trên NVIDIA Jetson Nano (FP16, TensorRT)

Mô hình mạng Độ phân giải đầu vào Framework Tốc độ trên Jetson Nano So sánh với Raspberry Pi 3 So sánh với Intel NCS2
SSD-MobileNet V1 (Đề tài) $300 \times 300$ TensorRT / Caffe 39 - 48 FPS 1.0 FPS (DNR) 11 FPS
SSD-ResNet-18 $300 \times 300$ TensorFlow 18 FPS DNR DNR
Tiny YOLO V3 $416 \times 416$ Darknet 25 FPS 0.5 FPS DNR
Inception V4 $299 \times 299$ PyTorch 11 FPS DNR DNR
Pipeline Bird-View + 3D $200 \times 250$ OpenCV + Ratcave 15 - 20 FPS < 2 FPS Không tương thích

Bảng đánh giá độ chuẩn xác nhận diện vật cản thực tế

Điều kiện kiểm nghiệm Độ sáng môi trường (Lux) Vận tốc xe di chuyển Đối tượng nhận diện Độ chính xác (mAP %)
Ban ngày ngoài trời 800 - 1200 Lux $0 - 15\text{ km/h}$ Người, Xe máy, Ô tô 84.6%
Bãi đỗ xe tầng hầm 150 - 300 Lux $0 - 10\text{ km/h}$ Người, Cột cản, Ô tô 78.2%
Ban đêm (có đèn pha) 20 - 50 Lux $0 - 10\text{ km/h}$ Xe cộ, Người đi bộ 71.5%
Vật cản kích thước nhỏ Ban ngày chuẩn Đỗ xe tại chỗ Động vật (chó, mèo) 73.8%

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

  1. Kiến trúc Edge AI tích hợp toàn diện: Khác với các nghiên cứu trước đây chỉ giải quyết riêng lẻ bài toán ghép ảnh 2D hoặc phát hiện vật cản bằng phần cứng máy tính để bàn (PC x86 cồng kềnh), đề tài đã tối ưu hóa toàn bộ pipeline phức tạp (thu nhận 4 camera, khử méo, Homography warp, SSD-MobileNet V1 suy luận và render 3D ratcave) hoạt động mượt mà trên phần cứng nhúng tiêu thụ điện năng dưới 10W (NVIDIA Jetson Nano).
  2. Kỹ thuật ghép ảnh liền mạch thích ứng (Adaptive Seamless Stitching): Đề xuất phương pháp chuyển đổi phối cảnh dựa trên 4 ma trận biến đổi cục bộ độc lập cho từng camera, kết hợp thuật toán cân bằng màu sắc (Color Balancing) tại các dải chồng lấn (Overlapping regions), loại bỏ hoàn toàn hiện tượng lệch màu và vết ghép thô giữa camera trước/sau và hai camera hông.
  3. Cơ chế cảnh báo va chạm đa lớp dựa trên tọa độ Bird-View: Tận dụng không gian chiếu phẳng chuẩn hóa của ảnh Bird-View để tính toán trực tiếp khoảng cách Euclid từ tâm xe đến chân của bounding box vật cản, giảm thiểu sai số ước lượng chiều sâu so với phương pháp tính toán từ camera góc nhìn đơn hướng.
+-----------------------------------------------------------------------------------+
|               SO SÁNH TÍNH NĂNG KỸ THUẬT VỚI CÁC GIẢI PHÁP HIỆN HÀNH              |
+-----------------------------------------------------------------------------------+
| Tiêu chí so sánh        | Hệ thống OEM Cao cấp | Aftermarket (DCT/Panorama)| Đồ án (UIT Jetson Nano) |
+-------------------------+----------------------+---------------------------+-------------------------+
| Góc quan sát 360°       | Có (2D / 3D)         | Có (2D / 3D)              | Có (2D + Mô phỏng 3D)   |
| Nhận diện loại vật thể  | Có (ADAS cao cấp)    | Không (Chỉ hiển thị video)| Có (AI SSD-MobileNet V1)|
| Tùy biến mã nguồn       | Đóng hoàn toàn       | Đóng hoàn toàn            | Mở hoàn toàn (Python/C++)|
| Tốc độ xử lý            | 30 FPS               | 25 - 30 FPS               | 15 - 20 FPS (Ổn định)   |
| Chi phí lắp đặt         | 1,500 - 3,000 USD    | 400 - 800 USD             | ~ 120 - 150 USD         |
+-----------------------------------------------------------------------------------+

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

Kịch bản ứng dụng thực tế

  • Đỗ xe vuông góc / Đỗ xe song song trong đô thị: Hỗ trợ tài xế căn lề chính xác trong khoảng cách dưới $10\text{cm}$, tránh cạ mâm, xước sơn thân xe.
  • Di chuyển qua hẻm nhỏ và giao lộ khuất tầm nhìn: Giúp tài xế quan sát chướng ngại vật dưới thấp (trẻ em, vật nuôi, chậu cây) tại các góc mù sát đầu và hông xe mà gương chiếu hậu không thể soi tới.
  • Tích hợp cho xe tự hành cỡ nhỏ / Xe dịch vụ tự động: Đóng vai trò là module thị giác ngoại vi cung cấp dữ liệu chướng ngại vật thời gian thực cho hệ thống điều khiển trung tâm.
                                 [ Lưới Bán Kính An Toàn Bird-View ]
                                                Trước
                                        ┌───────────────────┐
                                        │  Vùng đỏ (<1.0m)  │ ◄── Cảnh báo nguy hiểm cấp 1
                                        ├───────────────────┤
                                        │ Vùng vàng (<2.0m) │ ◄── Cảnh báo chú ý cấp 2
                                        └─────────┬─────────┘
                         Trái                     │                    Phải
                 ┌───────────────┬───────► [ KHÔNG GIAN ] ◄────────┬───────────────┐
                 │ Vùng an toàn  │         [    XE 3D   ]         │ Vùng an toàn  │
                 │   (> 1.0m)    │         [  RATCAVE   ]         │   (> 1.0m)    │
                 └───────────────┴───────► [  (0,0,-2)  ] ◄────────┴───────────────┘
                                                  │
                                        ┌─────────┴─────────┐
                                        │ Vùng vàng (<2.0m) │
                                        ├───────────────────┤
                                        │  Vùng đỏ (<1.0m)  │
                                        └───────────────────┘
                                                 Sau

Yêu cầu phần cứng và Hướng dẫn triển khai (Deployment)

  1. Thiết bị yêu cầu:
    • 01 Bo mạch NVIDIA Jetson Nano Developer Kit (4GB RAM, nguồn DC 5V/4A qua Barrel Jack).
    • 02 Cảm biến Waveshare Sony IMX219-200 Camera Module (kết nối qua 2 cổng MIPI-CSI).
    • 02 Camera góc rộng chuẩn USB Video Class (UVC) kết nối cổng USB 3.0.
    • 01 Thẻ nhớ MicroSD 32GB/64GB chuẩn UHS-I Class 10 cài JetPack 4.4+.
    • 01 Màn hình hiển thị LCD rời (7 - 10 inch giao tiếp HDMI) tích hợp trên táp-lô xe.
  2. Quy trình hiệu chuẩn (Calibration Checklist):
    • Trải 4 tấm bạt hiệu chuẩn kẻ ô caro quanh 4 cạnh của thân xe.
    • Chạy script cân chỉnh calibrate_cameras.py để trích xuất 4 điểm góc cho mỗi camera.
    • Lưu trữ các ma trận Homography vào file cấu hình transform_matrices.yaml.
    • Khởi động service birdview_main.py tự động chạy ngầm khi hệ thống xe cấp điện.

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

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

  • Độ phân giải hiển thị còn khiêm tốn: Do giới hạn băng thông bộ nhớ và năng lực tính toán của GPU 128-core Maxwell thế hệ cũ, độ phân giải đầu ra đang duy trì ở mức $200 \times 250$ pixels để đảm bảo tốc độ đáp ứng thời gian thực $\ge 15\text{ FPS}$.
  • Độ nhạy sáng trong môi trường đêm sâu: Cảm biến CMOS 1/4 inch chưa có mạch lọc hồng ngoại chủ động (IR Cut filter cơ học) dẫn đến nhiễu hạt (noise) khi độ rọi môi trường dưới 20 Lux.
  • Hiện tượng bóng mờ khi vật thể di chuyển nhanh: Thuật toán ghép ảnh tĩnh có thể tạo ra vết đứt gãy nếu có phương tiện vượt qua vùng giao thoa camera với vận tốc $> 40\text{ km/h}$.

Hướng phát triển nâng cao

  • Nâng cấp nền tảng phần cứng: Chuyển đổi sang thế hệ bo mạch NVIDIA Jetson Orin Nano (40 TOPS) để xử lý video Full HD ($1920 \times 1080$) và nâng tốc độ lên 30 - 60 FPS.
  • Tối ưu hóa lượng tử hóa INT8: Ứng dụng TensorRT Quantization-Aware Training (QAT) chuyển đổi mô hình sang định dạng INT8, tăng gấp đôi thông lượng tính toán mà không làm suy giảm mAP.
  • Mở rộng sang mạng phân đoạn ngữ nghĩa (Semantic Segmentation): Tích hợp mạng Bisenet / DeepLabV3+ để nhận diện vạch kẻ đường, vị trí ô đỗ xe trống và vỉa hè, hướng tới hệ thống đỗ xe tự động hoàn toàn (Autonomous Valet Parking).

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

  • Sinh viên & Nghiên cứu sinh ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Khoa học Máy tính: Tiếp cận tài liệu thực chứng hoàn chỉnh từ thiết kế phần cứng nhúng, xử lý camera góc rộng đến tối ưu hóa mô hình Deep Learning trên thiết bị biên.
  • Kỹ sư phát triển phần mềm nhúng (Embedded AI Engineers): Nắm vững pipeline kết hợp giữa xử lý ảnh cổ điển (Homography/OpenCV) và mạng nơ-ron tích chập hiện đại (SSD-MobileNet) cùng giải pháp đa luồng giải quyết bài toán thắt nút cổ chai dữ liệu.
  • Các doanh nghiệp sản xuất phụ kiện & Khởi nghiệp ô tô thông minh: Sở hữu kiến trúc tham chiếu hoàn chỉnh để thương mại hóa bộ sản phẩm Camera 360 ADAS giá rẻ phục vụ thị trường xe hơi phổ thông tại Việt Nam và Đông Nam Á.
  • Cộng đồng nghiên cứu xe tự hành & Robotics: Sử dụng mã nguồn mở và phương pháp luận của đề tài để phát triển hệ thống quan sát môi trường toàn cảnh cho robot tự hành (AGV/AMR) trong nhà xưởng.

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

1. Cấu hình phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu bo mạch NVIDIA Jetson Nano bản 4GB RAM (B01) kèm nguồn điện ổn định DC 5V/4A, 2 camera MIPI-CSI (Sony IMX219) và 2 camera USB góc rộng tối thiểu $170^\circ - 200^\circ$. Hệ điều hành khuyến nghị là JetPack 4.4 trở lên cài trên thẻ nhớ có tốc độ đọc $\ge 90\text{ MB/s}$.

2. Làm thế nào để giải quyết hiện tượng méo hình do thấu kính mắt cá (Fisheye Lens Distortion)?

Hệ thống sử dụng ma trận hiệu chuẩn camera nội tại (Camera Intrinsic Matrix) và các hệ số méo (Distortion Coefficients $k_1, k_2, p_1, p_2$) thu được qua thuật toán hiệu chuẩn bàn cờ (Chessboard Calibration). Hàm cv2.undistort() được kết hợp trực tiếp trong ma trận biến đổi phối cảnh giúp duỗi thẳng các đường cong quang học trước khi tiến hành ghép nối.

3. Hệ thống có thể tích hợp với màn hình nguyên bản (Zin) của xe ô tô không?

Hoàn toàn có thể. Tín hiệu đầu ra từ cổng HDMI của Jetson Nano có thể chuyển đổi qua các bộ giải mã video (Video Interface Module) hỗ trợ chuẩn AV/RCA hoặc ngõ vào phụ trợ (AUX Video Input) có sẵn trên hầu hết các màn hình DVD Android hoặc đầu phát nguyên bản của xe hơi.

4. Chi phí bảo trì và độ bền phần cứng trong môi trường xe hơi như thế nào?

Bo mạch Jetson Nano được đặt trong hộp nhôm tản nhiệt kín đạt chuẩn IP65 đặt trong cabin xe. Bốn mắt camera gắn ngoài đạt chuẩn kháng nước IP68. Toàn bộ hệ thống tiêu thụ điện năng tương đương một camera hành trình thông thường (khoảng $7.5\text{W}$), không làm ảnh hưởng đến ắc-quy và hệ thống điện của xe.

5. Tại sao đề tài chọn SSD-MobileNet V1 thay vì các mô hình YOLO mới hơn?

Mặc dù YOLO (như YOLOv3/v4) có độ chính xác cao nhưng kích thước mô hình lớn và yêu cầu tài nguyên tính toán cao hơn đáng kể. SSD-MobileNet V1 với cấu trúc Depthwise Separable Convolution được tối ưu hóa đặc biệt cho phần cứng ARM và nhân TensorRT, cho phép chạy suy luận với tốc độ lên tới $39 - 48\text{ FPS}$ trên Jetson Nano, dành lại tài nguyên GPU cho các tác vụ biến đổi phối cảnh và render đồ họa 3D đồng thời.


Kết luận

Đồ án tốt nghiệp "Xây dựng chương trình tạo ảnh Bird-View cho xe hơi từ các camera xung quanh" của sinh viên 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 xóa bỏ điểm mù xe hơi thông qua sự kết hợp đột phá giữa thị giác máy tính và trí tuệ nhân tạo biên. Bằng việc làm chủ quy trình biến đổi phối cảnh hình học, tối ưu mạng nơ-ron SSD-MobileNet V1 và tích hợp mô phỏng không gian 3D trên bo mạch nhúng NVIDIA Jetson Nano, công trình không chỉ có giá trị học thuật xuất sắc mà còn mở ra tiềm năng thương mại hóa to lớn cho các giải pháp an toàn giao thông thông minh với chi phí dễ tiếp cận.