1. Trang chủ
  2. » Luận Văn - Báo Cáo

HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA

104 127 5

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 104
Dung lượng 3,12 MB

Nội dung

Nhận dạng chữ số viết tay với FPGA. Bài toán nhận diện chữ số viết tay được xuất hiện trên nhiều bài báo khi lĩnh vực học sâu mới bùng nổ. Nó được sử dụng để so sánh mức độ thành công của học sâu so với các thuật toán thị giác máy tính thông thường (xử lý ảnh), và cũng là cơ sở để phát triển các mạng tích chập phức tạp.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG BÁO CÁO CUỐI KỲ TRÍ TUỆ NHÂN TẠO VÀ ỨNG DỤNG Đề tài: HANDWRITTEN DIGIT RECONITION ON FPGA Nhóm thực hiện: Sinh viên thực hiện: Giảng viên hướng dẫn: TS VÕ LÊ CƯỜNG LỜI NÓI ĐẦU Trí tuệ nhân tạo ứng dụng nhiều lĩnh vực sống ngưởi Nó phần cách mạng công nghệ 4.0 Trong kì học 20212, chúng em tìm hiểu mơn học Trí tuệ nhân tạo ứng dụng với hướng dẫn Thầy giáo TS Võ Lê Cường anh chị bạn TA Nhờ tham gia mơn học, sau kì học, chúng em trang bị cho khái niệm trí tuệ nhân tạo, tác nhân mơi trường trí tuệ nhân tạo Đặc biệt chúng em tìm hiểu thuật tốn Tìm kiếm, thuật tốn Machine learning hồi quy tuyến tính, định, hồi quy logic, SVM, vv Điều giúp cho chúng em hiểu rõ Trí tuệ nhân tạo nào, thuật tốn Machine learning huấn luyện mơ hình học máy Song song với trình tìm hiểu lý thuyết, chúng em hướng dẫn làm tập lớn mơn học Nhóm chúng em chọn đề tài: “Handwritten Digit Recognition on FPGA”, qua giúp chúng em tìm hiểu lĩnh vực học sâu thị giác máy tính, đặc biệt thực phần cứng Trong trình học tập, với hướng dẫn nhiệt tình Thầy anh chị, bạn TA, chúng em tích lũy kiến thức sở Deep learning, huấn luyện model phần mềm triển khai ngôn ngữ miêu tả phần cứng verilog Dù chúng em cố gắng thực thời gian cuối thực đề tài vào lúc dịch Covid -19 diễn biến phức tạp nên chúng em thực Kit DE-0 kế hoạch ban đầu kì học chúng em tiếp cận với kiến thức huấn luyện mơ hình, lập trình verilog nên gặp nhiều khó khăn, chắn có nhiều chỗ chưa hồn chỉnh, chúng em mong nhận đánh giá, góp ý Thầy anh để chúng em tích lũy thêm kiến thức, trao dồi kinh nghiệm để phục vụ cho công việc tới Chúng em xin gửi đến Thầy TS Võ Lê Cường, anh Phạm Văn Mười, anh Đặng Sơn Tùng, anh Nguyễn Mạnh Tuân, bạn Nguyễn Duy Tường anh chị khác lời cảm ơn chân thành tham gia hướng dẫn hỗ trợ chúng em lớp trình làm tập lớn MỤC LỤC PHÂN CHIA CÔNG VIỆC i DANH MỤC HÌNH VẼ ii DANH MỤC BẢNG BIỂU .iv DANH MỤC TỪ VIẾT TẮT vi TÓM TẮT BÁO CÁO vii CHƯƠNG TỔNG QUAN ĐỀ TÀI .1 1.1 Giới thiệu chung 1.1.1 Lý chọn đề tài 1.1.2 Ý nghĩa đề tài 1.1.3 Kế hoạch chi tiết .3 1.2 Yêu cầu phần cứng đề tài 1.2.1 FPGA board 1.2.2 Camera 1.2.3 LCD 1.3 Các kiến thức Deeplearning 1.3.1 Tìm hiểu chung mạng tích chập 1.3.2 Lớp tích chập (CONV) 1.3.3 Lớp Pooling (POOL) 10 1.3.4 Lớp Fully connected .10 1.4 Các kiến thức lập trình Verilog 10 1.4.1 Định nghĩa 10 1.4.2 Cấu trúc lập trình verilog 11 1.4.3 Các toán tử verilog 13 1.4.4 Verilog number .13 1.4.5 Testbench 14 1.4.6 So sánh Wire reg 14 CHƯƠNG HUẤN LUYỆN MẠNG TRÊN PHẦN MỀM .16 2.1 Nén mạng CNN 16 2.1.1 Tại cần nén .16 2.1.2 Các phương pháp nén 16 2.2 Xây dựng đánh giá kiến trúc mạng CNN .17 2.2.1 Kiến trúc model CNN sử dụng .17 2.2.2 Đánh giá .19 2.2.3 Kết 19 2.3 Tối ưu trọng số 20 2.3.1 Phương pháp giảm kích thước trọng số 20 2.3.2 Kết đánh giá 21 CHƯƠNG TRIỂN KHAI MẠNG TRÊN PHẦN CỨNG 22 3.1 Mô tả hệ thống 22 3.2 Mô tả chức khối 24 3.2.1 Khối RAM 24 3.2.2 Khối database .27 3.2.3 Khối tích chập 30 3.2.4 Khối border 32 3.2.5 Khối addressRAM 35 3.2.6 Khối Maxpooling 37 3.2.7 Khối Dense 39 3.2.8 Khối Result 42 3.2.9 Khối MemmoryWork 43 3.2.10 Khối conv_TOP 45 3.2.11 TOP Layer 48 3.3 Thực kiểm tra liệu 52 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 55 PHÂN CHIA CÔNG VIỆC DANH MỤC HÌNH Hình 1 Các đầu việc kết đạt Hình Board De0-Nano Hình Board FPGA thiết bị ngoại viCamera .4 Hình Camera OV7670 Hình Sơ đồ chân TFT 3,2” ILI9341 .6 Hình Kiến trúc chung mạng CNN Hình Hoạt động lớp tích chập Hình Input output mạng CNN Hình Fully connected layer 10 Hình 10 Triển khai mạch số với Verilog 11 Hình 11 Cấu trúc Module Verilog 11 Hình 12 Các toán tử verilog 13 Hình 13 Ví dụ mơ testbench 14 Y Hình Kiến trúc Model CNN LWDD 18 Hình 2 Các tham số mạng .19 Hình Loss model 20 Hình Độ xác model .20 Hình Sơ đồ khối hệ thống 22 Hình Sơ đồ triển khai phần cứng 23 Hình 3 Khối RAM 24 Hình Kết testbench khối RAM .27 Hình Khối Database 28 Hình Kết testbench khối Database .29 Hình Khối tích chập 30 Hình Kết testbench khối tích chập 32 Hình Khối Border .33 Hình 10 Kết testbench khối Border 34 Hình 11 Khối addressRAM 35 Hình 12 Kết testbench khối addressRAM .36 Hình 13 Khối Maxpooling .37 Hình 14 Kết testbench khối Maxpooling 39 Hình 15 Khối Dense 39 Hình 16 Kết testbench khối Dense 41 Hình 17 Khối Result 42 Hình 18 Kết testbench khối Result 43 Hình 19 Khối Memmory work .44 Hình 20 Kết mơ khối con_TOP 48 Hình 21 Khối TOP 48 Hình 22 Kết testbench khối TOP step 1-2-3 50 Hình 23 Kết testbench khối TOP step 3-4-5 50 Hình 24 Kết testbench khối TOP step 7-8-9 51 Hình 25 Kết testbench khối TOP step 10 -11-12-13 51 Hình 26 Kết testbench khối TOP step 14-15 51 Hình 27 Kết testbench khối TOP step 16 52 DANH MỤC BẢNG BI Bảng 1 Ý nghĩa chân giao tiếp Camera OV76702 Bảng Ý nghĩa chân giao tiếp LCD Y Bảng Bảng tín hiệu đầu vào khối RAM 24 Bảng Bảng tín hiệu đầu khối RAM 26 Bảng 3 Bảng đánh giá khối RAM 26 Bảng Bảng tín hiệu đầu vào khối Database 28 Bảng Bảng tín hiệu đầu khối Database 28 Bảng Bảng đánh giá khối database .29 Bảng Bảng tín hiệu đầu vào khối tích chập 30 Bảng Bảng tín hiệu đầu khối tích chập 31 Bảng Bảng đánh giá khối tích chập .31 Bảng 10 Bảng tín hiệu đầu vào khối Border 33 Bảng 11 Bảng tín hiệu đầu khối Border .33 Bảng 12 Bảng đánh giá khối border .34 Bảng 13 Bảng tín hiệu đầu vào khối addressRAM 35 Bảng 14 Bảng tín hiệu đầu khối addressRAM 35 Bảng 15 Bảng đánh giá khối addressRAM 36 Bảng 16 Bảng tín hiệu đầu vào khối Maxpooling 37 Bảng 17 Bảng tín hiệu đầu khối pooling 37 Bảng 18 Bảng đánh giá khối Maxpooling 38 Bảng 19 Bảng tín hiệu đầu vào khối Dense 39 Bảng 20 Bảng tín hiệu đầu khối Dense 40 Bảng 21 Bảng tín hiệu đầu vào khối Result 42 Bảng 22 Bảng tín hiệu đầu khối Result 42 Bảng 23 Bảng tín hiệu đầu vào khối Memmory work 44 Bảng 24 Bảng tín hiệu đầu khối Memmory work 45 Bảng 25 Bảng tín hiệu đầu vào khối convTOP 45 Bảng 26 Bảng tín hiệu đầu khối convTOP 47 Bảng 27 Bảng tín hiệu đầo vào khối TOP 48 Bảng 28 Bảng tín hiệu đầu khối TOP 49 storage[251] = 11'b10100000000; // [0.625] storage[252] = 11'b10011100000; // [0.609375] storage[253] = 11'b10011100000; // [0.609375] storage[254] = 11'b10001111000; // [0.55859375] storage[255] = 11'b01011111000; // [0.37109375] storage[256] = 11'b01001000000; // [0.28125] storage[257] = 11'b01101101000; // [0.42578125] storage[258] = 11'b10011011000; // [0.60546875] storage[259] = 11'b10100111000; // [0.65234375] storage[260] = 11'b10101101000; // [0.67578125] storage[261] = 11'b10110000000; // [0.6875] storage[262] = 11'b10110000000; // [0.6875] storage[263] = 11'b10110000000; // [0.6875] storage[264] = 11'b10110000000; // [0.6875] storage[265] = 11'b10110000000; // [0.6875] storage[266] = 11'b10101110000; // [0.6796875] storage[267] = 11'b10101000000; // [0.65625] storage[268] = 11'b10001100000; // [0.546875] storage[269] = 11'b01100110000; // [0.3984375] storage[270] = 11'b01011100000; // [0.359375] storage[271] = 11'b10000110000; // [0.5234375] storage[272] = 11'b10011111000; // [0.62109375] storage[273] = 11'b10101000000; // [0.65625] storage[274] = 11'b10101010000; // [0.6640625] storage[275] = 11'b10101001000; // [0.66015625] storage[276] = 11'b10101000000; // [0.65625] storage[277] = 11'b10100110000; // [0.6484375] storage[278] = 11'b10100010000; // [0.6328125] storage[279] = 11'b10100001000; // [0.62890625] storage[280] = 11'b10011100000; // [0.609375] storage[281] = 11'b10011010000; // [0.6015625] storage[282] = 11'b10000110000; // [0.5234375] storage[283] = 11'b01010011000; // [0.32421875] storage[284] = 11'b01001101000; // [0.30078125] storage[285] = 11'b01111010000; // [0.4765625] storage[286] = 11'b10100000000; // [0.625] storage[287] = 11'b10101000000; // [0.65625] 78 79 storage[288] = 11'b10101110000; // [0.6796875] storage[289] = 11'b10101111000; // [0.68359375] storage[290] = 11'b10110000000; // [0.6875] storage[291] = 11'b10110000000; // [0.6875] storage[292] = 11'b10110001000; // [0.69140625] storage[293] = 11'b10110000000; // [0.6875] storage[294] = 11'b10101110000; // [0.6796875] storage[295] = 11'b10101001000; // [0.66015625] storage[296] = 11'b10001111000; // [0.55859375] storage[297] = 11'b01101000000; // [0.40625] storage[298] = 11'b01010111000; // [0.33984375] storage[299] = 11'b10000010000; // [0.5078125] storage[300] = 11'b10011110000; // [0.6171875] storage[301] = 11'b10100111000; // [0.65234375] storage[302] = 11'b10101010000; // [0.6640625] storage[303] = 11'b10101001000; // [0.66015625] storage[304] = 11'b10100111000; // [0.65234375] storage[305] = 11'b10100110000; // [0.6484375] storage[306] = 11'b10100010000; // [0.6328125] storage[307] = 11'b10100000000; // [0.625] storage[308] = 11'b10011101000; // [0.61328125] storage[309] = 11'b10011000000; // [0.59375] storage[310] = 11'b01111100000; // [0.484375] storage[311] = 11'b01001100000; // [0.296875] storage[312] = 11'b01010011000; // [0.32421875] storage[313] = 11'b10001001000; // [0.53515625] storage[314] = 11'b10100010000; // [0.6328125] storage[315] = 11'b10101010000; // [0.6640625] storage[316] = 11'b10101101000; // [0.67578125] storage[317] = 11'b10101110000; // [0.6796875] storage[318] = 11'b10101110000; // [0.6796875] storage[319] = 11'b10110000000; // [0.6875] storage[320] = 11'b10110000000; // [0.6875] storage[321] = 11'b10110000000; // [0.6875] storage[322] = 11'b10101110000; // [0.6796875] storage[323] = 11'b10101001000; // [0.66015625] storage[324] = 11'b10001110000; // [0.5546875] storage[325] = 11'b01101000000; // [0.40625] storage[326] = 11'b01010110000; // [0.3359375] storage[327] = 11'b10000000000; // [0.5] storage[328] = 11'b10011101000; // [0.61328125] storage[329] = 11'b10100110000; // [0.6484375] storage[330] = 11'b10101000000; // [0.65625] storage[331] = 11'b10101000000; // [0.65625] storage[332] = 11'b10100111000; // [0.65234375] storage[333] = 11'b10100100000; // [0.640625] storage[334] = 11'b10100001000; // [0.62890625] storage[335] = 11'b10011111000; // [0.62109375] storage[336] = 11'b10011100000; // [0.609375] storage[337] = 11'b10010100000; // [0.578125] storage[338] = 11'b01101111000; // [0.43359375] storage[339] = 11'b01000111000; // [0.27734375] storage[340] = 11'b01011100000; // [0.359375] storage[341] = 11'b10001111000; // [0.55859375] storage[342] = 11'b10100100000; // [0.640625] storage[343] = 11'b10101001000; // [0.66015625] storage[344] = 11'b10101100000; // [0.671875] storage[345] = 11'b10101100000; // [0.671875] storage[346] = 11'b10101101000; // [0.67578125] storage[347] = 11'b10101110000; // [0.6796875] storage[348] = 11'b10101110000; // [0.6796875] storage[349] = 11'b10101110000; // [0.6796875] storage[350] = 11'b10101011000; // [0.66796875] storage[351] = 11'b10100110000; // [0.6484375] storage[352] = 11'b10001101000; // [0.55078125] storage[353] = 11'b01100110000; // [0.3984375] storage[354] = 11'b01010101000; // [0.33203125] storage[355] = 11'b10000010000; // [0.5078125] storage[356] = 11'b10011101000; // [0.61328125] storage[357] = 11'b10100100000; // [0.640625] storage[358] = 11'b10101000000; // [0.65625] storage[359] = 11'b10100111000; // [0.65234375] storage[360] = 11'b10100101000; // [0.64453125] storage[361] = 11'b10100011000; // [0.63671875] 80 81 storage[362] = 11'b10100001000; // [0.62890625] storage[363] = 11'b10011110000; // [0.6171875] storage[364] = 11'b10011010000; // [0.6015625] storage[365] = 11'b10010000000; // [0.5625] storage[366] = 11'b01100100000; // [0.390625] storage[367] = 11'b01000111000; // [0.27734375] storage[368] = 11'b01100110000; // [0.3984375] storage[369] = 11'b10010101000; // [0.58203125] storage[370] = 11'b10100011000; // [0.63671875] storage[371] = 11'b10101000000; // [0.65625] storage[372] = 11'b10101011000; // [0.66796875] storage[373] = 11'b10101011000; // [0.66796875] storage[374] = 11'b10101011000; // [0.66796875] storage[375] = 11'b10101100000; // [0.671875] storage[376] = 11'b10101101000; // [0.67578125] storage[377] = 11'b10101011000; // [0.66796875] storage[378] = 11'b10101001000; // [0.66015625] storage[379] = 11'b10100011000; // [0.63671875] storage[380] = 11'b10001010000; // [0.5390625] storage[381] = 11'b01100010000; // [0.3828125] storage[382] = 11'b01010111000; // [0.33984375] storage[383] = 11'b10000110000; // [0.5234375] storage[384] = 11'b10011110000; // [0.6171875] storage[385] = 11'b10100101000; // [0.64453125] storage[386] = 11'b10100101000; // [0.64453125] storage[387] = 11'b10100101000; // [0.64453125] storage[388] = 11'b10100100000; // [0.640625] storage[389] = 11'b10100010000; // [0.6328125] storage[390] = 11'b10100000000; // [0.625] storage[391] = 11'b10011110000; // [0.6171875] storage[392] = 11'b10011001000; // [0.59765625] storage[393] = 11'b10001100000; // [0.546875] storage[394] = 11'b01011111000; // [0.37109375] storage[395] = 11'b01000111000; // [0.27734375] storage[396] = 11'b01101100000; // [0.421875] storage[397] = 11'b10011000000; // [0.59375] storage[398] = 11'b10100100000; // [0.640625] storage[399] = 11'b10100111000; // [0.65234375] storage[400] = 11'b10101001000; // [0.66015625] storage[401] = 11'b10101010000; // [0.6640625] storage[402] = 11'b10101100000; // [0.671875] storage[403] = 11'b10101100000; // [0.671875] storage[404] = 11'b10101100000; // [0.671875] storage[405] = 11'b10101011000; // [0.66796875] storage[406] = 11'b10101001000; // [0.66015625] storage[407] = 11'b10011111000; // [0.62109375] storage[408] = 11'b10000000000; // [0.5] storage[409] = 11'b01010111000; // [0.33984375] storage[410] = 11'b01011010000; // [0.3515625] storage[411] = 11'b10001010000; // [0.5390625] storage[412] = 11'b10011111000; // [0.62109375] storage[413] = 11'b10100101000; // [0.64453125] storage[414] = 11'b10100101000; // [0.64453125] storage[415] = 11'b10100101000; // [0.64453125] storage[416] = 11'b10100011000; // [0.63671875] storage[417] = 11'b10100001000; // [0.62890625] storage[418] = 11'b10011111000; // [0.62109375] storage[419] = 11'b10011101000; // [0.61328125] storage[420] = 11'b10011001000; // [0.59765625] storage[421] = 11'b10001010000; // [0.5390625] storage[422] = 11'b01011111000; // [0.37109375] storage[423] = 11'b01001010000; // [0.2890625] storage[424] = 11'b01101101000; // [0.42578125] storage[425] = 11'b10011001000; // [0.59765625] storage[426] = 11'b10100011000; // [0.63671875] storage[427] = 11'b10100111000; // [0.65234375] storage[428] = 11'b10101000000; // [0.65625] storage[429] = 11'b10101001000; // [0.66015625] storage[430] = 11'b10101010000; // [0.6640625] storage[431] = 11'b10101010000; // [0.6640625] storage[432] = 11'b10101011000; // [0.66796875] storage[433] = 11'b10101011000; // [0.66796875] storage[434] = 11'b10101001000; // [0.66015625] storage[435] = 11'b10011010000; // [0.6015625] 82 83 storage[436] = 11'b01110100000; // [0.453125] storage[437] = 11'b01001100000; // [0.296875] storage[438] = 11'b01011100000; // [0.359375] storage[439] = 11'b10001101000; // [0.55078125] storage[440] = 11'b10100000000; // [0.625] storage[441] = 11'b10100100000; // [0.640625] storage[442] = 11'b10100100000; // [0.640625] storage[443] = 11'b10100100000; // [0.640625] storage[444] = 11'b10100010000; // [0.6328125] storage[445] = 11'b10100000000; // [0.625] storage[446] = 11'b10011110000; // [0.6171875] storage[447] = 11'b10011101000; // [0.61328125] storage[448] = 11'b10011000000; // [0.59375] storage[449] = 11'b10001100000; // [0.546875] storage[450] = 11'b01100100000; // [0.390625] storage[451] = 11'b01001010000; // [0.2890625] storage[452] = 11'b01101001000; // [0.41015625] storage[453] = 11'b10010100000; // [0.578125] storage[454] = 11'b10100010000; // [0.6328125] storage[455] = 11'b10100100000; // [0.640625] storage[456] = 11'b10100111000; // [0.65234375] storage[457] = 11'b10100110000; // [0.6484375] storage[458] = 11'b10100111000; // [0.65234375] storage[459] = 11'b10101010000; // [0.6640625] storage[460] = 11'b10101010000; // [0.6640625] storage[461] = 11'b10101010000; // [0.6640625] storage[462] = 11'b10100111000; // [0.65234375] storage[463] = 11'b10001111000; // [0.55859375] storage[464] = 11'b01100010000; // [0.3828125] storage[465] = 11'b01000110000; // [0.2734375] storage[466] = 11'b01100010000; // [0.3828125] storage[467] = 11'b10010000000; // [0.5625] storage[468] = 11'b10100000000; // [0.625] storage[469] = 11'b10100011000; // [0.63671875] storage[470] = 11'b10100011000; // [0.63671875] storage[471] = 11'b10100010000; // [0.6328125] storage[472] = 11'b10100000000; // [0.625] storage[473] = 11'b10011111000; // [0.62109375] storage[474] = 11'b10011110000; // [0.6171875] storage[475] = 11'b10011100000; // [0.609375] storage[476] = 11'b10011010000; // [0.6015625] storage[477] = 11'b10010001000; // [0.56640625] storage[478] = 11'b01110001000; // [0.44140625] storage[479] = 11'b01001100000; // [0.296875] storage[480] = 11'b01100110000; // [0.3984375] storage[481] = 11'b10010010000; // [0.5703125] storage[482] = 11'b10100000000; // [0.625] storage[483] = 11'b10100101000; // [0.64453125] storage[484] = 11'b10100101000; // [0.64453125] storage[485] = 11'b10100111000; // [0.65234375] storage[486] = 11'b10101000000; // [0.65625] storage[487] = 11'b10101010000; // [0.6640625] storage[488] = 11'b10101011000; // [0.66796875] storage[489] = 11'b10101001000; // [0.66015625] storage[490] = 11'b10011110000; // [0.6171875] storage[491] = 11'b01111001000; // [0.47265625] storage[492] = 11'b01001101000; // [0.30078125] storage[493] = 11'b01000100000; // [0.265625] storage[494] = 11'b01110010000; // [0.4453125] storage[495] = 11'b10011000000; // [0.59375] storage[496] = 11'b10100011000; // [0.63671875] storage[497] = 11'b10100100000; // [0.640625] storage[498] = 11'b10100101000; // [0.64453125] storage[499] = 11'b10100011000; // [0.63671875] storage[500] = 11'b10100001000; // [0.62890625] storage[501] = 11'b10011111000; // [0.62109375] storage[502] = 11'b10011110000; // [0.6171875] storage[503] = 11'b10011101000; // [0.61328125] storage[504] = 11'b10011011000; // [0.60546875] storage[505] = 11'b10010100000; // [0.578125] storage[506] = 11'b01111101000; // [0.48828125] storage[507] = 11'b01010010000; // [0.3203125] storage[508] = 11'b01100010000; // [0.3828125] storage[509] = 11'b10001110000; // [0.5546875] 84 85 storage[510] = 11'b10011111000; // [0.62109375] storage[511] = 11'b10100011000; // [0.63671875] storage[512] = 11'b10100101000; // [0.64453125] storage[513] = 11'b10100110000; // [0.6484375] storage[514] = 11'b10101000000; // [0.65625] storage[515] = 11'b10101010000; // [0.6640625] storage[516] = 11'b10101010000; // [0.6640625] storage[517] = 11'b10101000000; // [0.65625] storage[518] = 11'b10001101000; // [0.55078125] storage[519] = 11'b01011111000; // [0.37109375] storage[520] = 11'b01000000000; // [0.25] storage[521] = 11'b01001000000; // [0.28125] storage[522] = 11'b10000011000; // [0.51171875] storage[523] = 11'b10011101000; // [0.61328125] storage[524] = 11'b10100100000; // [0.640625] storage[525] = 11'b10100110000; // [0.6484375] storage[526] = 11'b10100011000; // [0.63671875] storage[527] = 11'b10100011000; // [0.63671875] storage[528] = 11'b10100001000; // [0.62890625] storage[529] = 11'b10011111000; // [0.62109375] storage[530] = 11'b10011110000; // [0.6171875] storage[531] = 11'b10011100000; // [0.609375] storage[532] = 11'b10011001000; // [0.59765625] storage[533] = 11'b10010101000; // [0.58203125] storage[534] = 11'b10000110000; // [0.5234375] storage[535] = 11'b01011110000; // [0.3671875] storage[536] = 11'b01010111000; // [0.33984375] storage[537] = 11'b10000010000; // [0.5078125] storage[538] = 11'b10011100000; // [0.609375] storage[539] = 11'b10100001000; // [0.62890625] storage[540] = 11'b10100011000; // [0.63671875] storage[541] = 11'b10100101000; // [0.64453125] storage[542] = 11'b10100110000; // [0.6484375] storage[543] = 11'b10101001000; // [0.66015625] storage[544] = 11'b10101001000; // [0.66015625] storage[545] = 11'b10011111000; // [0.62109375] storage[546] = 11'b01111100000; // [0.484375] storage[547] = 11'b01001011000; // [0.29296875] storage[548] = 11'b00111010000; // [0.2265625] storage[549] = 11'b01010010000; // [0.3203125] storage[550] = 11'b10001011000; // [0.54296875] storage[551] = 11'b10011111000; // [0.62109375] storage[552] = 11'b10100101000; // [0.64453125] storage[553] = 11'b10100011000; // [0.63671875] storage[554] = 11'b10100010000; // [0.6328125] storage[555] = 11'b10100000000; // [0.625] storage[556] = 11'b10011110000; // [0.6171875] storage[557] = 11'b10011101000; // [0.61328125] storage[558] = 11'b10011100000; // [0.609375] storage[559] = 11'b10011011000; // [0.60546875] storage[560] = 11'b10010111000; // [0.58984375] storage[561] = 11'b10010110000; // [0.5859375] storage[562] = 11'b10001101000; // [0.55078125] storage[563] = 11'b01101111000; // [0.43359375] storage[564] = 11'b01010100000; // [0.328125] storage[565] = 11'b01110010000; // [0.4453125] storage[566] = 11'b10010111000; // [0.58984375] storage[567] = 11'b10011111000; // [0.62109375] storage[568] = 11'b10100010000; // [0.6328125] storage[569] = 11'b10100011000; // [0.63671875] storage[570] = 11'b10100111000; // [0.65234375] storage[571] = 11'b10100111000; // [0.65234375] storage[572] = 11'b10101000000; // [0.65625] storage[573] = 11'b10010111000; // [0.58984375] storage[574] = 11'b01101101000; // [0.42578125] storage[575] = 11'b01000010000; // [0.2578125] storage[576] = 11'b00111010000; // [0.2265625] storage[577] = 11'b01100001000; // [0.37890625] storage[578] = 11'b10010011000; // [0.57421875] storage[579] = 11'b10100001000; // [0.62890625] storage[580] = 11'b10100101000; // [0.64453125] storage[581] = 11'b10100010000; // [0.6328125] storage[582] = 11'b10100000000; // [0.625] storage[583] = 11'b10011111000; // [0.62109375] 86 87 storage[584] = 11'b10011110000; // [0.6171875] storage[585] = 11'b10011100000; // [0.609375] storage[586] = 11'b10011010000; // [0.6015625] storage[587] = 11'b10011001000; // [0.59765625] storage[588] = 11'b10010111000; // [0.58984375] storage[589] = 11'b10010111000; // [0.58984375] storage[590] = 11'b10010011000; // [0.57421875] storage[591] = 11'b10000010000; // [0.5078125] storage[592] = 11'b01011100000; // [0.359375] storage[593] = 11'b01100011000; // [0.38671875] storage[594] = 11'b10001010000; // [0.5390625] storage[595] = 11'b10011101000; // [0.61328125] storage[596] = 11'b10100001000; // [0.62890625] storage[597] = 11'b10100011000; // [0.63671875] storage[598] = 11'b10100100000; // [0.640625] storage[599] = 11'b10100101000; // [0.64453125] storage[600] = 11'b10011111000; // [0.62109375] storage[601] = 11'b10000000000; // [0.5] storage[602] = 11'b01010010000; // [0.3203125] storage[603] = 11'b00111001000; // [0.22265625] storage[604] = 11'b01000000000; // [0.25] storage[605] = 11'b01110110000; // [0.4609375] storage[606] = 11'b10011010000; // [0.6015625] storage[607] = 11'b10100010000; // [0.6328125] storage[608] = 11'b10100011000; // [0.63671875] storage[609] = 11'b10100001000; // [0.62890625] storage[610] = 11'b10100000000; // [0.625] storage[611] = 11'b10011111000; // [0.62109375] storage[612] = 11'b10011101000; // [0.61328125] storage[613] = 11'b10011011000; // [0.60546875] storage[614] = 11'b10011001000; // [0.59765625] storage[615] = 11'b10010111000; // [0.58984375] storage[616] = 11'b10010110000; // [0.5859375] storage[617] = 11'b10010110000; // [0.5859375] storage[618] = 11'b10010110000; // [0.5859375] storage[619] = 11'b10001101000; // [0.55078125] storage[620] = 11'b01110011000; // [0.44921875] storage[621] = 11'b01010101000; // [0.33203125] storage[622] = 11'b01101110000; // [0.4296875] storage[623] = 11'b10010000000; // [0.5625] storage[624] = 11'b10011100000; // [0.609375] storage[625] = 11'b10100000000; // [0.625] storage[626] = 11'b10100000000; // [0.625] storage[627] = 11'b10011110000; // [0.6171875] storage[628] = 11'b10001000000; // [0.53125] storage[629] = 11'b01011001000; // [0.34765625] storage[630] = 11'b00111010000; // [0.2265625] storage[631] = 11'b00111010000; // [0.2265625] storage[632] = 11'b01010101000; // [0.33203125] storage[633] = 11'b10001000000; // [0.53125] storage[634] = 11'b10011100000; // [0.609375] storage[635] = 11'b10100000000; // [0.625] storage[636] = 11'b10100000000; // [0.625] storage[637] = 11'b10011111000; // [0.62109375] storage[638] = 11'b10011101000; // [0.61328125] storage[639] = 11'b10011100000; // [0.609375] storage[640] = 11'b10011010000; // [0.6015625] storage[641] = 11'b10010111000; // [0.58984375] storage[642] = 11'b10010110000; // [0.5859375] storage[643] = 11'b10010101000; // [0.58203125] storage[644] = 11'b10010100000; // [0.578125] storage[645] = 11'b10010100000; // [0.578125] storage[646] = 11'b10010110000; // [0.5859375] storage[647] = 11'b10010011000; // [0.57421875] storage[648] = 11'b10000100000; // [0.515625] storage[649] = 11'b01011100000; // [0.359375] storage[650] = 11'b01001100000; // [0.296875] storage[651] = 11'b01100000000; // [0.375] storage[652] = 11'b01111110000; // [0.4921875] storage[653] = 11'b10010001000; // [0.56640625] storage[654] = 11'b10010011000; // [0.57421875] storage[655] = 11'b10000100000; // [0.515625] storage[656] = 11'b01011111000; // [0.37109375] storage[657] = 11'b00111110000; // [0.2421875] 88 89 storage[658] = 11'b00111001000; // [0.22265625] storage[659] = 11'b01001101000; // [0.30078125] storage[660] = 11'b01111010000; // [0.4765625] storage[661] = 11'b10011000000; // [0.59375] storage[662] = 11'b10011110000; // [0.6171875] storage[663] = 11'b10011110000; // [0.6171875] storage[664] = 11'b10011110000; // [0.6171875] storage[665] = 11'b10011101000; // [0.61328125] storage[666] = 11'b10011100000; // [0.609375] storage[667] = 11'b10011010000; // [0.6015625] storage[668] = 11'b10011000000; // [0.59375] storage[669] = 11'b10010111000; // [0.58984375] storage[670] = 11'b10010110000; // [0.5859375] storage[671] = 11'b10010011000; // [0.57421875] storage[672] = 11'b10010011000; // [0.57421875] storage[673] = 11'b10010101000; // [0.58203125] storage[674] = 11'b10010110000; // [0.5859375] storage[675] = 11'b10010110000; // [0.5859375] storage[676] = 11'b10001111000; // [0.55859375] storage[677] = 11'b01110111000; // [0.46484375] storage[678] = 11'b01001011000; // [0.29296875] storage[679] = 11'b00111101000; // [0.23828125] storage[680] = 11'b01001000000; // [0.28125] storage[681] = 11'b01010100000; // [0.328125] storage[682] = 11'b01010101000; // [0.33203125] storage[683] = 11'b01001000000; // [0.28125] storage[684] = 11'b00111100000; // [0.234375] storage[685] = 11'b00111101000; // [0.23828125] storage[686] = 11'b01010010000; // [0.3203125] storage[687] = 11'b01111010000; // [0.4765625] storage[688] = 11'b10010111000; // [0.58984375] storage[689] = 11'b10011101000; // [0.61328125] storage[690] = 11'b10011110000; // [0.6171875] storage[691] = 11'b10011100000; // [0.609375] storage[692] = 11'b10011101000; // [0.61328125] storage[693] = 11'b10011100000; // [0.609375] storage[694] = 11'b10011010000; // [0.6015625] storage[695] = 11'b10011001000; // [0.59765625] storage[696] = 11'b10010111000; // [0.58984375] storage[697] = 11'b10010110000; // [0.5859375] storage[698] = 11'b10010101000; // [0.58203125] storage[699] = 11'b10010010000; // [0.5703125] storage[700] = 11'b10010001000; // [0.56640625] storage[701] = 11'b10010011000; // [0.57421875] storage[702] = 11'b10010101000; // [0.58203125] storage[703] = 11'b10010110000; // [0.5859375] storage[704] = 11'b10010100000; // [0.578125] storage[705] = 11'b10001100000; // [0.546875] storage[706] = 11'b01110000000; // [0.4375] storage[707] = 11'b01001000000; // [0.28125] storage[708] = 11'b00110111000; // [0.21484375] storage[709] = 11'b00110101000; // [0.20703125] storage[710] = 11'b00110110000; // [0.2109375] storage[711] = 11'b00111100000; // [0.234375] storage[712] = 11'b01001000000; // [0.28125] storage[713] = 11'b01100100000; // [0.390625] storage[714] = 11'b10000100000; // [0.515625] storage[715] = 11'b10011000000; // [0.59375] storage[716] = 11'b10011100000; // [0.609375] storage[717] = 11'b10011100000; // [0.609375] storage[718] = 11'b10011100000; // [0.609375] storage[719] = 11'b10011011000; // [0.60546875] storage[720] = 11'b10011011000; // [0.60546875] storage[721] = 11'b10011010000; // [0.6015625] storage[722] = 11'b10011001000; // [0.59765625] storage[723] = 11'b10010111000; // [0.58984375] storage[724] = 11'b10010101000; // [0.58203125] storage[725] = 11'b10010100000; // [0.578125] storage[726] = 11'b10010011000; // [0.57421875] storage[727] = 11'b10010000000; // [0.5625] storage[728] = 11'b10001111000; // [0.55859375] storage[729] = 11'b10010010000; // [0.5703125] storage[730] = 11'b10010011000; // [0.57421875] storage[731] = 11'b10010100000; // [0.578125] 90 91 storage[732] = 11'b10010101000; // [0.58203125] storage[733] = 11'b10010100000; // [0.578125] storage[734] = 11'b10001100000; // [0.546875] storage[735] = 11'b01110111000; // [0.46484375] storage[736] = 11'b01011010000; // [0.3515625] storage[737] = 11'b01001010000; // [0.2890625] storage[738] = 11'b01001111000; // [0.30859375] storage[739] = 11'b01100101000; // [0.39453125] storage[740] = 11'b10000001000; // [0.50390625] storage[741] = 11'b10010011000; // [0.57421875] storage[742] = 11'b10011011000; // [0.60546875] storage[743] = 11'b10011100000; // [0.609375] storage[744] = 11'b10011011000; // [0.60546875] storage[745] = 11'b10011011000; // [0.60546875] storage[746] = 11'b10011010000; // [0.6015625] storage[747] = 11'b10011010000; // [0.6015625] storage[748] = 11'b10011010000; // [0.6015625] storage[749] = 11'b10011001000; // [0.59765625] storage[750] = 11'b10010111000; // [0.58984375] storage[751] = 11'b10010101000; // [0.58203125] storage[752] = 11'b10010100000; // [0.578125] storage[753] = 11'b10010011000; // [0.57421875] storage[754] = 11'b10010001000; // [0.56640625] storage[755] = 11'b10001110000; // [0.5546875] storage[756] = 11'b10001101000; // [0.55078125] storage[757] = 11'b10001111000; // [0.55859375] storage[758] = 11'b10010010000; // [0.5703125] storage[759] = 11'b10010100000; // [0.578125] storage[760] = 11'b10010110000; // [0.5859375] storage[761] = 11'b10010111000; // [0.58984375] storage[762] = 11'b10011000000; // [0.59375] storage[763] = 11'b10010100000; // [0.578125] storage[764] = 11'b10001100000; // [0.546875] storage[765] = 11'b10000110000; // [0.5234375] storage[766] = 11'b10001010000; // [0.5390625] storage[767] = 11'b10010100000; // [0.578125] storage[768] = 11'b10011010000; // [0.6015625] storage[769] = 11'b10011100000; // [0.609375] storage[770] = 11'b10011100000; // [0.609375] storage[771] = 11'b10011011000; // [0.60546875] storage[772] = 11'b10011010000; // [0.6015625] storage[773] = 11'b10011001000; // [0.59765625] storage[774] = 11'b10011001000; // [0.59765625] storage[775] = 11'b10011001000; // [0.59765625] storage[776] = 11'b10011000000; // [0.59375] storage[777] = 11'b10010111000; // [0.58984375] storage[778] = 11'b10010101000; // [0.58203125] storage[779] = 11'b10010100000; // [0.578125] storage[780] = 11'b10010011000; // [0.57421875] storage[781] = 11'b10010010000; // [0.5703125] storage[782] = 11'b10010000000; // [0.5625] storage[783] = 11'b10001101000; // [0.55078125] end endmodule 92 ... Wieght Digital Detection CNN Convolutional Neural Network FPGA Field Programmable Gate Arrays TÓM TẮT BÁO CÁO Trong báo cáo tập lớn này, chúng em trình bày nội dung thực đề tài: ? ?Handwritten digital... lớp convolution, liệu từ RAM module thông qua Control module đưa đến khối Convolution layers module Khối tiếp tục gọi tới hàm border khối Border control module hàm tích chập khối Convolution blocks... huấn luyện mơ hình học máy Song song với q trình tìm hiểu lý thuyết, chúng em hướng dẫn làm tập lớn mơn học Nhóm chúng em chọn đề tài: ? ?Handwritten Digit Recognition on FPGA? ??, qua giúp chúng em

