Cấu trúc bài báo cáo đề tài Nội dung bài đô an gồm 4 chương: Chương 1: Deep Learning, Mang Nơ-ron nhân tao nhiều lớpMLP và bài toán nhận dạng hì̀nh ảnh Chương 2: Mạng nơ-ron tí́ch ch
Trang 1LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn các thầy cô giáo trong trường Đại học Khoa Học cùng các thầy cô trong 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ề̀ các môn đại cương cũng như các môn chuyên ngành, giú́p em có được nề̀n tảng
cơ sở lý thuyế́t vững chắc và kiế́n thức cần thiế́t để có thể thực hiện bài đồ án tốt nghiệp va xa hơn la co đươc hướng đi tôt trong tương lai
Tiế́p theo đó, em xin chân thành cảm ơn các bạn trong lớ́p Điện tử - Viễnthông K40, gia đình va nhữ̃ng người đã luôn đông hanh, khích lệ, giúp đỡ vađộng viên em trong suôt thơi gian vừa qua
Đặc biệt nhất, em xin gửi lời cám ơn chân thanh đế́n Thạc sĩ VươngQuang Phướ́c, giảng viên Bộ môn Kỹ thuật Viễn thông - trường Đại học KhoaHọc, người đã hướ́ng dẫn, cung cấp tài liệu, động viên và chỉ bảo nhiệt tì̀nh để
em có thể hoàn thành bài đồ án tốt nghiệp này
Trong suốt quá trì̀nh thực hiện đồ án, chắ́c chắ́n sẽ không tránh khỏinhữ̃ng sai sót Em rất mong nhận được sự đóng góp từ̀ các thầy, cô để có thểhoàn thiện hơn bài đồ án tốt nghiệp này Em xin chân thành cám ơn!
Sinh viên thực hiện
Nguyên Trí Định
i
Trang 2MỤ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 .1
CHƯƠNG 1 DEEP LEARNING, MẠNG NƠ-RON NHÂN TẠO NHIỀU LỚP MLP VÀ BÀI TOÁN NHẬN DẠ̣NG HÌNH Ả̉NH .3
1.1 Giớ́i thiệu chương 1 .3
1.2 Deep learning .3
1.3 Mang nơ-ron nhân tao .5
1.3.1 Perceptron .6
1.3.2 Sigmoid .8
1.3.3 Mang nơ-ron nhân tao nhiều lớp MLP .1
1.3.4 Bai toan nhận dang hình anh .2
1.4 Kết luận chương 1 .4
CHƯƠNG 2 LÝ THUYÊT CƠ BẢN VỀ MẠNG NƠ-RON TÍCH CHẬP CNN VA CAC THAM SỐ LIÊN QUAN .5
2.1 Giớ́i thiệu chương 2 .5
2.2 Mang nơ-ron tích chập .5
2.3 Lớ́p tí́ch chập .6
2.3.1 Phép tích chập .6
2.3.2 Vung tiếp nhận cục b ộ .7
2.3.3 Sô bước trươt (Strides) .9
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õ ra Softmax 14
2.7 Ham tổn hao Cross Entropy 15
2.8 Tỷ lệ hoc 15
ii
Trang 32.9 Kế́t luận chương 2 16
CHƯƠNG 3 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 3 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 3 32
CHƯƠNG 4 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 4 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 tôi ưu: 39
4.5 Mơ rộng cơ ơs dữ liệu 43
4.6 Kế́t luận chương 4 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
Trang 4DANH MỤC HÌNH Ả̉NH
Hình 1.1 Mối quan hệ giữ̃a AI/Machine Learning/Deep Learning [2] 4
Hình 1.2 Sơ đồ mô tả cách mạng nơ-ron hoạt động [3] 6
Hình 1.3 Một mạng nơ-ron nhân tạo cơ bản 7
Hình 1.4 Cấu trú́c củ̉a một perceptron vớ́i 5 đầu vào 8
Hình 1.5 Mạng nơ-ron tí́ch chập [5] 10
Hình 1.6 Thuật toán Gradient descent 14
Hình 1.7 Thuật toán SGD vớ́i động lượng (Stochastic gradient descent with momentum) [9] 15
Hình 1.8 Hì̀nh ảnh dướ́i góc nhì̀n củ̉a máy tí́nh [13] 19
Hình 2.1 Nơ-ron ở lớ́p ẩn kế́t nối vớ́i vùng tiế́p nhận cụ̣c bộ .21
Hình 2.2 Quá trì̀nh trượt củ̉a vùng tiế́p nhận cụ̣c bộ theo chiề̀u ngang và chiề̀u dọc 22
Hình 2.3 Quá trì̀nh hì̀nh thành lớ́p ẩn sau khi trượt vùng tiế́p nhận cụ̣c bộ 22
Hình 2.4 Giá trị̣ stride bằng 1 (a) và stride bằng 2 (b) 23
Hình 2.5 Lớ́p ẩn giữ̃ nguyên kí́ch thướ́c lớ́p ngõ̃ vào khi được thêm zero padding 24
Hình 2.6 Lớ́p ngõ̃ vào (a), bộ lọc (b) và bản đồ đặc tí́nh (c) 26
Hình 2.7 Đồ thị̣ hàm ReLu 27
Hình 2.8 Lớ́p ngõ̃ vào (a) và lớ́p ngõ̃ ra sau khi áp dụ̣ng lớ́p pooling (b) 28
Hình 2.9 Mạng nơ-ron sau khi được áp dụ̣ng Dropout [16] 29
Hình 3.1 Hì̀nh ảnh chữ̃ số viế́t tay từ̀ tập MNIST [17] 32
Hình 3.2 Hì̀nh ảnh trí́ch xuất từ̀ bộ cơ sở dữ̃ liệu CIFAR10 [18] 33
Hình 3.3 Mô hì̀nh mạng Multilayer Perceptron (MLP) 34
Hình 3.4 Mô hì̀nh mạng Lenet-5 (CNN) được Yan Lecun công bố năm 1998 [19] 34
Hình 3.5 Khảo sát mạng MLP vớ́i tỉ lệ học khác nhau 38
Hình 3.6 Kế́t quả củ̉a mạng MLP theo từ̀ng lớ́p ẩn 39
Hình 3.7 Kế́t quả củ̉a mạng MLP theo từ̀ng số lượng nơ-ron lớ́p ẩn 40
Hình 3.8 Kế́t quả mạng MLP khi thay đổ̉i giá trị̣ Dropout 41
iv
Trang 5Hình 3.9 Khảo sát mạng CNN vớ́i tỉ lệ học khác nhau. 43
Hình 3.10 Kế́t quả mạng CNN khi tăng số khối tí́ch chập. 44
Hình 3.11 Kế́t quả mạng CNN khi tăng số lượng bản đồ đặc tí́nh. 44
Hình 3.12 Kế́t quả mạng CNN khi 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ể hiện kí́ch thướ́c củ̉a các bướ́c trượt ảnh hưởng tớ́i mô hì̀nh mạng. 48
Hình 3.15 Sơ đồ thể hiện các 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 mát củ̉a các thuật toán tối ưu trên tập dữ̃ liệu MNIST 51
Hình 3.18 Tỉ lệ nhận dạng đú́ng củ̉a các thuật toán trên tập huấn luyện và tập đánh giá. 52
Hình 3.19 Tỉ lệ mất mát củ̉a các thuật toán tối ưu trên tập dữ̃ liệu CIFAR-10 53
Hình 3.20 Tỉ lệ nhận dạng đú́ng củ̉a các thuật toán trên tập huấn luyện và tập đánh giá. 53
Hình 4.1 Chế́ độ xem các 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ô phỏng cho các 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 quả 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 quả mạng MLP khi thay đổ̉i kí́ch thướ́c gói con. 42
v
Trang 6Bang 3.2 Kế́t quả mạng CNN khi thay đổ̉i kí́ch thướ́c gói con. 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á bằng ngôn ngữ̃
Trang 7DANH MỤC CÁC CHỮ VIẾT TẮT
Network
tí́nh
dốc
ANN Artificial Neural Network Mạng nơ-ron nhân tạo
vii
Trang 8Xây dưng mô hình thích hơp dưa trên những đanh gia trên đê ap dụng vao bai toan phân loai củ qua.
Trong qua trình thưc hiện đô an, em đa hoc hoi va rèn luyện đươc một sôkiến thưc va ky năng như:
Nâng cao ky năng lập trình với ngôn ngữ Python, mô phong trên google colab
Phat triên ky năng bao cao nhom, lam việc nhom
Nâng cao ky năng đoc tai liệu khoa hoc, tai liệu tiếng anh
3 Đối tượng nghiên cứu
Bộ cơ sở dữ̃ liệu CIFAR10 vớ́i 60000 hì̀nh ảnh màu gồm: máy bay, ô tô,chim, mè̀o, hươu, chó, ế́ch, ngựa, tàu và xe tải có kí́ch thướ́c 32x32 pixel
Bộ cơ ơs dữ liệu Fruit-360 với 30080anh mau thuộc 48 lớp với 22783anh huân luyện av 7297 anh kiêm tra, kích thước mỗi anh la 100x100 pixel
Deep Learning(Mang MLP va CNN – Cac thông sô, câu trúc mang)
Ngôn ngữ lập trình Python ( Thư viện Keras, numpy, matplotlib…)
Ngôn ngữ̃ lập trì̀nh Python
1
Trang 94 Phương pháp đanh gia
Nghiên cưu ly thuyết, đánh giá thông qua mô phong thưc nhiệm bằng Google Colaboratory (Google Colab)
Qua trình thưc hiện ômg cac bước:
Chuân bị cơ sơ dữ liệu
Xây dưng mô hình mang
Chon phương phap đanh gia, ham kích hoat, ham tôi ưu va ham tổn hao
Huân luyện mô hình đê tôi ưu cac thông sô weight va bias
Đanh gia mô hình va dư đoan với dữ liệu mới
5 Cấu trúc bài báo cáo đề tài
Nội dung bài đô an gồm 4 chương:
Chương 1: Deep Learning, Mang Nơ-ron nhân tao nhiều lớpMLP và bài 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 CNN va khao sat đanhgia cac thông sô đê xây dưng mô hình
Chương 4: Ứng dụ̣ng mô hì̀nh mạng nơ-ron tí́ch chập (CNN) vao bai toan phân loai củ qua
2
Trang 10DEEP LEARNING, MẠNG NƠ-RON NHÂN TẠO NHIỀU LỚP
MLP VÀ BÀI TOÁN NHẬN DẠ̣NG HÌNH Ả̉NH Giới thiệu chương 1
Deep Learning la một yk thuật huân luyện đang đươc nghiên cưu cungnhư ưng dụng rộng ai,r va bai toan nhận dang hình anh la môt trong nhữngvân đề đươc quan tâm hang đâu Chương 1 sẽ giớ́i thiệu tổ̉ng quan về̀ DeepLearning, cach thưc câu thanh mang nơ-ron, va phương pháp học, đặc điểmbài toán nhận dạng
Deep learning
Thuật ngữ AI Artificial( Intelligence) hay còn goi là trí́ thông minh nhântạo được nghiên cứu và biế́t đế́n vào nhữ̃ng năm 1956, AI dung đê chinhững cổ may đươc chế tao phưc tap, sơ hữu những đặc tính gân giông vớitrí thông minh của con ngươi
3
Trang 11Machine Learning là một linh vưc con củ̉a AI, sử dụ̣ng các thuật toáncho phé́p máy tí́nh có thể học từ̀ dữ̃ liệu để đưa ra quyế́t đị̣nh, dự đoán ngõ̃
ra hay thực hiện các công việc thay vì̀ được lập trì̀nh một cách rõ̃ ràng.Machine Learning được phân thành 2 loại:
Học có giám sát (Supervised Learning) : La một yk thuật may hoc đê hoc tập từ tập dữ liệuơcđưgian nhan cho trước Nhiệm vụ của hoc co giam sat la dư đoan đâu ra mong muôn dưa vao gia trị đâu vao Hoc co giam sat đươc ap dụng chủ yếu cho 2 bai toan chính la baitoan dư đoan va bai toan phân lớp (classification problem)
Hoc không giam sat (Unsupervised Learning) : La một yk thuật của may hoc nhăm tìm ra một mô hình hay âuc trúc ân bơi tập dữ liệu không đươc gan nhan cho trước Tập dữ liệu huân luyện của hoc không giam sat không do con ngươi gan nhan, ma may tính se tư hoc hoan toan
Deep Learning la một nhanh nho của nganh Machine Learning bao gômcac thuật toan đươc xây dưng dưa trên câu trúc của nao bộ con ngươi (đươcgoi la mang neuron nhân tao), mang nơ-ron nhân tao không cân con ngươilập trình đê thưc hiện công việc, amchi cân cung câp cho may tính một thuậttoan hoc va lương lớn dữ liệu thì may tính se tư hoc đươc cach đê nhận dangmột đôi tương Khơi đâu của Deep Learning la những nghiên cưu về mangnơ-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 Learning được biế́t đế́nrộng rãi vào 3/2016 khi thuật toán trí́ tuệ nhân tạo củ̉a Google đã đánh bạinhà vô đị̣ch trò̀ chơi cờ vây Lee Sedol, người từ̀ng 18 lần vô đị̣ch thế́ giớ́i bộmôn này Thuật toán AlphaGo được phát triển bởi Google DeepMind đã
4
Trang 12giành chiế́n thắ́ng 4/5 trướ́c nhà vô đị̣ch cờ vây Tại sao Deep Learning là ngày càng thành công, trở thành công cụ̣ đắ́c lực củ̉a AI:
Cơ sở dữ̃ liệu cho việc huấn luyện ngày càng nhiề̀u
Khả năng tí́nh toán song song tốc độ cao củ̉a GPU
Nhiề̀u kĩ thuật mớ́i tăng độ chí́nh xác cho mô hì̀nh: Dropout, Batch Normalization, Data Augmentation
Nhiề̀u thư viện hỗ̃ trợ cho việc huấn luyện mạng nơ-ron nhân tạo sâu vớ́i GPU: Theano, Tensorflow, Pytorch, Keras,…
Nhiề̀u kĩ thuật tối ưu mớ́i : SGD, RMSProp, Adam,…
Sự cải tiế́n củ̉a các cấu trú́c mạng: CNN, RNN, RCNN…
Mạng nơ-ron nhân tạo
Mang nơ-ron nhân tao la một yk thuật may hoc phổ biến đươc mô phongdưa trên nơ-ron sinh hoc Bộ nao chúng ta sư dụng mang lớn cac nơ-ron liênkết với nhau đê xư ly thông tin Bên dưới la câu trúc cơ ban của một nơ-ronsinh hoc:
5
Trang 13nơ-+ Axon: La dây liên kết đê truyền dữ liệu đa đươc xư ly ơ Nucleus nay
đi nơi khac
Perceptron
Perceptron là đơn vị̣ nhỏ cấu thành mạng nơ-ron nhân tạo Mộtperceptron sẽ nhận tí́n hiệu/dữ̃ liệu từ̀ các ngõ̃ vào, thực hiện tí́nh toán vàđưa quyế́t đị̣nh ở ngõ̃ ra Giá trị̣ ngõ̃ ra có thể là 0 hoặc 1 tương ứng vớ́i kế́tquả không hoặc có Cấu trú́c một Perceptron đơn giản được mô tả như sau:
6
Trang 14Trong đó:
+ X1, …, Xn: các ngõ̃ vào nhị̣ phân củ̉a perceptron
+ W1, …, Wn: trọng số (weight) – biểu thị̣ mức độ quan trọng củ̉a ngõ̃ vào (input) so vớ́i ngõ̃ ra (output)
Nguyên ly lam việc của Perceptron dưa trên phương phap sư dụng cactrong sô đê xét va lưa chon gia trị ngõ ra Đê quyết định ngõ ra của cac nơ-ron nhân tao ngươi ta sư dụng cac ham kích hoat đê thưc hiện tính toan.Ham kích hoat đươc dừng trong Perceptron la ham bước (step function) – lamột ham tính tổng của cac trong sô nhân với ngõ vao tương ưng va so sanhvới một mưc ngưỡng (bias) đê đưa ra quyết định ngõ ra tương ưng, côngthưc:
7
Trang 15output = 0nế u ∑
jxj w j≤n g ưỡ ng
Trong đó:
+ xj: ngõ̃ vào thứ j củ̉a Perceptron
+ w j: trọng số củ̉a ngõ̃ vào xj
+ n : mức ngưỡ̃ng quyế́t đị̣nh giá trị̣ ngõ̃ ra
g
ư ỡ
Co thê thấy ngõ̃ ra củ̉a Perceptron phụ̣ thuộc vào tổ̉ng củ̉a các tí́ch ngõ̃vào và trọng số Đê đơn gian cho việc Perceptron quyết định ngõ ra al 0 hay
1, ta thay thế́ giá trị̣ ngưỡ̃ng bằng đại lượng bias = – b và công thưc (1) đượcviế́t lại thành:
Sigmoid
+ Ham bước (Step function):
8
Trang 16Với mang nơ-ron Perceptron thì ham kích hoat la ham bước, la một hamkích hoat dưa vao ngưỡng Nếu gia trị đâu vao năm trong 1 ngưỡng xacđịnh, nơ-ron se đươc kích hoat va gưi chính dữ liệu đo qua lớp tiếp theo.Nhưng vân đề kho khăn ơ ham bước la không cho nhiều đâu ra (chi 0 hoặc 1).
Đê giai quyết đươc kho khăn nay thì Sigmoid ra đơi Về cơ ban Sigmoidcung tương tư như Perceptron(cung co cac ngõ vao x1,x2 … va bias), tuynhiên điêm khac biệtơ Sigmoid la khi co sư thay đổi nho thông sô hệ thôngthì ngõ ra se thay đổi tương ưng Khac với Perceptron chi co cac ngõ vaonhận al 0/1 thì với Sigmoid ngõ vao co thê la bât kì gia trị nao năm trongkhoang (0,1) va từ đo ngõ ra se co gia trị o = ( + ) với đươc goi la hamsigmoid đươc định nghia sigmoid:
σ
¿ 1
9
Trang 17Vớ́i z¿ ngõ̃ ra củ̉a Sigmoid neuron được viế́t lại theo các
tham số w, x và b như sau:
n o r a
1
j w
j+b)
Một ôs ham kích hoat:
kết qua ơ đâu ra 1 gia trị trong khoanh (-1,1) ơ đâu + Relu ko bị bao hòa ơ 2 đâu
Trang 18- Vì ham sigmoid co đao - Đôi xưng qua gôc toa độ + Do sigmoid va tanh sư dụng
ham exp cung như công thưc
10
Trang 19ham đẹp nên thương hay khắc phục nhươc điêm của phưc tap tôn nhiều chi phí
- Đôi xưng qua 0 khắc phục
sư dụng công thưc đơn giannên thơi gian tính toan nhanh
sigmoid
trung tâm la 0 gây kho khăn
cho việt hội tụ
11
Trang 20Mạng nơ-ron nhân tạo nhiêu lơp MLP
Mang nơ-ron nhân tao nhiều lớp MLP (Mutil Layer Perceptron) la sư kết hơp của nhiều lớp Perceptron va co câu tao như hình dưới:
Mỗ̃i mô hì̀nh mạng MLP sẽ co 3 dang:
+ Lớ́p ngõ̃ vào (Input layer): Tiếp nhận dữ liệu đưaaov mang
+ Lớp ẩn (Hidden layer): Thưc hiện tính toan cac thông sô dưa trên dữ liệu đươc đưa vao mang từ lớp ngõ vao va chuyên tiếp kết qua tới lớp ngõ ra Co thê
co 1 hoặc nhiều lớpân
Trang 21+ Lớ́p ngõ̃ ra (Output layer): Co nhiệm vụ̣ thể hiện kế́t quả đạt được từ̀ lớ́p
ẩn dựa trên các thuật toán
1.1.2 Bai toan nhận dạng hình ảnh
Hình ảnh dươi góc nhìn của con người:
Hình ảnh dươi góc nhìn của may tính:
Trang 22Về̀ cơ bản, nhận dạng hì̀nh ảnh là quá trì̀nh trí́ch xuất các thông tin chứatrong ảnh để phân loại đối tượng trong ảnh Va dưới goc nhìn của hệ thông, dữliệu khi đưa vao mang đươc biêu diên băng ma trận (matrix) ôs liệu hay tổngquat la ma trận nhiều chiều (tensor)
Một hì̀nh ảnh bất kì̀ đề̀u được biểu diễn dướ́i dạng một ma trận 3 chiề̀u cókí́ch thướ́c H x W x D trong đó H x W là chiề̀u dài và rộng củ̉a ảnh, D là sốlượng kênh củ̉a ảnh (thể hiện chiề̀u sâu củ̉a ảnh) Với cac anh xam, sô lươngkênh D của anh se băng 1 (D = 1), ví dụ anh trong tập dữ liệu Mnist đươc biêudiên dưới một ma trậnanh xam co kích thước (28x28x1) Vớ́i một hì̀nh ảnhmàu thì̀ ma trận có kí́ch thướ́c (H x W x 3), D = 3 tương ứng vớ́i 3 kênh màuRed, Green, Blue
Trang 23Với bộ nao con ngươi chi cân chưa tới vai giây ta co thê nhận dang đươcđôi tương Tuy nhiên đây lai la một ânv đề kho khăn đôi với hệ thông maytính Thậm chí trong một strương hơp ban thân con ngươi cung co thê khôngnhận dang đươc đôi tương Một số thách thức đối vớ́i bài toán nhận dạng hì̀nhảnh có thể kể đế́n như:
Sự sai khác góc nhì̀n: Các góc nhì̀n khác nhau sẽ đưa ra các dự đoán khác nhau đối vớ́i cùng một đối tượng
Về vân đề che khuât: Đôi tương bị che khuât một phân
Nhâm lân bôi canh: Đôi tương bị hòa tron vao môi trương xung quanhtrong anh
Sự sai khác về̀ tỉ lệ, hình dang của đôi tương: Ti lệanh lớn – nho, bịlệch hướng so vớianh goc cung gây anh hương đến kết qua dư đoan
1.2 Kêt luận chương 1
Chương này đã giớ́i thiệu sơ lược về̀ sự phát triển củ̉a Deep Learning,phương pháp nhận dạng hì̀nh ảnh củ̉a máy tí́nh sử dụ̣ng Deep Learning, về̀bài toán và phương pháp củ̉a Deep Learning trong nhận dạng hì̀nh ảnh cũngnhư các thuật toán tối ưu Chương 2 sẽ trì̀nh bày cơ sở lý thuyế́t và các đơn vị̣cấu thành mạng nơ-ron nhân tạo CNN
Trang 24CHƯƠNG 2 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
Chương 2 sẽ đi sâu vào giớ́i thiệu các khái niệm, các thành phần cơ bảncấu tạo thành mô hì̀nh mạng CNN và cách mà mô hì̀nh mạng hoạt động
2.2 Mạng nơ-ron tích chập
Trong chương 1, em đa trình bay về mang nơ-ron nhân tao nhiều lớpMLP Tuy nhiên việcưng dụng mô hình nay vao giai quyết bai toan phân loạiảnh lại cần được cân nhắ́c: Việc sử dụ̣ng các lớ́p Full connection, mỗ̃i dữ̃ liệungõ̃ vào sẽ được đưa đế́n tất cả các nơ-ron củ̉a lớ́p ẩn thứ nhất, và giá trị̣ sau
đó lại tiế́p tụ̣c được đưa đế́n tất cả các nơ-ron củ̉a lớ́p ẩn thứ hai Nhận thấy,vớ́i kí́ch thướ́c dữ̃ liệu lớ́n, thì̀ hệ thống sẽ trở nên rât phưc tap và số lượngphé́p tí́nh tăng vọt sau mỗ̃i lớ́p ẩn
Gia sư với một ưcb anh mau 100*100 đươc biêu diên dưới dang 1 Tensor100*100*3 (Tensor là một kiểu dữ̃ liệu dạng mảng có nhiề̀u chiề̀u) Nếu đê biêuthị hết nội dung của bưc anh thì cân truyền vao lớp đâu vao tât ca cac pixel(100*100*3 = 30000) Nghia la đâu vao giơ co 30000 nơ-ron Giả sử số lượng nơ-ron trong lớp ân thư nhât là 1000 Số lượng trong sô giữ̃a lớp đâu vao và lớp
ân thư nhât là 30000*1000 = 30000000, số lượng bias là 1000 Như vậy, ổ̉ngt sốthông sô là: 30001000 Đây mớ́i chỉ là thông sô giữ̃a lớp đâu vao và lớp ân thưnhât, trong hệ thông cò̀n nhiề̀u lớp khac nữ̃a, và nế́u kí́ch thướ́c ảnh tăng, ví́
Trang 25dụ̣ 1000*1000 thì̀ số lượng thông sô tăng cực kì̀ nhanh Vì vậy ânc một giai phap thích hơp hơn đo la sư dụng mang nơ-ron tích chập CNN.
Mạng CNN sử dụ̣ng 3 ý tưởng cơ bản là Local Receptive Field (vùng tiế́pnhận cụ̣c bộ), Shared Weight And Bias (trọng số chung) và Pooling (lấy mẫu)[1] Để làm rõ̃ hơn về̀ nguyên lý hoạt động củ̉a CNN, chú́ng ta đi vào chi tiế́t các phân sau
2.3 Lớp tí́ch chập
Lớ́p tí́ch chập đóng vai trò̀ cốt lõ̃i củ̉a mạng CNN, là nhân tố giú́p mạnglọc và học các đặc điểm củ̉a hì̀nh ảnh, tăng khả năng phân loại ảnh chí́nh xáchơn Lớ́p tí́ch chập có các đặc điểm sau:
2.3.1 Phép tích chập
Phé́p tí́ch chập được thực hiện bằng cách tí́nh tổ̉ng củ̉a giá trị̣ củ̉a vùngtiế́p nhận cụ̣c bộ nhân vớ́i ma trận trọng số có kí́ch thướ́c tương đương Điểmkhác biệt giữ̃a mạng CNN và mạng MLP chí́nh là các trọng số ở mạng MLP làhoàn toàn khác nhau giữ̃a các nơ-ron và trong cùng một nơ-ron Vớ́i mạngCNN, các ma trận trọng số sẽ được dùng chung cho một lớ́p ẩn [4] Các giá trị̣dùng chung này được gọi là shared weights và shared biases Việc sử dụ̣ngchung các giá trị̣ shared weights và shared biases sẽ giú́p mạng tí́ch chập giảmđược số lượng lớ́n các thông số Ví́ dụ̣ vớ́i một vùng tiế́p nhận cụ̣c bộ có kí́chthướ́c 3 x 3 pixel sẽ có 9 trọng số và 1 bias, 10 thông số này được sử dụ̣ngchung cho một lớ́p ẩn phí́a sau Rõ̃ ràng số lượng thông số í́t hơn nhiề̀u so vớ́imạng MLP Các ma trận shared weight này sẽ được chập vớ́i dữ̃ liệu từ̀ lớ́pngõ̃ vào tạo thành các lớ́p ngõ̃ ra tương ứng Khi đó các ma trận trọng số đượcgọi là các bộ lọc (filters), ngõ̃ ra tí́ch chập củ̉a vùng tiế́p nhận cụ̣c bộ vớ́i bộ lọcđược gọi là các bản đồ đặc tí́nh (feature maps)
Trang 26Hì̀nh mô tả cách hì̀nh thành các bản đồ đặc tí́nh vớ́i lớ́p ngõ̃ vào 6 x 6, bộlọc có kí́ch thướ́c 3 x 3, stride = 1 (dấu nhân thể hiện phé́p tí́ch chập) Ví́ dụ̣ vớ́igiá trị̣ đầu tiên trong lớ́p bản đồ đặc tí́nh được tí́nh như sau: [2 x (-1) + 2 x (-1)
+ 1 x (-1)] + [0 x 0 + 1 x 0 + 0 x 0] + [0 x 1 + 0 x 1 + 1 x 1] = − ¿ 4
Vùng tiế́p nhận cụ̣c bộ sẽ được chập vớ́i bộ lọc sau mỗ̃i bướ́c trượt trên lớ́pngõ̃ vào tạo thành một nơ-ron ở lớ́p ẩn tương ứng Quá trì̀nh này lặp lại chođế́n khi vùng tiế́p nhận cụ̣c bộ trượt đế́n hế́t lớ́p ngõ̃ vào sẽ tạo thành một bản
đồ đặc tí́nh Vớ́i mỗ̃i bộ lọc sẽ tạo thành một bản đồ đặc tí́nh khác nhau Trênthực tế́, các lớ́p ẩn sẽ có nhiề̀u bản đồ đặc tí́nh vớ́i các bộ lọc khác nhau nhằmtrí́ch xuất nhiề̀u thông tin củ̉a hì̀nh ảnh như: đường thẳng, đường cong, vùngbiên, đường ché́o Việc cho phé́p xử lý, trí́ch xuất các thông tin theo chiề̀ukhông gian giú́p mạng CNN thể hiện được nhữ̃ng kế́t quả tốt đối vớ́i các bàitoán nhận dạng hì̀nh ảnh
2.3.2 Vùng tiêp nhận ucc bộ
Ơ mạng MLP, các nơ-ron lớp nay đươc kết nôi đến toan bộ acc nơ-ron củalớp phía trước va phía sau Ở mạng CNN, lớ́p ngõ̃ vào sẽ được giữ̃ nguyên kí́chthướ́c cũng như số chiề̀u củ̉a hì̀nh ảnh ban đầu, mỗ̃i nơ-ron ở lớ́p ẩn sẽ
Trang 27được kế́t nối vớ́i một vùng nhỏ ở lớ́p ngõ̃ vào Mỗ̃i vùng nhỏ ở lớ́p ngõ̃ vàođược gọi là các cửa sổ̉ hoặc các vùng tiế́p nhận cụ̣c bộ (local receptive field).
Ví́ dụ̣ như hì̀nh 2.3.2 vung có kí́ch thướ́c 3x3 tại lớ́p ngõ̃ vào đươc goi lavung tiếp nhận cục bộ.Vớ́i mỗ̃i vùng tiế́p nhận cụ̣c bộ ở lớ́p ngõ̃ vào, ta sẽ cótương ứng một nơ-ron ở lớ́p ẩn tiế́p theo Các nơ-ron ở lớ́p ẩn này có nhiệm vụ̣học các đặc tí́nh củ̉a vùng cụ̣c bộ ở lớ́p ngõ̃ vào Mỗ̃i nơ-ron sẽ có một đặc tí́nhkhác nhau dựa trên đặc tí́nh củ̉a vùng tiế́p nhận cụ̣c bộ ở lớ́p ngõ̃ vào Để cóđược một lớ́p ẩn gồm các nơ-ron ẩn, quá trì̀nh này được thực hiện bằng cáchtrượt vùng tiế́p nhận cụ̣c bộ trên dữ̃ liệu củ̉a lớ́p ngõ̃ vào Quá trì̀nh trượt theoquy tắ́c dị̣ch từ̀ trái sang phải, từ̀ trên xuống dướ́i, được mô tả như hì̀nh 2.3.3:
Trang 28Sau khi vùng tiế́p nhận cụ̣c bộ trượt qua hế́t ngõ̃ vào, ta có được một lớ́p
ẩn vớ́i các nơ-ron có kí́ch thướ́c nhỏ hơn so vớ́i kí́ch thướ́c lớ́p ngõ̃ vào (hì̀nh2.3)
Trang 292.3.3 Sô bươc trươt (Strides)
Như đa mô ta ơ trên, quá trì̀nh hì̀nh thành lớ́p ẩn phụ̣ thuộc vào nguyêntắ́c trượt vùng tiế́p nhận cụ̣c bộ Ngoài việc tuân theo quy tắ́c đã được nêu ra,kí́ch thướ́c lớ́p ẩn cò̀n phụ̣ thuộc vào số bướ́c trượt vùng tiế́p nhận cụ̣c bộ Mộtcách ngắ́n gọn, số bướ́c trượt chí́nh là số pixel mà vùng tiế́p nhận cụ̣c bộ sẽdị̣ch chuyển so vớ́i vị̣ trí́ trướ́c đó Giả sử chọn vùng tiế́p nhận cụ̣c bộ có kí́chthướ́c 4x4 pixel, vớ́i giá trị̣ bước trươt bằng 1, vùng tiế́p nhận cụ̣c bộ sẽ dị̣chchuyển 1 pixel (hì̀nh 2.4a), vớ́i bước trươt bằng 2, vùng tiế́p nhận cụ̣c bộ sẽdị̣ch chuyển 2 pixel (hì̀nh 2.4b) Giá trị̣ bước trươt càng lớ́n, kí́ch thướ́c củ̉a lớ́p
Trang 30Trong đó: lớ́p ngõ̃ vào có kí́ch thướ́c n x n, vùng tiế́p nhận cụ̣c bộ có kí́chthướ́c (kernel size) k x k, bước trươt s, thì̀ lớ́p ẩn sẽ có kí́ch thướ́c H x H pixel.
Áp dụ̣ng vào hì̀nh 2.4a, với sô bước trươt la 1 (s = 1), lớ́p ngõ̃ vào có kí́ch thướ́c
Trang 3110 x 10, vùng tiế́p nhận có cụ̣c bộ có kí́ch thướ́c 4 x 4 pixel thì H = (10-4)/1 + 1 =
7 pixel
2.3.4 Zero padding
Ơ trên, ta thây gia trị lớp ngõ vao từ 10x10 pixel qua lớp tích chập thì kíchthước dữ liệu bị rút gon lai còn 7x7 pixel, nếu tiếp tục cho dữ liệu qua nhiều lớptích chập thì đâu ra tiếp tục giam dân đến cac vân đề: Thư nhât, sô lương lớp ân sebị han chế, trong khi đê khai thac đươc nhiều cac đặc tính cơ anb của dữ liệu,chúng taail cân nhiều lớp ân Thư hai, thông tin se bị mât mat dân sau khi qua bộocl tích chập Để xây dựng được nhiề̀u lớ́p ẩn hơn nhưng vẫn giữ̃ nguyên kí́ch cỡ̃củ̉a lớ́p ẩn nhằm mụ̣c đí́ch nâng cao hiệu quả củ̉a mô hì̀nh và tránh mất mát cácthông tin, các lớ́p zero padding (gọi tắ́t padding) cho phé́p thực hiện điề̀u naybằng cách thêm vào các nơ-ron có giá trị̣ 0 bao quanh đương biên
Ơ hình trên, lớp ngõ vao ban đâu co kích thước 8x8 pixel, sau khi đươcthêm lớp padding kích thước 1x1 pixel ơ 4 canh, thì lúc nay kích thước lớp ngõ
Trang 32vao trơ thanh 10x10 pixel Gia sư ap dụng vung tiếp nhận cục bộo kích thước3x3 pixel, bước trươt băng 1 Theo công thưc 2.1 ta đươc lớp ân co kích thước
H = (10 – 3)/1 + 1 = 8x8 pixel Gia trị nay băng với kích thước ban đâu trước khithêm padding của lớp ngõ vao Như vậy, việc thêm padding khắc phục đươc
sư mât mat thông tin Tổng quat, với H la kích thước lớp anh, n la kích thướclớp ngõ vao, k la kích thước vung tiếp nhận cục bộ, as gial trị bước trươt, p lagia trị padding,, ta co đươc công thưc sau:
2.4 Lây mẫu xuông (Pooling)
Việc mạng CNN sử dụ̣ng các trọng số dùng chung giú́p hạn chế́ được sốlượng thông số trong mạng Tuy nhiên, nế́u các lớ́p tí́ch chập chứa nhiề̀u cácbản đồ đặc tí́nh thì̀ số lượng các thông số vẫn tăng lên theo cấp số nhân Mộtgiải pháp được đề̀ xuất là sử dụ̣ng các lớ́p pooling Mục đích của các lớ́ppooling la đê giảm kí́ch thướ́c củ̉a dữ̃ liệu từ̀ đó giảm số lượng các thông số vatính toan trong mạng, đông thơi vân giữ nguyên chiều sâu của dữ liệu Có cácphương pháp pooling như max pooling hay average pooling
Trang 33Với Max Pooling, sau khi đi qua lớ́p pooling, các bản đồ đặc tí́nh sẽ được giảm kí́ch thướ́c bằng cách: một cửa sổ̉ nhỏ ở lớ́p trướ́c sẽ được thay thế́ bằng giá trị̣ lớ́n nhất củ̉a nơ-ron ở lớ́p đó, tức lấy giá trị̣ lớ́n nhất củ̉a vùng nơ-ron đó Với Average Pooling thì cac ban đô đặc tính es đươc giam băng cach: một cưa sổ nho ơ lớp trước se đươc thay thế băng tổng trung bình của cac nơ-ron ơ lớp
đo Hì̀nh 2.8a la max pooling, 2.8b la average pooling vớ́i vùng nơ-ron có kí́ch thướ́c 2 x 2 và stride bằng 2 Vớ́i kí́ch thướ́c như nay, sau khi đi qua lớ́p
Trang 34pooling, kí́ch thướ́c củ̉a lớ́p ngõ̃ ra sẽ được giảm một nửa Cac kích thướcpooling lớn hơn se lam mât mat thông tin dữ liệu nhiều hơn.
2.5 Lơp Dropout
Dropout là phương pháp cho phé́p huấn luyện mạng nơ-ron nhân tạotránh được trường hợp overfitting [16] Overfitting là một trường hợp thườnggặp khi huấn luyện các mạng nơ-ron, khi mô hì̀nh huấn luyện bám quá sát dữ̃liệu huấn luyện, dẫn tớ́i kế́t quả trên tập dữ̃ liệu huấn luyện rất cao trong khithử nghiệm mô hì̀nh trên tập dữ̃ liệu đánh giá cho kế́t quả thấp hơn đáng kể.Vớ́i các mô hì̀nh thực tế́, việc overfitting là không thể tránh khỏi bởi vì̀ khi việchuấn luyện các mô hì̀nh, mụ̣c đí́ch cuối cùng chí́nh là tỉ lệ nhận dạng đú́ngcàng cao càng tốt Để đạt được điề̀u đó, mô hì̀nh mạng phải được xây dựngphức tạp, phải được huấn luyện nhiề̀u lần khi đó hiện tượng overfitting sẽxuất hiện
Để giảm được overfitting, thì với phương phap dropout se loại bỏ một số nơ-ron ngẫu nhiên trong mạng vớ́i một xác suất cho trướ́c Bằng cách thiế́t lập
Trang 35tất cả trọng số củ̉a nơ-ron đó bằng 0, đồng nghĩa vớ́i các liên kế́t tớ́i nơ-ron đó
đề̀u không có giá trị̣ (hình trên bên phai), khi đó mô hì̀nh sẽ phải cố gắ́ng nhận
dạng đú́ng trong khi thiế́u thông tin từ̀ các nơ-ron bị̣ loại bỏ Điề̀u này sẽ giú́p
tăng tỉ lệ nhận dạng củ̉a mô hì̀nh nhưng không quá phụ̣ thuộc vào dữ̃ liệu
huấn luyện
2.6 Ham kích hoạt ngõ ra Softmax
Ham softmax được sử dụ̣ng để đưa ra quyế́t đị̣nh củ̉a mạng Hàm softmax
sẽ chuyển các giá trị̣ ngõ̃ ra củ̉a mạng thành phân phối xác suất thỏa mãn 2
yêu cầu: xác suất dự đoán củ̉a một nơ-ron luôn lớ́n hơn 0 và tổ̉ng xác suất dự
đoán củ̉a mạng bằng 1 Thay vì̀ dự đoán đầu ra theo các giá trị̣ ngõ̃ ra, mạng
sử dụ̣ng hàm softmax sẽ dự đoán đầu ra dựa vào xác suất củ̉a các ngõ̃ ra
tương ứng Giá trị̣ ron ngõ̃ ra càng lớ́n, xác suất dự đoán rơi vào ngõ̃ ra
nơ-ron đó càng cao Công thức hàm softmax được cho bởi:
ngõ̃ ra tại nơ-ron thứ i chia cho tổ̉ng tất cả các giá trị̣ nơ-ron tại lớ́p ngõ̃ ra.
2.7 Ham tổn hao Cross Entropy
Cross Entropy đươc sư dụng rộng air ngay nay trong cac mang co chưa
cac lớp softmax ơ ngõ ra Cross Entropy sư dụng gia trị xac suât của ngõ ra dư
đoan đê so sanh với ngõ ra thưc sư Công thưc ham tổn hao đươc cho bơi:
Trang 36mô hì̀nh sẽ bị̣ phạt càng nặng từ̀ đó có thể hiệu chỉnh các thông số phù hợp.
VD: Nhan dan của 1 ngõ vao la [1; 0; 1] tai ngõ ra co 3 nơ-ron co cac gia trịlân lươt la [3; 4; 5] Gia trị ngõ ra sau khi qua ham softmax co gia trị ngõ ra 3:e3/(e3 + e4 + e5) = 0.09, tương tư ngõ ra 4 = 0.24, ngõ ra 5 = 0.66 Với CrossEntropy gia trị ham tổn hao [1; 0; 1] la: 1*log(0.09) + 0*log(0.24) + 1*log(0.66) =1.2
2.8 Tỷ lệ hoc
Tỉ lệ học có vai trò̀ quan trọng trong việc quyế́t đị̣nh mô hì̀nh mạng họcnhanh hay chậm Việc cập nhật trọng số và bias lên quan đế́n tỉ lệ học Tỉ lệhọc càng lớ́n, các giá trị̣ cập nhật củ̉a trọng số và bias càng lớ́n đồng nghĩa vớ́iviệc mô hì̀nh mạng học nhanh Việc học càng nhanh sẽ giú́p mô hì̀nh nhanhchóng đạt tớ́i điểm hội tụ̣ củ̉a mạng, tuy nhiên sự thay đổ̉i các thông số quálớ́n sẽ làm cho hàm tổ̉n hao mô hì̀nh mạng không đạt được giá trị̣ tối ưu nhỏnhất mà sẽ dao động xung quanh giá trị̣ đó Ngược lại khi chọn tỉ lệ học thấp,
sự thay đổ̉i các thông số trong mạng rất nhỏ, làm chậm lại quá trì̀nh học dẫnđế́n rất lâu hàm tổ̉n hao mớ́i đạt giá trị̣ nhỏ nhất
Trang 38CHƯƠNG 3 SO SANH MÔ HÌNH MLP VỚI CNN VA KHẢO SAT SỰ
ẢNH HƯƠNG CỦA CAC THAM SỐ 3.1 Giới thiệu chương 3
Chương 3 se khao sat kha năng nhận dang đúng của hai mô hình MLP vaCNN Từ đo thây đươc sư vươt trội giữa 2 mô hình va khao sat cac tham sôliên qua đến mô hình đươc chon đê xây dưng đươc mô hình tôi ưu va thíchhơp nhât cho bai toan phân loai trai cây se đươc trình bay trong chương tiếptheo
Đối vớ́i việc huấn luyện và đánh giá cho mô hì̀nh mạng trên môi trườngGoogle Colab sử dụ̣ng thư viện Keras:
Google Colab(Colaboratory) : La một dịch vụ đam mây miên phí, cohỗ trơ GPU(Tesla K80) va TPU La một công cụ hỗ trơ rèn luyện yk năng lập trình với ngôn ngữ Python thông qua acc thư viện của Deep Learning
Đa cai đặt sẵn cho chúng ta những thư viện phổ biến như PyTorch, Keras,TensorFlow, OpenCV…
Keras là một thư viện mang neuron đươc viết băng Python co ưuđiêm la cú phap đơn gian, dê sư dụng, co thê chay trên CPU va GPU.Trong Keras hỗ trơ 2 cach xây dưng Model đo la: Sequential model vaFunction API
3.2 Cơ sở dữ liệu, so sanh mô hì̀nh
3.2.1 Cơ sở dữ liệu
Bộ cơ ơs dữ liệu CIFAR10al tập dữ liệuanh mau tư nhiên, đươc thu tập av chia se miên phí bơi Alex Krizhevsky, Vinod Nair va Geoffrey Hinton[] Bộ
Trang 39CIFAR10 bao gôm 60000 anh mau, chia thanh 2 tập: ômg 50000 anh huânluyện av 10000 anh đanh gia, co kí́ch thướ́c 32 x 32 x 3 (3 lớ́p màu RGB) Cacanh nay gôm 10 nhóm khác nhau, mỗi nhom co 6000 anh, tương ưng mỗinhom đươc đanh nhan: máy bay, ô tô, chim, mè̀o, hươu, chó, ế́ch, ngựa, tàu và
xe tải
3.2.2 So sanh mô hình MLP va CNN