Giới thiệu dự án
Hệ thống hỗ trợ tài xế nâng cao (Advanced Driver Assistance Systems - ADAS) và xe tự hành đang chứng kiến tốc độ phát triển vượt bậc với quy mô thị trường dự kiến đạt hàng trăm tỷ USD. Trong các thành phần cốt lõi của ADAS, nhận diện và phân loại làn đường đóng vai trò quyết định đến an toàn vận hành, giúp xe định vị chính xác vị trí trong làn, cảnh báo chệch làn và hỗ trợ chuyển làn tự động.
Vấn đề thực tiễn và thách thức kỹ thuật
Thực tế giao thông đường bộ đặt ra nhiều thách thức nghiêm trọng:
- Điều kiện môi trường biến đổi phức tạp: Thiếu sáng ban đêm, chói nắng, bóng cây che khuất, vạch kẻ đường mờ hoặc bị mòn.
- Các thuật toán xử lý ảnh truyền thống (như Hough Transform, AR-LHT) dễ gãy vỡ khi gặp nhiễu hoặc vạch đứt đoạn.
- Các mô hình Deep Learning dựa trên phân đoạn ảnh (Semantic/Instance Segmentation như U-Net, LaneNet) tạo ra ma trận điểm ảnh dày đặc (dense pixel mask), đòi hỏi hậu xử lý hình học nặng nề và phức tạp.
- Các mô hình học sâu hiện đại chủ yếu vận hành trên Graphics Processing Units (GPUs) có công suất tiêu thụ cao (100W–300W), không phù hợp với các hệ thống nhúng di động chạy nguồn pin trên phương tiện giao thông.
+-------------------------------------------------------------------------+
| VẤN ĐỀ CỦA CÁC GIẢI PHÁP TRUYỀN THỐNG |
+-------------------------------------------------------------------------+
| Thuật toán Cổ điển (Hough/AR-LHT) --> Kém linh hoạt, dễ vỡ khi nhiễu |
| Deep Learning Segmentation (U-Net) --> Đầu ra 393 KB (Dư thừa, cần xử lý)|
| GPU Inference (NVIDIA GPUs) --> Tiêu thụ điện năng lớn (100-300W)|
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| GIẢI PHÁP ĐỀ XUẤT TRONG ĐỒ ÁN |
+-------------------------------------------------------------------------+
| 1. CNN Row-wise Formulation --> Đầu ra 8.3 KB (Giảm 47.2 lần) |
| 2. Lượng tử hóa 8-bit tĩnh (INT8) --> Độ chính xác giữ nguyên 93.03% |
| 3. Bộ gia tốc FPGA Virtex-7 VC707 --> 549 FPS @ 8.129 W (36.44 GOPS/W) |
+-------------------------------------------------------------------------+
Mục tiêu của đề tài
- Thiết kế kiến trúc Convolutional Neural Network (CNN) tối ưu: Đề xuất quy tắc miêu tả làn đường dạng hàng (row-wise formulation) gọn nhẹ, giảm thiểu khối lượng tính toán và loại bỏ bớt các bước hậu xử lý phức tạp.
- Lượng tử hóa mô hình (Data Quantization): Ứng dụng kỹ thuật Static Quantization chuyển đổi trọng số (weights) và hàm kích hoạt (activations) sang số nguyên 8-bit (INT8) mà không làm suy giảm độ chính xác.
- Hiện thực bộ gia tốc phần cứng trên FPGA: Thiết kế kiến trúc phần cứng chuyên dụng trên bo mạch Xilinx Virtex-7 VC707 FPGA, khai thác tối đa khả năng tính toán song song của các khối DSP48E2 và bộ nhớ On-chip BRAM qua giao tiếp PCI Express (PCIe).
Phạm vi và giới hạn
- Dữ liệu thực nghiệm: Tập dữ liệu chuẩn TuSimple Benchmark (3,626 ảnh huấn luyện, 2,782 ảnh kiểm thử).
- Định dạng nhận diện: Cố định tối đa 4 làn đường đồng thời trên mỗi khung hình với độ phân giải đầu vào chuẩn hóa $256 \times 512 \times 3$.
- Nền tảng phần cứng: Bo mạch đánh giá Xilinx Virtex-7 FPGA VC707 kết nối máy tính chủ qua chuẩn giao tiếp PCIe x8 Gen2.
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 nhận diện làn đường hiện nay chia thành ba nhóm chính:
| Phương pháp |
Đại diện tiêu biểu |
Ưu điểm |
Nhược điểm |
| Xử lý ảnh truyền thống |
Canny, Hough Transform, AR-LHT |
Tốc độ tính toán nhanh, không cần dữ liệu huấn luyện |
Độ chính xác kém trong điều kiện ánh sáng yếu, vạch mờ |
| Phân đoạn ngữ nghĩa / thực thể |
U-Net, ENet, LaneNet, SCNN |
Nhận diện biên dạng cong phức tạp tốt |
Kích thước đầu ra lớn, tốn tài nguyên hậu xử lý trích xuất vector |
| Miêu tả theo hàng (Row-wise Anchor) |
UFAST, CondLaneNet, PINet |
Trích xuất trực tiếp tọa độ hình học, độ trễ thấp |
Đa số thiết kế để chạy trên GPU hiệu năng cao, tiêu hao năng lượng |
Ưu tiên yêu cầu theo mô hình MoSCoW
- Must have: Tốc độ xử lý thực tế $\ge 150\text{ FPS}$, công suất tiêu thụ $\le 10\text{W}$, độ chính xác trên tập TuSimple $\ge 90%$.
- Should have: Kiến trúc xử lý pipeline sâu trên FPGA không phụ thuộc bộ nhớ DRAM ngoài; tích hợp mạch nhân kép trên DSP48E2.
- Could have: Mạch xấp xỉ hàm kích hoạt Sigmoid phi tuyến bậc 2 đạt sai số MSE $< 10^{-3}$.
- Won't have: Tự động chuyển đổi kích thước động cho luồng video vượt quá $256 \times 512$ trực tiếp trên FPGA.
Thiết kế hệ thống
+-----------------------------------------------------------------------------+
| KIẾN TRÚC MÔ HÌNH CNN ĐỀ XUẤT |
+-----------------------------------------------------------------------------+
| Input Image: 3 x 256 x 512 |
| │ |
| ├──> Encoder Stage 1 (3 khối Conv+BN+ReLU, Stride=2) ──> 16 x 128 x 256 |
| ├──> Encoder Stage 2 (3 khối Conv+BN+ReLU, Stride=2) ──> 32 x 64 x 128 |
| └──> Encoder Stage 3 (3 khối Conv+BN+ReLU, Stride=2) ──> 64 x 32 x 64 |
| │ |
| ┌──────────────────────┴──────────────────────┐ |
| ▼ ▼ |
| Nhánh Classification Nhánh Vertical |
| (3x Conv+BN+ReLU + 1x Conv) (3x Conv+BN+ReLU + 1x Sigmoid)|
| │ │ |
| ▼ ▼ |
| Row-wise Classification: 4 x 32 x 64 Vertical Range: 4 x 32 x 1 |
+-----------------------------------------------------------------------------+
1. Quy tắc miêu tả làn đường (Row-wise Formulation)
Thay vì xuất ra ảnh phân đoạn kích thước $3 \times 256 \times 512$ (tương đương 393,216 bytes), mô hình xuất ra 2 ma trận tinh gọn:
- Row-wise classification matrix ($4 \times 32 \times 64$): Phân loại xác suất vị trí hoành độ trên 32 hàng cố định cho 4 làn.
- Vertical range matrix ($4 \times 32 \times 1$): Xác định sự tồn tại của vạch kẻ đường trên 32 hàng tương ứng (giá trị kích hoạt $> 0.5$).
- Tổng kích thước đầu ra chỉ còn 8,320 bytes, nén giảm hơn 47.2 lần so với ảnh đầu vào.
2. Kiến trúc phần cứng trên FPGA
Hệ thống phần cứng bao gồm các thành phần:
- Line Buffer Pipeline: Sử dụng mạng thanh ghi dịch (Shift Registers) và Block RAM on-chip để tạo cửa sổ trượt (sliding window) kích thước $K \times K$ theo thời gian thực mà không cần đọc lại từ bộ nhớ ngoài.
- Processing Element (PE): Chứa các mảng nhân tích lũy (Multiply-Accumulate - MACC) đa luồng, tích hợp cây cộng (Adder Tree).
- Giao tiếp XDMA & AXI4: Giao tiếp PCIe Gen2 x8 kết nối bộ nhớ Host PC với IP Core CNN trên FPGA thông qua chuẩn bus AXI4-Stream và AXI4-Lite.
+----------------------------------------------------------------------------+
| SƠ ĐỒ KHỐI HỆ THỐNG PHẦN CỨNG |
+----------------------------------------------------------------------------+
| +---------------------+ PCIe Bus +-----------------+ |
| | Host System | <==========================> | Xilinx XDMA | |
| | (Linux Kernel/C++) | | Bridge | |
| +---------------------+ +--------+--------+ |
| | AXI4 |
| v |
| +----------------------------------------------------------------------+ |
| | CNN ACCELERATOR IP | |
| | | |
| | +---------------+ FIFO +---------------+ FIFO | |
| | | Layer 1: | ----------> | Layer 2: | ----------> ... | |
| | | Line Buffer + | | Line Buffer + | | |
| | | PE + BRAM | | PE + BRAM | | |
| | +---------------+ +---------------+ | |
| +----------------------------------------------------------------------+ |
+----------------------------------------------------------------------------+
Phương pháp nghiên cứu và công nghệ sử dụng
- Môi trường huấn luyện AI: Python 3.8, PyTorch 1.10+cu113, CUDA 11.3, Adam Optimizer ($\text{lr} = 10^{-3}$, batch size = 16, 150 epochs).
- Phát triển phần cứng (RTL): Xilinx Vivado Design Suite 2020.2, ngôn ngữ mô tả phần cứng Verilog HDL, chuẩn giao tiếp AXI4.
- Phần mềm kiểm thử Host: C++ và Python tích hợp XDMA Linux Kernel Driver.
Implementation và kết quả
Quy trình phát triển và thuật toán cốt lõi
Thuật toán tính tích chập chuẩn (Standard Convolution)
Quy trình tích chập tuần tự 3D truyền thống đòi hỏi số chu kỳ tính toán lớn:
# Thuật toán 1: Tích chập tuần tự (Standard Convolution)
for r in range(H_out):
for c in range(W_out):
for fo in range(C_out):
Y[fo][r][c] = bias[fo]
for fi in range(C_in):
for kr in range(H_k):
for kc in range(W_k):
Y[fo][r][c] += X[fi][r + kr][c + kc] * kernel[fo][fi][kr][kc]
Để tối ưu hóa phần cứng, đề tài phân rã và đề xuất 2 chiến lược Unrolling:
Chiến lược 1: Incha Convolution Unrolling (Song song hóa kênh đầu vào và Kernel)
Song song hóa toàn bộ vòng lặp kênh đầu vào $C_{in}$ và kích thước Kernel $K = H_k \times W_k$:
# Thuật toán 2: Incha Convolution
for r in range(H_out):
for c in range(W_out):
for fo in range(C_out):
# Tính song song tích chập của toàn bộ C_in channels
Y[fo][r][c] = sum(X[:][r:r+H_k, c:c+W_k] * kernel[fo][:][:][:]) + bias[fo]
- Thông lượng: Thực hiện $C_{in} \times K$ phép nhân mỗi chu kỳ; cần $C_{out}$ chu kỳ để hoàn thành 1 pixel đầu ra.
Chiến lược 2: Outcha Convolution Unrolling (Song song hóa kênh đầu ra)
Song song hóa vòng lặp kênh đầu ra $C_{out}$, phù hợp cho các tầng mà số kênh đầu vào lớn hơn số kênh đầu ra ($C_{in} > C_{out}$):
# Thuật toán 3: Outcha Convolution
for r in range(H_out):
for c in range(W_out):
Y[:][r][c] = bias[:]
for fi in range(C_in):
for fo in range(C_out): # Unroll hoàn toàn vòng lặp C_out
Y[fo][r][c] += sum(X[fi][r:r+H_k, c:c+W_k] * kernel[fo][fi][:])
- Thông lượng: Thực hiện $C_{out} \times K$ phép nhân mỗi chu kỳ; cần $C_{in}$ chu kỳ để hoàn thành 1 pixel đầu ra.
Đóng gói 2 phép nhân 8-bit trên 1 khối DSP48E2
Tận dụng kiến trúc bộ nhân $27 \times 18$ bit của khối DSP48E2, hai phép nhân 8-bit $[a \times c]$ và $[b \times c]$ được gộp chung thành một phép nhân số học duy nhất:
$$\text{Result} = ((a \ll 18) + b) \times c = (a \times c \ll 18) + (b \times c)$$
Tín hiệu tích lớn 34-bit sau đó được giải mã:
- 16-bit cao $\rightarrow a \times c$
- 16-bit thấp $\rightarrow b \times c$
Kỹ thuật này nhân đôi thông lượng tính toán của tài nguyên DSP trên FPGA Virtex-7 VC707.
SƠ ĐỒ PHÉP NHÂN KÉP TRÊN DSP48E2
Thừa số a (8-bit) ────[ Shift Left 18 ]───┐
├──(+)──> Cổng A: (a << 18) + b
Thừa số b (8-bit) ──[ Sign-extended ]─────┘ (27-bit)
│
Thừa số c (8-bit) ────────────────────────────────> Cổng B: c (18-bit)
│
v
[ Bộ nhân 27x18-bit ]
│
v
Tích chung (34-bit)
│
┌────────────────────────────────────────┴──────────────────┐
▼ ▼
16-bit cao: Tích [a x c] 16-bit thấp: Tích [b x c]
Xấp xỉ phần cứng hàm phi tuyến Sigmoid
Để loại bỏ phép tính số mũ phức tạp trong hàm kích hoạt Sigmoid, thuật toán Piecewise Second-order Approximation được áp dụng:
$$y = f(x) \approx \begin{cases}
0, & x < -4 \
0.5 \times \left(1 + \frac{x}{4}\right)^2, & -4 \le x \le 0 \
1 - 0.5 \times \left(1 - \frac{x}{4}\right)^2, & 0 < x \le 4 \
1, & x > 4
\end{cases}$$
Độ lỗi toàn phương trung bình (Mean Squared Error - MSE) đạt được:
- Sigmoid thực (FP32) so với Sigmoid ước lượng (FP32): $\text{MSE} = 1.369 \times 10^{-4}$
- Sigmoid ước lượng (FP32) so với Mạch phần cứng (Fixed-point 16-bit INT): $\text{MSE} = 3.380 \times 10^{-6}$
+-------------------------------------------------------------------------+
| MẠCH ƯỚC LƯỢNG HÀM SIGMOID PHẦN CỨNG |
+-------------------------------------------------------------------------+
| i_data[15:0] ──> [ Lấy giá trị tuyệt đối |x| ] ──> x1 |
| │ |
| ├──> [ Bão hòa nếu |x| > 4.0 ] ──> x2 |
| │ |
| ├──> [ Tính (1 - x2/4) ] ─────────> x3 |
| │ |
| └──> [ Bình phương (x3)^2 >> 1 ] ──> x4 |
| │ |
| Sign Bit [15] ──? v |
| ├─ Âm (x < 0) ───────────────────────────────────> y = x4 |
| └─ Dương (x >= 0) ────────────────────────────────> y = 1 - x4 |
+-------------------------------------------------------------------------+
Thử nghiệm và đánh giá hệ thống
1. Đánh giá lượng tử hóa mô hình AI (Quantization)
| Kiểu dữ liệu |
Accuracy (Độ chính xác) |
False Positive (FP) |
False Negative (FN) |
| Float32 (Gốc) |
93.03% |
0.0543 |
0.0482 |
| Int8 (Static Quantization) |
93.03% |
0.0543 |
0.0482 |
Quá trình chuyển đổi từ Float32 sang INT8 thông qua phương pháp Static Quantization bảo toàn nguyên vẹn 100% độ chính xác mô hình trên tập kiểm thử TuSimple.
2. Khảo sát cấu hình tài nguyên phần cứng trên FPGA
Nhóm tác giả đã tổng hợp và giả lập 6 cấu hình kiến trúc phần cứng khác nhau trên FPGA Virtex-7 VC707 ở tần số xung nhịp $200\text{ MHz}$:
| Cấu hình |
Mô tả kiến trúc |
Tỉ lệ sử dụng LUT / FF |
Tỉ lệ DSP / BRAM |
Throughput đạt được |
| Config 1 |
Tất cả dùng Incha-single |
Rất thấp |
Thấp |
91 FPS |
| Config 2 |
Tất cả dùng Incha-double |
Trung bình |
Trung bình |
182 FPS |
| Config 3 |
Tất cả dùng Incha-quad |
Quá tải tài nguyên |
Quá tải |
364 FPS |
| Config 4 |
Incha-quad 3 layer đầu + Incha-double |
Cao |
Cao |
364 FPS |
| Config 5 |
Tối ưu Stride-2 các tầng Encoder |
Trung bình |
Cân bằng |
364 FPS |
| Config 6 (Final) |
Config 5 kết hợp Outcha-single ở Output |
Tối ưu tài nguyên |
Cân bằng |
549 FPS |
Cấu hình Config 6 tận dụng hiện tượng trễ nhịp của các tầng Encoder có Stride = 2, cho phép các tầng sau hoạt động ở tốc độ xử lý thấp hơn một nửa mà không gây nghẽn cổ chai pipeline, giúp tiết kiệm triệt để tài nguyên DSP và logic gates.
Đổi mới và đóng góp
SO SÁNH TỐC ĐỘ XỬ LÝ KHUNG HÌNH (FPS)
FPGA Virtex-7 (Đề tài) [==================================] 549 FPS
GPU NVIDIA Tesla T4 [======================] 348 FPS
FPGA ZCU102 RoadNet-RT [====================] 327.9 FPS
FPGA UltraScale ChipNet[=====] 79.2 FPS
+--------+--------+--------+--------+
0 150 300 450 600
- Hiệu năng vượt trội và tiết kiệm năng lượng: Bộ gia tốc trên FPGA Virtex-7 VC707 đạt tốc độ xử lý 549 FPS với mức tiêu thụ điện năng chỉ 8.129 W, tương ứng hiệu suất năng lượng đạt 36.44 GOPS/W.
- Kỹ thuật Dual 8-bit trên DSP48E2 tối ưu: Tăng gấp 2 lần mật độ tính toán trên mỗi slice DSP so với các thiết kế CNN FPGA truyền thống.
- Quy tắc miêu tả gọn nhẹ giảm tải băng thông: Cấu trúc Row-wise classification và Vertical range loại bỏ nhu cầu sử dụng bộ nhớ DRAM trung gian đắt đỏ, cho phép toàn bộ trọng số và Feature Maps nằm hoàn toàn trong bộ nhớ nội Block RAM (BRAM).
Bảng so sánh với các nghiên cứu tương quan
| Tiêu chí |
ChipNet (2020) |
RoadNet-RT (2021) |
GPU Tesla T4 (PyTorch) |
Bộ gia tốc đề xuất (FPGA) |
| Nền tảng phần cứng |
Xilinx UltraScale |
Zynq UltraScale+ ZCU102 |
NVIDIA Tesla T4 (70W) |
Xilinx Virtex-7 VC707 |
| Dạng đầu ra |
Segmentation Map |
Segmentation Map |
Row-wise Coordinates |
Row-wise Coordinates |
| Tốc độ xử lý |
79.2 FPS |
327.9 FPS (Dual batch) |
348 FPS |
549 FPS |
| Công suất tiêu thụ |
$\sim 15\text{ W}$ |
$\sim 11.2\text{ W}$ |
$70\text{ W}$ (TDP) |
8.129 W |
| Hiệu suất năng lượng |
$5.28\text{ FPS/W}$ |
$29.27\text{ FPS/W}$ |
$4.97\text{ FPS/W}$ |
67.53 FPS/W |
| Throughput tính toán |
Chưa công bố |
$176.4\text{ GOPS}$ |
N/A |
296.26 GOPS |
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng
- Hệ thống nhúng ADAS trên ô tô thông minh: Lắp đặt trực tiếp trên các bộ điều khiển trung tâm (Electronic Control Unit - ECU) của xe hơi, xử lý hình ảnh thời gian thực từ camera trước với độ trễ cực thấp ($< 2\text{ ms}$).
- Robot tự hành công nghiệp (AGV) & Drone: Hỗ trợ dẫn đường tự động trong nhà kho và khu công nghiệp với mức tiêu thụ pin tối thiểu.
+-----------------------------------------------------------------------------+
| MÔ HÌNH TRIỂN KHAI THỰC TẾ TRÊN XE |
+-----------------------------------------------------------------------------+
| +-------------------+ Luồng ảnh RAW +-----------------------+ |
| | Front RGB Camera | ────────────────────────> | Embedded Host / ECU | |
| | (60-120 FPS) | (MIPI-CSI / GMSL) | (NXP / ARM / x86) | |
| +-------------------+ +-----------+-----------+ |
| │ |
| PCIe DMA Stream │ INT8 Frame |
| (Non-blocking) v |
| +-----------------------+ |
| | FPGA Acceleratator | |
| | (Virtex-7 / Zynq) | |
| | | |
| | 549 FPS @ 8.129W | |
| +-----------+-----------+ |
| │ |
| Tọa độ làn (8.3 KB) v |
| +-------------------+ CAN Bus / Ethernet +-----------------------+ |
| | Hệ thống lái / ECU|<───────────────────────── | Bộ điều khiển bám làn | |
| | (Cảnh báo lệch làn| (Tín hiệu điều khiển xe) | (Lane Keeping System) | |
| +-------------------+ +-----------------------+ |
+-----------------------------------------------------------------------------+
Chiến lược triển khai và tích hợp
- Yêu cầu phần cứng: Bo mạch FPGA có tối thiểu $200\text{k}$ LUTs, $400$ DSP slices, $15\text{ Mb}$ BRAM (như Virtex-7, Kintex-7, Zynq-7000 hoặc UltraScale+).
- Giao tiếp phần mềm: Driver XDMA chuẩn Linux Kernel kết hợp thư viện C++ Zero-copy memory mapping giúp giảm tối đa độ trễ trao đổi dữ liệu Host-FPGA.
- Hiệu quả kinh tế (ROI): Việc thay thế các cụm card đồ họa GPU đắt tiền tiêu hao nhiều điện năng bằng các chip FPGA/ASIC chuyên dụng giúp giảm hơn 60% chi phí phần cứng và hạ hơn 85% chi phí năng lượng trong toàn bộ vòng đời xe.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Mô hình hiện tại cố định nhận diện tối đa 4 làn đường, chưa tối ưu cho các nút giao phức tạp có trên 6 làn hoặc bùng binh.
- Chưa tích hợp khối tiền xử lý thay đổi kích thước ảnh (Image Resizing) trực tiếp trên phần cứng FPGA mà vẫn dựa vào CPU của Host.
Hướng phát triển tiếp theo
- Chuyển đổi thiết kế sang kiến trúc Hệ thống trên Chip (System-on-Chip - SoC) như Xilinx Zynq UltraScale+ MPSoC để tích hợp toàn bộ vi xử lý ARM, module Camera Interface và CNN Accelerator trên cùng một vi mạch duy nhất.
- Tích hợp thêm các bài toán nhận diện biển báo và vật thể (Object Detection) vào cùng một luồng tính toán song song.
Đối tượng hưởng lợi
- Sinh viên & Kỹ sư nhúng/FPGA: Cung cấp tài liệu tham khảo chi tiết về kỹ thuật thiết kế Pipeline Line-buffer, đóng gói 2 phép nhân trên DSP48E2 và tích hợp hệ thống qua PCIe XDMA.
- Kỹ sư AI/Computer Vision: Nắm bắt phương pháp tối ưu mô hình bằng Row-wise classification và kỹ thuật Static Quantization INT8 không làm mất độ chính xác.
- Doanh nghiệp phát triển xe tự hành & ADAS: Sở hữu giải pháp phần cứng gia tốc mạng nơ-ron chuyên dụng với thông lượng cao, chi phí năng lượng thấp và độ tin cậy thời gian thực.
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai bộ gia tốc này là gì?
Hệ thống yêu cầu bo mạch FPGA dòng Xilinx 7-Series hoặc UltraScale có tối thiểu 200,000 Logic Cells, 500 DSP48E2 slices, 15 Mbits Block RAM và hỗ trợ khe cắm PCIe Gen2 x4 trở lên kết nối máy tính chủ chạy hệ điều hành Linux.
2. Vì sao lượng tử hóa INT8 trong đề tài không làm giảm độ chính xác?
Nhóm tác giả áp dụng phương pháp Static Quantization với tập dữ liệu hiệu chuẩn đại diện, tính toán chính xác hệ số tỷ lệ ($S$) và điểm không ($Z$). Cấu trúc mạng gọn nhẹ và miền giá trị của các tầng trích xuất đặc trưng có phân phối chuẩn đồng đều, giúp loại bỏ hiện tượng tràn số và suy giảm độ chính xác.
3. Bộ gia tốc này có thể mở rộng cho các bài toán AI khác không?
Có. Kiến trúc Line Buffer và PE đa luồng hoàn toàn có thể tái sử dụng cho các mạng nơ-ron tích chập khác như YOLO (phát hiện vật thể), MobileNet hoặc ResNet bằng cách cấu hình lại bảng trọng số trong BRAM và tham số điều khiển tầng.
4. Giao tiếp giữa FPGA và Host PC có gây nghẽn cổ chai băng thông không?
Không. Với chuẩn giao tiếp PCIe Gen2 x8, băng thông lý thuyết đạt tới $4.0\text{ GB/s}$. Dữ liệu ảnh đầu vào ($256 \times 512 \times 3 \approx 393\text{ KB}$) ở tốc độ 549 FPS chỉ tiêu tốn khoảng $215\text{ MB/s}$ băng thông truyền nhận, thấp hơn nhiều so với giới hạn của bus PCIe.
5. Chi phí sản xuất hàng loạt và thời gian hoàn vốn (ROI) ước tính như thế nào?
Khi chuyển đổi từ FPGA thử nghiệm sang dòng chip chuyên dụng ASIC hoặc FPGA thương mại chi phí thấp (như Artix-7 / Zynq-7020), chi phí mỗi module phần cứng chỉ còn dưới 100 USD, mang lại điểm hòa vốn và lợi nhuận nhanh chóng trong vòng 6–12 tháng triển khai cho các chuỗi sản xuất thiết bị phụ trợ ô tô.
Kết luận
Đề tài khóa luận "Nhận diện làn đường bằng phần cứng AI trên FPGA" đã giải quyết thành công bài toán cân bằng giữa độ chính xác, tốc độ xử lý thời gian thực và công suất tiêu thụ điện năng cho hệ thống ADAS. Bằng cách kết hợp đồng bộ giữa thuật toán biểu diễn làn đường dạng hàng (Row-wise formulation), kỹ thuật lượng tử hóa dữ liệu tĩnh 8-bit và kiến trúc phần cứng chuyên biệt tận dụng bộ nhân kép DSP48E2 trên FPGA Xilinx Virtex-7 VC707, hệ thống đạt hiệu năng kỷ lục 549 FPS với công suất tiêu thụ chỉ 8.129 W. Kết quả này khẳng định tiềm năng ứng dụng của phần cứng AI chuyên dụng trong việc nâng cao độ an toàn và hiệu quả cho các phương tiện tự hành tương lai.