Ngày đăng: 25/08/2021, 17:30

HÌNH ẢNH LIÊN QUAN

Hình 1.2. Board De0-Nano - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1.2. Board De0-Nano (Trang 16)
Khả năng tái cấu hình cho phép chỉnh sửa thiết kế cho đến khi đạt yêu cầu mà không cần xây dựng các con chip đắt đỏ. - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
h ả năng tái cấu hình cho phép chỉnh sửa thiết kế cho đến khi đạt yêu cầu mà không cần xây dựng các con chip đắt đỏ (Trang 16)
Hình 1.4. Camera OV7670 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1.4. Camera OV7670 (Trang 17)
Bảng 1.2. Ý nghĩa các chân giao tiếp LCD - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng 1.2. Ý nghĩa các chân giao tiếp LCD (Trang 19)
Hình 1. 9. Fully connected layer - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1. 9. Fully connected layer (Trang 22)
Hình 1. 10. Triển khai mạch số với Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1. 10. Triển khai mạch số với Verilog (Trang 23)
Hình 1. 11. Cấu trúc một Module trong Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1. 11. Cấu trúc một Module trong Verilog (Trang 24)
Hình 1. 11. Cấu trúc một Module trong Verilog - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1. 11. Cấu trúc một Module trong Verilog (Trang 24)
Hình 1. 13 Ví dụ về mô phỏng testbench - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 1. 13 Ví dụ về mô phỏng testbench (Trang 26)
Hình 2.2 Các tham số của mạng - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 2.2 Các tham số của mạng (Trang 31)
Hình ảnh chụp từ camera được chuyển đổi về ảnh xám với kích thước 28*28 và đưa vào mạng nơ-ron để nhận dạng. - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
nh ảnh chụp từ camera được chuyển đổi về ảnh xám với kích thước 28*28 và đưa vào mạng nơ-ron để nhận dạng (Trang 34)
Hình 3.2 Sơ đồ triển khai phần cứng - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3.2 Sơ đồ triển khai phần cứng (Trang 35)
Hình 3.3 Khối RAM - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3.3 Khối RAM (Trang 36)
3.2.2.3 Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
3.2.2.3 Bảng tín hiệu: (Trang 40)
Hình 3 .5 Khối Database - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3 5 Khối Database (Trang 40)
Bảng 3 .6 Bảng đánh giá khối database - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng 3 6 Bảng đánh giá khối database (Trang 41)
Hình 3 .7 Khối tích chập - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3 7 Khối tích chập (Trang 42)
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng t ín hiệu: (Trang 42)
Hình 3 .9 Khối Border - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3 9 Khối Border (Trang 45)
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng t ín hiệu: (Trang 49)
Bảng 3. 18 Bảng đánh giá khối Maxpooling - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng 3. 18 Bảng đánh giá khối Maxpooling (Trang 50)
Hình 3. 15 Khối Dense - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3. 15 Khối Dense (Trang 51)
memstartp_lvl - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
memstartp _lvl (Trang 55)
Bảng 3. 22 Bảng tín hiệu đầu ra khối Result - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng 3. 22 Bảng tín hiệu đầu ra khối Result (Trang 55)
Bảng 3. 23 Bảng tín hiệu đầu vào khối Memmory work Tên đầu vào Kiểu dữ - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng 3. 23 Bảng tín hiệu đầu vào khối Memmory work Tên đầu vào Kiểu dữ (Trang 57)
- Bảng tín hiệu: - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Bảng t ín hiệu: (Trang 57)
write_addres - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
write _addres (Trang 61)
Hình 3. 20 Kết quả mô phỏng khối con_TOP - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3. 20 Kết quả mô phỏng khối con_TOP (Trang 61)
Hình 3. 22 Kết quả testbench khối TOP step 1-2-3 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3. 22 Kết quả testbench khối TOP step 1-2-3 (Trang 63)
Hình 3. 23 Kết quả testbench khối TOP step 3-4-5 - HANDWRITTEN DIGIT RECONITION ON FPGA nhận dạng chữ viết tay trên FPGA
Hình 3. 23 Kết quả testbench khối TOP step 3-4-5 (Trang 64)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w