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

Trong các hệ thống xử lý thị giác máy tính hiện đại, các mô hình Học sâu (Deep Learning), đặc biệt là Mạng thần kinh tích chập (Convolutional Neural Networks - CNN), đã trở thành giải pháp cốt lõi cho các bài toán phân loại và nhận dạng đối tượng. Tuy nhiên, việc triển khai các mạng nơ-ron phức tạp trên môi trường phần mềm truyền thống (CPU) thường gặp phải trở ngại lớn về độ trễ xử lý (delay), trong khi việc xử lý trên các bộ xử lý đồ họa (GPU) lại tiêu tốn tài nguyên phần cứng và năng lượng lớn, không phù hợp cho các thiết bị nhúng yêu cầu thời gian thực. Để giải quyết mâu thuẫn giữa tốc độ thực thi và tối ưu hóa tài nguyên phần cứng, giải pháp tăng tốc phần cứng sử dụng mảng cổng lập trình dạng trường (FPGA) được áp dụng.

Khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Máy tính của sinh viên Phan Hùng Cường (Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM, thực hiện năm 2021 dưới sự hướng dẫn của TS. Nguyễn Minh Sơn) tập trung vào đề tài: "Nghiên cứu cải tiến tích hợp thuật toán YOLO trên FPGA Zynq-7020".

Bối cảnh thực tiễn được tác giả nêu rõ:

  • Tình hình nghiên cứu quốc tế: Các nghiên cứu vi mạch và tăng tốc AI trên phần cứng phát triển mạnh tại Hoa Kỳ, Ấn Độ, Trung Quốc, Đức, Nhật Bản. Điển hình như các nghiên cứu của tác giả WalkerLau về tăng tốc mạng nơ-ron trên FPGA (cho thấy cấu hình CPU kết hợp FPGA đạt tốc độ xử lý nhanh hơn 45x–75x so với CPU thuần túy khi nhận dạng khuôn mặt với 7 lớp thần kinh); nghiên cứu của Mohamed Atri và cộng sự về mạng Perceptron đa lớp trên Xilinx FPGA đạt độ chính xác 99,67% trên tập dữ liệu 500 ảnh mẫu.
  • Tình hình nghiên cứu trong nước: Tại Việt Nam, nghiên cứu thiết kế và triển khai thuật toán phát hiện đối tượng phức tạp như YOLO trực tiếp trên phần cứng FPGA còn hạn chế về nguồn lực, công nghệ và tài liệu thực tế.

Mục tiêu nghiên cứu của đề tài gồm 3 nhiệm vụ cụ thể:

  1. Nghiên cứu thuật toán YOLO (You Only Look Once) dựa trên nền tảng mạng nơ-ron tích chập.
  2. Thiết kế khối Sở hữu trí tuệ phần cứng (IP Core) cho camera thu nhận hình ảnh.
  3. Tích hợp và kết nối IP camera cùng thuật toán YOLO trên phần cứng FPGA để thực hiện phát hiện đối tượng theo thời gian thực.

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

  • Đối tượng nghiên cứu: Thuật toán phát hiện đối tượng YOLOv1, YOLOv2 (mô hình Darknet-19, YOLO9000); kiến trúc phần cứng FPGA SoC Xilinx Zynq-7000; giao tiếp bus AXI; module camera OV7670.
  • Phạm vi thực nghiệm: Triển khai phần cứng trên kit phát triển ZedBoard (chíp Zynq-7020 XC7Z020-CLG484-1) kết hợp hệ điều hành nhúng PetaLinux và phần mềm thiết kế Xilinx Vivado.

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

