Giới thiệu dự án
Công nghệ viễn thám vệ tinh (Remote Sensing - RS) đang tạo ra những bước tiến đột phá trong giám sát tài nguyên thiên nhiên, trắc địa và quy hoạch lãnh thổ. Theo các báo cáo địa chất quốc tế, bề mặt phủ đất đóng vai trò then chốt quyết định tới 80% khả năng thẩm thấu và trữ lượng của các mạch nước ngầm. Việc phân tích chính xác lớp phủ bề mặt (Land Cover) giúp các cơ quan quản lý đô thị và nông nghiệp tối ưu hóa nguồn nước, dự báo hạn hán và xói mòn đất.
Tuy nhiên, việc phân loại bề mặt đất từ ảnh vệ tinh có độ phân giải không gian cao hiện nay đối mặt với nhiều thách thức lớn:
- Áp lực băng thông và hạ tầng máy chủ: Các hệ thống viễn thám truyền thống gửi toàn bộ luồng dữ liệu thô (Raw imagery) về trung tâm dữ liệu đám mây (Cloud Datacenter), gây nghẽn băng thông truyền tải và tiêu tốn năng lượng khổng lồ.
- Độ trễ cao trong xử lý biên (Edge Processing): Các thiết bị xử lý trên vệ tinh hoặc máy bay không người lái (UAV) chạy vi xử lý CPU/GPU nhúng thông thường tiêu thụ công suất lớn (vượt quá 50W), không đáp ứng được điều kiện giới hạn năng lượng khắc nghiệt ngoài không gian.
- Suy giảm độ phân giải không gian qua các lớp tích chập: Các kiến trúc mạng nơ-ron phân loại truyền thống làm mất chi tiết đường biên khi giảm lấy mẫu (Downsampling).
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-HCM (tác giả: Trần Cao Khải, Nguyễn Hoàng Nghĩa; GVHD: ThS. Phạm Thanh Hùng, ThS. Hồ Ngọc Diễm) đã nghiên cứu và hiện thực thành công đề tài: "Phân loại bề mặt đất bằng mạng nơ-ron tích chập hiện thực trên FPGA sử dụng kiến trúc DeepLabV3+".
[Ảnh vệ tinh RGB 256x256]
│
▼
┌─────────────────────────────────────────────────────────────┐
│ FPGA Accelerator (Virtex-7 IP Core) │
│ ┌────────────────────────┐ ┌───────────────────────┐ │
│ │ ResNet-18 Encoder │ ───► │ ASPP & Line Buffers │ │
│ │ (Dilation Conv & MaxP) │ │ (Multi-scale Context) │ │
│ └────────────────────────┘ └───────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Decoder & Nearest Neighbor Upsampling (256x256x7) │ │
│ └───────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Sigmoid Activation Unit (Taylor Expansion) │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
[Mặt nạ phân đoạn 7 lớp nhãn (Segmentation Mask)]
Mục tiêu đề tài
- Thiết kế phần cứng hoàn chỉnh: Hiện thực kiến trúc mạng phân đoạn ảnh ngữ nghĩa (Semantic Segmentation) DeepLabV3+ kết hợp mạng xương sống (Backbone) ResNet-18 bằng ngôn ngữ mô tả phần cứng Verilog HDL (chuẩn IEEE 1364-2001).
- Xử lý số học dấu phẩy động: Tích hợp bộ xử lý số học dấu phẩy động 32-bit Single Precision (IEEE 754) để duy trì độ chính xác cao nhất của các trọng số mạng đã được huấn luyện sẵn.
- Triển khai trên FPGA: Tổng hợp, mô phỏng và định tuyến thành công hệ thống IP Core trên dòng chip FPGA cao cấp Xilinx Virtex-7 XC7VX485T với tần số hoạt động mục tiêu 50 MHz.
- Đánh giá độ chính xác: Kiểm chứng chức năng với tập dữ liệu chuẩn quốc tế DeepGlobe Land Cover Classification, cam kết độ chính xác phân đoạn đạt trên 70% so với mô hình phần mềm chuẩn.
Phạm vi và giới hạn
- Tập dữ liệu: DeepGlobe Land Cover Classification Dataset, độ phân giải mặt đất 50 cm/pixel với 7 lớp nhãn phân loại: Đất đô thị (Urban), Đất nông nghiệp (Agriculture), Đồng cỏ (Rangeland), Đất rừng (Forest), Thủy vực (Water), Đất bỏ hoang (Barren), Không xác định (Unknown).
- Kích thước đầu vào/đầu ra: Ma trận ảnh RGB kích thước $256 \times 256 \times 3$, đầu ra là mặt nạ màu $256 \times 256 \times 7$.
- Giới hạn phần cứng: Thực hiện mô phỏng hành vi (Behavioral simulation) và tổng hợp logic phần cứng ở mức Register-Transfer Level (RTL) trên Xilinx Vivado Design Suite.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Hệ thống GPU Cloud (NVIDIA A100/V100) |
Vi xử lý nhúng Edge CPU (ARM Cortex-A72) |
Bộ tăng tốc phần cứng FPGA (Virtex-7 IP Core) |
| Băng thông & Độ trễ |
Phụ thuộc đường truyền viễn thông vệ tinh, độ trễ > 1.5s |
Xử lý cục bộ nhưng thông lượng thấp (< 5 FPS) |
Xử lý Pipeline song song, độ trễ tức thời theo xung nhịp |
| Công suất tiêu thụ |
> 250W - 400W |
10W - 15W |
5W - 12W (Tối ưu cho Edge Satellite Payload) |
| Độ chính xác dữ liệu |
FP32 / FP16 cao nhất |
FP32 / INT8 |
FP32 Single Precision bảo toàn tuyệt đối |
| Tính tùy biến phần cứng |
Cố định kiến trúc SIMD |
Cố định kiến trúc Von Neumann |
Tùy biến Pipeline, Line Buffer, PE linh hoạt theo mạng |
Yêu cầu hệ thống (Phân loại MoSCoW)
- Must Have: Khối tính toán tích chập 3D/2D hỗ trợ Kernel $1\times1$, $3\times3$, $7\times7$; tích chập giãn nở (Atrous Convolution); bộ nhớ đệm ma trận ảnh và trọng số (
conv_buffer, conv_buffer_weights); khối hàm kích hoạt phi tuyến (ReLU, Sigmoid).
- Should Have: Bộ nội suy điểm ảnh lân cận gần nhất (Nearest Neighbor Upsampling) để khôi phục kích thước ảnh gấp 4 lần mà không tốn tài nguyên nhân DSP phức tạp như Bilinear Interpolation.
- Could Have: Tối ưu hóa chu trình Pipeline đa kênh (Channel-in Adder) để giảm chu kỳ chờ đợi dữ liệu từ bộ nhớ ngoài.
- Won't Have (Giai đoạn này): Huấn luyện trực tiếp trên FPGA (On-chip training); hệ thống sử dụng trọng số cố định nạp từ mô hình PyTorch đã hội tụ.
┌────────────────────────────────────────────────────────┐
│ DeepLabV3+ Architecture │
└───────────────────────────┬────────────────────────────┘
│
┌─────────────────┴─────────────────┐
▼ ▼
┌───────────────────────────┐ ┌───────────────────────────┐
│ Encoder Module │ │ Decoder Module │
│ ┌─────────────────────┐ │ │ ┌─────────────────────┐ │
│ │ ResNet-18 Backbone │ │ │ │ Low-Level Features │ │
│ └──────────┬──────────┘ │ │ │ (From Layer 1) │ │
│ ▼ │ │ └──────────┬──────────┘ │
│ ┌─────────────────────┐ │ │ ▼ │
│ │ ASPP Module │ │ │ ┌─────────────────────┐ │
│ │ (Rates: 1, 6, 12) │──┼──────►│ │ Nearest-Neighbor 4x │ │
│ └─────────────────────┘ │ │ │ Concatenation │ │
└───────────────────────────┘ │ └──────────┬──────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 256x256x7 Sigmoid │ │
│ └─────────────────────┘ │
└───────────────────────────┘
Thiết kế hệ thống và Technology Stack
Hệ thống được phát triển dựa trên bộ công cụ và công nghệ chuyên dụng:
- Ngôn ngữ mô tả phần cứng: Verilog HDL (IEEE 1364-2001).
- Framework học sâu: PyTorch 1.12.1 kết hợp TorchVision để xây dựng Reference Model, trích xuất ma trận trọng số sang định dạng Text/Hex.
- Phần mềm thiết kế & mô phỏng: Xilinx Vivado Design Suite 2020.2, Siemens ModelSim/QuestaSim 2021.1.
- Định dạng dữ liệu số học: IEEE 754 32-bit Single Precision Floating Point:
- 1 bit dấu ($S$), 8 bit mũ ($E$, Bias = 127), 23 bit định trị ($M$).
- Giá trị biểu diễn: $V = (-1)^S \times (1 + M \times 2^{-23}) \times 2^{E - 127}$.
Công thức toán học cốt lõi
-
Kích thước ma trận sau tích chập có viền đệm (Zero-Padding) và bước trượt (Stride):
$$W_{out} = \left\lfloor \frac{W_{in} - F + 2P}{S} \right\rfloor + 1$$
Trong đó: $W_{in}$ là kích thước đầu vào, $F$ là kích thước Kernel, $P$ là độ dày viền đệm, $S$ là bước trượt.
-
Tích chập giãn nở (Atrous/Dilated Convolution):
Kernel hiệu dụng khi có hệ số giãn nở $d$ (Dilation Rate):
$$F_{effective} = F + (F - 1)(d - 1)$$
Giúp mở rộng trường tiếp nhận (Receptive Field) từ $3\times3$ lên $5\times5$ ($d=2$) hoặc $7\times7$ ($d=3$) mà không tăng số lượng tham số cần lưu trữ.
-
Xấp xỉ hàm kích hoạt Sigmoid bằng chuỗi Taylor (Taylor Series Expansion):
Hàm kích hoạt Sigmoid tại lớp đầu ra:
$$\sigma(x) = \frac{1}{1 + e^{-x}}$$
Để tránh chia số thực phức tạp, hàm $e^{-x}$ được khai triển Taylor $N$ bậc:
$$e^{-x} \approx \sum_{n=0}^{N} \frac{(-x)^n}{n!} = 1 - x + \frac{x^2}{2!} - \frac{x^3}{3!} + \dots + \frac{(-x)^N}{N!}$$
Thiết kế phần cứng sử dụng máy trạng thái hữu hạn (FSM) 4 trạng thái để lặp từ 20 đến 32 vòng, đảm bảo sai số dưới $10^{-5}$.
Implementation và kết quả
Quy trình phát triển phần cứng (Hardware Development Process)
Thiết kế RTL của hệ thống CNN IP Core được phân rã thành các module logic đồng bộ:
- Khối đệm dữ liệu đầu vào (
conv_buffer): Sử dụng các mảng thanh ghi dịch (Shift Register FIFO) và BRAM để trích xuất cửa sổ trượt $3\times3$ hoặc $7\times7$ từ luồng dữ liệu 1D.
- Khối nhân chập xử lý song song (
conv_core): Chứa 9 bộ nhân số thực (Floating Point Multipliers) và cây cộng số thực (Adder Tree) tính toán tích vô hướng giữa ma trận điểm ảnh cục bộ và ma trận trọng số.
- Khối cộng kênh đầu vào (
conv_channel_in_adder): Tích lũy kết quả qua các kênh chiều sâu $D_{in}$, sau đó cộng thêm hệ số lệch (Bias).
- Khối tổng hợp (
maxp_core, avgp_core): Tìm giá trị cực đại trong cửa sổ $2\times2$ stride 2 cho Max Pooling hoặc bộ cộng trung bình cho Average Pooling.
- Khối nội suy lân cận gần nhất (
upsampling_core): Nhân bản điểm ảnh $1 \to 4$ ($2\times$) hoặc $1 \to 16$ ($4\times$) phục vụ bộ giải mã Decoder.
// Trích đoạn thiết kế phần cứng: Khối nhân chập phần tử Floating Point 32-bit (conv_core_slice.v)
module conv_core_slice #(
parameter DATA_WIDTH = 32
)(
input wire clk,
input wire rst_n,
input wire enable,
input wire [DATA_WIDTH-1:0] pixel_in,
input wire [DATA_WIDTH-1:0] weight_in,
output reg [DATA_WIDTH-1:0] mult_out,
output reg valid_out
);
wire [DATA_WIDTH-1:0] fp_mult_result;
wire fp_mult_ready;
// Instance bộ nhân dấu phẩy động IEEE-754 Single Precision IP Core
fp_multiplier_32bit u_fp_mult (
.s_axis_a_tdata(pixel_in),
.s_axis_a_tvalid(enable),
.s_axis_b_tdata(weight_in),
.s_axis_b_tvalid(enable),
.m_axis_result_tdata(fp_mult_result),
.m_axis_result_tvalid(fp_mult_ready),
.aclk(clk)
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
mult_out <= 32'h00000000;
valid_out <= 1'b0;
end else if (fp_mult_ready) begin
mult_out <= fp_mult_result;
valid_out <= 1'b1;
end else begin
valid_out <= 1'b0;
end
end
endmodule
// Khối nội suy tăng lấy mẫu lân cận gần nhất (nearest_neighbor_upsample_2x.v)
module nearest_neighbor_upsample_2x #(
parameter DATA_WIDTH = 32,
parameter IN_WIDTH = 16,
parameter IN_HEIGHT = 16
)(
input wire clk,
input wire rst_n,
input wire in_valid,
input wire [DATA_WIDTH-1:0] in_pixel,
output reg [DATA_WIDTH-1:0] out_pixel_00,
output reg [DATA_WIDTH-1:0] out_pixel_01,
output reg [DATA_WIDTH-1:0] out_pixel_10,
output reg [DATA_WIDTH-1:0] out_pixel_11,
output reg out_valid
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
out_pixel_00 <= 32'd0;
out_pixel_01 <= 32'd0;
out_pixel_10 <= 32'd0;
out_pixel_11 <= 32'd0;
out_valid <= 1'b0;
end else if (in_valid) begin
// Sao chép điểm ảnh đầu vào cho 4 điểm ảnh của cửa sổ 2x2
out_pixel_00 <= in_pixel;
out_pixel_01 <= in_pixel;
out_pixel_10 <= in_pixel;
out_pixel_11 <= in_pixel;
out_valid <= 1'b1;
end else begin
out_valid <= 1'b0;
end
end
endmodule
# Reference Model trích xuất trọng số từ PyTorch sang định dạng phần cứng FPGA
import torch
import numpy as np
def export_weights_to_fp32_hex(model_layer, output_filepath):
weights = model_layer.weight.data.cpu().numpy() # [Out_Channels, In_Channels, K_H, K_W]
with open(output_filepath, 'w') as f:
for out_c in range(weights.shape[0]):
for in_c in range(weights.shape[1]):
for h in range(weights.shape[2]):
for w in range(weights.shape[3]):
val = weights[out_c, in_c, h, w]
# Chuyển đổi float32 thành biểu diễn Hexadecimal IEEE-754
hex_str = f"{np.float32(val).view(np.uint32):08X}\n"
f.write(hex_str)
print(f"Exported successfully: {output_filepath}")
Kiểm thử và đánh giá kết quả (Testing & Validation)
┌──────────────────────────────────────────────────┐
│ Verification Framework │
└────────────────────────┬─────────────────────────┘
│
┌───────────────┴───────────────┐
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ PyTorch Model Output │ │ ModelSim RTL Waveforms │
│ (Golden Output Vector) │ │ (Virtex-7 Synthesized) │
└──────────────┬──────────────┘ └─────────────┬───────────────┘
│ │
└───────────────┬───────────────┘
▼
┌───────────────────────────────┐
│ Bit-Exact Error Comparison │
│ (Max Error < 10^-5) │
└───────────────────────────────┘
Mô phỏng dạng sóng được thực hiện trên ModelSim/Vivado Simulator với testbench nạp trực tiếp vector dữ liệu ảnh 119 và 911457 trích xuất từ tập DeepGlobe.
Bảng thông số sai số và thời gian xử lý của các khối chức năng
| Tên khối phần cứng |
Kích thước xử lý |
Số chu kỳ Clock |
Tần số tối đa |
Sai số cực đại ($\Delta_{max}$) |
conv3d_7x7_s2 |
$256 \times 256 \times 3 \to 128 \times 128 \times 64$ |
65,536 |
50.0 MHz |
$1.19 \times 10^{-6}$ |
conv3d_3x3_s1 |
$64 \times 64 \times 64 \to 64 \times 64 \times 64$ |
4,096 |
52.4 MHz |
$2.38 \times 10^{-6}$ |
maxp_3x3_s2 |
$128 \times 128 \times 64 \to 64 \times 64 \times 64$ |
4,096 |
66.7 MHz |
$0.00$ (Bit-exact) |
upsampling_4x |
$16 \times 16 \times 256 \to 64 \times 64 \times 256$ |
4,096 |
75.0 MHz |
$0.00$ (Bit-exact) |
sigmoid_taylor |
30 vòng lặp FSM |
31 cycles/pixel |
50.0 MHz |
$3.57 \times 10^{-5}$ |
Đánh giá độ chính xác phân loại bề mặt đất
Độ chính xác (Pixel Accuracy) được tính toán theo công thức:
$$\text{Accuracy} = \frac{\sum_{i=1}^{K} TP_i}{\sum_{i=1}^{K} (TP_i + FP_i + FN_i)} \times 100%$$
- Kết quả đạt được trên ảnh kiểm thử 119: Đạt độ chính xác 78.42%.
- Kết quả đạt được trên ảnh kiểm thử 911457: Đạt độ chính xác 74.19%.
- Độ chính xác trung bình toàn mạng: 76.31% (Vượt mục tiêu thiết kế ban đầu $\ge 70%$).
Đổi mới và đóng góp
- Kiến trúc phần cứng mở rộng cho Atrous Convolution: Xây dựng thành công bộ điều khiển đệm ma trận
conv_buffer hỗ trợ linh hoạt các hệ số giãn nở (Dilation Rate $d=1, 2, 4$). Kỹ thuật này mở rộng trường tiếp nhận mà không làm tăng tài nguyên phần cứng tính toán logic (LUT/DSP).
- Khai triển Taylor tối ưu cho hàm Sigmoid trên FPGA: Thay vì sử dụng bảng tra cứu (Look-Up Table - LUT ROM) chiếm dụng nhiều bộ nhớ phân tán, nhóm đề xuất giải thuật tính $e^{-x}$ dựa trên khai triển chuỗi Taylor lặp 30 vòng, giúp tiết kiệm tới 42% dung lượng BRAM nội chip.
- Thay thế nội suy song tuyến tính bằng nội suy lân cận gần nhất: Cắt giảm hoàn toàn 4 phép nhân số thực và 3 phép cộng số thực trên mỗi điểm ảnh được tăng lấy mẫu, giảm thiểu 68% độ trễ tính toán của khối Decoder trong DeepLabV3+ mà độ chính xác mIoU chỉ suy giảm dưới 1.2%.
- Chuẩn hóa luồng số thực IEEE-754 toàn hệ thống: Loại bỏ hoàn toàn lỗi suy giảm độ chính xác do lượng tử hóa (Quantization Error) thường gặp ở các thiết kế INT8/Fixed-point, giúp các nhà nghiên cứu tái sử dụng nguyên vẹn trọng số PyTorch mà không cần thực hiện Quantization-Aware Training (QAT).
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
- Payload vệ tinh viễn thám quỹ đạo thấp (LEO SmallSat): Tích hợp IP Core trực tiếp vào bo mạch xử lý ảnh cận thời gian thực của vệ tinh. Dữ liệu sau khi cảm biến quang học thu nhận sẽ được phân loại thành mặt nạ 7 lớp và chỉ truyền dữ liệu nén ngữ nghĩa về trạm mặt đất, tiết kiệm 94% băng thông truyền vô tuyến.
- Trạm quan trắc tài nguyên nước ngầm tự động: Phân tích ảnh chụp định kỳ từ máy bay không người lái (UAV) để nhận diện sự thay đổi của thảm thực vật rừng (Forest Land) và đất đô thị (Urban Land), từ đó đưa ra cảnh báo sớm về sụt giảm tầng nước ngầm tại các vùng khô hạn.
┌────────────────────────────────────────────────────────┐
│ UAV / LEO Satellite Payload │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Optical Sensor │ ─────► │ Xilinx Virtex-7 FPGA │ │
│ │ Raw Image Stream │ │ (DeepLabV3+ IP Core) │ │
│ └──────────────────┘ └──────────┬───────────┘ │
└─────────────────────────────────────────┼──────────────┘
│ 94% Bandwidth Saved
▼ (Only Classified Masks)
┌──────────────────────┐
│ Ground Station / GIS │
└──────────────────────┘
Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)
- Tiết kiệm năng lượng: FPGA tiêu thụ công suất trung bình 8.5W so với máy chủ trạm GPU mặt đất 350W (Tiết kiệm > 97% năng lượng tiêu thụ tại biên).
- Tuổi thọ hệ thống: Kiến trúc logic tái cấu hình giúp thiết bị có khả năng cập nhật từ xa các phiên bản trọng số mới qua sóng vô tuyến mà không cần thay đổi phần cứng vật lý.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Tiêu tốn tài nguyên do tính toán FP32: Việc duy trì định dạng 32-bit Floating Point chiếm dụng nhiều DSP Slices trên FPGA, giới hạn khả năng triển khai mô hình lớn hơn như ResNet-50 hoặc ResNet-101 trên các dòng FPGA tầm trung (Artix-7 hoặc Zynq-7000).
- Bộ nhớ On-chip: Các lớp tích chập ban đầu với kích thước ma trận lớn ($256 \times 256$) đòi hỏi dung lượng đệm hàng (Line Buffer) lớn, gây áp lực lên Block RAM (BRAM).
Hướng phát triển trong tương lai
- Chuyển đổi lượng tử hóa số học Fixed-point / INT8: Ứng dụng kỹ thuật Post-Training Quantization (PTQ) để chuyển đổi từ FP32 sang Fixed-point 16-bit hoặc INT8, giảm 75% dung lượng lưu trữ trọng số và tăng tốc độ xử lý lên gấp 2-3 lần.
- Triển khai giao tiếp bộ nhớ DDR4/AXI-Stream: Tích hợp giao thức bus công nghiệp AXI4-Stream và bộ điều khiển DMA để truyền nhận dữ liệu trực tiếp với RAM ngoài tốc độ cao.
- Mở rộng sang kiến trúc Vision Transformer: Nghiên cứu hiện thực phần cứng các khối Self-Attention phục vụ các mạng phân đoạn thế hệ mới (SegFormer, Mask2Former).
Đối tượng hưởng lợi
- Sinh viên & Kỹ sư nhúng/Kỹ thuật Máy tính: Nguồn tài liệu thực chứng về phương pháp chuyển đổi mô hình học sâu từ Python/PyTorch sang Verilog RTL, nắm vững kỹ thuật thiết kế Line Buffer và Pipeline số học dấu phẩy động.
- Kỹ sư thiết kế vi mạch (ASIC/FPGA Engineers): Tham khảo kiến trúc IP Core cho các lớp CNN phức tạp (Atrous Conv, Nearest-Neighbor Upsampling, hàm kích hoạt Sigmoid Taylor).
- Doanh nghiệp viễn thông & Công nghệ không gian: Giải pháp tăng tốc AI tại biên với mức tiêu thụ năng lượng thấp cho thiết bị bay không người lái và vệ tinh quan sát Trái Đất.
- Nhà nghiên cứu địa chất & GIS: Ứng dụng mô hình phân loại tự động 7 lớp phủ bề mặt đất để theo dõi biến động môi trường và quản lý tài nguyên nước ngầm.
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai và chạy mô phỏng IP Core này là gì?
Hệ thống yêu cầu máy tính cài đặt hệ điều hành Linux (Ubuntu 20.04/22.04) hoặc Windows 10/11 64-bit, RAM tối thiểu 16GB, cài đặt bộ công cụ Xilinx Vivado Design Suite 2020.2 trở lên và ModelSim/QuestaSim. Về phần cứng vật lý, IP Core được thiết kế hướng tới dòng FPGA Xilinx Virtex-7 (XC7VX485T) hoặc các dòng UltraScale/Zynq UltraScale+ MPSoC có số lượng DSP48E1 $\ge 500$ và BRAM $\ge 15\text{ Mb}$.
2. Tại sao thiết kế lại chọn nội suy lân cận gần nhất thay vì nội suy song tuyến tính (Bilinear Interpolation)?
Nội suy song tuyến tính yêu cầu tính toán khoảng cách tọa độ thực, 4 phép nhân số thực và các phép cộng trọng số trên mỗi điểm ảnh mới, làm tăng đột biến số lượng DSP và tạo ra điểm nghẽn độ trễ (Latency bottleneck) lớn ở bộ giải mã Decoder. Việc chuyển sang nội suy lân cận gần nhất (Nearest Neighbor) chỉ thực hiện gán lặp giá trị thanh ghi ($1 \to 4$), loại bỏ hoàn toàn các phép tính số thực phức tạp mà vẫn bảo toàn hình dạng phân đoạn với mức suy giảm mIoU không đáng kể (< 1.2%).
3. Làm thế nào để tích hợp IP Core này vào một hệ thống vi xử lý SoC sẵn có (như ARM Cortex trên Zynq)?
IP Core có thể được đóng gói (Package IP) theo chuẩn AXI4-Lite cho các thanh ghi cấu hình (Control/Status Registers) và giao tiếp AXI4-Stream cho luồng dữ liệu hình ảnh (Input Pixel Stream và Output Mask Stream). Kết nối thông qua bộ điều khiển AXI DMA cho phép truyền dữ liệu liên tục từ DDR Memory vào IP Core mà không làm gián đoạn vi xử lý chính.
4. Chi phí phần cứng và khả năng bảo trì hệ thống như thế nào?
Sử dụng FPGA giúp loại bỏ chi phí đúc chip Non-Recurring Engineering (NRE) hàng triệu USD của chip ASIC. Khi cần cập nhật kiến trúc mạng hoặc thay đổi bộ trọng số mới, nhà phát triển chỉ cần biên dịch lại file Bitstream và nạp lại vào Flash ROM từ xa, đảm bảo khả năng bảo trì và nâng cấp liên tục suốt vòng đời thiết bị.
Kết luận
Đồ án tốt nghiệp "Phân loại bề mặt đất bằng mạng nơ-ron tích chập hiện thực trên FPGA sử dụng kiến trúc DeepLabV3+" của sinh viên Trần Cao Khải và Nguyễn Hoàng Nghĩa đã giải quyết xuất sắc bài toán tăng tốc phân đoạn ngữ nghĩa ảnh viễn thám ở mức phần cứng. Bằng việc kết hợp hài hòa giữa mô hình học sâu tiên tiến DeepLabV3+ (Backbone ResNet-18) và ngôn ngữ phần cứng Verilog HDL, công trình đã chứng minh tính khả thi vượt trội của việc xử lý dữ liệu số thực dấu phẩy động 32-bit (FP32) trên dòng chip Xilinx Virtex-7 với tần số 50 MHz và độ chính xác trung bình đạt 76.31%.
Đây là nền tảng kỹ thuật vững chắc mở ra tiềm năng ứng dụng rộng lớn trong các thiết bị viễn thám cận thời gian thực, phục vụ thiết thực cho công tác bảo vệ tài nguyên môi trường, quy hoạch đô thị và quản lý bền vững nguồn nước ngầm quốc gia.