You are on page 1of 76

LỜ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ử 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!

Sinh viên thực hiện

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..................................................................................................................... 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

Từ viết tắt Nghĩa tiếng Anh Nghĩa tiếng Việt

AI Artificial Intelligence Trí tuệ nhân tạo

CNN Convolutional Neural Mạng nơ-ron tích chập


Network

FC Fully Connected Mạng kết nối hoàn toàn

MLP Multi-Layers Perceptron Multi-Layers Perceptron

CIFAR Canadian Institute for Viện nghiên cứu tiên


Advanced Research tiến Canada

ReLU Rectifier Linear Unit Bộ chuyển đổi tuyến


tính

GPU Graphics Processing Unit Bộ xử lý hình ảnh

GD Gradient Descent Thuật toán giảm dần độ


dốc

ANN Artificial Neural Network Mạng nơ-ron nhân tạo

APK Android Application Bộ cài đặt ứng dụng trên


Package hệ điều hành Android

vii
MỞ ĐẦU

1. Lý do lựa chọn đề tài


2. Mục tiêu đề tài

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.

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 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…).

Ngôn ngữ lập trình Python


1
4. Phương pháp đánh giá

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).

Quá trình thực hiện gồm các bước:

 Chuẩn bị cơ sở dữ liệu.

 Xây dựng mô hình mạng

 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

5. Cấu trúc bài báo cáo đề tài

Nội dung bài đồ án gồm 4 chương:

 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

 Chương 2: Mạng nơ-ron tích chập (Convolution neural


network - CNN)

 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.

 Chương 4: Ứng dụng mô hình mạng nơ-ron tích chập


(CNN) vào bài toán phân loại củ quả

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

Giới thiệu chương 1

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)

 Học không giám sát (Unsupervised Learning) : Là một kỹ


thuật của máy học nhằm tìm ra một mô hình hay cấu trúc ẩn bởi tập
dữ liệu không được gán nhãn cho trước. Tập dữ liệu huấn luyện của
học không giám sát không do con người gán nhãn, mà máy tính sẽ tự
học hoàn toàn.

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:

 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

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 đó:

+ 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 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 đó:

+ x : ngõ vào thứ j của Perceptron


j

+ w : trọng số của ngõ vào x


j j

+ 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

tham số w, x và b như sau:

n
g
o

r
a
¿
1
−( ∑j x w + b)
1 + e j j

Một số hàm kích hoạt:

Sigmoid Tanh Relu


f

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:

Mỗi mô hình mạng MLP sẽ có 3 dạng:

+ 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.

1.1.2. Bài toán 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 máy tính:


Về cơ bản, nhận dạng hình ảnh là quá trình trích xuất các thông tin chứa
trong ảnh để phân loại đối tượng trong ảnh. Và dưới góc nhìn của hệ thống,
dữ liệu khi đưa vào mạng được biểu diễn bằng ma trận (matrix) số liệu hay
tổng quát là 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 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

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ũ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

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ả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.

2.2. Mạng nơ-ron tích chập

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.

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ạ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:

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ùng
tiế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ểm
khá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ạng
CNN, 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ụng
chung 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ích
thước 3 x 3 pixel sẽ có 9 trọng số và 1 bias, 10 thông số này được sử dụng
chung 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ới
mạng MLP. Các ma trận shared weight này sẽ được chập với dữ liệu từ lớp
ngõ vào tạo thành các lớp ngõ ra tương ứng. Khi đó các ma trận trọng số được
gọ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).
Hì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ới
giá 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ớ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.

2.3.2. Vùng tiếp nhận cục bộ


Ở mạng MLP, các nơ-ron lớp này được kết nối đến toàn bộ các nơ-ron của
lớp phía trước và phía sau. Ở mạng CNN, lớp ngõ vào sẽ được giữ nguyên
kích thước cũng như số chiều của hình ảnh ban đầu, mỗi nơ-ron ở lớp ẩn sẽ
đượ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 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.

2.3.4. Zero padding


Ở trên, ta thấy giá trị lớp ngõ vào từ 10x10 pixel qua lớp tích chập thì kích
thước dữ liệu bị rút gọn lại còn 7x7 pixel, nếu tiếp tục cho dữ liệu qua nhiều
lớp tích chập thì đầu ra tiếp tục giảm dẫn đến các vấn đề: Thứ nhất, số lượng
lớp ẩn sẽ bị hạn chế, trong khi để khai thác được nhiều các đặc tính cơ bản của
dữ liệu, chúng ta lại cần nhiều lớp ẩn. Thứ hai, thông tin sẽ bị mất mát dần sau
khi qua bộ lọc 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ác thông tin, các lớp zero padding (gọi tắt padding) cho phép
thực hiện điều này bằ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õ 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

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á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.

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ạ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.

