Tiểu Luận Đồ Án Tốt Nghiệp: Thiết Kế Neural Network Trên FPGA Nhận Dạng Chữ Số Viết Tay

Đồ án nghiên cứu Tiểu luận đồ án tốt nghiệp đại học đề tài thiết kế neural network trên fpga để nhận dạng chữ số, áp dụng công nghệ tiên tiến, tối ưu giải pháp kỹ thuật cho bài

Người đăng

Ẩn danh

Thể loại

đề án tốt nghiệp đại học

2019

75
18
2

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Neural Network và FPGA

Neural Network, hay còn gọi là Mạng nơ-ron, là một mô hình toán học mô phỏng hoạt động của não người. Nó bao gồm nhiều lớp neuron, trong đó mỗi neuron nhận tín hiệu đầu vào và tạo ra tín hiệu đầu ra. FPGA (Field Programmable Gate Array) là một loại mạch tích hợp có thể lập trình lại, cho phép người dùng thiết kế và triển khai các mạch điện tử theo yêu cầu. Việc kết hợp Neural Network với FPGA mang lại lợi ích lớn trong việc tăng tốc độ xử lý và khả năng thực hiện các tác vụ phức tạp trong thời gian thực. Theo nghiên cứu, việc sử dụng FPGA cho Nhận dạng chữ số viết tay có thể cải thiện đáng kể hiệu suất so với các phương pháp truyền thống. Điều này đặc biệt quan trọng trong các ứng dụng như Computer VisionXử lý ảnh, nơi mà thời gian thực là yếu tố quyết định.

1.1 Lịch sử hình thành và phát triển của Neural Network

Lịch sử của Neural Network bắt đầu từ những năm 1940, khi Warren McCulloch và Walter Pitts giới thiệu mô hình mạng neuron đầu tiên. Qua nhiều thập kỷ, Học sâu (Deep Learning) đã phát triển mạnh mẽ, đặc biệt là sau khi thuật toán lan truyền ngược (backpropagation) được phát triển vào năm 1986. Sự phát triển của Neural Network đã mở ra nhiều ứng dụng trong các lĩnh vực như Thị giác máy tínhNhận dạng chữ số viết tay. Các nghiên cứu gần đây cho thấy rằng Học sâu có thể đạt được độ chính xác cao trong việc phân loại hình ảnh, đặc biệt là với bộ dữ liệu MNIST, nơi mà độ chính xác có thể đạt trên 90%.

II. Thiết kế Neural Network với MATLAB

Quá trình thiết kế Neural Network bắt đầu bằng việc sử dụng MATLAB để huấn luyện mô hình. Bộ dữ liệu chữ số viết tay MNIST được sử dụng để kiểm tra độ chính xác của mô hình. Các bước tiền xử lý dữ liệu bao gồm chuẩn hóa và phân chia dữ liệu thành tập huấn luyện và tập kiểm tra. Sau khi huấn luyện, mô hình được kiểm tra để đánh giá hiệu suất. Kết quả cho thấy rằng mô hình có thể đạt được độ chính xác lên đến 94% trên tập kiểm tra. Việc tối ưu hóa kích thước của Neural Network là rất quan trọng để đảm bảo rằng mô hình có thể được triển khai hiệu quả trên FPGA. Các thuật toán như Gradient Descent được sử dụng để điều chỉnh các tham số của mô hình nhằm giảm thiểu sai số giữa đầu ra thực tế và đầu ra kỳ vọng.

2.1 Huấn luyện và kiểm tra Neural Network

Quá trình huấn luyện Neural Network trên MATLAB bao gồm nhiều lần lặp lại để tìm ra mô hình tối ưu. Mỗi lần huấn luyện, kích thước của mô hình được giảm xuống để tìm ra cấu trúc nhỏ nhất mà vẫn đảm bảo độ chính xác trên 90%. Việc kiểm tra mô hình được thực hiện trên tập dữ liệu MNIST, nơi mà các chữ số viết tay được phân loại. Kết quả kiểm tra cho thấy rằng mô hình có khả năng nhận dạng chính xác các chữ số, điều này chứng tỏ tính khả thi của việc triển khai mô hình trên FPGA. Việc sử dụng MATLAB cho phép thực hiện các phép toán phức tạp một cách dễ dàng và nhanh chóng, đồng thời cung cấp các công cụ mạnh mẽ để phân tích và đánh giá kết quả.

