MỞ ĐẦU Trong trí tuệ nhân tạo (AT), máy hoc là một lĩnh vực phô biến, nơi các hệ thống từ dir liệu được cung cấp mà có thể học hỏi và cải thiện hiệu suất xử lý công việc theo thời gian. Nhờ đó, nó được áp dụng rộng rãi trong nhiều lĩnh vực như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên, truyền thông giải trí và nhiều lĩnh vực khác. Trong máy học, mạng thần kinh tích chập (Convolutional Neural Network — CNN) là một loại kiến trúc mạng thần kinh phé biến và hiệu quả trong việc xử lý hình ảnh và video. CNN được ứng dụng rộng rãi trong nhiều công việc cụ thé đòi hỏi khả năng nhận diện và phân loại như nhận diện khuôn mặt, nhận diện hình ảnh, phát hiện và phân loại đối tượng.
Chính vì lý do đó, nó đã trở thành một công cụ không thê thiếu. Tuy nhiên, để đáp ứng nhu cầu ngày càng cao và mở rộng phạm vi ứng dụng cũng như nâng cao hiệu suất làm việc, CNN cần phải cải thiện một số khía cạnh như tốc độ nhận diện, hiệu quả tính toán, khả năng tổng quát hóa, giảm thiểu tài nguyên và năng lượng. Nhìn thấy được những khía cạnh cần cải thiện của mang CNN, em nhận thấy vấn đề tốc độ nhận diện và hiệu quả tính toán là hai vấn đề mà CNN cần được giải quyết vì mô hình CNN ngày càng phức tạp và yêu cầu xử lý với lượng đữ liệu lớn. Bên cạnh đó, hiện này máy gia tốc được ứng dụng rất nhiều trong việc tăng tốc và nâng cao hiệu suất tính toán.
Và máy gia tốc CGRA tăng tốc cho các thuật toán mật mã học là một kiến trúc phần cứng thú vị nhờ vào tính linh hoạt và khả năng tính toán song song. Do đó, việc tìm hiểu và cấu hình lại CGRA để tăng tốc phép nhân tích chập từ đó cải thiện tốc độ xử lý của mô hình nhận diện ảnh CNN một trong những mục tiêu quan trọng mà đề tài khoá luận này hướng tới. Dat van dé Trong thé giới ma khoa học kỹ thuật ngày càng phát triển, máy học đã trở thành một lĩnh vực ngày càng phô biến và quan trọng. Trong đó mạng thần kinh tích chập (CNN) nỗi bật với khả năng xử lý và nhận diện hình ảnh cũng như giọng nói một cách chính xác, phục vụ cho nhu cầu xử lý dữ liệu khổng lồ trong thời gian ngắn.
Khái niệm này được đưa ra lần đầu tiên trong những năm 1980 bởi Kunihiko Fukushima, Sei Miyake, Takayuki Ito [1], mô phỏng cách thức hoạt động của tế bào thần kinh trong não bộ. Từ đó, CNN đã không ngừng phát triển, với các mô hình ngày càng tiên tiến hơn như Lenet (1997) [2] có 60 nghìn trọng số, AlexNet (2012) với 60 triệu trọng số, VGGNet (2014) 138 triệu trọng số, và GoogleNet (2014) với 4 triệu trọng số. Một kiến trúc CNN tiêu biểu bao gồm bốn phần chính: Convolution layer, Pooling layer, Activation ReLU (Rectified Linear Unit) và Fully Connected layer được ghép nối với nhau theo cấu trúc nhiều tang. Trong đó phép nhân tích chập đóng vai trò trung tâm, tác động đến hiệu suất tông thé của mạng.
Do đó, việc nghiên cứu và tôi ưu hóa phép nhân tích chập trong CNN sẽ là trọng tâm của công trình này, hướng đên việc cải thiện đáng kê hiệu suat của các mô hình. Z RK oK 2 A gre 1. Tinh cap thiệt của dé tài Dé cải thiện khả năng tính toán và nâng cao hiệu suất của CNN, máy gia tốc phan cứng thường được sử dụng. Các máy gia tốc này thường được thiết kế dé thực hiện tăng tốc các hoạt động tính toán cụ thé như phép nhân ma trận, hiệu quả hơn so với các CPU đa năng về tốc độ tính toán và hiệu quả năng lượng.
Trong số các kiến trúc phần cứng, mảng phần cứng có khả năng tái cấu hình cấu trúc thô (Coarse Grained Reconfigurable Array- CGRA [3]) là một kiến trúc đầy hứa hẹn vì khả năng linh hoạt và hiệu quả của nó trong việc phát triển các bộ tăng tốc phần cứng tuỳ chỉnh. Máy gia tốc được thiết kế để nâng cao hiệu suất và hiệu quả năng lượng của CNN băng cách tăng tốc hoạt động nhân tích chập đòi hỏi nhiều tính toán. Hướng nghiên cứu đề tài Đầu tiên, em sẽ tiến hành tìm hiểu các lý thuyết liên quan về nhận diện ảnh trong mạng thần kinh tích chập (CNN) cụ thé là mô hình Lenet-5. Tiếp theo, em sẽ tiền hành hiện thực mô hình nhận diện ảnh CNN Lenet-5 bằng ngôn ngữ C với tat cả các hàm của mô hình đêu sẽ được việt thủ công.
Tiếp theo, em sẽ tìm hiểu về lý thuyết, cách hoạt động và sử dụng của Mang có khả năng tái cầu trúc cấu hình thô (CGRA) dựa trên máy gia tốc CGRA tăng tốc các thuật toán mật mã học cho hai thuật toán mã hoá khối đối xứng AES-128 và SM4, từ đó cấu hình lại CGRA dé hỗ trợ tính toán nhân tích chập cho mạng CNN. CGRA sau khi được cấu hình lại để thực hiện tính toán nhân tích chập sẽ tiễn hành tính toán, thực hiện tính toán xong sẽ đưa kết quả lên lại phần mềm đề thực hiện các layer tiếp theo. Phần cứng sẽ được thiết kế sử dụng ngôn ngữ mô tả phần cứng Verilog và sau đó sẽ tiến hành thiết kế và mô phỏng trên phan mềm Vivado. Cuối cùng sẽ tiến hành đánh giá tốc độ xử lý và tài nguyên phần cứng bằng phần mềm Vivado Design Suit.
Mục tiêu đề tài Trong khoá luận này, đầu tiên, em sẽ nghiên cứu, phân tích và tìm hiểu lý thuyết về nhận diện ảnh trong mạng thần kinh tích chập. Thứ hai, em sẽ nghiên cứu, phân tích, tìm hiểu lý thuyết và cách sử dụng của mảng phần cứng có khả năng tái cấu hình cấu trúc thô (CGRA) dựa trên may gia tốc CGRA cho các thuật toán mật mã học. Thứ ba, em sẽ nghiên cứu, phân tích và cấu hình lại CGRA dé có thé thực hiện tăng tốc phép nhân tích chập. Tiếp theo, em sẽ hoàn thành được hệ thống chạy mô phỏng trên phan mềm Vivado dé kiêm chứng chức năng của khối IP.
Sau cùng, em sẽ hiện thực phần cứng lên FPGA. Mục tiêu của đề tài là nghiên cứu, phân tích và tìm hiểu cách sử dụng máy gia tốc CGRA tăng tốc các thuật toán mật mã học mà nhóm nghiên cứu trước đã hoàn thành. Sau đó cấu hình lại CGRA dé có thể hỗ trợ tính toán phép nhân tích chập. Convolutional Neural Networks - Mạng thần kinh tích chập Mang thần kinh tích chập (CNN) là một bước tiến đáng ké trong lĩnh vực trí tuệ nhân tạo, nó được lay cam hứng từ co chế xử lý ảnh của não bộ con người.
Khi chúng ta nhìn thấy một vật thé, võ não thi giác sẽ lần lượt kích hoạt nhiều lớp tế bào thần kinh, mỗi lớp chuyên trách phát hiện các đặc trưng ngày càng phức tạp của đối tượng, từ hình dạng, góc cạnh, màu sắc cho đến kết câu cuối cùng là nhận diện hình ảnh đầy đủ. Kiến trúc của CNN bao gồm lớp đầu vào, lớp đầu ra và các lớp ân nămở giữa. Các lớp an bao gồm: lớp tích chập (Convolution Layer), lớp tổng hợp (Pooling Layer), lớp kết nối đầy đủ (Fully Connected Layer) và các hàm kích hoạt (Activation Functions). Mỗi lớp trong mạng thần kinh tích chập đều có nhiệm vụ và chức năng riêng của mình.
Lớp tích chập sẽ thực hiện nhân tích chập dữ liệu đầu vào với bộ lọc được cung cấp sau quá trình Training, từ đó trích xuất các đặc trưng của ảnh. Lớp tổng hợp đóng vai trò giảm kích thước của dữ liệu đầu vào giúp giảm đữ liệu tính toán và kiểm soát quá trình học của mô hình. Các lớp kết nối đầy đủ phân tích các đặc trưng bằng cách kết nói mỗi neuron của lớp này được kết nối với mỗi neural của lớp trước đó, sau đó sẽ đưa ra quyết định cuối cùng. Các hàm kích hoạt như ReLU và Softmax cung cấp tính phi tuyến tính và khả năng phân loại.
Một số mang CNN tiêu biểu như: Lenet (1990), AlexNet (2012), VGGNet (2014), GoogleLeNet (2014), ResNet (2015),. fc 3 fc_4 Fully-Connected Fully-Connected Neural Network Neural Network Conv_1 Conv 2 ReLU activation Convolution Convolution Ì _ (S x 5) kernel Max-Pooling (Sx5]kernel Max-Pooling (with valid padding (2x2) valid padding (2x2) @ dfonoui} ®© ®o ®© ®:1 INPUT n1 channels n1 channels n2 channels n2 channels : @ 9 (28 x28 x 1) (24x24 x n1) (12 x 12 x n1) (8x8xn2) (4x4xn2) ® OUTPUT Hình 2.1 Kiến trúc mạng CNN Lenet-5. Convolution Layer — Lớp tích chập: Lớp tích chập là lớp diễn ra quá trình nhân tích chập giữa Input và các Kernel, kết qua cho ra là các Future map. Đối với Input, nếu là ảnh đen trang thì Input đầu vào sẽ là một mảng hai chiều với kích thước (chiều cao ảnh) x (chiều rộng ảnh), nếu là ảnh màu thì Input đầu vào sẽ là một mảng ba chiều với kích thước (chiều cao ảnh) x (chiều rộng ảnh) x (chiều sâu ảnh).
Đối với Kernel, Kernel sẽ có kích thước tuy vào từng mô hình, và có chiều sâu sẽ bằng chiều sâu của Input. Các kích thước của kernel phổ biến là 3x3, 5x5 hoặc 7x7. Quá trình nhân tích chập sẽ diễn ra như sau: Đầu tiên, ma trận Kernel được di chuyền qua từng vị trí trên ma trận của Input đầu vào, theo chiều từ trái sang phải và từ trên xuống dưới. Tại mỗi vị trí của ma trận Kernel được đưa tới, ta thực hiện nhân từng phan tử của Kernel với từng phan tử ở vị trí trong ứng trong vùng ma trận Input được ma trận Kernel đưa tới.
Cuối cùng, tổng tất cả các giá trị sau khi được nhân tương ứng sẽ là kết quả tại vị trí tương ứng cho ma trận đầu ra. Trong quá trình nhân tích chập ta cần chú ý đến hai thông số là Stride và Padding. Kernel sẽ trượt qua ảnh và thực hiện nhân tích chập, với mỗi lần trượt và hoàn thành nhân tích chập sẽ cho ra một kết quả tại vị trí đầu ra Output. Số bước ở mỗi lần trượt được gọi là Stride, thông thường ở lớp tích chập Stride sẽ bằng 1.
Padding sẽ có hai loại là Same Padding và Valid Padding. Đối với Same Padding, sẽ tạo ra các giá trỊ bằng 0 ở rìa của ma trận đầu ra, sao cho ma trận đầu ra sẽ có kích thước không đổi so với ma trận đầu vào. Đối với Valid Padding, ma trận đầu ra sẽ có kích thước là (Input_size — Kernel_size + 1), với Input_ size là kích thước ma trận đầu vào, Kernel_ size là kích thước của ma trận Kernel.2 là ví dụ về nhân tích chap hai với ma trận đầu vào có kích thước 5x5, Kernel có kích thước là 3x3, Stride là 1 và Valid Padding.