Khóa luận xây dựng trên hệ thống lý thuyết về mạng nơ-ron học sâu, cấu trúc mạng phát hiện đối tượng YOLO, cùng các nguyên lý thiết kế vi mạch kỹ thuật số và kiến trúc hệ thống trên chip (SoC):

  1. Lý thuyết mạng nơ-ron tích chập:
    • Lớp tích chập (Convolutional Layer): Trích xuất đặc trưng từ ma trận ảnh đầu vào kích thước $(h \times w \times d)$ thông qua bộ lọc kích thước $(f_h \times f_w \times d)$ để tạo ra bản đồ đặc trưng đầu ra kích thước $(h - f_h + 1) \times (w - f_w + 1) \times 1$. Kích thước bộ lọc phổ biến là $3 \times 3$ hoặc $5 \times 5$.
    • Lớp kích hoạt phi tuyến (ReLU Layer): Sử dụng hàm kích hoạt $f(x) = \max(0, x)$ giúp giảm hiện tượng triệt tiêu đạo hàm và đơn giản hóa tính toán phần cứng.
    • Lớp tổng hợp (Pooling Layer): Giảm kích thước không gian bản đồ đặc trưng (Max pooling, Average pooling, Sum pooling) nhằm giảm số lượng tham số tính toán.
    • Lớp kết nối đầy đủ (Fully Connected Layer): Làm phẳng tensor 3D thành vector 1D để đưa vào bộ phân loại Softmax.
Đặc tính so sánh Bộ lọc nhỏ ($3 \times 3$) Bộ lọc lớn ($5 \times 5$, $7 \times 7$)
Vùng quan sát Khu vực pixel nhỏ Khu vực pixel lớn
Đặc trưng thu nhận Đặc trưng cục bộ, chi tiết nhỏ Đặc trưng tổng quát, cơ bản
Độ sâu mô hình Giảm kích thước chậm, cho phép mạng sâu Giảm kích thước nhanh, mạng nông
Chia sẻ trọng số Tối ưu hóa việc chia sẻ trọng số, giảm bộ nhớ Kém hiệu quả hơn trong việc chia sẻ trọng số
  1. Thuật toán YOLO (YOLOv1 và YOLOv2):

    • Nguyên lý YOLOv1: Chia ảnh thành lưới $S \times S$ (với $S=7$), mỗi ô dự đoán $B$ hộp bao ($B=2$) cùng điểm độ tin cậy ($Confidence = \text{IoU} \times \Pr(\text{Object})$) và phân phối xác suất lớp $C$. Đầu ra là ma trận $S \times S \times (5 \times B + C)$. Hàm mất mát tổng hợp gồm: mất mát phân loại ($L_{classification}$), mất mát định vị ($L_{localization}$), và mất mát độ tin cậy ($L_{confidence}$).
    • Cải tiến trên YOLOv2 (YOLO9000):
      • Chuẩn hóa theo lô (Batch Normalization): Đặt sau các lớp tích chập, chuẩn hóa kích hoạt về phân phối có kỳ vọng bằng 0 và phương sai đơn vị, giúp tăng chỉ số mAP thêm khoảng 2%.
      • Phân loại độ phân giải cao: Huấn luyện mạng phân loại ở độ phân giải $448 \times 448$ trên ImageNet trước khi chuyển sang phát hiện đối tượng, giúp tăng thêm 4% mAP.
      • Hộp neo (Anchor Box) và K-means: Sử dụng phân cụm K-means trên tập dữ liệu để chọn kích thước hộp neo tối ưu thay vì chọn thủ công.
      • Dự đoán vị trí trực tiếp (Direct location prediction): Áp dụng hàm sigmoid $\sigma$ để giới hạn tọa độ tâm hộp giới hạn trong phạm vi ô lưới hiện tại ($b_x = \sigma(t_x) + c_x$, $b_y = \sigma(t_y) + c_y$), giúp tăng 5% mAP và giữ mô hình ổn định khi huấn luyện.
      • Kỹ thuật Reorg (Tổ chức lại bản đồ đặc trưng): Chuyển đổi bản đồ đặc trưng $26 \times 26$ thành $13 \times 13$ với số kênh tăng gấp 4 lần để ghép nối các đặc trưng mức thấp với đặc trưng mức cao.
      • Kiến trúc Darknet-19: Gồm 19 lớp tích chập và 5 lớp Max pooling.
      • Cây phân cấp WordTree: Kết hợp nhãn giữa ImageNet (1000 lớp) và COCO/PASCAL để xây dựng mô hình YOLO9000 nhận diện nhiều lớp đối tượng.
  2. Phương pháp thực hiện và nền tảng kỹ thuật:

    • Phương pháp thiết kế hệ thống phần cứng - phần mềm kết hợp (HW/SW Co-design): Phân chia khối tính toán nặng (các lớp tích chập, tổng hợp, reorg của mạng nơ-ron) thực thi trên phần cứng khả trình (PL - Programmable Logic), kết hợp với hệ thống vi xử lý (PS - Processing System) chạy hệ điều hành PetaLinux.
    • Công cụ phát triển: Xilinx Vivado Design Suite, Vivado HLS (High-Level Synthesis) biên dịch mã nguồn C/C++ thành các khối IP RTL (Verilog/VHDL), Xilinx SDK và PetaLinux Tools.
    • Phần cứng thực nghiệm: Bo mạch ZedBoard tích hợp vi điều khiển ARM Cortex-A9 và FPGA Artix-7 logic (Zynq-7020 XC7Z020-CLG484-1), RAM 512MB DDR3, bộ nhớ Flash QSPI 256Mb, module camera Omnivision OV7670.

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

