Professional Documents
Culture Documents
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ử và Công Nghệ Vật
Liệu đã nhiệt tình giúp đỡ, giảng dạy và mang đế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 và xa hơn là có đượ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ễn
thông K40, gia đình và những người đã luôn đông hành, khích lệ, giúp đỡ và
độ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 thành đế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 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ỏi
nhữ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!
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..................................................................................................................... 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.Mạng nơ-ron nhân tạo.......................................................................................... 5
1.3.1.Perceptron........................................................................................................... 6
1.3.2.Sigmoid............................................................................................................... 8
1.3.3.Mạng nơ-ron nhân tạo nhiều lớp MLP........................................................... 1
1.3.4.Bài toán nhận dạng hình ảnh............................................................................ 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
VÀ CÁC THAM SỐ LIÊN QUAN........................................................................... 5
2.1.Giới thiệu chương 2.............................................................................................. 5
2.2.Mạng 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.Vùng 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.Hàm kích hoạt ngõ ra Softmax.......................................................................... 14
2.7.Hàm tổn hao Cross Entropy.............................................................................. 15
2.8.Tỷ lệ học............................................................................................................... 15
ii
2.9.Kết luận chương 2............................................................................................... 16
CHƯƠNG 3.SO SÁNH MÔ HÌNH MLP VỚI CNN VÀ KHẢO SÁT SỰ ẢNH
HƯỞNG CỦA CÁC THAM SỐ............................................................................. 17
3.1.Giới thiệu chương 3............................................................................................ 17
3.2.Cơ sở dữ liệu, so sánh mô hình......................................................................... 17
3.2.1.Cơ sở dữ liệu..................................................................................................... 17
3.2.2.So sánh mô hình MLP và CNN...................................................................... 18
3.3.Đánh giá ảnh hưởng của các tham số............................................................... 21
3.3.1.Lớp tích chập.................................................................................................... 21
3.3.2.Hàm kích hoạt:................................................................................................. 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Ử DỤNG MÔ HÌNH 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.Khảo sát với mạng Lenet................................................................................... 37
4.4.Khảo sát 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
DANH 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
Hì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
Bảng 3.1. Kết quả mạng MLP khi thay đổi kích thước gói con...........................42
v
Bảng 3.2. Kết quả mạng CNN khi thay đổi kích thước gói con..........................46
Bảng 4.1. Chuyển đổi định dạng .h5 thành .tflite................................................. 63
Bảng 4.2. Xây dựng mô hình MLP để tiến hành đánh giá bằng ngôn ngữ
Python........................................................................................................................ 73
Bảng 4.3. Xây dựng mô hình Lenet-5 tiến hành đánh giá bằng ngôn ngữ
Python........................................................................................................................ 76
Bảng 4.4. Xây dựng mô hình CNN để đánh giá các thuật toán tối ưu bằng
ngôn ngữ Python...................................................................................................... 79
Bảng 4.5. Huấn luyện và đánh giá mô hình CNN trên Google colab bằng ngôn
ngữ Python................................................................................................................ 82
vi
DANH MỤC CÁC CHỮ VIẾT TẮT
vii
MỞ ĐẦU
Nghiên cứu, đánh giá các kỹ thuật học sâu trên cơ sở dữ liệu CIFAR10.
Đánh giá tác động của số lớp, tốc độ học( learning rate), các hàm tối ưu
(optimizers), tỉ lệ loại bỏ ngẫu nhiên (dropout)…
Xây dựng mô hình thích hợp dựa trên những đánh giá trên để áp dụng
vào bài toán phân loại củ quả.
Trong quá trình thực hiện đồ án, em đã học hỏi và rèn luyện được một
số kiến thức và kỹ năng như:
Nâng cao kỹ năng lập trình với ngôn ngữ Python, mô phỏng trên
google colab.
Phát triển kỹ năng báo cáo nhóm, làm việc nhóm.
Nâng cao kỹ năng đọc tài liệu khoa học, tài liệu tiếng anh.
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 30080 ảnh màu thuộc 48 lớp với 22783 ảnh
huấn luyện và 7297 ảnh kiểm tra, kích thước mỗi ảnh là 100x100 pixel.
Deep Learning(Mạng MLP và CNN – Các thông số, cấu trúc mạng).
Ngôn ngữ lập trình Python ( Thư viện Keras, numpy, matplotlib…).
Nghiên cứu lý thuyết, đánh giá thông qua mô phỏng thực nhiệm bằng
Google Colaboratory (Google Colab).
Chọn phương pháp đánh giá, hàm kích hoạt, hàm tối ưu và
hàm tổn hao
Huấn luyện mô hình để tối ưu các thông số weight và bias
Đánh giá mô hình và dự đoán với dữ liệu mới
Chương 3: So sánh mô hình MLP với CNN và khảo sát đánh
giá các thông số để xây dựng mô hình.
2
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
Deep Learning là một kỹ thuật huấn luyện đang được nghiên cứu cũng
như ứng dụng rộng rãi, và bài toán nhận dạng hình ảnh là môt trong những
vấn đề được quan tâm hàng đầu. Chương 1 sẽ giới thiệu tổng quan về Deep
Learning, cách thức cấu thành mạng nơ-ron, và phương pháp học, đặc điểm
bài toán nhận dạng.
Deep learning
Thuật ngữ AI (Artificial Intelligence) hay còn gọi là trí thông minh nhân
tạo được nghiên cứu và biết đến vào những năm 1956, AI dùng để chỉ
những cổ máy được chế tạo phức tạp, sở hữu những đặc tính gần giống với
trí thông minh của con người.
3
Machine Learning là một lĩnh vực con của AI, sử dụng các thuật toán
cho 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) : Là một kỹ thuật máy
học để học tập từ tập dữ liệu được gián nhãn cho trước. Nhiệm vụ
của học có giám sát là dự đoán đầu ra mong muốn dựa vào giá trị
đầu vào. Học có giám sát được áp dụng chủ yếu cho 2 bài toán chính
là bài toán dự đoán và bài toán phân lớp (classification problem)
Deep Learning là một nhánh nhỏ của ngành Machine Learning bao gồm
các thuật toán được xây dựng dựa trên cấu trúc của não bộ con người (được
gọi là mạng neuron nhân tạo), mạng nơ-ron nhân tạo không cần con người
lập trình để thực hiện công việc, mà chỉ cần cung cấp cho máy tính một
thuật toán học và lượng lớn dữ liệu thì máy tính sẽ tự học được cách để
nhận dạng một đối tượng. Khởi đầu của Deep Learning là những nghiên
cứu về mạng nơ-ron nhân tạo ANN(Artificial Neural Network), lấy cảm
hứng từ các mô hình nơ-ron sinh học Perceptron.
Các mô hình mạng nơ-ron nhân tạo hay Deep Learning được biết đến
rộng rãi vào 3/2016 khi thuật toán trí tuệ nhân tạo của Google đã đánh bại
nhà 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
già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:
Khả năng tính toán song song tốc độ cao của GPU.
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,…
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 là một kỹ thuật máy học phổ biến được mô
phỏng dựa trên nơ-ron sinh học Bộ não chúng ta sử dụng mạng lớn các nơ-
ron liên kết với nhau để xử lý thông tin. Bên dưới là cấu trúc cơ bản của một
nơ-ron sinh học:
5
Trong đó:
+ Dendrites: Là dây dẫn dữ liệu, gắn liền với nơ-ron và truyền thông tin
đến cho nơ-ron.
+ Nucleus: Là nhân tế bào, tiếp nhận các tín hiệu được truyền đến nơ-
ron, tổng hợp và xử lý các tín hiệu nhận được.
+ Axon: Là dây liên kết để truyền dữ liệu đã được xử lý ở Nucleus này
đi nơi khác
Perceptron
Perceptron là đơn vị nhỏ cấu thành mạng nơ-ron nhân tạo. Một
perceptron 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ết
quả không hoặc có. Cấu trúc một Perceptron đơn giản được mô tả như sau:
6
Trong đó:
+ 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 lý làm việc của Perceptron dựa trên phương pháp sử dụng các
trọng số để xét và lựa chọn giá trị ngõ ra. Để quyết định ngõ ra của các nơ-
ron nhân tạo người ta sử dụng các hàm kích hoạt để thực hiện tính toán.
Hàm kích hoạt được dừng trong Perceptron là hàm bước (step function) – là
một hàm tính tổng của các trọng số nhân với ngõ vào tương ứng và so sánh
với một mức ngưỡng (bias) để đưa ra quyết định ngõ ra tương ứng, công
thức:
7
output =
{ 0nế u ∑ j x j w j≤n g ư ỡ ng
1nế u ∑ j x j w j≥n gư ỡ n g
(1)
Trong đó:
+ n
g
ư
ỡ
n
: mức ngưỡng quyết định giá trị ngõ ra
g
Có 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 giản cho việc Perceptron quyết định ngõ ra là 0 hay
1, ta thay thế giá trị ngưỡng bằng đại lượng bias = – b và công thức (1) được
viết lại thành:
output =
{ 0 n ế u ∑ j x j w j +b≤0
1 n ế u ∑ j x j w j+b≥0
(2)
Giá trị bias b có thể xem là thang đo, và có quyết định lớn đến việc
Perceptron đưa ra giá trị ngõ ra là 1. Việc sử dụng bias sẽ giúp quá trình
tinh chỉnh ngõ ra một cách thuật tiện mà không làm thay đổi các trọng số
trong mạng. Trong các mô hình thực tế, các trọng số và bias trong mạng sẽ
được khởi tạo ngẫu nhiên, quá trình học chính là quá trình tinh chỉnh các
thông số này.
Sigmoid
+ Hàm bước (Step function):
8
Với mạng nơ-ron Perceptron thì hàm kích hoạt là hàm bước, là một hàm
kích hoạt dựa vào ngưỡng. Nếu giá trị đầu vào nằm trong 1 ngưỡng xác
định, nơ-ron sẽ được kích hoạt và gửi chính dữ liệu đó qua lớp tiếp theo.
Nhưng vấn đề khó khăn ở hàm bước là không cho nhiều đầu ra (chỉ 0 hoặc
1).
Để giải quyết được khó khăn này thì Sigmoid ra đời. Về cơ bản Sigmoid
cũng tương tự như Perceptron(cũng có các ngõ vào x1,x2 … và bias), tuy
nhiên điểm khác biệt ở Sigmoid là khi có sự thay đổi nhỏ thông số hệ thống
thì ngõ ra sẽ thay đổi tương ứng. Khác với Perceptron chỉ có các ngõ vào
nhận là 0/1 thì với Sigmoid ngõ vào có thể là bất kì giá trị nào nằm trong
khoảng (0,1) và từ đó ngõ ra sẽ có giá trị o𝑢𝑡𝑝𝑢𝑡 = 𝜎(𝑤. 𝑥 + 𝑏) với 𝜎 được gọi
là hàm sigmoid được định nghĩa sigmoid:
σ
( z )
¿
1
−z
1 +e
9
z
Với ¿ ngõ ra của Sigmoid neuron được viết lại theo các
∑j x j w j+ b
n
g
o
r
a
¿
1
−( ∑j x w + b)
1 + e j j
CT: (
f
z )
¿ CT: ( z )
¿ CT: m
f
( z )
¿
a
x
z −z (¿ 0 ¿ ,¿ z ¿ )
1 e − e
−z z − z
1 + e e +e
Đồ thị:
Đồ thị Đồ thị:
2.1
Ưu - Nhận đầu vào là 1 số thức - Nhận đầu vào là 1 số thực - Ưu điểm vượt trội Sigmoid
điểm sau đó chuyển đổi và đưa và chuyển thành giá trị và tanh:
kết quả ở đầu ra 1 giá trị trong khoảnh (-1,1) ở đầu
+ Relu ko bị bão hòa ở 2 đầu
trong khoảnh (0, 1) ra.
+ Do sigmoid và tanh sử dụng
- Vì hàm sigmoid có đạo - Đối xứng qua gốc tọa độ
hàm exp cũng như công thức
10
hàm đẹp nên thường hay khắc phục nhược điểm của phức tạp tốn nhiều chi phí
được sử dụng sigmoid tính toán trong khi Relu chỉ
sử dụng công thức đơn giản
- Đối xứng qua 0 khắc phục
nên thời gian tính toán nhanh
được nhược điểm của
hơn
sigmoid
Nhược - Hàm Sigmoid bị bão hòa ở - Bị bão hòa ở 2 đầu - Với các node nhỏ hơn 0 khi
điểm 2 đầu và triệt tiêu gradient qua Relu sẽ được đưa về 0 vì
vậy một số đặc tính sẽ bị mất
- Hàm sigmoid không có
trung tâm là 0 gây khó khăn
cho việt hội tụ
11
Mạng nơ-ron nhân tạo nhiều lớp MLP
Mạng nơ-ron nhân tạo nhiều lớp MLP (Mutil Layer Perceptron) là sự kết
hợp của nhiều lớp Perceptron và có cấu tạo như hình dưới:
+ Lớp ngõ vào (Input layer): Tiếp nhận dữ liệu đưa vào mạng
+ Lớp ẩn (Hidden layer): Thực hiện tính toán các thông số dựa trên dữ liệu
được đưa vào mạng từ lớp ngõ vào và chuyển tiếp kết quả tới lớp ngõ ra. Có
thể có 1 hoặc nhiều lớp ẩn
+ Lớp ngõ ra (Output layer): Có 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.
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 các ảnh xám, số lượng
kênh D của ảnh sẽ bằng 1 (D = 1), ví dụ ảnh trong tập dữ liệu Mnist được biểu
diễn dưới một ma trận ảnh xám có kích thước (28x28x1). Với một hình ảnh
mà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àu
Red, Green, Blue.
Với bộ não con người chỉ cần chưa tới vài giây ta có thể nhận dạng được
đối tượng. Tuy nhiên đây lại là một vấn đề khó khăn đối với hệ thống máy
tính. Thậm chí trong một số trường hợp bản thân con người cũng có thể không
nhận dạng đượ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 cảnh: Đối tượng bị hòa trọn vào môi trường xung quanh
trong ảnh
Sự sai khác về tỉ lệ, hình dạng của đối tượng: Tỉ lệ ảnh lớn – nhỏ, bị
lệch hướng so với ảnh góc cũng gây ảnh hưởng đến kết quả dự đoán
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ũng
như 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.
CHƯƠNG 2. LÝ THUYẾT CƠ BẢN VỀ MẠNG NƠ-RON TÍCH CHẬP
CNN VÀ CÁC THAM SỐ LIÊN QUAN
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ản
cấu tạo thành mô hình mạng CNN và cách mà mô hình mạng hoạt động.
Trong chương 1, em đã trình bày về mạng nơ-ron nhân tạo nhiều lớp MLP.
Tuy nhiên việc ứng dụng mô hình này vào giải quyết bài toán 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ệu ngõ
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 tạp và số lượng phép tính
tăng vọt sau mỗi lớp ẩn.
Giả sử với một bức ảnh màu 100*100 được biễu diễn dưới dạng 1 Tensor
100*100*3 (Tensor là một kiểu dữ liệu dạng mảng có nhiều chiều). Nếu để biểu
thị hết nội dung của bức ảnh thì cần truyền vào lớp đầu vào tất cả các pixel
(100*100*3 = 30000). Nghĩa là đầu vào giờ có 30000 nơ-ron. Giả sử số lượng nơ-
ron trong lớp ẩn thứ nhất là 1000. Số lượng trọng số giữa lớp đầu vào và lớp
ẩn thứ nhất là 30000*1000 = 30000000, số lượng bias là 1000. Như vậy, tổng số
thông số là: 30001000. Đây mới chỉ là thông số giữa lớp đầu vào và lớp ẩn thứ
nhất, trong hệ thống còn nhiều lớp khác nữa, và nếu kích thước ảnh tăng, ví
dụ 1000*1000 thì số lượng thông số tăng cực kì nhanh. Vì vậy cần một giải
pháp thích hợp hơn đó là sử dụng mạng 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ếp
nhậ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.
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ạng
lọ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ác
hơn. Lớp tích chập có các đặc điểm sau:
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ớp
ngõ 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ên
thự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ằm
trích xuất nhiều thông tin của hình ảnh như: đường thẳng, đường cong, vùng
biên, đường chéo. Việc cho phép xử lý, trích xuất các thông tin theo chiều
không gian giúp mạng CNN thể hiện được những kết quả tốt đối với các bài
toán nhận dạng hình ảnh.
Ví dụ như hình 2.3.2 vùng có kích thước 3x3 tại lớp ngõ vào được gọi là
vùng 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ính
khá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ách
trượ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 theo
quy 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:
Sau 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ình 2.3).
2.3.3. Số bước trượt (Strides)
Như đã mô tả ở trên, quá trình hình thành lớp ẩn phụ thuộc vào nguyên
tắ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ột
cá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ích
thướ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ịch
chuyể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
ẩn sẽ càng nhỏ.
Ta có công thức tổng quát kích thước của lớp ẩn như sau với giá trị bước
trượt bất kì như sau:
K
í
(2.1)
c
h
t
h
ư
ớ
c
l
ớ
p
¿ ẩ
n
( H )
¿
n− k
s
+ ¿ 1
Trong đó: lớp ngõ vào có kích thước n x n, vùng tiếp nhận cục bộ có kích
thướ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 là 1 (s = 1), lớp ngõ vào có kích thước
10 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.
Ở hình trên, lớp ngõ vào ban đầu có kích thước 8x8 pixel, sau khi được
thêm lớp padding kích thước 1x1 pixel ở 4 cạnh, thì lúc này kích thước lớp ngõ
vào trở thành 10x10 pixel. Giả sử áp dụng vùng tiếp nhận cục bộ có kích thước
3x3 pixel, bước trượt bằng 1. Theo công thức 2.1 ta được lớp ẩn có kích thước
H = (10 – 3)/1 + 1 = 8x8 pixel. Giá trị này bằng với kích thước ban đầu trước khi
thêm padding của lớp ngõ vào. Như vậy, việc thêm padding khắc phục được
sự mất mát thông tin. Tổng quát, với H là kích thước lớp ảnh, n là kích thước
lớp ngõ vào, k là kích thước vùng tiếp nhận cục bộ, s là giá trị bước trượt, p là
giá trị padding,, ta có được công thức sau:
K
í
(2.2)
c
h
t
h
ư
ớ
c
l
ớ
p
¿ ẩ
n
H ) (
¿
n− k + 2 p
s
+ ¿ 1
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ác
bả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ột
giải pháp được đề xuất là sử dụng các lớp pooling. Mục đích của các lớp
pooling là để giảm kích thước của dữ liệu từ đó giảm số lượng các thông số và
tính toán trong mạng, đồng thời vẫn giữ nguyên chiều sâu của dữ liệu. Có các
phương pháp pooling như max pooling hay average pooling.
Vớ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ì các bản đồ đặc tính sẽ được giảm bằng cách: một
cửa sổ nhỏ ở lớp trước sẽ được thay thế bằng tổng trung bình của các nơ-ron ở
lớp đó. Hình 2.8a là max pooling, 2.8b là 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ư này, sau khi đi qua lớp
pooling, kích thước của lớp ngõ ra sẽ được giảm một nửa. Các kích thước
pooling lớn hơn sẽ làm mất mát thông tin dữ liệu nhiều hơn.
Dropout là phương pháp cho phép huấn luyện mạng nơ-ron nhân tạo
tránh được trường hợp overfitting [16]. Overfitting là một trường hợp thường
gặ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 khi
thử 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ệc
huấn luyện các mô hình, mục đích cuối cùng chính là tỉ lệ nhận dạng đúng
càng cao càng tốt. Để đạt được điều đó, mô hình mạng phải được xây dựng
phứ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 pháp dropout sẽ 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
tấ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 phải), 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.
Hàm 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ị nơ-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:
yi
¿
ey
j
i
(2.4)
∑i= 1 e
yi
Trong đó: yi là xác suất của ngõ ra y i ; j là số lượng nơ-ron ở lớp ngõ ra.
Công thức (2.4) được hiểu đơn giản là xác suất của nơ-ron thứ i bằng giá trị
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.
Cross Entropy được sử dụng rộng rãi ngày nay trong các mạng có chứa
các lớp softmax ở ngõ ra. Cross Entropy sử dụng giá trị xác suất của ngõ ra dự
đoán để so sánh với ngõ ra thực sự. Công thức hàm tổn hao được cho bởi:
C
(w ,b )
¿
N
−¿ ∑ y i log ai
i=1
Trong đó: ai là xác suất của nơ-ron ngõ ra thứ i ở lớp ngõ ra; y i là giá trị
ngõ ra thực sự
Hàm cross entropy có lợi thế trong việc tối ưu hàm mất mát khi mà sự
chênh lệch khi mô hình mạng đoán đúng và đoán sai là rất lớn. Mô hình dự
đoán sai càng xa giá trị thực sự, hàm tổn hao có giá trị càng lớn. Sự chênh lệch
giá trị hàm tổn hao lớn sẽ giúp các mô hình học tốt hơn, khi dự đoán càng sai,
mô 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: Nhãn dán của 1 ngõ vào là [1; 0; 1] tại ngõ ra có 3 nơ-ron có các giá trị
lần lượt là [3; 4; 5]. Giá trị ngõ ra sau khi qua hàm softmax có giá 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 Cross
Entropy giá trị hàm tổn hao [1; 0; 1] là: 1*log(0.09) + 0*log(0.24) + 1*log(0.66) =
1.2
Tỉ lệ học có vai trò quan trọng trong việc quyết định mô hình mạng học
nhanh 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ới
việc mô hình mạng học nhanh. Việc học càng nhanh sẽ giúp mô hình nhanh
chó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.
2.9. Kết luận chương 2
Chương 2 đã giới thiệu toàn bộ cấu tạo của mô hình mạng nơ-ron tích
chập CNN. Cũng như cách mà mạng nơ-ron hoạt động, cách mà mạng nơ-ron
có thể học để nhận dạng hình ảnh, phương thức để tối ưu mạng nơ-ron.
Chương 3 sẽ trình bày, đánh giá các mô hình mạng MLP và CNN được sử
dụng trong đề tài vào bài toán nhận dạng hình ảnh.
CHƯƠNG 3. SO SÁNH MÔ HÌNH MLP VỚI CNN VÀ KHẢO SÁT SỰ
ẢNH HƯỞNG CỦA CÁC THAM SỐ
Chương 3 sẽ khảo sát khả năng nhận dạng đúng của hai mô hình MLP và
CNN. Từ đó thấy được sự vượt trội giữa 2 mô hình và khảo sát các tham số
liên qua đến mô hình được chọn để xây dựng được mô hình tối ưu và thích
hợp nhất cho bài toán phân loại trái cây sẽ được trình bày trong chương tiếp
theo.
Đối với việc huấn luyện và đánh giá cho mô hình mạng trên môi trường
Google Colab sử dụng thư viện Keras:
Google Colab(Colaboratory) : Là một dịch vụ đám mây miễn phí,
có hỗ trợ GPU(Tesla K80) và TPU. Là một công cụ hỗ trợ rèn luyện kỹ
năng lập trình với ngôn ngữ Python thông qua các thư viện của Deep
Learning. Đã cài đặ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 mạng neuron được viết bằng Python. có ưu
điểm là cú pháp đơn giản, dễ sử dụng, có thể chạy trên CPU và GPU.
Trong Keras hỗ trợ 2 cách xây dựng Model đó là: Sequential model và
Function API.
3.2.1. Cơ sở dữ liệu
Bộ cơ sở dữ liệu CIFAR10 là tập dữ liệu ảnh màu tự nhiên, được thu tập và
chia sẽ miễn phí bởi Alex Krizhevsky, Vinod Nair và Geoffrey Hinton[]. Bộ
CIFAR10 bao gồm 60000 ảnh màu, chia thành 2 tập: gồm 50000 ảnh huấn
luyện và 10000 ảnh đánh giá, có kích thước 32 x 32 x 3 (3 lớp màu RGB). Các
ảnh này gồm 10 nhóm khác nhau, mỗi nhóm có 6000 ảnh, tương ứng mỗi
nhóm được đánh nhãn: máy bay, ô tô, chim, mèo, hươu, chó, ếch, ngựa, tàu và
xe tải.
- Ngõ ra: 10 nơ-ron với hàm kích hoạt ngõ ra là softmax
- Lớp liên kết đầy đủ (Fully Connected): lần lượt là 100 nơ-ron, 50 nơ-ron
Như đã đề cập thì mạng nơ-ron tích chập CNN có ưu điểm hơn so với
mạng nơ-ron nhân tạo nhiều lớp MLP. Nhưng để dễ dàng nhận thấy điều đó
ta sẽ tiến hành đánh giá hai mô hình dựa trên tập dữ liệu Cifar10. Kết quả thu
được như sau:
Ở hình trên có thể thấy rằng sau 50 chu kỳ học, mô hình CNN cho tỉ lệ
nhận dạng đúng trên tập dữ liệu Cifar10 khoảng 81.3% (10 đến 15 chu kỳ đầu
tỷ lệ nhận dạng tăng khá nhanh, sau 20 chu kỳ kết quả thay đổi rất ít và gần
như đạt ngưỡng bão hòa), đối với mô hình MLP thì kết quả nhận dạng tăng
khá chậm và chỉ cho kết quả khoảng 47.7% (50 chu kỳ học), sự chênh lệch tỷ lệ
nhận dạng đúng giữ CNN và MLP lên tới 33.6%. Như vậy, mạng CNN cho kết
quả tốt hơn rất nhiều so với mạng MLP. Sự khác biệt chính là các lớp tích chập
ở mạng CNN có ưu điểm trích suất các đặc tính không gian của ảnh mà mạng
MLP không thể thực hiên được.
Kết luận: Sau quá trình đánh giá hai mô hình CNN và MLP trên tập dữ
liệu Cifar10 có thấy được mô hình CNN cho tỉ lệ nhận dạng ảnh đúng cao hơn
rất nhiều so mới mô hình MLP và trong tất cả các bài toán nhận dạng thì việc
lựa cho mô hình CNN là giải pháp thích hợp nhất. Cũng từ đó mà mô hình
được lựa chọn để áp dụng vào bài toán phân loại củ quả sẽ trình bày trong
chương tiếp theo là CNN. Tuy nhiên, để có một mô hình CNN tối ưu, hiệu quả
cho bài toán đó thì nhiệm vụ tiếp theo đây sẽ là thực hiện đánh giá, so sánh sự
ảnh hưởng của các số tham số lên mô hình CNN sử dụng tập dữ liệu Cifar10.
Các tham số bao gồm:
Lớp tích chập: Số lượng lớp, kích thước bộ lọc, số bước trượt
Lưu ý: Với dữ liệu đa dạng như Cifar10 cùng với mô hình CNN đơn giản
nhằm mục đích chỉ đánh giá để thấy rõ sự ảnh hưởng của các tham số, nêu mô
hình cho kết quả nhận dạng đúng không được cao.
Để đánh giá sự ảnh hưởng của số lượng lớp tích chập, ta tiến hành khảo
sát bằng cách tăng số lượng lớp tích chập từ 1 lên 2, 3, 4 lớp với chu kỳ học là
30, dùng chung lớp liên kết đầy đủ với 2 lớp ẩn và sử dụng hàm tối ưu Adam.
Kết quả thu được như sau:
Ảnh Hưởng Của Số Lớp Tích Chập
90 82.3
81.2 79.8
80 74.5 75.7
69.7 72.4
70 65.3
60
50
40
30
20
10
0
1 lớp tích chập 2 lớp tích chập 3 lớp tích chập 4 lớp tích chập
Từ biểu đồ trên quan sát được với 1 lớp tích chập thì tỷ lệ nhận dạng đúng
ở trên tập huấn luyện là 81.2% và tập đánh giá là 65.3% lúc này đã xảy ra hiện
tượng overfitting, mô hình được coi là “học tủ” khi quá trình huấn luyện đạt
kết quả cao nhưng khi kiểm tra lại cho kết quả thấp hơn rất nhiều. Tuy nhiên,
khi tăng số lượng lớp tích chập lên 2, 3 hoặc 4 thì tỷ lệ nhận dạng ở trên tập
đánh giá có xu hướng tăng lên và hiện tượng overfitting gần như được hạn
chế. Như vậy việc tăng số lượng lớp tích chập làm tăng tỷ lệ nhận dạng đúng,
hay mạng nhiều lớp hơn có khả năng học được những thuộc tính tốt và cần
thiết cho quá trình nhận dạng.
Số lượng bộ lọc cũng có ảnh hưởng đến kết quả của mô hình. Thực hiện
khảo sát với mạng CNN sử dụng 3 lớp tích chập, tỷ lệ Dropout 0.5, hàm tối ưu
Adam, giữ nguyên khối liên kết đầy đủ sau 30 chu kỳ học thì việc thay đổi số
lượng bộ lọc có ảnh hưởng như sau:
Số lượng bộ lọc
90 82.5
80 73.2 75.1
71.8
68.8
70
61.2
60
50
40
30
20
10
0
16 bộ lọc 32 bộ lọc 64 bộ lọc
Qua hình trên, quan sát được tỷ lệ nhận dạng đúng ở trên cả 2 tập huấn
luyện và đánh giá tăng khi ta tăng số lượng bộ lọc từ 16 lên 32, 64 bộ lọc. Như
vậy việc cung cấp thêm nhiều bộ lọc giúp mô hình tạo ra được nhiều bản đồ
đặc tính khác nhau, từ đó trích suất được nhiều đặc trưng, thông tin của ảnh
giúp cho việc nhận dạng ảnh tăng lên.
Kích thước bộ lọc và số bước trượt liên quan đến quá trình trích suất thông
tin trên ảnh, kích thước bộ lọc và số bước trượt càng lớn thì quá trình trích suất
càng nhanh, nhưng mất mát thông tin càng lớn. Trường hợp khi tăng kích
thước của bộ lọc và số bước trượt thì kết quả thu được như sau:
Kích thước bộ lọc
90
86.9
84.5 85.3
85
79.7 79.2
80
76.8
75
70
kernel 3x3 kernel 5x5 kernel 7x7
Theo 2 biểu đồ trên, ta quan sát được như sau: Về kích thước bộ lọc, khi
tăng từ 3x3 lên 5x5 thì tỉ lệ nhận dạng đúng có thể xem xấp xỉ nhau, những khi
kích thước bộ lọc tăng lên 7x7 thì tỷ lệ nhận dạng đúng trên tập đánh giá giảm.
Tương tự như việc tăng kích thước bộ lọc thì khi tăng số bước trượt thì mô
hình nhận dạng đúng càng giảm cụ thể với bước trượt bằng 1 (s = 1) tỷ lệ nhận
dạng đúng trên tập đánh giá là 74.2% và tỷ lệ này giảm đi lần lượt là 8.4% với
s = 2, 13.5% với s = 3.
Kết luận: Có thể thấy việc tăng kích thước bộ lọc cũng như số bước trượt
dẫn đến mô hình nhận dạng kém hơn. Như vậy với bộ lọc có kích thước 3x3
hoặc 5x5 và số bước trượt bằng 1 (s = 1) được xem là tối ưu nhất.
Nhận xét: Từ biểu đồ trên, có thể thấy được hàm Relu cho kết quả nhận
dạng cao hơn nhiều so với 2 hàm Sigmoid và Tanh. Ưu điểm này là do tốc độ
hội tụ nhanh của hàm Relu và hàm Relu không bị bão hòa ở 2 đầu. Khác với
hàm Relu thì nhược điểm của hàm Sigmoid và Tanh đều bị bảo hòa ở 2 đầu
gây triệt tiêu gradient, điều này được thấy rõ thông qua hàm Tanh khi tỷ lệ
học đạt trạng thái bão hòa sau chu kỳ học thứ 10 và hầu như không thay đổi ở
các chu kỳ tiếp theo.
3.3.3. Pooling:
Như đã biết, Pooling là giải pháp giúp giảm kích thước của dữ liệu từ đó
giảm số lượng các thông số trong mạng nhưng vẫn giữ nguyên được chiều sâu
của dữ liệu. Trong quá trình khảo sát ta sẽ so sánh sự ảnh hương của 2
phương pháp là Max Pooling và Average Pooling. Kết quả sau:
Phương Pháp Lấy Mẫu Xuống
84 82.5
82 80.4
80
78
76 74.2
74 72.1
72
70
68
66
Max pooling Average pooling
Huấn luyện Đánh giá
Từ kết quả trên nhận thấy được với hai phương pháp lấy mẫu thì tỷ lệ
nhận dạng đúng của phương pháp Max pooling cao hơn so với Average
pooling, xét về hiện tượng overfitting thì cả hai phương pháp tương đối giống
nhau.
3.3.4. Dropout
Tỉ lệ Dropout càng cao thì số lượng kết nối bị loại bỏ ngẫu nhiên càng lớn.
Việc loại bỏ các liên kết ngẫu nhiên giúp mạng tự học và cố gắng nhận dạng
đúng, từ đó 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. Để thấy được sự ảnh hưởng, tiến hành đánh giá
với mạng CNN sử dụng 3 lớp tích chập với các trường hợp lần lượt là không
có dropout, dropout 30%, dropout 50% và dropout 70%. Kết quả thu được như
sau:
Thay Đổi Tỷ Lệ Dropout
120
99.2
100 91.6
76.2 80.2 77.9
80 74.5
68.7 67.6
60
40
20
0
Không có dropout Dropout 0.3 Dropout 0.5 Dropout 0.7
Nhận xét: Với trường hợp không sử dụng dropout thu được tỷ lệ nhận
dạng đúng trên tập huấn luyện lên tới 99.2% trong khi ở tập đánh giá cho kết
quả thấp hơn đáng kể chỉ 68.7%, lúc này đã xảy ra hiện tượng overfitting. Với
tỷ lệ dropout 30% lúc này mô hình đã giảm bớt hiện tượng overfitting và khi
tăng tỷ lệ dropout lên 50% thì mô hình đã hoàn toàn tránh được hiện tượng
overfitting lúc này tỷ lệ nhận dạng ở tập huấn luyện và tập kiểm tra được xem
là tốt nhất. Khi tăng tỷ lệ dropout lên 70%, hiệu năng mạng bắt đầu giảm do tỷ
lệ loại bỏ các nơ-ron cao.
3.3.5. Tỉ lệ học
Tỷ lệ học ảnh hưởng đến khả năng học của mạng từ đó quyết định đến khả
năng nhận dạng của mô hình. Tiến hành khảo sát mô hình CNN gồm 3 lớp tích
chập, 30 chu kỳ học, sử dụng hàm tối ưu Adam với tỷ lệ học lần lượt là 0.5, 0.001,
0.0001, và 5e-06. Kết quả thu được như sau:
100
90 86.6
81.7
80 76.2 75.4
70
60
50 43.5 47.1
40
30
20 10
9.9
10
0
Tỷ lệ học 0.5 Tỷ lệ học 0.001 Tỷ lệ học 0.0001 Tỷ lệ học 5e-06
Kích thước bộ lọc 5x5 (thời gian huấn luyện nhanh hơn bộ lọc 3x3)
Tập cơ sở dữ liệu Fruit-360[] sử dụng trong đồ án này bao gồm 30080 ảnh
phân làm 2 tập với 22782 ảnh cho tập huấn luyện và 7279 ảnh cho tập kiểm tra.
Cơ sở dữ liệu Fruit-360 được tạo ra như sau: Đối tượng được gắp vào trục của
motor, với tốc độ quay chậm của motor những bức ảnh sẽ được chụp lại, sau
đó mỗi đối tượng sẽ được lưu vào một thư mục riêng hay mỗi đối tượng sẽ
được gán nhãn riêng biệt. Những hình ảnh lưu lại sau đó sẽ được xử lý bằng
cách loại bỏ phần nền và giảm kích thước ảnh về 100x100 pixel. Với tập dữ liệu
Cifar10, ảnh sẽ bao gồm đối tượng và nhiễu từ phần nền và đây là nguyên
nhân dẫn đến khó khăn trong việc phân loại đối tượng, thì với tập dữ liệu
Fruit-360 sau khi đã loại bỏ được phần nền, khả năng phân loại đúng đối
tượng sẽ đạt kết quả cao hơn.
Ví dụ hình bên dưới: bên trái là ảnh gốc và bên phải là ảnh sau khi đã xóa
nền và giảm kích thước.
4.1
- Lớp ngõ vào: 100x100x3 pixel
- Lớp liên kết đầy đủ: lần lượt là 120 nơ-ron, 84 nơ-ron
- Lớp liên kết đầy đủ: lần lượt là 1000 nơ-ron, 256 nơ-ron
2
Kết quả nhận dạng với tập dữ liệu mới:
3
4
5
4.5. Mở rộng cơ sở dữ liệu
Với các bài toán về Deep Learning thì dữ liệu cực kỳ quan trọng, nó quyết
định đến thành bài của bài toán. Những bài toán có quá ít dữ liệu thì trong quá
trình huấn luyện hiện tượng overfitting xảy ra rất nhiều, muốn tránh được
điều này ta cần phải làm giàu những dữ liệu đó, và may mắn Keras cung cấp
thư viện thuận tiện cho việc mở rộng cơ sở dữ liệu, chỉ với một vài ảnh ta có
thể tăng cường lên vài trăm thậm chí là vài trăm nghìn, triệu ảnh bằng cách:
phóng to, thu nhỏ, lật ngang, lật dọc, tăng giảm độ sáng cho ảnh, dịch ảnh
sang trái sang phải… Ví dụ:
Image = ImageDataGenerator(rotation_range=90)
Lệnh trên thực hiện bằng cách xoay ảnh ngẫu nhiên theo chiều kim đồng
hồ trong khoảng từ 00 đến 900. Kết quả thu được:
Dịch chuyển ảnh theo chiều dọc:
Như vậy có thể thấy chỉ với một bức ảnh có thể tạo ra bức ảnh khác nhau
và nếu áp dụng vào cở sở dữ liệu nhiều hơn thì số lượng ảnh sẽ tăng lên rất
nhiều lần.
4.6. Kết luận chương 4
Chương 4 đã chỉ ra 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 trong nhận dạng hình ảnh nói chung
trên nền tảng di động Android. Cùng với đó, đã rút ra nhận xét về độ tối ưu
hay các lỗi cơ bản của ứng dụng.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Sau khi hoàn thành đề tài “Ứng dụng kĩ thuật học sâu vào bài toán nhận
dạng chữ số viết tay trên nền tảng di động Android”, em xin trình bày một số
kết quả đạt được như sau:
- Trình bày khái quát về mạng nơ-ron nhân tạo, cụ thể là mạng MLP và
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 bài toán
nhận dạng chữ số viết tay.
- Tìm hiểu các thuật toán, phương pháp học trong mạng nơ-ron nhân tạo.
- Khảo sát thực nghiệm trên tập dữ liệu chữ số viết tay MNIST của cả 2 mô
hình mạng.
- Đánh giá tầm quan trọng của các tham số ảnh hưởng đến hiệu năng của
mô hình.
- Từ cơ sở của mạng nơ-ron tích chập CNN, đã phát triển lên được thành
ứng dụng nhận dạng chữ số viết tay trên nền tảng di động Android với tỉ
lệ đúng của mô hình mạng là 99.3%
Do thời gian nghiên cứu còn hạn hẹp, kiến thức tiếp thu vẫn còn chưa đủ,
đề tài chỉ đưa ra bài toán nhận dạng chữ số viết tay cơ bản cùng các vấn đề
liên quan. Kết quả trên tập dữ liệu mới nhằm múc đích làm đa dạng kết quả.
Việc tối ưu cho các dữ liệu mới này cần có quá trình thực nghiệm lâu dài. Một
số hướng mở rộng đề tài trong tương lai như:
- Tiến hành khảo sát và phát triển ứng dụng xây dựng mô hình từ các tập
dữ liệu khó hơn.
- Nghiên cứu các kỹ thuật mới để tối ưu mô hình, giúp tăng tỉ lệ nhận dạng
cũng như tối ưu thời gian huấn luyện mô hình ở trên tập dữ liệu mới.
- Phát triển ứng dụng nhận dạng chữ số viết tay hiện tại chỉnh chu hơn
hướng đến cho việc học cá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 bài toán nhận dạng hình ảnh”. Khoa điện tử - Viễn thông, Đại học
Khoa học - Huế
[3] Bill Schmarzo (2018). Using Confusion Matrices to Quantify the Cost of
Being Wrong, View Blog.
[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
[14] Fei-Fei Li, Andrej Karpathy, Justin Johnson (2016). Image Classification,
in Convolutional Neural Networks for Visual Recognition, Stanford CS.
[16] Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang (2018). Understanding the
Disharmony between Dropout and Batch Normalization by Variance Shift.
arXiv:1801.05134.