Báo cáo Thực tập kỹ thuật: Nhận diện chữ cái sử dụng Matlab và thực hiện mạng Neural trên FPGA (có code)

26 150 1
Báo cáo Thực tập kỹ thuật: Nhận diện chữ cái sử dụng Matlab và thực hiện mạng Neural trên FPGA (có code)

Đ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

Báo cáo Thực tập kỹ thuật Đại học Bách khoa Hà Nội: Nhận diện chữ cái sử dụng Matlab và thực hiện mạng Neural trên FPGA. Trong báo cáo trình bày đầy đủ chi tiết, nhận diện chữ cái sử dụng nftool trong matlab, có code Verilog, code matlab, báo cáo đầy đủ và hướng dẫn sử sụng file matlab trong file code.rar đính kèm

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ-VIỄN THÔNG ====o0o==== BÁO CÁO THỰC TẬP KĨ THUẬT NHẬN DIỆN CHỮ CÁI SỬ DỤNG MATLAB VÀ THỰC HIỆN MẠNG NEURAL TRÊN FPGA ESRC Lab - C9 420 GVHD : Sinh viên thực : Mã số sinh viên : Lớp : PGS.TS Phạm Ngọc Nam ThS Nguyễn Thị Kim Thoa Nguyễn Minh Hiếu 20151336 Điện tử 03 – K60 Hà Nội, tháng năm 2018 DANH MỤC HÌNH VẼ A LỜI NÓI ĐẦU Học phần Thực tập kĩ thuật nằm chương trình đào tạo viện Điện tử Viễn thông, giúp sinh viên tiếp cận môi trường, có thêm kinh nghiệm làm việc thực tế công ty thuộc lĩnh vực Điện tử - Viễn thông tham gia vào phòng nghiên cứu ngồi trường Trong học kì hè 20173, em tham gia thực tập Phòng thí nghiệm Hệ thống Tính tốn cấu hình lại (Embedded System and Reconfigurable Compute Labroratory - ESRC Lab), thuộc Trung tâm Nghiện cứu Phát triện, viện Điện tử Viễn Thông, trường Đại học Bách Khoa Hà Nội Em anh chị khóa hướng dẫn nghiên cứu đề tài “Nhận diện chữ sử dụng Matlab thực mạng neural FPGA”, với mục tiêu làm quen với trí thông minh nhân tạo (AI – Artificial Intelligence) luyện tập ngơn ngữ mơ tả phần cứng Verilog Vì lần đầu biết tới mạng neural nhận tạo (ANNs – Artificial Neural Networks) ngôn ngữ Verilog nên để tài không hoàn chỉnh, bọn em dự định tiếp tục phát triển năm học tới Em xin cảm ơn Ban giám hiệu trường Đại học Bách Khoa Hà Nội Ban lãnh đạo viện Điện tử - Viễn thông tạo điều kiện cho chúng em tham gia thực tập, thầy Phạm Ngọc Nam, anh chị, bạn Lab đồng hành hỗ trợ em em hoàn thành tốt học phần thực tập B NỘI DUNG Chương Nội dung thực tập 1.1 Giới thiệu mạng neural nhân tạo Thuật ngữ “neural” bắt nguồn từ đơn vị chức tế bào thần kinh (neuron) não người Mạng neural sinh học mạng lưới liên kết hàng tỷ tế bào thần kinh với hàng nghìn tỷ kết nối chúng Hình 2.1 mơ tả tế bào thần kinh sinh học (biological neuron) Hình 2.1 Tế bào thần kinh sinh học Mạng neural nhân tạo hệ thống tính tốn xây dựng dựa mạng neural sinh học não người Mạng neural nhân tạo có nhiều ứng dụng thực tế: điều khiển hệ thống, chơi trò chơi điện tử, đưa định, nhận diễn hình mẫu, khn mặt, chẩn đốn y tế, khai thác liệu giao dịch tự động,… Mạng neural nhân tạo gồm lớp vào (input layer), nhiều lớp ẩn (hidden layer) lớp (output layer) Một lớp bao gồm nhiều neuron, neuron lớp kết nối đầy đủ với tất neuron lớp trước thông qua hàm truyền (propagation function) với trọng số (weight) tương ứng (ngoài có thêm phần độ lệch (bias)), sau xử lí qua hàm kích hoạt (activation function) trước khí tiếp tục kết nối với tất neuron lớp sau Hình 2.2 mơ tả mạng neural Hình 2.2 Cấu trúc mạng neural Mạng neural nhân tạo học điều chỉnh số độ lệch, lặp lặp lại đến mang lại kết mong muốn Mạng huấn luyên trước sử dụng quy tắc gọi thuật tốn học tập Các thuật toán học tập phổ biến bao gồm: giảm gradient (gradient descent), lan truyền ngược (back propagation), luật Hebb (Hebb rule), luật Hopfield (Hopfield law), thuật toán trung bình tối thiểu (LMS - least mean square), học tập cạnh tranh (competitive learning) Quá trình học gồm nhiều kiểu học khác nhau: học có giám sát (supervised learning), học không giám sát (unsupervised learning), học tăng cường (reinforcement learning), học ngoại tuyến (offline learning), học trực tuyến (online learning) 1.2 Cấu trúc neuron Hình 2.3 Một neuron riêng lẻ Hình 2.3 mơ tả neuron thứ i thuộc lớp thứ m, kết nối với neuron từ thứ đến thứ M lớp m-1 hàm truyền sau: + (1) Trong đầu vào neuron thứ i thuộc lớp thứ m, đầu neuron thứ j thuộc lớp thứ m-1, trọng số kết nối từ neuron thứ j thuộc lớp thứ m-1 đến neuron thứ i thuộc lớp thứ m, bias neuron thứ i thuộc lớp thứ m Mối quan hệ đầu đầu vào neuron thể qua hàm kích hoạt Trong đề tài sử dụng hàm sigmoid làm hàm kích hoạt: (2) Sau đầu neuron lại nối với neuron lớp 1.3 Thuật toán lan truyền ngược (backpropagation algorithm) Các giá trị weight bias gán giá trị ngẫu nhiên khác Sau vector tập huấn luyện đưa vào mạng để tính tốn output từ tính tốn hàm giá (cost function) theo công thức: (3) Trong đó: (4) Với i số tương ứng với mẫu huấn luyện thứ i Sau tính tốn xong giá trị cost funtion giai đoạn lan truyền ngược (back propagation) Ở giai đoạn này, đạo hàm riêng hàm Cost function theo tính tốn Ở lớp output, giá trị unit error tính theo cơng thức: (5) Trong p thứ tự neuron output, y activation neuron ouput Qua ta tính được: (6) (7) Đối với lớp hidden: (8) Qua ta tính được: (9) (10) Giá trị đạo hàm riêng phần tính theo cơng thức: (11) (12) Đến ta tính: (13) (14) Trong số thực dương gọi learning rate Một điểm cực tiểu hàm số tính chất, đạo hàm bên trái âm (hàm lân cận phía trái điểm nghịch biến), đạo hàm bên phải dương (hàm lân cạn phía phải điểm đồng biến) Do lỡ chọn tham số làm cho đạo hàm âm phải tăng tham số lên để sát điểm cực tiểu, ngược lại lỡ chọn tham số cho đạo hàm dương ta phải giảm tham số để sát điểm cực tiểu, suy phải số dương để đảm bảo ta ngược chiều với đạo hàm, chọn lặp nhỏ để tìm điểm sát với cực tiểu Giá trị cập nhật theo công thức: (15) (16) Ta lặp lặp lại bước đến đạo hàm riêng sát với dừng Thuật toán lan truyền ngược hiểu đơn giản ban đầu tính unit’s error neuron lớp đầu trước tính unit’s error lớp trước theo lớp sau Sau tính đạo hàm theo unit’s error Giá trị biểu thức (13), (14) ảnh hưởng nhiều đến q trình học thuật tốn Thường giá trị chọn khoảng từ đến 1.4 Nhận diện chữ sử dụng Matlab Matlab (Matrix Laboratory), phần mềm toán học hãng Mathworks để lập trình, tính tốn số có tính trực quan cao Matlab làm việc chủ yếu với ma trận, với chuỗi kí tự Matlab xem dãy kí tự dãy mã số ký tự Matlab dùng để giải tốn giải tích số, xử lý tín hiệu số, 10 Hình 2.4 Minh họa bước đầu nhận diện chữ Matlab Sau bước trên, ta thực bước quan trọng Đánh dấu đối tượng, xác định vị trí đối tượng Vẽ hình chữ nhật bao quanh đối tượng dựa ảnh gốc Hình 2.5 kết sau thực bước 12 Hình 2.5 Kết sau thực bước Trong chương trình sử dụng liệu đầu vào có 70 mẫu 40 phần tử từ ảnh phần tiền xử lý Còn 70 mẫu 10 phần tử lại dùng để tạo mẫu test Đầu tiên ta chọn đối tượng cần nhận diện, xử lí đối tượng tạo liệu kiểm tra, sau tạo mạng neural huấn luyện cơng cụ nftool (hình 2.6) 13 Hình 2.6 Công cụ nftool Matlab Cuối nhận diện kí tự cho kết Kết chạy cho thấy chương trình chưa thực nhận diện kí tự, nhận diện kí tự huấn luyện Chi tiết code giao diện, video chạy Matlab có phần phục lục 14 1.5 Khái quát FPGA, ngôn ngữ Verilog mạng neural 2:3:2 Hình 2.8 mạng neural 2:3:2 (2 neuron lớ đầu vào, neuron lớp ẩn, neuron lớp đầu ra) Ta quan tâm neuron lớp ẩn lớp đầu ghi hình 2.8 Hình 2.8 Mạng neural 2:3:2 Để thiết kế mạng neural đầy đủ, ta thiết kế neuron riêng lẻ, sau nối neuron với Trong neuron, ta phải thiết kế module mạch nhân module hàm kích hoạt Hình 2.9 neuron riêng lẻ Hình 2.9 Mạng neuron riêng lẻ 15 1.6 Thiết neuron 1.6.1 Module mạch nhân Như thấy hình trên, neuron kết nối với M neuron lớp trước đó, cần M nhân số thực, M/2 cộng số thực (nếu M chẵn), (M+1)/2 cộng số thực (nếu M lẻ) Để thực cộng sử dụng tốn tử cộng có sẵn Verilog Mạch nhân số thực thực chức nhân hai số thực có dấu dấu phẩy động Q trình nhân diễn nhiều chu kỳ đồng hồ Cách thực nhân sử dụng giải thuật booth Lưu đồ thuật tốn thể hình 2.10 16 Ban đầu gán A Qi=0, biến M Q lưu số bị nhận số nhân, Qi bit dấu, count lưu số bit số cần nhân với Theo sơ đồ, vòng lặp, giá trị Q[0]Qi=01 cộng thêm M vào A, 10 trừ M từ A, lại 11 00 thực quay phải tồn dãy A,Q,Qi Sau vòng lặp giảm count 1, lặp đến count {A,Q} kết Hình 2.10 Lưu đồ thuật tốn giải thuật Booth 17 Sau ta xây dựng sơ đồ máy trạng thái thuật tốn (Algorithmic state machine – ASM) (hình 2.11) 18 Sơ đồ ASM suy từ lưu đồ thuật toán Mạch bao gồm trạng thái: idle (trạng thái ban đầu), phrase_1,phrase_2, finish Tín hiệu add_s cho phép chuyển trạng thái từ phrase_1 sang phrase_2 cộng Tín hiệu shift_s cho phép trừ đếm dịch giá trị ghi Cuối trạng thái finish, tín hiệu done xuất thơng báo q trình nhân hồn tất Hình 2.11 Sơ đồ ASM giải thuật Booth 19 Tổng quát mạch nhân hình 2.12 Mạch có tín hiệu vào: xung Chi tiết code mạch đồng hồ (clk), reset (rst_n), tín phục lục hiệu cho phép mạch chạy 1.6.2 Module hàm Hàm sigmoid nhận vào giá trị trị nằm khoảng từ (start), số bị nhân (SBN), số nhân (SN); tín hiệu ra: kết phép nhân (Y), tín hiệu báo hiệu q trình nhân hồn tất (done) nhân có phần kích hoạt hàm phi tuyến, thực cho giá đến (hình 2.13) Hình 2.12 Tổng quát mạch nhân 20 Hình 2.13 Hàm sigmoid Hàm kích hoạt sigmoid gen code matlab, ta dùng công cụ HDL Coder Mathlab để thay hàm Sigmoid với Lookup Table Hình 2.14 Tổng qt mạch hàm kích hoạt Như hình 2.14, mạch hàm kích hoạt gồm tín hiệu đầu vào: xung đồng hồ (clk), tín hiệu cho phép chạy module, giá trị vào neuron, tín hiệu đầu giá trị cần tính hàm sigmoid khỏi neuron Code cụ thể tạo matlab có phần phụ lục 21 1.6.3 Mơ neuron Hình 2.15 kết mô neuron thực công cụ Modelsim Quartus 13 Hình 2.15 Mơ neuron vector input đưa vào có tín hiệu w_input_en, tương tự với trọng số có tín hiệu w_weight_en, tín hiệu start kích hoạt, sau loạt xug clock output kết đầu Kết kiểm tra xác 1.7 Thực mạng neural 2:3:2 Cấu trúc cụ thể mạng neural 2:3:2 hình 2.16 22 Hình 2.16 Cấu trúc cụ thể mạng neural 2:3:2 Việc kết nối neuron riêng lẻ với không kết dự tính, trình độ hạn chế, nên ta thiết kế mạng neural mạch tổ hợp với module mạch nhân module hàm kích hoạt có Code tồn mạch ó phần phụ lục Kết mô mạng neural 2:3:2 hình 2.17 23 Hình 2.17 Mơ mạng neural 2:3:2 vector đầu vào din1 din2 dạng thập phân, tín hiệu start1, start2 cho phép mạch nhân từ layer1 sang layer2 từ layer2 sang layer3 hoạt động, dout1 dout2 vector đầu neuron N4 N5 Chương Nhận xét, đề xuất 2.1 Ưu điểm Trí thơng minh nhân tạo có tính thực tế cao ứng dụng nhiều sống Đề tài chúng em thực đề tài hay, giúp chúng em làm quen với mạng neural, sử dụng phần mềm (Matlab) phần cứng (FPGA) để triển khai mạng neural Trong thời gian thực tập ESRC Lab, em trau dồi luyện tập nhiều kĩ năng: - Kĩ giao tiếp làm việc nhóm Kĩ làm slide, thuyết trình, báo cáo Các thành tựu đạt sau khóa thực tập là: - Sử dụng Matlab thực thành công nhân diện chữ nftool Luyện tập Verilog, xây dựng module nhỏ ghép lại thành module lớn 24 - Tìm hiểu trí thơng minh nhân tạo mạng neural, triển khai mạng neural đơn giản FPGA 2.2 Nhược điểm Vì làm việc theo nhóm nhiều người, khả lên kế hoạch hạn chế nên chúng em chưa có thời gian làm việc nhiều Bên cạnh khả tiếng Anh hạn chế nên việc nghiên cứu sách nhiều thời gian Trong đề tài thực thiếu sót: - Chưa ghép neuron riêng lẻ lại với Chưa thực thuật toán lan truyền ngược 2.3 Đề xuất Trong năm học bọn em tiếp tục nghiên cứu để hoàn thiện đề tài Em hi vọng khóa sinh viên sau tham gia khóa thực tập bổ ích C KẾT LUẬN Trong thời gian thực tập anh chị bạn, em học hỏi nhiều kiến thức kĩ thực tế, tích lũy thêm kinh nghiệm làm việc, buổi thảo luận nhóm lên thuyết trình giúp em tự tin Chúng em có thêm kiến thức mạng neural, ứng dung mạng neural, cách huấn luyện mạng neural, ngồi luyện tập Matlab ngơn ngữ Verilog Đề tài nhiều thiếu sót kết làm việc tích cực nhóm Một lần em xin chân thành cảm ơn viện Điện tử-viên thơng giúp cho chúng em có học phần thực tập kĩ thuật, chân thành cảm ơn thầy Phạm Ngọc Nam chủ nhiệm phòng Lab tạo điều kiện để chúng thực tập ESRC Lab, cảm ơn anh chị bạn em hoàn thành đề tài 25 Tài liệu tham khảo [1] Pong P, Chu, FPGA Protyping by Verilog Example, A John Wiley & Sons, Inc., Publication, 2008 [2] David Kriesel, A Brief Introduction to Neural Networks, dkriesel.com, 2005 [3] Mentor: prof Primož Potočnik, Student: Žiga Zadnik, Character Rcognition: Handwritten character Recognition: Training a Simple NN for classification using MATLAB [4] Mrs Rana D Abdu-Aljabar, Design and Implementation of Neural Network in FPGA, Journal of Engineering and Development, Vol 16, No.3, Sep 2012 ISSN 18137822 [5] Internet 26 ... thứ đến thứ M lớp m-1 hàm truyền sau: + (1) Trong đầu vào neuron thứ i thuộc lớp thứ m, đầu neuron thứ j thuộc lớp thứ m-1, trọng số kết nối từ neuron thứ j thuộc lớp thứ m-1 đến neuron thứ i... ESRC Lab, em trau dồi luyện tập nhiều kĩ năng: - Kĩ giao tiếp làm việc nhóm Kĩ làm slide, thuyết trình, báo cáo Các thành tựu đạt sau khóa thực tập là: - Sử dụng Matlab thực thành công nhân diện... năm học tới Em xin cảm ơn Ban giám hiệu trường Đại học Bách Khoa Hà Nội Ban lãnh đạo viện Điện tử - Viễn thông tạo điều kiện cho chúng em tham gia thực tập, thầy Phạm Ngọc Nam, anh chị, bạn Lab

Ngày đăng: 14/03/2020, 15:36

Từ khóa liên quan

Mục lục

  • A. LỜI NÓI ĐẦU

  • B. NỘI DUNG

  • Chương 1. Nội dung thực tập

    • 1.1 Giới thiệu mạng neural nhân tạo

    • 1.2 Cấu trúc một neuron

    • 1.3 Thuật toán lan truyền ngược (backpropagation algorithm)

    • 1.4 Nhận diện chữ cái sử dụng Matlab

    • 1.5 Khái quát về FPGA, ngôn ngữ Verilog và mạng neural 2:3:2

    • 1.6 Thiết một neuron

      • 1.6.1 Module mạch nhân

      • 1.6.2 Module hàm kích hoạt

      • 1.6.3 Mô phỏng một neuron

      • 1.7 Thực hiện mạng neural 2:3:2

      • Chương 2. Nhận xét, đề xuất

        • 2.1 Ưu điểm

        • 2.2 Nhược điểm

        • 2.3 Đề xuất

        • C. KẾT LUẬN

        • Tài liệu tham khảo

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

Tài liệu liên quan