III. Thiết kế Neural Network trên FPGA

Sau khi hoàn thành quá trình huấn luyện trên MATLAB, mô hình Neural Network được triển khai trên FPGA. Yêu cầu kỹ thuật cho thiết kế bao gồm đầu vào và đầu ra của mô hình, cũng như kế hoạch kiểm chứng. Thiết kế RTL (Register Transfer Level) được thực hiện để đảm bảo rằng mô hình có thể hoạt động hiệu quả trên phần cứng. Kết quả kiểm chứng cho thấy thiết kế đạt yêu cầu kỹ thuật với độ bao phủ chức năng 100%. Việc thống kê trễ xử lý trung bình cho từng chữ số cũng được thực hiện, từ đó rút ra nhận xét về tính khả thi của thiết kế trong các ứng dụng thời gian thực. Việc sử dụng FPGA cho phép tăng tốc độ xử lý và giảm thiểu thời gian phản hồi, điều này rất quan trọng trong các hệ thống nhận dạng hình ảnh.

3.1 Kế hoạch kiểm chứng và kết quả

Kế hoạch kiểm chứng được xây dựng dựa trên các yêu cầu kỹ thuật đã đề ra. Thiết kế testbench được thực hiện để kiểm tra tính chính xác và hiệu suất của mô hình. Kết quả kiểm chứng cho thấy rằng thiết kế không chỉ đáp ứng các yêu cầu kỹ thuật mà còn hoạt động ổn định trong các điều kiện khác nhau. Thống kê trễ xử lý cho thấy rằng mô hình có thể nhận dạng chữ số trong thời gian thực, điều này mở ra nhiều cơ hội ứng dụng trong các hệ thống nhận dạng tự động. Việc triển khai Neural Network trên FPGA không chỉ giúp cải thiện hiệu suất mà còn giảm thiểu chi phí so với các giải pháp phần mềm truyền thống.

01/02/2025

Trích đoạn nội dung tài liệu

Chương 1. Kết quả của thiết kế đạt yêu cầu kỹ thuật như thế nào đã được trình bày trong chương này. GIỚI THIỆU Trong chương này, các kiến thức tổng quan về Artificial Neural Network, FPGA, FSMD, và kiểm chứng thiết kế sẽ được trình bày. Giới thiệu về Artificial Neural Network 1.

Lịch sử hình thành và phát triển Artificial Neural Network (viết tắt là ANN), thường được gọi tắt Neural Network, là mạng neuron nhân tạo. Neural Network cũng giống như các lĩnh vực khác của khoa học, có lịch sử phát triển trải qua nhiều thăng trầm. Trong cuốn sách online A brief introduction to neural network [1] tác giả đã liệt kê ra một số mốc thời gian trong lịch sử hình thành và phát triển của nó. Neural Network ra đời từ khoảng đầu những năm 1940 và gần như cùng thời điểm với sự ra đời của việc lập trình máy tính điện tử.

Năm 1943, Warren McCulloch và Walter Pitts đã giới thiệu mô hình mạng neuron và cho thấy loại mạng đơn giản này có thể tính được gần chính xác các hàm logic và toán học. Hơn nữa, với sự giúp đỡ của Konrad Zuse, tiền thân của thiết bị điện tử sử dụng Neural Network cũng được bắt đầu phát triển [1]. Hebb xây dựng công thức luật Hebbian, là luật khái quát về quy tắc cơ bản cho quá trình học tập của mạng neuron. Quy tắc này ngụ ý rằng, liên kết giữa hai neuron được củng cố khi cả hai neuron được kích hoạt cùng một lúc.