2.6. Hàm kích hoạt ngõ ra Softmax

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.

2.7. Hàm tổn hao Cross Entropy

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

2.8. Tỷ lệ học

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Ố

3.1. Giới thiệu chương 3

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. Cơ sở dữ liệu, so sánh mô hình

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.

3.2.2. So sánh mô hình MLP và CNN


 Mô hình mạng MLP:

- Lớp ngõ vào: 3072 nơ-ron

- Số lượng lớp ẩn: 4 lớp

+ Lớp 1 gồm 1024 nơ-ron

+ Lớp 2 gồm 512 nơ-ron

+ Lớp 3 gồm 256 nơ-ron

+ Lớp 4 gồm 128 nơ-ron

- Hàm truyền: Relu

- Tỷ lệ Dropout: 0.5

- Ngõ ra: 10 nơ-ron với hàm kích hoạt ngõ ra là softmax

- Hàm tối ưu Adam

- Chu kỳ học (Epoch): 50

- Kích thước gói con (Batch size): 32

 Mô hình mạng CNN:

- Lớp ngõ vào: 32x32x3 pixel

- Số lượng khối tích chập: 2 (Convolution + MaxPooling)


+ Khối thứ 1: Convolution1 + MaxPooling1: 32 bản đồ đặc tính với
kích thước 3x3, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

+ Khối thứ 2: Convolution2 + MaxPooling2: 64 bản đồ đặc tính với


kích thước 3x3, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

- Hàm truyền: Relu

- Lớp liên kết đầy đủ (Fully Connected): lần lượt là 100 nơ-ron, 50 nơ-ron

- Tỷ lệ Dropout: 0.5

- Ngõ ra: 10 nơ-ron với hàm kích hoạt ngõ ra softmax

- Hàm tối ưu Adam

- Kích thước gói con: 32

- Chu kỳ học: 50

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

 Hàm kích hoạt: Sigmoid, Tanh và Relu

 Pooling: MaxPooling và AveragePooling

 Tỉ lệ học: 0.5, 0.001, 0.0001, 0.000005 (5e-06)

 Tỉ lệ Dropout: 0%, 30%, 50%, 70%

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.

3.3. Đánh giá ảnh hưởng của các tham số

3.3.1. Lớp tích chập


Số lượng lớp tích chập thể hiện độ phức tạp của mô hình cũng như độ
phức tạp của bài toán đặt ra. Càng nhiều lớp tích chập, thì số lượng bản đồ đặc
tính càng nhiều, mạng CNN càng trích suất được nhiều đặc trưng trên ảnh và
quá trình tính toán cũng phức tạp hơn rất nhiều.

Để đá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

Huấn luyện Đánh giá

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

Huấn luyện Đánh giá

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

Huấn luyện Đánh giá


Số Lượng Bước Trượt
90
79.5
80 74.2
69.3
70 65.8 65.4
60.7
60
50
40
30
20
10
0
Bước trượt 1 Bước trượt 2 Bước trượt 3

Huấn luyện Đánh giá

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.

3.3.2. Hàm kích hoạt:


Hàm kích hoạt đóng vai trò là thành phần phi tuyến tại đầu ra của các nơ-
ron. Nếu không có các hàm kích hoạt phi tuyến thì mạng nơ-ron dù có nhiều
lớp thì vẫn sẽ có hiệu quả như một lớp tuyến tính. Trong phạm vi đồ án chỉ
khảo sát sự ảnh của 3 hàm kích hoạt phổ biến là : Sigmoid, Tanh, Relu. Quá
trình khảo sát tiến hành trên mô hình CNN với 3 lớp tích chập với hàm tới ưu
Adam, sau 50 chu kỳ học kết quả thu được:
Các hàm kích hoạt
90
81.5
80 73.2
70.2
70 64.9 66.7 65.6
60
50
40
30
20
10
0
Sigmoid Tanh Relu

Huấn luyện Đánh giá

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

Huấn luyện Đánh giá

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:

Ảnh Hưởng Của Tỷ Lệ Học

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

Huấn luyện Đánh giá


Nhận xét: Với tỷ lệ học 0.5 được xem là cao nên mô hình không thể hội tụ
được dẫn đến tỷ lệ nhận dạng cực kỳ thấp. Tương tự, với tỉ lệ học 5e-6 (tỷ lệ
học rất thấp) sự thay đổi thông số trong mạng rất nhỏ, hàm tổn hao rất lâu mới
đạt giá trị nhỏ nhất, điều này được thấy rõ khi kết quả nhận dạng sau 30 chu
kỳ học mà mô hình vẫn chưa đạt đến 50% trong khi với tỷ lệ học là 0.001 cho
kết quả trên 75% hay 0.0001 cho kết quả trên 80%. Như vậy với 2 tỷ lệ học
0.001 và 0.0001 được xem là tốt nhất.

