Convolutional Neural Network CNNs – Mạng nơ-ron tích chập là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác ca
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VI ỆN ĐIỆN TỬ - VI ỄN THÔNG
~~~~~~~ ~~~~~~
–
BÁO CÁO Thiết k , t ng h p IC s và h ế ổ ợ ố ệ thố ng s ố
Trần Thị Thơm 20153633 Điện tử 10 K60
Trang 2LỜI MỞ ĐẦU Với s phát tri n vô cùng m nh m c a công ngh thông tin nói chung và kự ể ạ ẽ ủ ệ ỹ thuật điện tử viễn thông nói riêng, nhu cầu dịch vụ điện tử viễn thông ngày càng phát triển nhanh, m nh m Vì v y t o áp lạ ẽ ậ đã ạ ực yêu c u thi t kầ ế ế ngày càng cao đố ới v i vi c ch t o ệ ế ạmạch s vố ới những kích thước nhỏ ọ, g n mà vẫn đáp ứng đượ chức năngc yêu c u s dầ ử ụng
mà nh ng mữ ạch có kích thướ ớc l n không thể đáp ứng và phù hợp được v i nh ng nhu ớ ữcầu s d ng hi n nay Môn hử ụ ệ ọc “Thiế ế ổt k , t ng h p IC s và hợ ố ệ thống số” giúp chúng em hiểu thêm v ngôn ngề ữ Verilog mà từ ngôn ng này, chúng em có thữ ể thiết kế được những mạch tích h p ợ nhỏ ng n mà vọ ẫn đáp ứng đươc những yêu cầu đặt ra
Chúng em xin g i l i ử ờ cám ơn chân thành nhấ ớt t i thầy Võ Lê Cường đã giúp đỡchúng em trong su t th i gian h c quá trình làm bài t p lố ờ ọ ậ ớn môn “Thiế ế ổt k , t ng h p IC ợ
số và hệ thống số” Do kiến th c còn h n h p và thứ ạ ẹ ời gian tìm hi u không nhi u, thi u ể ề ếkinh nghi m th c t , nên bài t p l n không tránh kh i nh ng thi u sót Chúng em rệ ự ế ậ ớ ỏ ữ ế ất mong nhận được sự góp ý của thầy để làm bài t p lậ ớn được hoàn thiệt hơn
Chúng em xin chân thành cám ơn!
Trang 3PHÂN CHIA CÔNG VI C Ệ
Tìm mã ngu n, source code pulic ồ CNN Verilog
Kiểm tra tính khả thi code tìm được M nhạ , Thơm
Hiểu code verilog toàn b ộ chương trình Thơm, Mạnh Mười Hiểu đường điều khiển, tổng quan hệ thống Mạnh
Hiểu đường đi dữ liệu, chi tiết các khối Thơm
Tìm hi u khể ối TOP, đưa khối Top xu ng kit ố
Viết mô t h th ng ả ệ ố Mạnh Viết mô t chi ti t các kh i ả ế ố Thơm Sửa báo cáo Mười, Mạnh,
Thơm
Trang 4MỤC L C Ụ Contents
LỜI M Ở ĐẦU 2
NỘI DUNG 6
Chương 1: Tổng Quan 6
1 Lí do chọn đề tài: 6
2 Khái quát v Deep-Learning, CNNề 6
2.1 Deep-learning là gì? 6
2.1 CNN là gì? 7
Chương 2: Tìm Hiểu Cách Thực Thi CNN trên FPGA 14
1 Yêu c u bài toánầ 14
2 Thi t k ế ế kiế n trúc CNN 15
3 Tri ển khai phần cứng đưa lên FPGA 17
3.1 Mô t h ả ệ thống 18
3.2 Mô t ả chức năng củ ừ a t ng kh ối 19
4 Mô phỏng từng khố 31 i KẾT LUẬN 40
TÀI LI U THAM KHỆ ẢO 41
Trang 5DANH M C HÌNH Ụ ẢNH
Hình 1 Cửa sổ trượt (Sliding Windows) convolutional 7 Hình 2 Ví dụ minh họa về ạ m ng th n kinh CNN 8 ầHình 3 Ví dụ minh họa về ạ m ng th n kinh CNN 9 ầHình 4 Ví d minh hụ ọa tạo ra feature map 11 Hình 1 5 Ví dụ minh họa đơn giản hóa thông tin đầu ra m ng th n kinh CNN 12 ạ ầHình 6 Cơ chế ho t động của hàm max-pooling 12 ạHình 7 Mô hình đầu ra gồm các neuron mạng CNN 13 Hình 8 Kiến trúc m ng thạ ần kinh đơn giản VGG [4] 16 Hình 9 Kiến trúc m ng th n kinh Low Weights Digit Detector (LWDD) [1 ] 17 ạ ầHình 10 Sơ đồ triển khai trên ph n cứng 18 ầHình 11 Kết qu mô ph ng kh i Conv 36ả ỏ ố
Trang 6NỘI DUNG Chương 1: Tổng Quan
1 Lí do chọn đề tài:
Ngày nay, mạng nơ-ron nhân tạo (Neural Network - NN) là mô hình xử lý thông tinđược mô phỏng dựatrênhoạt động của hệ thống thần kinh của sinh vật, bao gồm sốlượng lớncácNơron được gắn kết để xử lý thông tin Kết hợp với các kĩ thuật học sâu
(Deep Learning - DL), mạng nơ-ron đang trở thành một công cụ rất mạnh mẽ mang lại hiệu
quả tốt nhất cho nhiều bài toán khó như nhận dạng ảnh, giọng nói hay xử lý ngôn ngữ tự nhiên Các mạng nơ-ron trong các hệ thống hiện nay là xử lý nối tiếp, nó phải trả giá về mặt thời gian tính toán, xử lý trên hệ thống PC - server và yêu cầu phần cứng chuyên dụng (các khối xử lý đồ họa: Graphics Processing Units - GPU Mà ) phần cứng như vậy không phải lúc nào cũng sẵn có trong các thiết bị di động, nên có một nhu cầu cấp thiết đưa các mạng nơ ron nhân tạo xuống các thiết bị di dộng.-
Các thiết bị di động, hệ nhúng có tài nguyên và phần cứng hạn chế, yêu cầu số lượng tham số giảm và số lượng các phép tính toán số học tương đối nhỏ Tuy nhiên, người ta mới chỉ thực hiện đưa mạng nơ ron xuống thiết bị di động ở mức phần mềm và-các phép tính toán sử dụng dấu phẩy động Việc sử dụng mạng nơ-ron trên thiết bị di động mà không tối ưu có thể không đáp ứng đủ hiệu suất khi ứng dụng cần xử lý tốc độ cao Ví dụ: rong xử lý video thời gian thực (30 khung hình mỗi giây) T
Để cải thiện tốc độ ủa m c ạng nơ-ron nhân tạo, người ta có xu hướng chuyển việc tính toán từ phần m m sang ph n c ng (ề ầ ứ trên FPGA) và s d ng nh d ng d u ph y ử ụ đị ạ ấ ẩ tĩnh thay cho định dạng dấu phẩy động đểtăng tốc độ tính toán [1] Các công ty như Microsoft và Baidu Trung Quốc đã thu hút sự chú ý đối với việc sử dụng FPGA trong các ứng dụng giống như họ ập sâu cách đây vài năm Họ đã chuyểc t n các thuật toán học tập sâu vào FPGA và tuyên b r ng FPGA cung c p s c i thiố ằ ấ ự ả ện đáng kể ề ốc độ ở v t mức tiêu thụ điện năng so với GPU Việc phát tri n ng dể ứ ụng liên quan đến h c t p sâu cho ọ ậFPGA v n còn ẫ ở giai đoạn đầu và các công ty lớn như Microsoft có khả năng sử ụ d ng GPU cho các mô hình đào tạo sau đó nhúng vào FPGA để tạo ra sản phẩm
Trong chương trình học môn học “Thiết kế, tổng hợp IC số và hệ thống số”, chúng
em xin chọn đề tài: Th c thi CNN trên FPGA ự
2 Khái quát v Deep-Learning, CNN ề
2.1 Deep -learning là gì?
Deep-learning là m t ph m trù nh cộ ạ ỏ ủa học máy (machine learning), deep-learning tập trung gi i quy t các vả ế ấn đề liên quan đến m ng th n kinh nhân t o nh m nâng c p các ạ ầ ạ ằ ấcông nghệ như nhận di n gi ng nói, t m nhìn mát tính và x lý ngôn ng t nhệ ọ ầ ử ữ ự iên Cái tên Deep Learning ra đời v i mớ ục đích nhấn m nh các Hidden layers c a Neural ạ ủ
Trang 7Network Có thể hi u Deep Learning chính là Neural Network v i nhi u Hidden layers ể ớ ềDeep-learning đang trở thành một trong những lĩnh vực hot nhất trong khoa học máy tính Chỉ trong vài năm deep-learning đã thúc đẩy ti n bế ộ trong đa dạng các lĩnh vực như nhận thứ ự ậc s v t (object perception), dịch tự động (machine translation), nh n di n giậ ệ ọng nói,
Deep-learning là thuật toán được xây d ng d a trên nhi u lự ự ề ớp Neural mà đầu ra của lớp trước là đầu vào c a l p sau, vi c h c (learning) c a các Neural chính là tìm ra ủ ớ ệ ọ ủcác tr ng s (weight) và các tham s (bias) thích họ ố ố ợp để kích ho t (active) các Neural cho ạcác tín hiệu qua hay không
2.2 CNN (Convolutional Neural Network) là gì ?
Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay như hệ thống xử lý ảnh lớn như Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh Để tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc nhận dạng (detection), chúng ta hãy cùng tìm hiểu về thuật toán này
a) Convolutional là gì ?
Là một cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình dưới:
Hình 1 Cửa sổ trượt (Sliding Windows) convolutional
Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy
ra những thông tin chính xác nhất mà không cần chọn các feature Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa Ma trận có kích thước 5x5
Trang 8và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột Convolution hay tích chập là nhân từng phần tử trong ma trận 3
Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong ví dụ trên là 3x3 Convolution hay tích chập là nhân từng phần
tử bên trong ma trận 3x3 với ma trận bên trái Kết quả được một ma trận gọi là Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5x5 bên trái
b) Cấu trúc của mạng CNN
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution
từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp
kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu) Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh
Hình 2 Ví d minh hụ ọa về ạ m ng th n kinh CNN ầ
Trang 9Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối tượng
này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giống như cách con người nhận biết các vật thể trong tự nhiên
Mạng CNN sử dụng 3 ý tưởng cơ bản:
Các trường tiế nhậ p n c c bụ ộ (local receptive field)
Trọng s chia số ẻ (shared weights)
Tổng hợp (pooling)
c) Trường tiếp nhận cục b (local receptive field) ộ
Đầu vào của mạng CNN là một ảnh Ví dụ như ảnh có kích thước 28x28 thì tương ứng đầu vào là một ma trận có 28x28 và giá trị mỗi điểm ảnh là một ô trong ma trận Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5x5 tương ứng (28-5 + 1) 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn
sẽ học một bias Mỗi một vùng 5x5 đấy gọi là một trường tiếp nhận cục bộ
Hình 3 Ví d minh hụ ọa về ạ m ng th n kinh CNN ầ
Trang 10Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau:
Tạo neuron ra ẩn đầu tiên trong lớp 1 ẩn
Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2
Đối với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một feature map là shared bias
Trang 11Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map Tuy , nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map
Hình 4 Ví d minh hụ ọa tạo ra feature map Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn
ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp
d) Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào Chúng ta gọi việc map từ input layer sang hidden layer là một feature map Vậy mối quan hệ giữa số lượng Feature map với số lượng tham số là gì?
Chúng ta th y m i fearture map c n 25 = 5x5 shared weight và 1 shared bias ấ ỗ ầ Như vậy mỗi feature map c n 5x5+1 = 26 tham sầ ố Như vậy n u có 10 feature map thì có ế10x26 = 260 tham s Chúng ta xét l i nố ạ ếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng
ta có 28x28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn Như vậy ta cần 28x28x30 shared weight và 30 shared bias T ng s tham s là 28x28x30+30 tham s l n ổ ố ố ố ớhơn nhiều so với CNN Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng số lượng tham
số chứ chúng ta không so sánh được trực tiếp vì 2 mô hình khác nhau Nhưng điều chắc
chắn là n u mô hình có sế ố lượng tham số ít hơn thì nó sẽ ạy nhanh hơn ch
Tóm lại, một convolutional layer bao gồm các feature map khác nhau Mỗi một feature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhất của trọng số chia
sẻ là giảm tối đa số lượng tham số trong mạng CNN
Trang 12Hình 6 Cơ chế hoạt động của hàm max-pooling Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất Ngoài Max Pooling còn có L2 Pooling
Trang 13Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neuron với số lượng tùy bài toán
Hình 7 Mô hình đầu ra gồm các neuron mạng CNN
Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer) Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra
f) Cách chọn tham số cho CNN
Số các convolution layer: càng nhi u các convolution layer thì performance càng ềđược cải thi n Sau khoảng 3 hoặc 4 layer, các ệ tác động được giảm một cách đáng kể Filter size: thường filter theo size 5x5 hoặc 3x3
Pooling size: thường là 2x2 hoặc 4x4 cho ảnh đầu vào lớn
Cách cu i cùng là th c hi n nhi u l n viố ự ệ ề ầ ệc train test để chọn ra được param tốt nhất
Trang 14Chương 2: Tìm Hiểu Cách Thực Thi CNN trên FPGA
1 Yêu cầ u bài toán
Trong nội dung b o v môn hả ệ ọc, nhóm chúng em đề xu t tìm hi u ấ ể đề tài: “Thiế ết k
và th c thi CNN trên FPGA s d ng ngôn ngự ử ụ ữ Verilog” ớ, v i tính toán s d ng d u phử ụ ấ ẩy tĩnh cho phép đạt hiệu suất cao, chính xác để có thể triển khai trên phần mềm, cụ thể ở đây là “Ứng dụng cho nhận dạng chữ số viết tay thời gian thực” Do tối giản số lượng tham số, nó đã giúp tránh được các vấn đề ề băng thông bộ nhớ Phương pháp được đề vxuất có thể thực hi n trên m t FPGA rệ ộ ất cơ bản, nhưng cũng có thể ở r m ộng để ử ụ s d ng trên các FPGA có số lượng l n các c ng logic T t c mã ngu n, tài li u ph c v cho ớ ổ ấ ả ồ ệ ụ ụnghiên cứu được tham kh o [1] ả ở
Giải pháp cho vấn đề nhận d ng ch vi t tay nhạ ữ ế ận được hình nh t máy nh trong ả ừ ả
thời gian thực, hiển ị kth ết quả trên màn hình, tốc độ nh n d ng ch s t i thi u phậ ạ ữ ố ố ể ải vượt quá 30 FPS, nghĩa là một mạng thần kinh có thể xử lý một hình ảnh duy nhất trong 33ms trên phần c ng (FPGA) ứ
Nhóm chúng em s d ng kit DE0-Nano[2ử ụ ] với những lý do sau:
Intel (Altera) FPGA được cài đặt trên bo mạch này, được sản xuất hàng loạt, giá thành r ẻ
Cyclone IV FPGA có hiệu năng khá thấp, số lượng cổng logic ít, có thể đưa ra
so sánh hiệu suất với các lo i GPU hiạ ện đại hiện nay
DE0-Nano kết n i t t vố ố ới các thiế ịt b ngoại vi như máy nh, màn hình, ả Kit có 32MB Ram, có thể được sử ụng để lưu trữ trọ d ng s c a m ng ố ủ ạ
Bộ dữ liệu s d ng ử ụ để train cho bài toán là b dộ ữ liệu MNIST [3] được s d ng ử ụrộng rãi trong lĩnh vực computer vision:
Hình ảnh MNIST là ch tữ ối sáng trên nề ốn t i
Kích thước hình ảnh là 28x28 pixel
Hình ảnh rõ nét, không có nhi u ễ
Vì v y dậ ữ liệu đầu vào c a mủ ạng sau khi đưa xuống th nghi m s là hình nh t ử ệ ẽ ả ừmáy ảnh được giảm kích thước xuống 28x28 pixel và được chuyển đổ ề ải v nh xám theo công th c: ứ
BW = (8 ∗ G + 5 ∗ R + 3 B)/16 ∗ (1)
Trang 152 Thi t kế ế kiế n trúc CNN
Mạng được xây dựng với kích thước đầu vào nhỏ, giảm dần từ lớp này sang lớp khác và số lượng b lộ ọc tăng lên Ở cuối m ng, m t t p hạ ộ ậ ợp các đặc điểm được hình thành và đưa vào bộ phân loại (classification layer), các nowrron đầu ra cho thấy khả năng hình ảnh sẽ thuộc về lớp nào cụ thể Để xây dựng kiến trúc mạng, bộ quy tắc sau đây được đề xuất nhằm giảm thiểu tổng trọng số lưu trữ, sử dụng tính toán dấu phẩy tĩnh (fixed-point):
Giảm thi u sể ố lượng các l p kết nối đầy đủ (fully connected layers) ớ
Giảm số lượng bộ l c củọ a từng l p chập nhưng không làm giảm hiệu suất phân ớloại
Không s d ng bi n sai lử ụ ế ệch (bias), điều này r t quan tr ng khi chuy n t dấ ọ ể ừ ấu phảy động (floating-point) sang dấu phẩy tĩnh (fixed-point)
Sử d ng hàm kích ho t (activation ụ ạ ), như RELU, Tanh, sigmoid
Trước khi đưa mạng nơ-ron xuống phần cứng, phần huấn luyện (training) được chuẩn b và th c hi n trên ph n mị ự ệ ầ ềm để ểm tra và lưu trọ ki ng s Mô hình mố ạng nơ-ron được sử d ng là mô hình mạng Low Weights Digit Detector (LWDD) ụ được sửa đổi (modification) dựa trên mô hình m ng VGG [4ạ ] C ụ thể như sau:
Đầu tiên, LWDD được loại bỏ các lớp kết nối (fully connected layers) và bi n ếsai lệch (bias)
Sau đó, lớp GlobalMaxPooling được thêm vào kiến trúc mạng thay vì lớp GlobalAvgPooling, hiệu qu c a các lả ủ ớp này như nhau nhưng phần c ng thì s ứ ựphức tạp c a GlobalMaxPooling giủ ảm đi đáng kể
Những thay đổi trên không dẫn đến giảm hiệu suất của mạng nơ-ron mà cho phép giảm s ố lượng tr ng s tọ ố ừ 25000 đến x p xấ ỉ 4500 và đủ để lưu trữ trong FPGA
Trang 16Hình 8 Kiến trúc m ng thạ ần kinh đơn giản VGG [4]
Trang 17Hình 9 Kiến trúc m ng th n kinh ạ ầ Low Weights Digit Detector (LWDD) [1 ]
3 Triển khai ph ần cứng đưa lên FPGA
Hình ảnh được đưa vào mạng nơ-ron để nhận dạng, trước đó, cần chuyển đổi hình
ảnh về nh xám vả ới kích thước 28x28 pixel Việc tri n khai ể trên phần cứng của mạng nơron được trình bày như trong sơ đồ Hình 10
Trang 18-Hình 10 Sơ đồ tri n khai trên ph n c ng ể ầ ứMọi th trong mứ ạng nơ-ron được điều khi n bể ởi mô-dun TOP và các tham s cố ủa các l p m ng Khi tri n khai trên ph n c ng, không ph i t t c các l p c a mớ ạ ể ầ ứ ả ấ ả ớ ủ ạng nơ-ron thử nghiệm đều được s d ng, m t s lử ụ ộ ố ớp đã được thay th , ví dế ụ như không có lớp ZeroPadding, thay vào đó là mô-đun phát hiện c nh hình nh trung gian, cho phép giạ ả ảm mức tiêu t b nh Lụ ộ ớ ớp GlobalMaxPooling được thay th bế ằng cách đưa lớp vào lớp convolution có chức năng GlobalMaxPooling
3.1 Mô tả ệ thống h
Hệ thống nh n ậ ảnh đầu vào sau đó được lưu trong kh i database Khố ối database
chứa các dữ liệu như trọng s , dố ữ liệu điểm ảnh, địa chỉ lưu trữ Các dữ liệu này được truyền vào trong khối RAM controller, nơi thực hiện điều khiển đưa dữ liệu vào RAM module theo các đị ỉ ữ ệu điể ả ọ ố tương ứ Dữ liệu trong RAM
module sẽ đượ c khối Control module ập theo đị ỉ ủ ữ ệ ậ ậ
li
ịđiể ả ự ệ ỗ ố Sau quá trình thi t l p dế ậ ữ ệu được hoàn tất, hệ thống s ẽ thực hiện các bước tính toán theo kiến trúc m ng LWDD [1] ạKhi tính các l p convolution, dớ ữ liệu từ RAM module thông qua Control module
được đưa đến khối Convolution layers module Khối này tiếp tục gọi tới các hàm border
trong khối Border control module và ậ trong khố Convolution blocks để i
Trang 19thực hi n tính toán ệ ế ả ữ ệu điể ả ới được đẩ ạ
Khi tính các l p maxpooling, dớ ữ liệu từ RAM module được đưa tới khối
MaxPooling thông qua Control module Các phép so sánh trong lớp maxpooling được
ự ệ ố ế ả sau khi tính toán cũng được đưa lại trong RAM đểlưu trữ
Khối Dense layers module thực hi n tính toán trên l p dense Khệ ớ ối này cũng cần các hàm tích chập do đó gọi đến khối Convolution blocks K t quế ả đầu ra là k t qu ế ảphân lo i cuạ ối cùng được khối Control module đưa tới khối Module for result
Trang 20B ngả đầu vào:
Tên đầu vào Kiểu
dữ u liệ thước (bit) Kích Chức năng Ghi chú
we Wire 1 Cho phép ghi d u vào ữ liệ
address_p Wire 13 Địa ch c dữ liệu ra khỏi ỉ đọ
database clk
Gửi địa chỉ ghi d ữ liệu điểm ảnh và tr ng s vào database ọ ố
(address=firstaddr+i) và nhận d ữ liệu điểm ảnh và tr ng s t kh i database ọ ố ừ ố Đẩy dữ liệu điểm ảnh(pixel) và tr ng s vào RAM ọ ố
Nhận tín hiệu điều khi n t TOP module ể ừ