Thiết kế và thực thi tích chập hai chiều trên board phát triển FPGA PYNQ-Z2

6 8 0
Thiết kế và thực thi tích chập hai chiều trên board phát triển FPGA PYNQ-Z2

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài viết trình bày thiết kế và thực thi một mô-đun phần cứng thực hiện tính tích chập hai chiều để ứng dụng trong xử lý hình ảnh tốc độ cao. Mô-đun tích chập hai chiều được phát triển bằng ngôn ngữ mô tả phần cứng VHDL, được tổng hợp trên board phát triển PYNQ-Z2 của hãng Xilinx, và được đóng gói thành thư viện phần cứng để sử dụng trong môi trường phát triển ứng dụng Python cho các ứng dụng liên quan.

TNU Journal of Science and Technology 226(02): - DESIGN AND IMPLEMENTATION OF TWO-DIMENSIONAL CONVOLUTION ON PYNQ-Z2 FPGA DEVELOPMENT BOARD Huynh Viet Thang* Danang University of Science and Technology – The University of Danang ARTICLE INFO Received: 22/11/2020 Revised: 25/12/2020 Published: 11/01/2021 KEYWORDS FPGA Hardware implementation image processing 2D convolution PYNQ Python ABSTRACT Two-dimensional (2D) convolution is a very important operation commonly used in the fields of image processing and convolution neural networks In this paper, we designed and implemented a hardware module that performs two-dimensional convolution for use in high-speed image processing The convolution module was developed using hardware description language VHDL, synthesized on Xilinx's PYNQ-Z2 development board, and packed into a hardware library for use in Python development environments for related applications Evaluation results showed that using the designed twodimensional convolution module could improve the performance of the convolution operation by a factor of up to times compared with the performance of the software implementation The design has shown its potential in implementing FPGA-based hardware designs for image processing, pattern recognition, and deep learning applications THIẾT KẾ VÀ THỰC THI TÍCH CHẬP HAI CHIỀU TRÊN BOARD PHÁT TRIỂN FPGA PYNQ-Z2 Huỳnh Việt Thắng Trường Đại học Bách khoa – ĐH Đà Nẵng THÔNG TIN BÀI BÁO Ngày nhận bài: 22/11/2020 Ngày hoàn thiện: 25/12/2020 Ngày đăng: 11/01/2021 TỪ KHÓA FPGA Thiết kế phần cứng Xử lý ảnh Tích chập hai chiều PYNQ Python * TĨM TẮT Tích chập hai chiều phép tốn quan trọng sử dụng phổ biến lĩnh vực xử lý hình ảnh mạng nơ-ron tích chập Trong báo này, thiết kế thực thi mơ-đun phần cứng thực tính tích chập hai chiều để ứng dụng xử lý hình ảnh tốc độ cao Mơ-đun tích chập hai chiều phát triển ngôn ngữ mô tả phần cứng VHDL, tổng hợp board phát triển PYNQ-Z2 hãng Xilinx, đóng gói thành thư viện phần cứng để sử dụng môi trường phát triển ứng dụng Python cho ứng dụng liên quan Các kết đánh giá thực tế phần cứng cho thấy, sử dụng mô-đun tích chập hai chiều thiết kế giúp cải thiện tốc độ thực thi lên đến lần so với thực thi phần mềm, có tiềm ứng dụng triển khai thiết kế phần cứng dựa FPGA cho ứng dụng xử lý hình ảnh, nhận dạng mẫu học sâu Email: thanghv@dut.udn.vn http://jst.tnu.edu.vn Email: jst@tnu.edu.vn TNU Journal of Science and Technology 226(02): - Giới thiệu Tích chập hai chiều (2D convolution) phép toán quan trọng sử dụng phổ biến lĩnh vực xử lý hình ảnh [1], [2], gần sử dụng phổ biến mạng nơ-ron tích chập [3] ứng dụng nhận dạng mẫu trí tuệ nhân tạo Các ứng dụng xử lý hình ảnh tốc độ cao thường đòi hỏi sử dụng phần cứng chuyên dụng cho việc thực thi tích chập hai chiều nhằm đảm bảo yêu cầu khắt khe tốc độ cao, khả cấu hình linh hoạt, thời gian chi phí thiết kế thực thi ứng dụng ngắn Trong trường hợp ứng dụng này, mảng cổng lập trình dạng trường FPGA (Field Programmable Gate Array) tảng phần cứng cho phép thực thi module gia tốc phần cứng (hardware accelerator) với hiệu cao chi phí thấp, phù hợp để thực thi khối tính tốn tích chập hai chiều ứng dụng xử lý ảnh tốc độ cao Trong năm gần đây, thiết bị phần cứng FPGA giới thiệu, số board phát triển PYNQ [4] PYNQ hỗ trợ phát triển toàn hệ thống chip SoC (System-on-Chip) với giao diện điều khiển hệ thống phần mềm phần cứng FPGA thực tồn mơi trường phát triển dựa ngơn ngữ Python, cho phép triển khai dễ dàng ứng dụng xử lý ảnh trí tuệ nhân tạo hồn tồn mơi trường Python với độ linh hoạt cao Trong báo này, thiết kế thực thi mô-đun phần cứng thực tính tích chập hai chiều board phát triển PYNQ-Z2 hãng Xilinx để ứng dụng xử lý ảnh thực thi mạng nơ-ron tích chập, biểu diễn sau: (1) Bài báo có đóng góp khoa học sau: - Thiết kế kiến trúc mơ-đun tích chập hai chiều dựa ngôn ngữ mô tả phần cứng VHDL, thiết kế tổng hợp FPGA; - Thực đánh giá hiệu mơ-đun tính tích chập hai chiều board FPGA PYNQZ2 Xilinx, việc đánh giá thực môi trường Python Bố cục báo gồm phần sau Phần giới thiệu sở lý thuyết liên quan phép tốn tích chập hai chiều board phát triển PYNQ-Z2 Phần trình bày thiết kế kiến trúc phần cứng mơ-đun tích chập hai chiều Các kết đánh giá thiết kế thiết bị Xilinx FPGA PYNQZ2 trình bày chi tiết Phần Trong phần 5, chúng tơi tóm tắt kết đạt giới thiệu hướng nghiên cứu dự định tương lai Cơ sở lý thuyết 2.1.Tích chập hai chiều Tích chập hai chiều (2D convolution) phép toán sở xử lý ảnh, sử dụng để thực phép toán lọc hai chiều Ngày nay, với đời mạng nơ-ron tích chập, phép tốn tích chập hai chiều thành phần quan trọng mạng nơ-ron tích chập, đóng góp đến 90% khối lượng tính tốn mơ hình thực thi mạng nơ-ron tích chập Tích chập hai chiều định nghĩa sau Cho ảnh đầu vào I kích thước MxN điểm ảnh mặt nạ lọc W kích thước SxS phần tử, ảnh đầu F có kích thước MxN kết phép tốn tích chập hai chiều ảnh đầu vào I mặt nạ W xác định theo công thức (1) http://jst.tnu.edu.vn Email: jst@tnu.edu.vn TNU Journal of Science and Technology 226(02): - Hình Sơ đồ khối board mạch PYNQ-Z2 [5] Hình Minh họa phép tốn tích chập hai chiều Hình trình bày ví dụ minh họa tính tích chập hai chiều ảnh đầu vào kích thước 5x5 với mặt nạ lọc 3x3 Để tính giá trị tích chập cho điểm ảnh, cửa sổ trượt (sliding window) kích thước 3x3 dùng để lựa chọn điểm ảnh cần thiết sau thực phép tốn nhân cộng tích lũy MAC (Multiply-Accumulate) mặt nạ điểm ảnh tương ứng vùng cửa sổ trượt Trong trường hợp tổng quát, ảnh đầu vào kích thước MxN mặt nạ lọc kích thước SxS số lượng phép tốn MAC cần thực MxNxSxS phép toán 2.2 Board phát triển PYNQ-Z2 FPGA Chúng sử dụng board phát triển FPGA PYNQ-Z2 [5] hãng Xilinx để thiết kế thực thi mô-đun tích chập hai chiều Board phát triển PYNQ-Z2 sản phẩm dòng sản phẩm chuyên dụng cho phát triển hệ thống chip SoC hãng Xilinx Sơ đồ khối chức PYNQ-Z2 trình bày Hình Hệ thống gồm có vi xử lý ARM-Cortex A9 lõi kép kết hợp cấu trúc FPGA cấu hình để thực mơ-đun phần cứng Bộ xử lý ARM Cortex-A9 lõi kép gọi hệ thống xử lý PS (Processing System), cấu trúc FPGA gọi mạch logic khả trình PL (Programmable Logic) Các tăng tốc phần cứng mô-đun phần cứng thường thực PL (cấu trúc FPGA) điều khiển từ hệ thống xử lý PS Để thực điều này, thiết kế phần cứng FPGA PL xem thư viện phần cứng định nghĩa overlay [5] Một overlay gọi thực thi hàm (thư viện phần cứng) từ chương trình chạy xử lý ARM-Cortex A9 khối PS để tăng tốc ứng dụng phần mềm cho ứng dụng cụ thể Một tính ưu việt board phát triển PYNQ-Z2 hỗ trợ ứng dụng với giao diện Python cho phép overlay khối PL điều khiển hoàn toàn chương trình Python chạy hệ thống xử lý PS, giúp FPGA dễ dàng sử dụng ứng dụng thị giác máy tính học máy ngày 2.3 Thiết lập thử nghiệm Trong nghiên cứu này, chúng tơi khảo sát ba cấu hình phần cứng khác mơ-đun tích chập hai chiều tương ứng với kích thước ảnh đầu vào 32x32, 64x64 128x128 điểm ảnh Mặt nạ lọc có kích thước cố định 3x3 phần tử Chúng tạo overlay Python khác tương ứng với cấu hình phần cứng chọn mô-đun thiết kế Phần mềm sử dụng Vivado Design Suite 2018.3 Webpack Edition hãng Xilinx Hình Sơ đồ khối mơ-đun tích chập hai chiều http://jst.tnu.edu.vn Email: jst@tnu.edu.vn TNU Journal of Science and Technology Hình Mơ-đun tích chập hai chiều 226(02): - Hình Kiến trúc khối muladdtree 3x3 Định dạng số thực dấu phẩy tĩnh (fixed-point number) lựa chọn để thực phép tính số học mơ-đun tích chập hai chiều định dạng số đảm bảo độ xác tính tốn giúp tiết kiệm tài ngun phần cứng [6] Chúng sử dụng thư viện thực phép toán dấu phẩy tĩnh (fixed-point number) ngôn ngữ VHDL David Bishop [7] Định dạng số dấu phẩy động Q1.7 với tốn hạng có độ dài bit sử dụng báo Thiết kế mơ-đun tích chập hai chiều Trong phần này, chúng tơi thiết kế thực mơ-đun tích hợp hai chiều cho FPGA hãng Xilinx Hình trình bày sơ đồ khối chung mơ-đun thiết kế, gồm ba mô-đun con: đệm đầu vào (Input Buffer), tích chập hai chiều (2D Convolution) đệm đầu (Output Buffer) 3.1 Bộ đệm đầu vào đệm đầu Bộ đệm đầu vào đệm đầu thiết kế để hỗ trợ giao tiếp mô-đun hệ thống xử lý Bộ đệm đầu vào sử dụng để lưu trữ tất điểm ảnh đến trước gửi chúng đến mơ-đun tích chập Tương tự, đệm đầu lưu trữ tất kết tính tốn thơng báo cho hệ thống xử lý tín hiệu “result_rdy” 3.2 Tích chập hai chiều Mơ-đun tích chập - trung tâm thiết kế - bao gồm hai khối: đệm hàng (Line Buffer) khối muladdtree 3x3 thực chức nhân cộng tích lũy MAC, trình bày Hình Line Buffer đọc dịng hình ảnh đầu vào I(m, n) để trích xuất chín điểm ảnh lân cận cần thiết cho việc tính tốn tích chập điểm ảnh đầu vào Chín điểm ảnh đầu từ Line Buffer ký hiệu xmyn (trong m, n = 0, 1, 2) cho phép tính tích chập chu kỳ xung nhịp Khối muladdtree 3x3 (xem Hình 5) thực phép nhân cộng tích lũy giá trị trọng số wmn mặt nạ điểm ảnh lân cận xmyn từ Line Buffer, cung cấp kết tính tích chập cho điểm ảnh đầu vào I(m,n) chu kỳ xung nhịp 3.3 Tổng hợp phần cứng cho mơ-đun tích chập hai chiều FPGA Bảng trình bày kết tổng hợp phần cứng mơ-đun tích chập hai chiều board FPGA PYNQ-Z2 tương ứng với kích thước ảnh đầu vào 32x32, 64x64 128x128 điểm ảnh http://jst.tnu.edu.vn Email: jst@tnu.edu.vn TNU Journal of Science and Technology 226(02): - Bảng Kết tổng hợp phần cứng mơ-đun tích chập hai chiều board PYNQ-Z2 Tài nguyên LUT LUTRAM FF Tổng số 53200 17400 106400 32x32 1463 570 486 Sử dụng 64x64 3517 2218 559 128x128 11766 8786 795 3.4 Đóng gói mơ-đun thành Python Overlay Sau tổng hợp mơ-đun tích chập hai chiều, chúng tơi thực việc đóng gói mơ-đun thiết kế thành Python Overlay để sử dụng mơ-đun thư viện phần cứng môi trường Python cho ứng dụng liên quan Giao diện AXI (Advanced eXtensible Interface) sử dụng để giao tiếp mô-đun FPGA vi xử lý ARM-Cortex A9 Kết bàn luận Trong mục này, chúng tơi trình bày kết đánh giá hiệu mơ-đun tích chập hai chiều thiết kế thực thi board phát triển PYNQ-Z2 Hiệu mô-đun đánh giá thông qua hai thông số: tốc độ đỉnh lý thuyết tốc độ hoạt động thực tế mô-đun Tốc độ đỉnh (peak performance) xác định thơng qua mô hoạt động mô-đun phần mềm Vivado với giả thiết việc truyền liệu mô-đun nhớ hệ thống vi xử lý hoàn tồn khơng có trễ Trong đó, tốc độ hoạt động (sustained performance) mô-đun cung cấp số đo thực tế giá trị hiệu cho toàn hệ thống có tính đến thời gian trễ truyền liệu mơ-đun nhớ ngồi Bảng trình bày tốc độ đỉnh mơ-đun thiết kế Mơ-đun thiết kế kết nối hồn tồn theo cấu trúc đường ống (fully-pipeline) mô-đun bên nên mơ-đun cung cấp kết tính tốn tích chập điểm ảnh chu kỳ máy Số chu kỳ cần thiết để tính tích chập cho ảnh đầu vào ba cấu hình mơ-đun 1034, 4106 16394 chu kỳ xung clock, tương ứng với cấu hình 32x32, 64x64 128x128 điểm ảnh Có thể thấy ba cấu hình có số chu kỳ trễ (overhead latency) 10 chu kỳ xung clock Tốc độ khung hình tối đa tần số xung nhịp 100 MHz 96759, 24358 6100 ảnh/giây cho kích thước ảnh đầu vào 32x32, 64x64 128x128 điểm ảnh Bảng Đánh giá tốc độ đỉnh (peak performance) mơ-đun tích chập hai chiều thiết kế Thông số Số điểm ảnh Số chu thi (chu kỳ) Thời gian thực thi tần số 100MHz (micro-giây) Tốc độ khung hình tối đa giây tần số 100MHz (ảnh/giây) 32x32 1024 1034 10.34 96759 Cấu hình 64x64 128x128 4096 16384 4106 16394 41.06 163.94 24358 6100 Bảng so sánh thời gian thực thi tích chập sử dụng mơ-đun phần cứng FPGA với phiên thực thi tích chập phần mềm chạy xử lý ARM-Cortex A9 board phát triển PYNQ-Z2 Có thể thấy, tốc độ hoạt động thực tế mô-đun thấp tốc độ đỉnh lý tưởng, suy giảm hiệu trễ truyền liệu mô-đun nhớ Kết thử nghiệm Bảng cho thấy tốc độ thực thi phép tốn tích chập hai chiều mô-đun phần cứng cải thiện đáng kể so với tốc độ thực thi phần mềm, với hệ số tăng tốc 7,8 lần, 8,6 lần 9,0 lần tương ứng cho ba cấu hình kích thước ảnh đầu vào Bảng So sánh thời gian thực thi tích chập dùng mơ-đun phần cứng với dùng phần mềm Thông số 32x32 0,033 0,260 7,8 Thời gian thực thi mô-đun phần cứng (giây) Thời gian thực thi phần mềm (giây) Độ tăng tốc (lần) http://jst.tnu.edu.vn Cấu hình 64x64 0,124 1,061 8,6 128x128 0,487 4,364 9,0 Email: jst@tnu.edu.vn TNU Journal of Science and Technology 226(02): - Kết luận Trong báo này, chúng tơi trình bày q trình thiết kế, thực thi đánh giá mơ-đun tính tích chập hai chiều board phát triển FPGA PYNQ-Z2 hãng Xilinx Ba cấu hình khác phát triển đóng gói thành Python overlay tương ứng với kích thước hình ảnh đầu vào 32x32, 64x64 128x128 Các overlay gọi thực thi hàm từ chương trình Python chạy board phát triển PYNQ-Z2 Các kết thực thi phần cứng cho thấy sử dụng mô-đun thiết kế cải thiện tốc độ thực thi phép tốn tích chập đến lần so với thực thi phần mềm Qua nghiên cứu này, tin mô-đun phần cứng thiết kế có tiềm ứng dụng triển khai thiết kế phần cứng dựa FPGA cho ứng dụng xử lý ảnh học sâu Để nâng cao hiệu ứng dụng tính tích chập board phát triển PYNQ-Z2, giao diện truyền thông mô-đun hệ thống xử lý dựa ARM cần cải thiện cách sử dụng giao diện AXI-Stream với điều khiển truy cập nhớ trực tiếp Một hướng nghiên cứu khác sử dụng mô-đun tích chập hai chiều để thực thi mạng nơ-ron tích chập tảng PYNQ Những hướng nghiên cứu dành cho tương lai Lời cảm ơn Nghiên cứu tài trợ Quỹ Phát triển khoa học công nghệ Đại học Đà Nẵng đề tài có mã số B2019-DN02-61 TÀI LIỆU THAM KHẢO/ REFERENCES [1] C Ben, Implementation of 2D Convolution on FPGA, GPU and CPU, Imperial College Report, 2006 [2] P Stefania, M Lanuzza, P Corsonello, and G Cocorullo, "A high-performance fully reconfigurable FPGA-based 2D convolution processor," Microprocessors and Microsystems, vol 29, no 8-9, pp 381-391, 2005 [3] Y Chen, T Krishna, J S Emer, and V Sze, "Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks," IEEE Journal of Solid-State Circuits, vol 52, no 1, pp 127-138, Jan 2017 [4] TUL Technology Unlimited, “TUL PYNQ™-Z2 board” [Online] Available: http://www.tul.com.tw/ProductsPYNQ-Z2.html [Accessed Nov 21, 2020] [5] PYNQ Overlay Tutorials [Online] Available: https://pynq.readthedocs.io/en/v2.5.1/pynq_overlays.html [Accessed Nov 21, 2020] [6] Bishop, and W David, "VHDL-2008 support library", 2011 [Online] Available: https://github.com/FPHDL/fphdl [Accessed Nov 21, 2020] [7] S Gupta, A Agrawal, K Gopalakrishnan, and P Narayanan, “Deep learning with limited numerical precision,” in Proceedings of the 32nd International Conference on International Conference on Machine Learning, 2015, vol 37 (ICML’15) JMLR.org, pp 1737-1746 http://jst.tnu.edu.vn Email: jst@tnu.edu.vn ... cần thực MxNxSxS phép toán 2.2 Board phát triển PYNQ-Z2 FPGA Chúng sử dụng board phát triển FPGA PYNQ-Z2 [5] hãng Xilinx để thi? ??t kế thực thi mơ-đun tích chập hai chiều Board phát triển PYNQ-Z2. .. khoa học sau: - Thi? ??t kế kiến trúc mơ-đun tích chập hai chiều dựa ngơn ngữ mơ tả phần cứng VHDL, thi? ??t kế tổng hợp FPGA; - Thực đánh giá hiệu mơ-đun tính tích chập hai chiều board FPGA PYNQZ2 Xilinx,... 2.1 .Tích chập hai chiều Tích chập hai chiều (2D convolution) phép toán sở xử lý ảnh, sử dụng để thực phép toán lọc hai chiều Ngày nay, với đời mạng nơ-ron tích chập, phép tốn tích chập hai chiều

Ngày đăng: 07/05/2021, 13:31

Tài liệu cùng người dùng

Tài liệu liên quan