Hệ thống được thiết kế theo cấu trúc phân tầng tích hợp trên kiến trúc Zynq-7000 SoC của ZedBoard:

1. Kiến trúc phần cứng và phân bổ tài nguyên

  • Phần hệ thống xử lý (Processing System - PS): Chạy nhân Linux nhúng (PetaLinux OS), quản lý quá trình khởi động qua thẻ SD (chứa tệp tin BOOT.BIN, image.ub), thực thi các tác vụ cấu hình hệ thống, giao tiếp UART phục vụ ghi nhật ký (logging) và truyền nhận tệp lệnh.
  • Phần logic khả trình (Programmable Logic - PL): Chứa các khối IP tính toán gia tốc mạng nơ-ron, khối xử lý tín hiệu camera và hệ thống quản lý bộ nhớ đệm:
    • Khối xử lý nơ-ron (Neuron Module): Cấu hình tham số song song hóa phần cứng ($T_n = 4$, $T_m = 2$) để xử lý đồng thời các phép tính nhân - tích lũy (MAC) của lớp tích chập.
    • Khối tổng hợp (Pooling Module): Thực thi phép toán Max pooling nhằm giảm kích thước ma trận dữ liệu.
    • Khối tái tổ chức dữ liệu (Reorg Module): Chuyển đổi cấu trúc ma trận $26 \times 26$ sang $13 \times 13$ bằng cách tăng chiều sâu kênh (tăng 4 lần số kênh).
    • Khối giao tiếp Camera OV7670: Thu nhận dữ liệu luồng ảnh từ cảm biến OV7670 thông qua các chân cắm mở rộng Pmod trên ZedBoard.

2. Giao thức truyền thông và quản lý dữ liệu

  • Giao tiếp Bus AXI (Advanced eXtensible Interface): Sử dụng chuẩn bus AXI4 để kết nối giữa PS và PL. Hệ thống phân chia xử lý trên 5 kênh độc lập:
    • Kênh địa chỉ đọc (AR - Read Address Channel)
    • Kênh dữ liệu đọc (R - Read Data Channel)
    • Kênh địa chỉ ghi (AW - Write Address Channel)
    • Kênh dữ liệu ghi (W - Write Data Channel)
    • Kênh phản hồi ghi (B - Write Response Channel)
  • Điều khiển luồng dữ liệu: Sử dụng bộ điều khiển AXI DMA (Direct Memory Access) kết hợp với hàng đợi dữ liệu AXI Stream Data FIFO nhằm tối ưu hóa băng thông truyền dữ liệu giữa bộ nhớ ngoài DDR3 và các lõi gia tốc phần cứng trong PL, hạn chế tắc nghẽn luồng dữ liệu.
[ Camera OV7670 ] 

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

