CHƯƠNG I. GIGI THIỆU TONG QUAN DE TÀI CHUONG 2. CƠ SỞ LÝ THUYET CHƯƠNG 3. THIET KE HE THONG 13 CHUONG 4.
THIET KE CHI TIẾT 14 4.1 Thiết kế tổng quan 14 4.2 Thiết kế chỉ tiết 17 4. Output Layer CHƯƠNG 5. MÔ PHONG, TONG HOP VÀ ĐÁNH GIA KET QUA 35 5.1 M6 phỏng pre-synthesis 35 5. Mô phỏng post-synthesis 48 5.4 _ Đánh giá kết qua 51 CHƯƠNG 6.1 Phát hiện ký tự “X” trong Bang chữ cái 55 6.
Nhận diện các số 0-9 trong MNIST 58 CHƯƠNG 7. KET LUẬN VÀ HƯỚNG PHAT TRIEN ĐÈ TÀI 60 7.2 _ Khó khăn gặp phải 60 7.3 Hướng phát triển 61 TÀI LIỆU THAM KHẢO 62 DANH MỤC HÌNH VẼ Hình 2.1: Cấu trúc mạng nơ ron 4 layer Hình 2.2: Mô hình hệ thống mạng no ron Hình 2.3: Mô hình 4-layer với tham số Hình 2.4: Truyền ngược bằng cách sử dụng hàm Cost function Hình 2.5: Quy trình cho mạng noron và back-propagation Hình 3.1: Thiết kế tổng quan Hình 4.1: Sơ đồ khối mạch mạng nơ ron Hình 4.2: Input Layer Hình 4.5: Pipeline Register Hình 4.6: Hidden Layer 0 và 1 Hình 4.7: Multiply and accumulate circuit ForwardMaccum Hình 4.8: Multiply and accumulate circuit BackwardMaccum Hình 4.9: Activation function circuit Hinh 4.10: Error back propagation circuit Hinh 4.11: Load / bias circuit Hinh 4.12: Output Layer Hinh 5.1: Quy trình mô phỏng và cách đánh giá Hinh 5.2: Sơ đồ khối mạng nơ ron Testbench Hinh 5.7: Valid signal and Ready signal (learning mode).8: Valid signal and Ready signal (inference mode / normal mode).9: Valid signal and Ready signal (inference mode / burst mode).10: Pipeline hệ thống Hình 5.11: Pipeline ForwardMaccum Hình 5.12: Kết qua mô phỏng post-synthesis 1 48 Hình 5.13: Kết quả mô phỏng post-synthesis 2 49 Hình 5.14: Thiết kế của nhóm Bi Hình 5.15: Thiết kế của đề tài [15] 51 Hình 6.1: Hình biểu điễn chữ cái alphabet 9x9 55 Hình 6.2: Hình chữ số 0 viết tay 58 Hình 6.3: Hình chữ viết tay sau khi đã được chuyền sang ma trận 58 Hình 6.4: Tài nguyên và độ trễ của mạch 59 Hình 6.5: Năng lượng sử dụng của mạch 59 Hình 7.1: Mô hình hệ thống sử dụng thuật toán YOLO lên mang CNN [16] 61 DANH MỤC BANG Bảng 2.1: Mô ta chức năng của từng ký hiệu Bảng 4.1: Mô tả tín hiệu khối Input Layer 17 Bảng 4.2: Mô tả tín hiệu khối Broadcaster 18 Bảng 4.3: Mô tả tín hiệu khối Hidden Layer 21 Bảng 4.4: Mô tả tín hiệu khối Forward Maccum của Hidden Layer Bảng 4.5: Mô tả tín hiệu khối Backward Maccum 25 Bảng 4.6: Mô tả tín hiệu khối Neuron (ReLU) của Hidden Layer 26 Bảng 4.7: Mô tả tín hiệu khối Delta của Hidden Layer 28 Bảng 4.8: Mô tả tín hiệu khối Bias Weight của Hidden Layer 31 Bảng 4.9: Mô tả tín hiệu khối Output Layer 33 Bảng 4.10: Mô tả tín hiệu khối ForwardMaccum của Output Layer Bảng 4.11: Mô tả tín hiệu khối Neuron của Output Layer 33 Bảng 4.12: Mô tả tín hiệu khối Delta của Output Layer 33 Bảng 4.13: Mô tả tín hiệu khối BiasWeight của Output Layer 34 Bảng 5.1: Một số trường hợp thử nghiệm trong chế độ TEST / không có BURST.2: Kết quả tổng hợp logic 44 Bảng 5.3: Một số trường hợp Test case post-synthesis 50 Bảng 5.4: Kết quả sai số 52 Bảng 5.5: Tài nguyên sử dụng 53 Bang 6.1: Kết qua Training chữ "X" 56 Bảng 6.2: Kết quả phát hiện chữ "X" 57 DANH MỤC TU VIET TAT Các từ viết tắt Các từ viết đầy đủ CNN Convolutional Neural Network NI Number of neurons in the input layer NHO Number of neurons in hidden layer 0 NHI Number of neurons in hidden layer 1 NO Number of neurons in the output layer WV Bit width of neuron output value TÓM TẮT KHÓA LUẬN Trong khoá luận này, nhóm đề xuất kiến trúc thiết kế mạng nơ ron tích chập trên FPGA. Trong đó, mạng sử dụng trọng số đã được huấn luyện bằng chính chức năng Backward Function của mạch để nạp vào hệ thống. Kiến trúc mạng nơ ron tích chập có thể thay đổi được các thông số đầu vào từ đó có thể điều chỉnh luôn cả phần cứng tùy thuộc vào nhu cầu của mỗi bài toán, và sau đó tự động tạo mã Verilog HDL cho mạng đó.
Cuối cùng, mang sẽ được tổng hợp và nạp trên Virtex7 FPGA board. Bên trong kiến trúc, nhóm sử dụng kiểu dữ liệu là số nguyên. Thiết kế của nhóm đã thử nghiệm trên một thiết kế mạng bốn lớp, trên tập dữ liệu chữ sé viết tay MNIST. Kết quả sẽ được đánh giá theo hai tiêu chí: ¢ Tinh chính xác của thuật toán: Kết quả sẽ được đánh giá dựa vào kết quả tính toán của mạch (hardware) và so sánh với kết quả dựa trên mô hình cơ sở lý thuyết (software).
¢ Tai nguyên phan cứng: Việc đánh giá các thông số này sẽ được thực hiện trên phần mêm tool vivado của Xilinx. MỞ ĐÀU Hiện nay, các mạng nơ ron tích chập đang được sử dụng rộng rãi trong các ứng dụng liên quan đến thị giác máy tính, AI,. Da số các mạng nơ ron tích chập đều được thiết kế để triển khai trên CPU, GPU và Server. Đối với dữ liệu thu thập từ camera, các ứng dụng thường sẽ được triển khai theo mô hình xử lý tập trung tại Server, từ đó, gây ra các trường hợp tắc nghẽn Server nếu dữ liệu cần được xử lý cùng lúc quá lớn.
Ngoài ra, quá trình truyền dữ liệu từ Client sang Server và ngược lại khiến cho dữ liệu không đáp ứng được thời gian thực. Do đó, dé khắc phục những nhược điểm đó, nhóm mong muốn hiện thực mạng nơ ron tích chập trên FPGA, và xem nó như một end-device, dữ liệu đưa vào và trả về ngay tại Client, không thông qua quá trình truyền dữ liệu nào khác. Hiện nay, các phương pháp đã được nghiên cứu liên quan đến đề tài thường chỉ triển khai một phần của mạng nơ ron tích chập. Chính vì vậy, mục tiêu của khoá luận được đề ra là thiết kế mạng nơ ron tích chập có khả năng tăng tốc tính toán, sử dụng kiểu dữ liệu số nguyên và hiện thực đầy đủ các lớp cơ bản của mạng nơ ron tích chập.
Các phần tiếp theo của khóa luận sẽ được tô chức như sau: © Chương | trình bày về tông quan đề tài, tính cấp thiết của dé tài cũng như là nghiên cứu nồi bậc liên quan đến đề tài của nhóm. © Chương 2 giới thiệu cơ bản về cơ sở lý thuyết của mạng no ron tích chập cũng như là các thành phần bên trong nó. © Chương 3 đưa ra thiết kế tổng quan của hệ thống, mô tả cơ bản về cách hệ thống hoạt động. © - Chương 4 tập trung đi sâu vào thiết kế chỉ tiết các thành phan trong thiết kế hệ thống.
© _ Chương 5 cho biết quy trình dé chạy kết quả mô phỏng của mạch, kết quả tổng hợp logic và đánh giá kết quả đề tài dựa trên sự so sánh với 1 vài nghiên cứu khác. Chương6 liệt kê một vài ứng dụng mà nhóm đã thực hiện trong quá trình làm thực hiện đề tài. Chương 7 tông kết, đưa ra kết luận, những khó khăn gặp phải và hướng phát triển tiếp theo của đề tài. GIỚI THIỆU TONG QUAN DE TÀI Trong những năm gan đây, mạng no ron tích chập (CNNs) đã đạt được những thành tưu to lớn trong các ứng dụng thị giác máy tính như phân loại hình ảnh [1], phát hiện đối tượng [2] và nhận diện gương mặt [3].
CNNs đã áp dung chủ yếu trên ảnh 2D dé tự động trích xuất các đặc điểm không gian và đã nâng cao đáng kê độ chính xác sự phân loại hình ảnh. CNNs yêu cầu 1 lượng lớn bộ nhớ vì có hàng triệu tham số trong 1 CNNs điền hình. Trong khi đó, việc tính toán CNN với hơn hàng tỉ phép toán để chỉ để suy luận một đầu vào. Ví dụ, VGG16 [4], một CNN 2D nhận diện hình ảnh với 16-layer cần khoảng 31 GOp/s (Giga Operation per second) để nhận diện.
Do đó, các chương trình tính toán CNN thường được chạy trên 1 server bao gồm rất nhiều CPU va GPU. Hơn nữa, với Deeplearning framework tương thích bao gồm như Caffe [5], Theano [6], and TensorFlow [7]. việc training va testing trên CNNs trở nên hiệu quả hon trên những nền tang nay. Trong khi những CPU và GPU là những nền tảng quan trọng đối với CNNs, việc tối ưu bộ tính tính toán đề có hiệu suất tốt hơn và năng lượng tiêu hao tốt hơn là vấn đề cần được quan tâm.
Ví dụ, trường hợp hệ thống nhúng cho xe ô tô điều khién tự động và rô bot, năng liệu tiêu hao ít là rất cần thiết dé có thé áp dụng được CNN. Nhờ những lợi thế về hiệu suất cao, tiết kiệm năng lượng và sự linh hoạt FPGA đã được xem như là nền tang dé tăng tốc CNNs. Như đã báo cáo trong các cuộc khảo sát gần đây [8,9], nhiều bộ tăng tốc CNN dựa trên FPGA đã được sử dụng cho CNN 2D và nhiều công cụ hỗ trợ cho việc ánh xạ CNN 2D trên FPGA đã được làm ra. Hướng tiếp cận nay đã chứng minh rằng nó chỉ hiệu quả với các tích chập 11x11, 7x7 và kém hiệu quả hơn đối với tích chập 3x3, 1x1.
Một số thiết kế bộ gia tốc tinh toán tích chập 2D bằng cách giảm số lượng tính toán như thuật toán Winograd [11], và thiết kế [12] còn mở rộng ra đối với tích chập 3D. Tuy nhiên, thuật toán Winograd rất nhạy cảm đối với các kernel tích chập. Đối với các kernel tích chập với kích thước khác nhau thì cần sử dụng những ma trận khác nhau. Do đó thuật toán Winograd hoàn toàn phù hợp mô hình CNN với các kernel có —<$—$ 4 kích thước tích chập đồng nhất như VGG trong khi nó lại không phù hợp với mô hình CNN với các kernel có nhiều kích thước tích chập như AlexNet.
Một cách tiếp cận khác là ánh xạ CNN vào các ma trận như việc triển khai CPU và GPU [13.14] áp dụng cách tiếp cận này vào trong thiết kế bộ gia tốc tính toán CNN trên FPGA sử dụng OpenCL framework. Mối quan tâm chính ở đây là nó tạo nên độ sao chép các thuộc tính đầu vào có thé dẫn đến sự kém hiệu quả trong việc lưu trữ cũng như việc truy cập các kiến trúc bộ nhớ phức tạp. Đặc biệt, Weight Matrix và feature Matrix đều được mở rộng ra bởi kernel 3D convolution, điều này làm tăng đáng kể yêu cầu bộ nhớ. Một layer tích chập với 1 lượng lớn kênh đầu vào sẽ được chia thành nhiều layer tích chập với kênh đầu vào ít hơn.
Thách thức ở đây là làm sao đề tính toán các phép nhân ma trận hiệu quả trên FPGA. Sự khác nhau với tính toán dựa trên OpenCL framework [13,14], việc ứng dụng mảng 2D MAC cho việc nhân các ma trận.