Hebb đã tin là quy tắc này đúng, nhưng vì không có công trình nghiên cứu về mạng neuron nên ông không thể chứng minh nó [1]. Năm 1957 – 1958, tại MIT, Frank Rosenblatt, Charles Wightman và các đồng nghiệp đã chế tạo thành công máy tính sử dụng mạng neuron, gọi là Mark I perceptron, có khả năng nhận dạng các số đơn giản bằng cảm biến hình ảnh 20x20 điểm ảnh (pixel), với cơ chế là 512 chiết áp điều khiển động cơ, mỗi chiết áp đại diện cho một tham số thay đổi được của mạng [1]. Năm 1959, Frank Rosenblatt đã mô tả các phiên bản khác nhau của perceptron trong mạng neuron, xây dựng công thức và chứng minh được định lý gọi là perceptron convergence theorem. Ông đã mô phỏng các lớp neuron bắt chước võng mạc, các ngưỡng chuyển đổi và một nguyên tắc học tập để điều chỉnh các tham số của các kết nối trong mạng.

[1] Năm 1965, trong cuốn sách Machine Learning của mình, Nils Nilsson đã đưa ra cái nhìn tổng quát về sự tiến triển và thành quả của các công trình nghiên cứu về ANN 2 trong thời kì này. Nó được coi là lý thuyết cơ bản cho việc tự học của các trí thông minh nhân tạo [1]. Khoảng thời gian tiếp theo là khoảng thời gian trầm lặng đối với việc nghiên cứu về Neural Network, bởi tài trợ cho các công trình nghiên cứu này còn hạn chế. Các công bố và hội thảo về lĩnh vực này có ít, chỉ có các nhà nghiên cứu hoạt động riêng lẻ và không có sự trao đổi lẫn nhau [1].

Đến năm 1985, Neural Network bước vào thời kỳ phục hưng khi John Hopfield tìm được lời giải chấp nhận được cho bài toán Travelling Salesman Problem (TSP) sử dụng mạng Hopfield. Nội dung của TSP là: cho danh sách các thành phố và khoảng cách giữa mỗi cặp thành phố, từ thành phố gốc ta cần tìm con đường ngắn nhất có thể đến thăm từng thành phố và trở về thành phố gốc. Đây là một bài toán quan trọng trong lĩnh vực khoa học máy tính [1]. Năm 1986, quy tắc học lan truyền ngược của mạng neuron được phát triển và xuất bản rộng rãi.

Từ đó đến nay, nghiên cứu về Neural Network gần như là bùng nổ với nhiều nghiên cứu không thể liệt kê hết [1]. Nguyên lý hoạt động Artificial Neural Network là thuật ngữ chung chỉ các loại mạng neuron nhân tạo. Qua lịch sử phát triển, các nhà nghiên cứu đã công bố rất nhiều loại mạng neuron nhân tạo khác nhau. Trong phần này, nguyên lý hoạt động được trình bày là nguyên lý chung của Neural Network được giới thiệu bởi tổ chức LSI Design Contest [2].

Não người có rất nhiều neuron, nó nhận tín hiệu đầu vào và tạo tín hiệu đầu ra. Ví dụ như khi tay ta chạm vào một vật nóng, thì đầu vào là nóng được truyền tới tủy sống thông qua các tế bào thần kinh bên trong, và nó sẽ đưa ra đầu ra là phản xạ rụt tay khỏi vật nóng. Neural Network là một mô hình toán học bắt chước hệ thần kinh của con người. Về cơ bản thì Neural Network có 3 lớp, đó là (1) lớp đầu vào, (2) lớp ẩn và (3) lớp đầu ra được minh họa trên Hình 1.

Cấu trúc này được gọi là cấu trúc 3 lớp. Đối với những mạng phức tạp hơn thì có thể có nhiều hơn một lớp ẩn [2].1 Cấu trúc 3 lớp [2] Tín hiệu được đưa vào ở lớp (1) và đi ra ở lớp (3). Trước khi đưa tín hiệu vào (1) thì tại đầu ra chúng ta có một giám sát viên (supervisor). Giám sát viên chính là đầu ra kỳ vọng của mạng với mục tiêu là điều chỉnh các tham số trong mạng sao cho sai lệch giữa đầu ra thực tế (output) và giám sát viên là nhỏ nhất có thể [2].2 Cấu trúc 3 lớp với các tham số [2] Hình 1.2 minh họa một mạng neuron theo cấu trúc 3 lớp với các tham số ứng với từng lớp.