3.3.6. Kết luận:


Sau quá trình mô phỏng, đánh giá với mô hình mạng CNN, kết quả đã
thấy rõ sự ảnh hưởng của từng tham số tác động lên mô hình mạng, từ đó
tổng hợp được những tham số có ưu điểm tốt nhất và xây dụng thành một mô
hình hoàn thiện hay được gọi là “mô hình tối ưu”. Mô hình này sẽ áp dụng để
đưa vào giải quyết bài toán phân loại củ quả được trình bài ở chương 4. Mô
hình bao gồm các tham số sau:

 Mô hình sử dụng 4 lớp tích chập

 Hàm truyền Relu

 Kích thước bộ lọc 5x5 (thời gian huấn luyện nhanh hơn bộ lọc 3x3)

 Số bộ lọc sẽ tăng từ 16 cho đến 128

 Số bước trượt bằng 1

 Tỷ lệ dropout là 50%

 Phương pháp lấy mẫu xuống là Max pooling


 Sử dụng hàm tối ưu Adam với tỷ lệ học 0.0001

3.4. Kết luận chương 3

CHƯƠNG 4. SỬ DỤNG MÔ HÌNH CNN TỐI ƯU CHO VIỆC PHÂN


LOẠI CỦ QUẢ

4.1. Giới thiệu chương 4

4.2. Cơ sở dữ liệu

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.

Loại Huấn luyện Kiểm tra

Bưởi 450 ảnh 151 ảnh

Cam 479 ảnh 158 ảnh

Chanh 492 ảnh 164 ảnh

Chanh 1 490 ảnh 148 ảnh

Chanh 2 490 ảnh 164 ảnh


Cherry 490 ảnh 150 ảnh

Chuối 450 ảnh 164 ảnh

Chuối 2 490 ảnh 153 ảnh

Cà chua 474 ảnh 156 ảnh

Dâu tây 475 ảnh 161 ảnh

Dưa hấu 492 ảnh 161 ảnh

Dưa lưới 492 ảnh 163 ảnh

Dưa lưới 2 492 ảnh 147 ảnh

Khoai tây 466 ảnh 99 ảnh

Kiwi 300 ảnh 147 ảnh

Măng cụt 444 ảnh 220 ảnh

Quả mâm xôi 490 ảnh 164 ảnh

Quýt lai 492 ảnh 154 ảnh

Quýt 490 ảnh 163 ảnh

Quả cà 490 ảnh 154 ảnh

Quả dừa 666 ảnh 232 ảnh

Quả lê 720 ảnh 220 ảnh

Quả lê 1 492 ảnh 149 ảnh


Quả lê 2 420 ảnh 140 ảnh

Quả mơ 490 ảnh 166 ảnh

Quả mận 447 ảnh 154 ảnh

Quả mận 2 492 ảnh 164 ảnh

Quả ổi 490 ảnh 165 ảnh

Tangelo 490 ảnh 147 ảnh

Thanh long 450 ảnh 132 ảnh

Trái bơ 427 ảnh 164 ảnh

Trái bơ 2 490 ảnh 152 ảnh

Trái bắp 491 ảnh 164 ảnh

Trái khế 492 ảnh 145 ảnh

Trái lựu 492 ảnh 150 ảnh

Trái thơm 490 ảnh 152 ảnh

Trái táo 444 ảnh 164 ảnh

Trái táo 1 490 ảnh 162 ảnh

Trái táo 2 492 ảnh 163 ảnh

Trái táo 3 456 ảnh 154 ảnh


Trái táo 4 490 ảnh 162 ảnh

Việt quất 426 ảnh 138 ảnh

Vải thiều 462 ảnh 153 ảnh

Xoài 490 ảnh 156 ảnh

Xoài 2 450 ảnh 154 ảnh

Đào 450 ảnh 145 ảnh

Ớt 666 ảnh 155 ảnh

Ớt 2 468 ảnh 164 ảnh

4.3. Khảo sát với mạng Lenet

4.1
- Lớp ngõ vào: 100x100x3 pixel

- Số lượng khối tích chập: 2 (Convolution + MaxPooling)

+ Khối thứ 1: Convolution1 + MaxPooling1: 6 bản đồ đặc tính với


kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

+ Khối thứ 2: Convolution2 + MaxPooling2: 16 bản đồ đặc tính với


kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

- Hàm truyền: Relu

- Lớp liên kết đầy đủ: lần lượt là 120 nơ-ron, 84 nơ-ron

- Không sử dụng Dropout

- Ngõ ra: 48 nơ-ron với hàm kích hoạt ngõ ra softmax