Chương 1: Tình hình nghiên cứu và mục tiêu đề tài

  • Khảo sát các công trình nghiên cứu trên thế giới về tăng tốc mạng nơ-ron trên nền tảng phần cứng FPGA (nghiên cứu của WalkerLau so sánh CPU và CPU+FPGA; nghiên cứu của Mohamed Atri và cộng sự về mạng Perceptron trên chip Xilinx).
  • Đánh giá hiện trạng nghiên cứu vi mạch trong nước tại thời điểm thực hiện đề tài (2021), chỉ ra những hạn chế về tài liệu và các nghiên cứu tích hợp thuật toán YOLO trên FPGA.
  • Xác định 3 mục tiêu cốt lõi: nghiên cứu thuật toán YOLO, thiết kế IP camera OV7670, và tích hợp hệ thống phát hiện đối tượng thời gian thực trên Zynq-7020.

Chương 2: Cơ sở lý thuyết và công cụ phát triển

  • Trình bày chi tiết toán học và cấu trúc của mạng nơ-ron tích chập (lớp tích chập, ReLU, Pooling, Fully Connected, trọng số và độ lệch bias).
  • Phân tích nguyên lý hoạt động của mô hình YOLOv1: hệ thống chia lưới $S \times S$, cấu trúc dự đoán vector $(5 \times B + C)$, cách thức tính chỉ số IoU, cùng cấu trúc 24 lớp tích chập kết hợp 2 lớp kết nối đầy đủ. Phân tích các hạn chế của YOLOv1 đối với các vật thể nhỏ hoặc các vật thể nằm gần nhau.
  • Phân tích chi tiết các kỹ thuật tối ưu hóa trong YOLOv2: Batch Normalization, High Resolution Classifier, Anchor Boxes, K-means clustering cho anchor box, Direct location prediction, kết nối đa tầng với Reorg layer, huấn luyện đa tỷ lệ (Multi-scale training) và mô hình Darknet-19. Giới thiệu mô hình WordTree trong YOLO9000.
  • Giới thiệu công cụ thiết kế vi mạch: Vivado Design Suite, luồng biên dịch Vivado HLS (C/C++ sang RTL), SDK và bộ công cụ PetaLinux.
  • Phân tích cấu trúc phần cứng FPGA: Khối Logic khả trình (CLB), ma trận chuyển mạch, bộ nhớ BRAM, khối quản lý xung nhịp (Clock Management).
  • Trình bày kiến trúc phần cứng kit ZedBoard, cấu trúc giao thức Bus AXI và 5 kênh truyền tín hiệu, cấu trúc hoạt động của camera OV7670 và khối AXI Stream Data FIFO.

Chương 3: Thiết kế và triển khai hệ thống

  • Thiết kế chi tiết các khối chức năng phần cứng trong Vivado: Module đầu vào/đầu ra, Module tế bào thần kinh (với các hệ số song song $T_n = 4$ và $T_m = 2$), Module tổng hợp (Pooling), Module sắp xếp lại dữ liệu (Reorg).
  • Thiết kế sơ đồ khối tổng thể (Block Design) trên Vivado kết nối giữa bộ xử lý Zynq PS, AXI Interconnect, AXI DMA, AXI Stream Data FIFO và các IP chức năng.
  • Triển khai quy trình nhận dạng và xử lý dữ liệu hình ảnh từ Camera OV7670.
  • Tiến hành thực nghiệm kiểm tra độ chính xác và khả năng nhận dạng của hệ thống ở nhiều cự ly khác nhau: cự ly gần (20cm, 40cm) và cự ly xa (80cm, 120cm).

Chương 4: Định hướng kết luận và phát triển

  • Tổng kết tình trạng hoàn thiện của đề tài, so sánh giữa kết quả dự kiến và kết quả thực tế thu được trên phần cứng ZedBoard.
  • Tổng kết những thành quả đạt được về mặt thiết kế phần cứng, chỉ ra các mặt hạn chế còn tồn tại và đề xuất định hướng phát triển trong tương lai.

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

1. Kết quả thực nghiệm