Định nghĩa của các tham số trong hình như sau: ki là tín hiệu vào tại lớp đầu vào. 2 w ij là weight nối từ lớp đầu vào đến lớp ẩn. bi 2 là bias của lớp ẩn. z i2 là đầu vào của lớp ẩn.

2 ai là đầu ra của lớp ẩn. w ij 3 là weight nối từ lớp ẩn đến lớp đầu ra. bi 3 là bias của lớp ẩn. z i3 là đầu vào của lớp đầu ra.

ai 3 là đầu ra của lớp đầu ra. ti là giám sát viên với t 1 =1 và t 2 =0. Mối liên hệ giữa các tham số trên được biểu diễn theo chiều thuận và chiều nghịch. 5 Theo chiều thuận, ta coi tín hiệu vào tại lớp đầu vào ( k i ), các weight và bias ( w ij , bi , w ij , bi ) là các số đã biết, mục tiêu là tính đầu ra ai của lớp đầu 2 2 3 3 3 ra theo các công thức (1.4) Trong công thức (1.4), chúng ta có thể sử dụng bất kỳ hàm nào có khả năng phân biệt và chuẩn hóa để làm hàm kích hoạt (activate function) [2], ví dụ như dùng hàm tansig thì công thức (1.

ai =tansig ( z i ) = 2 2 2 −1 với (1.5) 2 −2 zi i=1,2,3 1+e Đặt: K= [] k1 k2 [ ] 2 2 w11 w21 W 2= w212 w222 2 2 w13 w23 [] 2 b1 B 2= b22 b23 6 z 12 [] Z 2= z 22 2 z3 [] 2 a1 A 2= a22 2 a3 [ ] 3 w11 w321 w 331 W 3= 3 w12 w322 w 332 [] 3 b1 B 3= b 23 Z 3= [] z31 z32 A 3= [] a31 a32 Các công thức (1.9) Với mỗi vector K thứ n đưa vào lớp đầu vào ta sẽ tính được một hàm lỗi bình phương (square error function) như công thức (1.10) 2 Khi đưa n vector vào lớp đầu vào, ta có hàm giá (cost function) C là tổng của các hàm lỗi bình phương đã có, như công thức số (1.11), với Cn tính như công thức (1.11) 7 Từ bây giờ chúng ta bắt đầu xây dựng công thức theo chiều nghịch sử dụng thuật toán lan truyền ngược (backpropagation). Từ các công thức (1.10), ta thấy C là một hàm của các weight và bias ( w 2ij , b2i , w 3ij , b3i ). Bởi vậy ta có công thức đạo hàm của C theo các weight và bias đó. Để tính đạo hàm của C theo các weight và bias, ta cần áp dụng quy tắc tính đạo hàm của hàm hợp.

Quy tắc đạo hàm của hàm hợp như sau. Với f là hàm của u và v, tức là f = f(u,v); u và v là hàm của x, tức là u = u(x) và v = v(x); nếu f(u), f(v), u(x), v(x) tồn tại đạo hàm thì ta có: ∂f ∂f ∂u ∂f ∂v = + (1.12) ∂ x ∂u ∂ x ∂ v ∂ x Giả sử ta cần tính đạo hàm của C theo w 11 , áp dụng quy tắc đạo hàm của 2 hàm hợp ta có: ∂C ∂ C1 ∂ C2 ∂C n (1.17) =( a3 1 [ n ] −t [ n] )( w11 + 3 w 12) 2 k 1 [ n] ∂ z 13 [ n ] 1 ∂ w112 ∂ z2 [n] ∂ z 1 [ n] ∂C Từ công thức (1.17) ta tính được 2 ∂ w11 2 Theo thuật toán gradient descent, ta cập nhật giá trị mới của w 11 để tối ưu C.18) 2 ∂ w11 8 Trong công thức (1.18), η là một số dương gọi là tốc độ học (learning rate). Chi tiết về thuật toán gradient descent sẽ được trình bày trong phần sau, qua đó sẽ trả lời được câu hỏi rằng tại sao cập nhật w 211 theo công thức (1.18) sẽ tối ưu được C. Để tối ưu C thì các weight và bias khác cũng được cập nhật theo cách tương tự.