- Hàm tối ưu Adam với tỷ lệ học 0.0001

- Kích thước gói con: 32

- Chu kỳ học: 20

 Kết quả thu được:


Hình trên mô tả tỉ lệ nhận dạng đúng (ảnh trái) và tỉ lệ nhận dạng lỗi (ảnh
phải) của mô hình Lenet5, quá trình huấn luyện với 20 chu kỳ học thu được
kết quả nhận dạng đúng trên tập huấn luyện là 96% và 86% cho tập kiểm tra.
Tỉ lệ nhận dạng đúng đạt kết quả khá cao đối với mô hình đơn giản như Lenet.
Bên cạnh đó sự chênh lệch giữa hai đường biểu diễn tỉ lệ lỗi trên tập huấn
luyện và tập kiểm tra cho thấy rõ sự xuất hiện hiện tượng overfitting trên
mạng này, đây là điều chúng ta không mong muốn xảy ra với hệ thống nhận
dạng. Với mô hình mạng Lenet thời gian cho việc huấn luyện với dữ liệu
22783 ảnh là lên đến hơn 6 giờ đồng hồ (vì mô hình sử dụng bước trượt 3x3
cùng với 2 lớp Max pooling nên quá trình trích suất và tinh chỉnh các thông số
tưởng đối chậm).

4.4. Khảo sát với mô hình CNN tối ưu:


- Lớp ngõ vào: 100x100x3 pixel

- Số lượng khối tích chập: 4 (Convolution + MaxPooling)

+ Khối thứ 1: Convolution1 + MaxPooling1: 16 bản đồ đặc tính với


kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

+ Khối thứ 2: Convolution2 + MaxPooling2: 32 bản đồ đặc tính với


kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

+ Khối thứ 3: Convolution3 + MaxPooling3: 64 bản đồ đặc tính với


kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2
+ Khối thứ 4: Convolution4 + MaxPooling4: 128 bản đồ đặc tính với
kích thước 5x5, số bước trượt = 1, padding = 0. MaxPooling kích
thước 2x2

- Hàm truyền: Relu

- Lớp liên kết đầy đủ: lần lượt là 1000 nơ-ron, 256 nơ-ron

- Tỷ lệ Dropout: 50%

- Ngõ ra: 10 nơ-ron với hàm kích hoạt ngõ ra softmax

- Hàm tối ưu Adam với tỷ lệ học 0.0001

- Kích thước gói con: 32

- Chu kỳ học: 20

 Kết quả đánh giá:


Mô hình đánh giá qua 20 chu kỳ học cho kết quả như trên. Nhận thấy tỷ lệ
nhận dạng đúng của tập huấn luyện đạt 98% và tập kiểm tra gần như đạt kết
quả cao với tỉ lệ xấp xỉ với tập huấn luyện, và với mô hình tối ưu này có thể
thấy được hiện tượng overfitting đã được hạn chế khi mô hình được thêm vào
các lớp Dropout. Thời gian huấn luyện với tập dữ liệu 22783 ảnh chỉ nằm
trong khoảng hơn 3 giờ đồng hồ (vì mô hình sử dụng kích thước bước trượt
lớn hơn và với 4 lớp Max pooling thì kích thước cũng như thông số mạng
giảm đi đáng kể). Như vậy, sau quá trình khảo sát thì mô hình CNN tối ưu
này cho kết quả tốt hơn nhiều so với mô hình Lenet.

 Kết quả nhận dạng trên tập kiểm tra:

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ụ:

 Nếu muốn lật ảnh :

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:

Image = ImageDataGenerator(height_shift_range=0.5) dịch chuyển sang


trái hoặc phải ngẫu nhiên 1/2 độ rộng ảnh

 Dịch chuyển ảnh theo chiều ngang:

Image = ImageDataGenerator(weight_shift_range=0.5) dịch chuyển lên


trên hoặc xuống dưới ngẫu nhiên 1/2 độ rộng ảnh
 Lật ảnh + thay đổi độ sáng tối:

Image = ImageDataGenerator(brightness_range=[0.5, 1.5]) giá trị sẽ thay


đổi ngẫu nhiên giữa 0.5 cho đến 1.5. Với những giá trị nhỏ hơn 1 thì ảnh sẽ tối,
ở 1 là ko có thay đổi và lớn hơn 1 ảnh sẽ sáng hơn
 Phóng to thu nhỏ kích thước ảnh:

Image = ImageDataGenerator(zoom_range=[0.5, 1.5]) ảnh sẽ được phóng to


hay thu nhỏ ngẫu nhiên trong khoảng 50% đến 150% lần kích thước ảnh

 Kết quả từ một ảnh thu được như sau:

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%

Hướng phát triển trong tương lai

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ế

[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 specific 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.

You might also like