Đề tài đã xây dựng và tích hợp thành công kiến trúc tăng tốc phần cứng cho thuật toán YOLO trên nền tảng kit ZedBoard FPGA Zynq-7020, thu nhận tín hiệu từ camera OV7670:

  • Khả năng nhận dạng theo khoảng cách: Hệ thống được kiểm tra thực tế với các vật thể ở các khoảng cách khác nhau, thể hiện qua các kết quả mô phỏng và chạy thực tế trên kit:
    • Khoảng cách gần (20cm và 40cm): Hệ thống xác định hộp bao và nhận dạng chính xác đối tượng.
    • Khoảng cách xa (80cm và 120cm): Hệ thống vẫn duy trì khả năng phát hiện đối tượng, tuy nhiên độ chính xác và kích thước hộp bao có sự suy giảm tương ứng khi cự ly tăng lên.
  • So sánh thực thi: Tác giả tiến hành so sánh đối chiếu giữa việc thực thi thuật toán trên phần mềm Darknet thuần túy và mô hình phần cứng được tối ưu hóa trên FPGA (Bảng 7 trong văn bản).

2. Đóng góp kỹ thuật của khóa luận

  • Làm chủ quy trình thiết kế phần cứng - phần mềm kết hợp (HW/SW Co-design) sử dụng Vivado HLS và PetaLinux trên nền tảng Xilinx Zynq SoC.
  • Xây dựng thành công các khối IP phần cứng chuyên dụng cho mạng nơ-ron: khối nơ-ron song song hóa ($T_n=4, T_m=2$), khối Max Pooling và khối Reorg layer để xử lý bản đồ đặc trưng trực tiếp trên PL.
  • Tích hợp thành công luồng truyền nhận dữ liệu hoàn chỉnh từ Camera OV7670 qua chuẩn AXI Stream / AXI DMA vào bộ nhớ và chuyển tiếp tới bộ gia tốc.

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

1. Hạn chế

  • Tài nguyên phần cứng: Kit ZedBoard Zynq-7020 có giới hạn về số lượng khối logic (CLB/LUT), khối DSP48E và bộ nhớ BRAM nội bộ, dẫn đến việc phải giới hạn mức độ song song hóa tính toán ($T_n=4, T_m=2$).
  • Độ chính xác ở cự ly xa: Khi đối tượng ở khoảng cách lớn (120cm), độ tin cậy của hộp bao và độ phân giải hình ảnh từ camera OV7670 suy giảm, làm giảm hiệu quả phát hiện so với khoảng cách gần.
  • Băng thông truyền dữ liệu: Quá trình truyền dữ liệu hình ảnh giữa bộ nhớ DDR3 và logic khả trình qua bus AXI vẫn chịu giới hạn nhất định về tốc độ lấy mẫu và độ trễ giao tiếp.

2. Định hướng phát triển

  • Tối ưu hóa sâu hơn kiến trúc tính toán phần cứng để nâng cao hệ số song song ($T_n, T_m$), giúp tăng tốc độ khung hình trên giây (FPS).
  • Nâng cấp module camera có độ phân giải và chất lượng cao hơn để cải thiện độ chính xác nhận dạng ở cự ly xa.
  • Triển khai trên các dòng chip FPGA có dung lượng logic và tài nguyên DSP lớn hơn (như dòng Zynq UltraScale+ MPSoC).
  • Mở rộng tập dữ liệu huấn luyện và tích hợp các phiên bản YOLO mới hơn với kiến trúc nén trọng số (quantization) để tiết kiệm BRAM.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị ứng dụng thực tiễn cao cho:

  1. Sinh viên và học viên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Hệ thống nhúng và Vi mạch: Cung cấp tài liệu tham khảo chi tiết về quy trình thiết kế vi mạch trên phần mềm Xilinx Vivado, phương pháp sử dụng công cụ Vivado HLS để chuyển đổi giải thuật C/C++ sang RTL, và cách xây dựng hệ điều hành nhúng PetaLinux trên Zynq-7000.
  2. Kỹ sư nghiên cứu phần cứng AI (AI Hardware Accelerator): Tham khảo kiến trúc thiết kế chi tiết của các khối chức năng xử lý nơ-ron (Neuron MAC module), khối Reorg layer, khối Pooling và cách tổ chức giao tiếp bus AXI4/DMA trong việc tăng tốc mạng học sâu.
  3. Người thực hiện các đề tài thị giác máy tính nhúng (Embedded Vision): Cung cấp mô hình kết nối phần cứng với camera Omnivision OV7670 qua cổng Pmod và xử lý luồng ảnh thời gian thực.

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