Sau khi thay đổi, chúng ta lại bắt đầu lại bằng việc đưa K vào và tiếp tục tính toán, cho đến khi đầu ra đạt giá trị gần với giám sát viên nhất [2]. Mỗi lần duyệt qua tất cả các vector K trên toàn bộ dữ liệu được gọi là một epoch [3]. Thuật toán Gradient Descent Trong toán tối ưu, chúng ta thường xuyên phải tìm các giá trị nhỏ nhất của một hàm số. Việc tìm giá trị nhỏ nhất của hàm số phức tạp là không khả thi, nên ta thường tìm các điểm cực tiểu cục bộ (local minimum), và coi đó là một nghiệm cần tìm của bài toán.

Các điểm cực tiểu cục bộ là nghiệm của phương trình đạo hàm bằng không. Tuy nhiên, trong nhiều trường hợp, việc giải phương trình đạo hàm bằng không để tìm nghiệm chính xác cũng là không khả thi, nên cần có hướng giải quyết là tìm nghiệm gần đúng [3]. Hướng tiếp cận phổ biến nhất để giải quyết các bài toán tối ưu là xuất phát từ một điểm được coi là gần với nghiệm của bài toán, sau đó dùng một phép toán lặp để tiến dần đến điểm đạo hàm bằng không [3]. Xét hàm số một biến f : R → R 9 Hình 1.3 Khảo sát sự biến thiên của một đa thức bậc 2 một biến [3] Trên Hình 1.3 là sự biến thiên của một đa thức bậc 2 một biến.

Điểm cực tiểu ¿ cục bộ thực sự của f (x) là x =− 2 .

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Thiết kế Neural Network trên FPGA để Nhận Dạng Chữ Số Viết Tay" khám phá cách sử dụng mạng nơ-ron để nhận diện chữ số viết tay, một ứng dụng quan trọng trong lĩnh vực trí tuệ nhân tạo và học máy. Tác giả trình bày chi tiết về quy trình thiết kế và triển khai mạng nơ-ron trên FPGA, giúp tối ưu hóa hiệu suất và tốc độ xử lý. Bài viết không chỉ cung cấp kiến thức chuyên sâu về công nghệ mà còn mở ra cơ hội cho các nghiên cứu và ứng dụng thực tiễn trong nhận diện hình ảnh.

Để mở rộng thêm kiến thức của bạn về các ứng dụng của học máy và công nghệ thông tin, bạn có thể tham khảo bài viết Luận văn thạc sĩ khoa học máy tính sử dụng active learning trong việc lựa chọn dữ liệu gán nhãn cho bài toán speech recognition, nơi bạn sẽ tìm hiểu về cách tối ưu hóa dữ liệu trong các bài toán nhận diện giọng nói. Ngoài ra, bài viết Luận văn thạc sĩ khoa học máy tính nghiên cứu các phương pháp trích xuất thông tin trong ảnh tài liệu và ứng dụng sẽ giúp bạn nắm bắt các phương pháp trích xuất thông tin từ hình ảnh, một lĩnh vực liên quan mật thiết đến nhận diện hình ảnh. Cuối cùng, bạn cũng có thể tìm hiểu về Luận văn thạc sĩ kỹ thuật viễn thông phân loại chủ đề bản tin online sử dụng máy học, nơi mà các kỹ thuật học máy được áp dụng để phân loại thông tin, mở rộng khả năng ứng dụng của công nghệ trong nhiều lĩnh vực khác nhau.