Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 83 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
83
Dung lượng
6,54 MB
Nội dung
LỜI CẢM ƠN Lời đầu tiên, em xin chân thành cảm ơn thầy cô giáo trường Đại học Khoa Học thầy cô khoa Điện, Điện Tử va Công Nghệ Vật Liệu nhiệt tình giúp đỡ, giảng dạya vmang đến cho em những điều bổ ích vềề̀ môn đại cương môn chuyên ngành, giúú́p em có nềề̀n tảng sở lý thuyếú́t vững chắc kiếú́n thức cần thiếú́t để thực đồ án tốt nghiệp va xa la co đươc hướng tôt tương lai Tiếú́p theo đó, em xin chân thành cảm ơn bạn lớú́p Điện tử - Viễn thông K40, gia đình va nhữữ̃ng người đông hanh, khích lệ, giúp đỡ va động viên em suôt thơi gian vừa qua Đặc biệt nhất, em xin gửi lời cám ơn chân đếú́n Thạc sĩ Vương Quang Phướú́c, giảng viên Bộ môn Kỹ thuật Viễn thông - trường Đại học Khoa Học, người hướú́ng dẫn, cung cấp tài liệu, động viên bảo nhiệt tìề̀nh để em hồn thành đồ án tốt nghiệp Trong suốt trìề̀nh thực đồ án, chắú́c chắú́n khơng tránh khỏi nhữữ̃ng sai sót Em mong nhận đóng góp từề̀ thầy, để hồn thiện đồ án tốt nghiệp Em xin chân thành cám ơn! Sinh viên thực Nguyên Trí Định i MỤC LỤC LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC HÌNH ẢẢ̉NH iv DANH MỤC BẢẢ̉NG BIỂU vi DANH MỤC CÁC CHỮ VIẾT TẮT vii MỞ ĐẦU CHƯƠNG DEEP LEARNING, MẠNG NƠ-RON NHÂN TẠO NHIỀU LỚP MLP VÀ BÀI TỐN NHẬN DẠẠ̣NG HÌNH ẢẢ̉NH 1.1 Giớú́i thiệu chương 1.2 Deep learning 1.3 Mang nơ-ron nhân tao 1.3.1 Perceptron 1.3.2 Sigmoid 1.3.3 Mang nơ-ron nhân tao nhiều lớp MLP 1.3.4 Bai toan nhận dang hình anh 1.4 Kết luận chương CHƯƠNG LÝ THUYÊT CƠ BẢN VỀ MẠNG NƠ-RON TÍCH CHẬP CNN VA CAC THAM SỐ LIÊN QUAN 2.1 Giớú́i thiệu chương 2.2 Mang nơ-ron tích chập 2.3 Lớú́p tíú́ch chập 2.3.1 Phép tích chập 2.3.2 Vung tiếp nhận cục b .ộ 2.3.3 Sô bước trươt (Strides) 2.3.4 Zero padding 11 2.4 Lây mâu xuông (Pooling) 12 2.5 Lớp Dropout 13 2.6 Ham kích hoat ngõ Softmax 14 2.7 Ham tổn hao Cross Entropy 15 2.8 Tỷ lệ hoc 15 ii 2.9 Kếú́t luận chương 16 CHƯƠNG SO SANH MƠ HÌNH MLP VỚI CNN VA KHẢO SAT SỰ ẢNH HƯƠNG CỦA CAC THAM SỐ 17 3.1 Giớú́i thiệu chương 17 3.2 Cơ sở dữữ̃ liệu, so sanh mô hìề̀nh 17 3.2.1 Cơ sở dữữ̃ liệu 17 3.2.2 So sanh mô hình MLP va CNN 18 3.3 Đanh gia anh hương của cac tham sô 21 3.3.1 Lớp tíú́ch chập 21 3.3.2 Ham kích hoat: 26 3.3.3 Pooling: 27 3.3.4 Dropout 28 3.3.5 Tỉ lệ học 30 3.3.6 Kết luận: 31 3.4 Kết luận chương 32 CHƯƠNG SỬ DUNG MÔ HINH CNN TỐI ƯU CHO VIỆC PHÂN LOẠI CỦ QUẢ 33 4.1 Giớú́i thiệu chương 33 4.2 Cơ sơ dữ liệu 33 4.3 Khao sat với mang Lenet 37 4.4 Khao sat với mô hình CNN ưu: 39 4.5 Mơ rộng ơs dữ liệu 43 4.6 Kếú́t luận chương 48 KẾT LUẬN VÀ HƯỚú́NG PHÁT TRIỂN 49 TÀI LIỆU THAM KHẢẢ̉O 51 PHỤ LỤC 54 iii DANH MỤC HÌNH ẢẢ̉NH Hình 1.1 Mối quan hệ giữữ̃a AI/Machine Learning/Deep Learning [2] Hình 1.2 Sơ đồ mô tả cách mạng nơ-ron hoạt động [3] Hình 1.3 Một mạng nơ-ron nhân tạo Hình 1.4 Cấu trúú́c củẢ̉a một perceptron vớú́i đầu vào Hình 1.5 Mạng nơ-ron tíú́ch chập [5] Hình 1.6 Thuật toán Gradient descent Hình 1.7 Tḥt tốn SGD vớú́i đợng lượng (Stochastic gradient descent with momentum) [9] Hình 1.8 Hìề̀nh ảnh dướú́i góc nhìề̀n củẢ̉a máy tíú́nh [13] Hình 2.1 Nơ-ron lớú́p ẩn kếú́t nối vớú́i vùng tiếú́p nhận cụẠ̣c bộ Hình 2.2 Quá trìề̀nh trượt củẢ̉a vùng tiếú́p nhận cụẠ̣c bộ theo chiềề̀u ngang chiềề̀u dọc Hình 2.3 Quá trìề̀nh hìề̀nh thành lớú́p ẩn sau trượt vùng tiếú́p nhận cụẠ̣c bộ Hình 2.4 Giá trịẠ̣ stride (a) stride (b) Hình 2.5 Lớú́p ẩn giữữ̃ nguyên kíú́ch thướú́c lớú́p ngõữ̃ vào thêm zero padding Hình 2.6 Lớú́p ngõữ̃ vào (a), bộ lọc (b) đồ đặc tíú́nh (c) Hình 2.7 Đồ thịẠ̣ hàm ReLu Hình 2.8 Lớú́p ngõữ̃ vào (a) lớú́p ngõữ̃ sau áp dụẠ̣ng lớú́p pooling (b) Hình 2.9 Mạng nơ-ron sau áp dụẠ̣ng Dropout [16] Hình 3.1 Hìề̀nh ảnh chữữ̃ số viếú́t tay từề̀ tập MNIST [17] Hình 3.2 Hìề̀nh ảnh tríú́ch xuất từề̀ bộ sở dữữ̃ liệu CIFAR10 [18] Hình 3.3 Mô hìề̀nh mạng Multilayer Perceptron (MLP) Hình 3.4 Mô hìề̀nh mạng Lenet-5 (CNN) Yan Lecun công bố năm 1998 [19] Hình 3.5 Khảo sát mạng MLP vớú́i tỉ lệ học khác Hình 3.6 Kếú́t củẢ̉a mạng MLP theo từề̀ng lớú́p ẩn Hình 3.7 Kếú́t củẢ̉a mạng MLP theo từề̀ng số lượng nơ-ron lớú́p ẩn Hình 3.8 Kếú́t mạng MLP thay đổẢ̉i giá trịẠ̣ Dropout iv Hình 3.9 Khảo sát mạng CNN vớú́i tỉ lệ học khác 43 Hình 3.10 Kếú́t mạng CNN tăng số khối tíú́ch chập 44 Hình 3.11 Kếú́t mạng CNN tăng số lượng đồ đặc tíú́nh 44 Hình 3.12 Kếú́t mạng CNN thay đổẢ̉i giá trịẠ̣ Dropout 45 Hình 3.13 Sơ đồ biểu diễn kíú́ch thướú́c củẢ̉a bộ lọc ảnh hưởng tớú́i mô hìề̀nh 47 Hình 3.14 Sơ đồ thể kíú́ch thướú́c củẢ̉a bướú́c trượt ảnh hưởng tớú́i mô hìề̀nh mạng 48 Hình 3.15 Sơ đồ thể loại lấy mẫu xuống ảnh hưởng tớú́i mô hìề̀nh mạng 49 Hình 3.16 Sơ đồ khối mô hìề̀nh CNN sử dụẠ̣ng để đánh giá 50 Hình 3.17 Tỉ lệ mát củẢ̉a thuật toán tối ưu tập dữữ̃ liệu MNIST 51 Hình 3.18 Tỉ lệ nhận dạng đúú́ng củẢ̉a thuật toán tập huấn luyện tập đánh giá 52 Hình 3.19 Tỉ lệ mát củẢ̉a thuật toán tối ưu tập dữữ̃ liệu CIFAR-10 53 Hình 3.20 Tỉ lệ nhận dạng đúú́ng củẢ̉a thuật toán tập huấn luyện tập đánh giá 53 Hình 4.1 Chếú́ độ xem project (dự án) 56 Hình 4.2 Các mo-đun dự án củẢ̉a hệ thống 57 Hình 4.3 Bộ mô cho loại thiếú́t bịẠ̣ 59 Hình 4.4 Mô hìề̀nh mạng CNN sử dụẠ̣ng để phát triển lên ứng dụẠ̣ng 61 Hình 4.5 Tham số weight mô hìề̀nh tensorflow 64 Hình 4.6 Tham số weight mô hìề̀nh tensorflow lite 64 Hình 4.7 Mô hìề̀nh CNN vớú́i địẠ̣nh dạng tensorflow 65 Hình 4.8 Mô hìề̀nh CNN vớú́i địẠ̣nh dạng tensorflow lite 65 Hình 4.9 Giao diện củẢ̉a ứng dụẠ̣ng nhận dạng chữữ̃ số viếú́t tay 66 Hình 4.10 Một số kếú́t nhận dạng đúú́ng tríú́ch xuất từề̀ ứng dụẠ̣ng 67 Hình 4.11 Một số nhận dạng sai tríú́ch xuất từề̀ ứng dụẠ̣ng 68 Hình 4.12 Sơ đồ khối mô hìề̀nh mạng MLP sử dụẠ̣ng đánh giá khảo sát 72 Hình 4.13 Sơ đồ khối mô hìề̀nh mạng Lenet-5 sử dụẠ̣ng khảo sát đánh giá 75 Hình 4.14 Nhập mô hìề̀nh vào Android studio vớú́i địẠ̣nh dạng tflite 85 DANH MỤC BẢẢ̉NG BIỂU Bang 3.1 Kếú́t mạng MLP thay đởẢ̉i kíú́ch thướú́c gói 42 v Bang 3.2 Kếú́t mạng CNN thay đổẢ̉i kíú́ch thướú́c gói 46 Bang 4.1 Chuyển đổẢ̉i địẠ̣nh dạng h5 thành tflite 63 Bang 4.2 Xây dựng mô hìề̀nh MLP để tiếú́n hành đánh giá ngôn ngữữ̃ Python 73 Bang 4.3 Xây dựng mô hìề̀nh Lenet-5 tiếú́n hành đánh giá ngôn ngữữ̃ Python 76 Bang 4.4 Xây dựng mô hìề̀nh CNN để đánh giá thuật toán tối ưu ngôn ngữữ̃ Python 79 Bang 4.5 Huấn luyện đánh giá mô hìề̀nh CNN Google colab ngôn ngữữ̃ Python 82 - Lớp ngõ vao: 100x100x3 pixel - Sô lương khôi tích chập: (Convolution + MaxPooling) + Khôi thư 1: Convolution1 + MaxPooling1: 16 ban đô đặc tính với kích thước 5x5, sô bước trươt = 1, padding = MaxPooling kích thước 2x2 + Khôi thư 2: Convolution2 + MaxPooling2: 32 ban đô đặc tính với kích thước 5x5, sô bước trươt = 1, padding = MaxPooling kích thước 2x2 + Khôi thư 3: Convolution3 + MaxPooling3: 64 ban đô đặc tính với kích thước 5x5, sô bước trươt = 1, padding = MaxPooling kích thước 2x2 + Khôi thư 4: Convolution4 + MaxPooling4: 128 ban đô đặc tính với kích thước 5x5, sô bước trươt = 1, padding = MaxPooling kích thước 2x2 - Ham truyền: Relu - Lớp liên kết đủ: lân lươt la 1000 nơ-ron, 256 nơ-ron - Tỷ lệ Dropout: 50% - Ngõ ra: 10 nơ-ron với ham kích hoat ngõ softmax - Ham ưu Adam với tỷ lệ hoc 0.0001 - Kích thước goi con: 32 - Chu kỳ hoc: 20 Kêt quả đanh gia: Mô hình đanh gia qua 20 chu kỳ hoc cho kết qua Nhận thây tỷ lệ nhận dang đúng của tập huân luyện đat 98% va tập kiêm tra gân đat kết qua cao với ti lệ âpx xi với tập huân luyện, va với mô hình ưu co thê thây đươc tương overfitting đa đươc han chế mô hình đươc thêm vao cac lớp Dropout Thơi gian huân luyện với tập dữ liệu 22783anh chi năm khoang giơ đông hô (vì mô hình sư dụng kích thước bước trươt lớn va với lớp Max pooling thì kích thước cung thông sô mang giam kê) Như vậy, sau qua trình khao sat thì mô hình CNN ưu cho kết qua tôt nhiều so với mô hình Lenet Kêt quả nhận dạng tập kiểm tra: Kêt quả nhận dạng ơiv tập dư liệu mơi: 4.5 Mơ rông ơs dư liệu Với cac bai toan về Deep Learning thì dữ liệu ưcc kỳ quan trong, no quyết định đến bai của bai toan Những bai toan co qua ít dữ liệu thì qua trình huân luyện ơngtư overfitting xay rât nhiều, muôn tranh đươc điều ta cân phai lam giau những dữ liệu đo, va may mắn Keras cung câp thư viện thuận tiện cho việcơrộngm ơs dữ liệu, chi với một vai co thê tăng cương lên vai trăm thậm chí al vai trăm nghìn, triệuanh băng cach: phong to, thu nho, lật ngang, lậtoc,d tăng giam độ angs cho anh, dịch anh sang trai sang phai… Ví dụ: Nêu muôn lật ảnh : Image = ImageDataGenerator(rotation_range=90) Lệnh thưc ăngb cach xoay anh ngâu nhiên theo chiều kim đông hô khoang từ 00 đến 900 Kết qua thu đươc: Dịch chuyển ảnh theo chiêu doc: Image = ImageDataGenerator(height_shift_range=0.5) dịch chuyên sang trai phai ngâu nhiên 1/2 độ rộnganh Dịch chuyển ảnh theo chiêu ngang: Image = ImageDataGenerator(weight_shift_range=0.5) dịch chuyên lên xuông dưới ngâu nhiên 1/2 độ rộnganh Lật ảnh + thay đổi đôangs tôi: Image = ImageDataGenerator(brightness_range=[0.5, 1.5]) gia trị se thay đổi ngâu nhiên giữa 0.5 cho đến 1.5 Với những gia trị nho thì anh se tôi, la ko co thay đổi va lớn anh se sang Phóng to thu nhỏ kích thươc ảnh: Image = ImageDataGenerator(zoom_range=[0.5, 1.5]) anh se đươc phong to hay thu nho ngâu nhiên khoang 50% đến 150% lân kích thước anh Kêt quả tư môt ảnh thu đươc sau: Như vậy oc thê thây chi với một ưcb anh co thê tao bưc anh khac va nếu ap dụng vao sơ dữ liệu nhiều thì ôs lương anh se tăng lên rât nhiều lân 4.6 Kết luận chương Chương cách phát triển từề̀ mô hìề̀nh mạng CNN lên thành ứng dụẠ̣ng nhận dạng chữữ̃ số viếú́t tay nói riêng nhận dạng hìề̀nh ảnh nói chung nềề̀n tảng di đợng Android Cùng vớú́i đó, rúú́t nhận xéú́t vềề̀ đợ tối ưu hay lỗữ̃i củẢ̉a ứng dụẠ̣ng KẾT LUẬN VÀ HƯỚí́NG PHÁT TRIỂN Sau hồn thành đềề̀ tài “Ứú́ng dụẠ̣ng kĩ thuật học sâu vào toán nhận dạng chữữ̃ số viếú́t tay nềề̀n tảng di động Android”, em xin trìề̀nh bày một số kếú́t đạt sau: Trìề̀nh bày khái quát vềề̀ mạng nơ-ron nhân tạo, cụẠ̣ thể mạng MLP mạng CNN Cách thức xây dựng một mô hìề̀nh mạng nơ-ron nhân tạo cho toán nhận dạng chữữ̃ số viếú́t tay Tìề̀m hiểu thuật toán, phương pháp học mạng nơron nhân tạo Khảo sát thực nghiệm tập dữữ̃ liệu chữữ̃ số viếú́t tay MNIST củẢ̉a mô hìề̀nh mạng Đánh giá tầm quan trọng củẢ̉a tham số ảnh hưởng đếú́n hiệu củẢ̉a mô hìề̀nh Từề̀ sở củẢ̉a mạng nơ-ron tíú́ch chập CNN, phát triển lên thành ứng dụẠ̣ng nhận dạng chữữ̃ số viếú́t tay nềề̀n tảng di động Android vớú́i tỉ lệ đúú́ng củẢ̉a mô hìề̀nh mạng 99.3% Hướú́ng phát triển tương lai Do thời gian nghiên cứu còề̀n hạn hẹẠ̣p, kiếú́n thức tiếú́p thu còề̀n chưa đủẢ̉, đềề̀ tài đưa toán nhận dạng chữữ̃ số viếú́t tay vấn đềề̀ liên quan Kếú́t tập dữữ̃ liệu mớú́i nhằm múú́c đíú́ch làm đa dạng kếú́t Việc tối ưu cho dữữ̃ liệu mớú́i cần có trìề̀nh thực nghiệm lâu dài Một số hướú́ng mở rộng đềề̀ tài tương lai như: Tiếú́n hành khảo sát phát triển ứng dụẠ̣ng xây dựng mô hìề̀nh từề̀ tập dữữ̃ liệu khó - Nghiên cứu kỹ thuật mớú́i để tối ưu mô hìề̀nh, giúú́p tăng tỉ lệ nhận dạng tối ưu thời gian huấn luyện mô hìề̀nh tập dữữ̃ liệu mớú́i Phát triển ứng dụẠ̣ng nhận dạng chữữ̃ số viếú́t tay chỉnh chu hướú́ng đếú́n cho việc học chữữ̃ số cho trẻ em TÀI LIỆU THAM KHẢẢ̉O [1] Đềề̀ tài nghiên cứu khoa học Phạm Phúú́ Quốc (2019) “Ứú́ng dụẠ̣ng kĩ thuật học sâu vào toán nhận dạng hìề̀nh ảnh” Khoa điện tử - Viễn thông, Đại học Khoa học - Huếú́ [2] Michael Copeland (2016) What’s the Difference Between Artificial Intelligence, Machine Learning, and Deep Learning?, NVIDIA Blog [3] Bill Schmarzo (2018) Using Confusion Matrices to Quantify the Cost of Being Wrong, View Blog [4] Michael A Nielsen (2015) Neural Networks and Deep Learning, Determination Press [5] V SHARMA (2018) Deep Learning – Introduction to Convolutional Neural Networks Vinod Sharma's Blog [6] Léú́on Bottou, Frank E Curtis, Jorge Nocedal (2016) Optimization Methods for Large-Scale Machine Learning, arXiv:1606.04838 [7] Goodfellow, Bengio & Courville 2016, p 200, "Furthermore, back propagation is often misunderstood as being specifiic to multi-layer neural networks, but in principle it can compute derivatives of any function" [8] Qian, N (1999) On the momentum term in gradient descent learning algorithms Neural Networks: The Official Journal of the International Neural Network Society, 12(1), 145–151 http://doi.org/10.1016/S0893-6080(98)00116-6 [9] Sutskever, I., Martens, J., Dahl, G.E and Hinton, G.E (2013) On the importance of initialization and momentum in deep learning ICML (3), Vol 28, pp 1139—1147 [10] Christian Igel and Michael H usken̈ (2000) Improving the Rprop Learning Algorithm http://citeseerx.ist.psu.edu/viewdoc/summary? doi=10.1.1.17.1332 [11] Alexandre Déú́fossez, Léú́on Bottou, Francis Bach, Nicolas Usunier (2020) On the Convergence of Adam and Adagrad, arXiv:2003.02395 [12] Matthew D Zeiler (2012), ADADELTA: AN ADAPTIVE LEARNING RATE METHOD,arXiv:1212.5701v1 [cs.LG] 22 Dec 2012 [13] Jean-Louis Queguiner (2019) Deep Learning explained to my 8-year-old daughter OVHcloud blog [14] Fei-Fei Li, Andrej Karpathy, Justin Johnson (2016) Image Classification, in Convolutional Neural Networks for Visual Recognition, Stanford CS [15] Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton (2012) Imagenet classification with deep convolutional neural networks, NIPS, vol 25, pp 1097-1105 [16] Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang (2018) Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift arXiv:1801.05134 [17] Yann LeCun, Courant Institute (1989) The MNIST Database of Handwritten Digits [18] Alex Krizhevsky, Vinod Nair and Geoffrey Hinton (2009) The CIFAR-10 dataset [19] Eugenio Culurciello (2017) “The History of Neural Networks” Medium [20] Sagar Sharma (2017) Epoch vs Batch Size vs Iterations Medium [21] Official homepage: developer.android.com [22] Margaret Maynard-Reid (2019) E2E tf.Keras to TFLite to Android Medium ... Chương 1: Deep Learning, Mang Nơ- ron nhân tao nhiều lớp MLP toán nhận dạng hìề̀nh ảnh Chương 2: Mạng nơ- ron tíú́ch chập (Convolution neural network - CNN) Chương 3: So sanh mô hìề̀nh MLP với... mô hìề̀nh mạng nơ- ron tíú́ch chập (CNN) vao bai toan phân loai củ qua DEEP LEARNING, MẠNG NƠ -RON NHÂN TẠO NHIỀU LỚP MLP VÀ BÀI TỐN NHẬN DẠẠ̣NG HÌNH ẢẢ̉NH Giới thiệu chương Deep Learning... của Deep Learning la những nghiên cưu về mang nơ- ron nhân tao ANN(Artificial Neural Network) , lây cam hưng từ cac mô hình nơ- ron sinh hoc Perceptron Các mô hìề̀nh mạng nơ- ron nhân tạo hay Deep