1. Đề tài sử dụng bo mạch phần cứng và dòng chip FPGA nào để triển khai?
Đề tài sử dụng bo mạch phát triển ZedBoard của hãng Avnet, tích hợp chip Xilinx Zynq-7000 SoC XC7Z020-CLG484-1 (kết hợp lõi xử lý kép ARM Cortex-A9 và phần logic khả trình FPGA Artix-7), đi kèm 512MB RAM DDR3 và module camera OV7670.

2. Điểm khác biệt cơ bản giữa YOLOv1 và YOLOv2 được phân tích trong khóa luận là gì?
YOLOv2 khắc phục các hạn chế của YOLOv1 (độ chính xác định vị kém trên vật thể nhỏ, ràng buộc không gian lưới) bằng cách: bổ sung chuẩn hóa hàng loạt (Batch Normalization), huấn luyện bộ phân loại ở độ phân giải cao ($448 \times 448$), sử dụng hộp neo (Anchor Box) với thuật toán phân cụm K-means, dự đoán vị trí trực tiếp bằng hàm Sigmoid, sử dụng kỹ thuật Reorg để liên kết bản đồ đặc trưng $26 \times 26$ với $13 \times 13$, và áp dụng mạng xương sống Darknet-19.

3. Khối AXI Stream Data FIFO và AXI DMA đóng vai trò gì trong thiết kế?
Khối AXI DMA thực hiện truyền nhận dữ liệu trực tiếp giữa bộ nhớ ngoài (DDR3) và các khối IP phần cứng trong PL mà không làm tiêu tốn chu kỳ xử lý của CPU. Khối AXI Stream Data FIFO đóng vai trò làm bộ đệm hàng đợi đồng bộ luồng dữ liệu, giúp cân bằng tốc độ giữa nguồn phát dữ liệu (camera/bộ nhớ) và khối tính toán gia tốc nơ-ron.

4. Kỹ thuật Reorg trong kiến trúc phần cứng YOLOv2 hoạt động như thế nào?
Kỹ thuật Reorg biến đổi bản đồ đặc trưng kích thước $26 \times 26$ thành kích thước $13 \times 13$ bằng cách giảm chiều rộng và chiều cao đi 2 lần, đồng thời tăng số lượng kênh lên 4 lần (tương ứng với việc chia ma trận $4 \times 4$ thành 4 tensor con với bước nhảy $stride = 2$). Thao tác này bảo toàn toàn bộ số lượng tham số mà không làm thay đổi thông tin đặc trưng, cho phép ghép nối trực tiếp với bản đồ đặc trưng $13 \times 13$ ở tầng sau.

5. Kết quả kiểm tra nhận dạng thực tế của hệ thống ở các cự ly khác nhau như thế nào?
Hệ thống được thử nghiệm thực tế với các khoảng cách 20cm, 40cm, 80cm và 120cm. Kết quả cho thấy hệ thống hoạt động ổn định và nhận dạng đối tượng với độ chính xác cao ở cự ly gần (20cm - 40cm); khi khoảng cách tăng lên 80cm và 120cm, hệ thống vẫn duy trì khả năng phát hiện nhưng độ chính xác và kích thước hộp bao bắt đầu suy giảm.


Kết luận

Khóa luận tốt nghiệp của sinh viên Phan Hùng Cường đã nghiên cứu toàn diện cơ sở lý thuyết của thuật toán YOLO và hoàn thiện việc thiết kế, tích hợp hệ thống phát hiện đối tượng trên phần cứng SoC Zynq-7020 (ZedBoard). Đề tài giải quyết hiệu quả bài toán thu nhận hình ảnh từ camera OV7670, truyền thông dữ liệu qua chuẩn bus AXI/DMA và gia tốc các khối tính toán nơ-ron trên logic khả trình. Mặc dù còn hạn chế về tài nguyên phần cứng và cự ly phát hiện xa, công trình là một nghiên cứu thực nghiệm hoàn chỉnh, mang lại giá trị tham khảo thiết thực cho lĩnh vực thiết kế hệ thống nhúng và vi mạch tăng tốc trí tuệ nhân tạo.