Tải bản đầy đủ (.docx) (27 trang)

BÁO cáo NHẬP môn TRÍ TUỆ NHÂN tạo đề tài NHẬN DIỆN kí tự VIẾT TAY áp DỤNG mô HÌNH CNN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1009.93 KB, 27 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THƠNG
**********

BÁO CÁO
NHẬP MƠN TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI : NHẬN DIỆN KÍ TỰ VIẾT TAY
ÁP DỤNG MƠ HÌNH CNN
Giáo viên hướng dẫn

:

ThS.Ngơ Văn Linh

Sinh viên thực hiện

:

Nhóm 04- 118596

Họ tên

MSSV

Nguyễn Thị Thắm

20183984

Trần Thị Hồng Nhung

20183965



Vũ Thị Ngọc Lan

20183939

Hà Nội-2020


Mục lục

2


III

Giới thiệu đề tài

Hiện nay, thông tin, tri thức được chuyển thành dữ liệu lưu trữ trên các thiết bị như máy
tính, laptop,.. hay trên các nền tảng trực tuyến. Đối với những dữ liệu mới, việc đưa dữ liệu vào
kho lưu trữ có thể thực hiện rất dễ dàng bằng cách nhập trực tiếp. Tuy nhiên, có rất nhiều tài liệu
cũ được viết bằng tay cần được lưu trữ vào máy mà việc nhập trục tiếp gây tốn thời gian và
khơng hiệu quả.
Bài tốn nhận dạng chữ viết tay được đặt ra để giải quyết vấn đề này. Bài toán đã được
nghiên cứu rất nhiều và đạt được kết quả đáng kể với nhiều phương pháp khác nhau. Trong đó,
phương pháp sử dụng mạng noron tích chập được sử dụng khá phổ biến và đem lại hiệu quả tốt.
Do đó, nhóm em đã chọn đề tài: “ Nhận diện kí tự viết tay áp dụng mơ hình CNN “ để tìm hiểu
và xây dựng được một mơ hình giải quyết bài tốn.

III. Mơ tả bài tốn
Tên đề tài: Nhận diện kí tự viết tay áp dụng mơ hình CNN

* Mục đích: Nhận diện kí tự viết tay (số và chữ Latin), từ ảnh đầu chụp đầu vào đưa ra kết quả là
kí tự dưới dạng UNICODE.
* u cầu:
• Ảnh đầu vào là ảnh chụp kí tự cần nhận diện, rõ nét, khơng bị khuyết thiếu
• Ứng dụng đưa ra kết quả với độ chính xác cao, nhanh chóng, ít lỗi
• Sử dụng mạng noron
* Ứng dụng: Kết quả bài tốn có thể ứng dụng trong nhận diện biển số xe, chấm bài thi trắc
nghiệm,…

3


IV.

Cơ sở lý thuyết và phương pháp giải quyết

Trong phần này chúng em xin trình bày qua về những kiến thức mà chúng em đã áp dụng vào
để hoàn thành project này. Trong đó bao gồm các kiến thức về mạng nơ-ron nhiều lớp, thuật tốn
lan truyền ngược, mơ hình mạng tích chập. Và phương pháp giải quyết bài tốn được áp dụng
bao gồm phương pháp xử lý ảnh và xây dựng mơ hình nhận diện.

1. Cơ sở lý thuyết
1.1.

Mạng noron và giải thuật lan truyền ngược

Ý tưởng của mạng nơ-ron
Một mạng nơ-ron đơn giản có cấu trúc như sau:
Cấu tạo của một mạng nơ ron bao gồm:
-


đầu

Các node: mỗi node thực hiện một các phép tính tốn
Các kết nối: thực hiện việc truyền tín hiệu từ node này đến node
khác. Thông tin của mỗi kết nối là một trọng số
(weight) để chỉ ra mức độ tín hiệu mạnh hay
yếu.
Dữ liệu đầu vào sẽ đi qua các lớp và mạng sẽ tính tốn để cho ra
ra phù hợp.

Hình 1: Kiến trúc một mạng nơ-ron đơn giản.
Nguồn: < />
Mạng nơ-ron nhiều lớp
Trong thực tế áp dụng, người ta thường dùng mạng nơ-ron bao gồm nhiều lớp kề
nhau.Các node giữa hai lớp kề nhau sẽ liên kết với nhau. Đầu ra của lớp trước sẽ trở thành đầu
vào của lớp kế tiếp. Những lớp ở giữa của mạng (tức là trừ input và output) được gọi chung là
các hidden layers.

4


Hình 2: Cấu trúc mạng nơ-ron nhiều lớp.
Nguồn: Natural Language In Action.Hobson Lane, Cole Howard, Hannes Max Hapke (2019)

5


Hàm kích hoạt
Hoạt động tính tốn tại mỗi node được minh họa thơng qua một mơ hình đơn giản

Perceptron dưới đây:
Từ sơ đồ Hình 3, ta có:
-Đầu vào là vector x gồm n chiều x = [1, x1, x2, …, xn]. Đầu ra là nhãn 0 hoặc 1.
-Vector trọng số w = [w0, w1, w2, …, wn]. Mỗi thuộc tính của đầu vào xi sẽ được gắn
với một kết nối đặc trưng bởi trọng số wi .

Hình 3: Mơ hình Perceptron.
Nguồn: Natural Language In Action. Hobson Lane, Cole Howard, Hannes Max Hapke (2019)

Mỗi node sẽ thực hiện tính tốn wx T . Sau đó tích vơ hướng này được đưa vào hàm kích
hoạt f(x). Hàm kích hoạt ở đây sẽ biến wxT về dạng 0 hoặc 1.
f(x) =
0

1 nếu wx T > t
nếu wx T <= t

Hàm kích hoạt phải là hàm phi tuyến và khả vi. Do là hàm phi tuyến nên nó giúp mạng nơ-ron có
khả năng mơ hình hóa quan hệ phi tuyến giữa input và output. Hơn nữa, do là hàm khả vi nên nó
cho phép thực hiện đạo hàm từng phần hàm mất mát theo các trọng số.
Thuật toán lan truyền ngược
Mạng nơ-ron hoạt động dựa trên 2 thuật toán lan truyền: lan truyền ngược và lan truyền tiến.
-

6

Thuật toán lan truyền tiến (Propagation): thực hiện truyền input dọc theo mạng, tính tốn đầu
ra (theo chiều xi từ input đến output).
Thuật tốn lan truyền ngược (Backpropagation): thực hiện tính tốn mức độ đóng góp vào
hàm mất mát của mỗi trọng số ở từng lớp để cập nhật nó. Trong đó, kết quả tính được của lớp

sau được dùng làm cơ sở tính tốn cho lớp trước (chiều ngược với lan truyền tiến).


Thuật tốn lan truyền ngược đóng vai trị tạo nên sức mạnh cho mạng nơ-ron vì khả năng cập
nhật trọng số và bias dựa vào đầu ra output (như các mơ hình học máy khác). Dưới đây là
phần mơ tả toán học của thuật toán.
* Một số biểu diễn dùng trong bài toán:
L: lớp cuối
L-1: lớp kề cuối
l : Lớp thứ l
y: giá trị thực cần dự đoán

w : trọng số, b: bias
a ( L) =σ(z ( L) )
a : giá trị đầu ra của 1 neural sau khi cho vào
hàm kích hoạt σ
z (L ) =w (L ) ×+b
C: hàm mất mát

Lan truyền ngược cho phép mơ hình mạng có thể cập nhật w và b để giảm giá trị của hàm C.
Để xem ảnh hưởng của trọng số tới C, ta tính đạo hàm của C theo w:
(1)
Ảnh hưởng của b tới C:
(2)
Dữ liệu để huấn luyện sẽ được phân nhỏ thành các lô (batch). Mạng nơ-ron sẽ thực hiện tính tốn
đạo hàm theo lơ này và cập nhật trọng số sau khi đưa mỗi batch dữ liệu vào.
(3)
(4)
Ta thấy đạo hàm hàm mất mát theo trọng số của lớp l: chỉ tính tốn trực tiếp được khi
l = L (l: lớp cuối cùng). Do đó, để cập nhật trọng số và bias của toàn mạng, ta phải tính tốn

đạo hàm từ cuối trở về đầu, lấy đạo hàm riêng đã tính ở lớp sau làm cơ sở tính tốn đạo hàm của
lớp trước đó.
Như vậy, hoạt động cơ bản của mạng nơ-ron là như sau:
-

7

Thực hiện lan truyền tiến ra được output
Từ output tính tốn hàm mất mát
Tính đạo hàm của hàm mất mát theo thuật lan truyền ngược để cập nhật trọng số và bias


1.2.

Mơ hình CNN

Trong mơ hình mạng nơ-ron ở trên, mỗi node của lớp sau sẽ được kết nối toàn bộ với các
node của lớp trước. Việc kết nối toàn bộ như vậy đòi hỏi rất nhiều tham số, điều này khiến cho
mơ hình sau khi huấn luyện khá nặng. Hơn nữa, trong NN,mỗi điểm dữ liệu sẽ sử dụng một bộ
tham số khác nhau nên mơ hình khơng thể hiện được những đặc trưng tương tự nhau nhưng ở vị
trí khác nhau trên ảnh. Do vậy, trong bài toán phân loại ảnh, người ta thường sử dụng mơ hình
mạng CNN-Convolutional Neural Network để khắc phục những hạn chế của NN

Hình 4. Mơ hình điển hình của mạng tích chập.
Nguồn: CS231n: Convolutional Neural Networks for Visual Recognition | Spring 2020

Mạng tích chập thường có 2 phần:
-

Các lớp đầu tiên thường là kết hợp của nhiều Convolutional Layer và Pooling Layer. Chức

năng của phần này là trích chọn đặc trưng của đầu vào.
Phần sau của mạng thường là các lớp kết nối toàn phần (Fully Connected Layer) làm nhiệm
vụ chuyển các đặc trưng học được sang thông số để phân loại.

Các lớp thường sử dụng trong mạng tích chập
-

Convolutional layer (Conv Layer)
Tham số cần học: các bộ lọc. Mỗi bộ lọc sẽ trích ra 1 đặc trưng của ảnh như cạnh, đường
thay đổi màu sắc,…
Việc tính tốn ở Conv Layer được thực hiện
như sau:
Trọng số của lớp này là tập các bộ lọc. Tập
này là một ma trận trọng số (kernel) có kích thước
dài-rộng nhỏ hơn ảnh đầu vào và có độ sâu bằng
với ảnh. Kernel sẽ dịch trên toàn bộ ảnh, tại mỗi
bước dịch nó sẽ thực hiện nhân tích vơ hướng với
phần ảnh tương ứng.
Hình 5:.Hoạt động của Conv Layer.

Từ Hình 5 ta thấy output của Conv Layer có kích thước dài-rộng khác với của input (nó
bị thu nhỏ lại). Do khi dịch bộ lọc, số lần bộ lọc nhân với các phần tử ở biên ít hơn so với
phần tử ở giữa ảnh. Do đó, nếu như trong ảnh có những đặc trưng quan trọng ở biên thì nó sẽ
rất dễ bị bỏ qua. Vậy nên, trong Conv Layer người ta áp dụng kỹ thuật zero-padding, tức là
8


bọc ma trận input bằng các phần tử 0. Kỹ thuật này giúp tất cả các phần tử trong ảnh sẽ có
đóng góp như nhau vào mơ hình. Hơn nữa, nó cũng giúp kiểm sốt kích thước của đầu ra,
đảm bảo kích thước dài-rộng của output bằng với input.

Conv Layer thường được sử dụng kết hợp với một hàm kích hoạt. Hàm này có chức
năng là làm gia tăng độ chênh lệch giữa các giá trị đầu ra của Conv Layer. Những giá trị bé
sẽ được loại bớt từ đó những giá trị lớn của mơ hình sẽ được kích hoạt. Các hàm kích hoạt
thường được dùng là: Leaky ReLU, ReLU, tanh, sigmoid,…
Ưu điểm của Conv Layer so với việc kết nối tồn bộ trong Neural Network đó là:



-

Số lượng tham số = số phần tử của bộ lọc +1 (Nhỏ hơn so với NN)
Do bộ tham số cho mỗi node như nhau nên đặc trưng nên Conv có thể trích được các
đặc trưng giống nhau ở vị trí khác nhau.

Pooling Layer:
Trong mơ hình CNN, giữa các Conv Layer kế tiếp nhau thường là 1 lớp Pooling Layer.
Hoạt động như sau:

Hình 6.Hoạt động của MaxPooling Layer.
Nguồn: CS231n: Convolutional Neural Networks for Visual Recognition | Spring 2020

Tham số cần chỉ rõ đó là kích thước của sổ để thực hiện phép lấy max và độ dài bước
dịch chuyển.
Chức năng của lớp này là giúp giảm kích thước dữ liệu khi nó đi dọc mạng. Giảm kích
thước dữ liệu đồng nghĩa với việc giảm số lượng tham số và cơng việc tính tốn của mơ hình,
từ đó kiểm sốt được tình trạng overfitting.Ngồi ra, Pooling có chức năng giúp việc dự đốn
của mơ hình gần như khơng đổi khi đầu vào bị thay đổi bởi các phép biến đổi nhỏ.
Trong các loại pooling, Max Pooling được sử dụng phổ biến nhất do nó trích xuất các
đặc trưng là các viền/rìa của ảnh. Ngồi Max Pooling, cịn có các kiểu pooling khác như
Average Pooling hay L2-norm Pooling.


9


-

Batch Normalization:

Lớp này sẽ giúp chuẩn hóa kết quả đầu ra của Conv Layer. Lớp này hoạt động như sau:

Hình 7.Hoạt động của BatchNormalization.
Nguồn: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.
Sergey Ioffe, Christian Szegedy(2015)

Lớp này sẽ thực hiện normalize bằng cách trừ đầu vào với kỳ vọng sau đó chia nó cho
phương sai. Điều này sẽ khiến cho i tuân theo phân phối Gaussian. Tuy nhiên vì sau khi thực
hiện normalize, ta được , nên nếu chỉ biến đổi như vậy thì các bước tiếp theo hầu như i hầu
như không thay đổi so với . Do đó ta cần thực hiện thêm bước biến đổi cuối cùng để thay đổi
phương sai và kỳ vọng của dữ liệu trong minibatch.
Việc sử dụng BatchNormalization có ưu điểm đó là, khi mơ hình thực hiện lan truyền
ngược, việc cập nhật trọng số của các lớp trước sẽ không ảnh hưởng nhiều đến kết quả của
lớp thực hiện Batch Normalization và từ đó cũng khơng ảnh hưởng nhiều đến việc cập nhật
trọng số của các lớp phía sau. Do vậy, mơ hình khơng phải cập nhật q nhiều lần, kết quả
train qua mỗi epoch ổn định hơn.
-

Fully Connected Layer (FC Layer):
Sau khi đi qua các Conv Layers, Pooling Layers để trích chọn đặc trưng, dữ liệu sẽ
được truyền vào FC Layer để lấy ra giá trị làm cơ sở để phân loại. Trước khi cho vào FC
Layer, dữ liệu sẽ được duỗi thẳng thành vector 1 chiều. Sau đó, ở FC Layer thực hiện nhân

tích vơ hướng của vector đầu vào với vector trọng số. Do là kết nối toàn phần nên FC Layer
là lớp chứa nhiều trọng số nhất của mơ hình.
Chức năng của lớp này là tổng hợp các đặc trưng đã được trích trọn ở các lớp trước đó để
tính tốn dự đốn. Thường ở cuối các mơ hình CNN sẽ có một hoặc nhiều lớp Dense. Việc
xếp nhiều lớp Dense như vậy cuối mơ hình sẽ giúp mơ hình hóa được các quan hệ phức tạp
giữa đặc trưng và nhãn thực tế của dữ liệu.

-

Dropout:

10


Dropout có chức năng là loại bỏ kết nỗi giữa 2 layer kế tiếp nhau theo một xác suất xác
định. Trong CNN, Dropout thường được sử dụng ở giữa các FC Layers. Tham số cần chỉ rõ
đó là xác suất loại bỏ. Giá trị này thường được đặt là 0.5 khi đặt giữa các FC Layers.
Chức năng của Dropout là giúp mơ hình giảm khả năng bị overfitting. Đồng thời huấn
luyện một mơ hình sử dụng Dropout nhiều lần sẽ cho ra kết quả mỗi lần khác nhau, điều này
cũng giống như việc thử nghiệm nhiều mơ hình.

1.3.

Xử lý ảnh

Khi xử lí thơng tin trên ảnh, để tiện cho q trình xử lí dữ liệu, sẽ dễ dàng hơn nhiều khi ta chỉ
xử lí dữ liệu trên 1 ma trận số thay vì nhiều ma trận => chuyển đổi ảnh màu về ảnh xám
(grayscale converting)
Tương tự như ảnh màu, ảnh xám cũng có kích thước 800 pixel * 600 pixel, có thể biểu diễn
dưới dạng một ma trận kích thước 600 * 800 (số hàng*số cột). Tuy nhiên mỗi pixel trong ảnh

xám biểu diễn chỉ cần 1 giá trị nguyên trong khoảng [0;255] thay vì (r,g,b) như trong ảnh màu.

Giá trị 0 là màu đen, 255 là màu trắng và giá trị pixel càng gần 0 thì càng tối và càng gần 255
thì càng sáng.
-

Để giữ lại các chi tiết chính và loại bỏ các chi tiết thừa trên ảnh =>biến đổi ảnh về dạng
nhị phân – đen trắng (binary).
Ảnh đen trắng là ảnh biểu diễn bởi 1 ma trận 2 chiều, trong đó các phần tử của của ma
trận chỉ có 2 giá trị là 0 – màu đen và 255 – màu trắng.
Để chuyển ảnh sang dạng nhị phân ta chọn một ngưỡng (threshold) để xác định đâu là
điểm ảnh đen và đâu là điểm ảnh trắng. Nếu giá trị trên ảnh xám lớn hơn ngưỡng
threshold, đấy là điểm ảnh trắng và ngược lại.

Gọi ảnh xám là Gray, ảnh đen trắng cần xác định là BW, tọa độ các pixel trên hình là (x,y), ta có
-

11

BW(x,y) = 255 nếu Gray(x,y) => threshold
BW(x,y) = 0 nếu Gray(x,y) <= threshold


2. Phương pháp giải quyết
2.1.

Chuẩn bị dữ liệu huấn luyện

Bộ dữ liệu mà em sử dụng đó là bộ EMNIST trong đó chúng em chia nó ra như sau:
Tập train:

(90240, 28, 28, 1) Để huấn luyện
Tập validation : (22560, 28, 28, 1) Để chọn mơ hình
Tập test :
(18800, 28, 28, 1) Để đánh giá mơ hình đã chọn
Nhãn đầu ra bao gồm 47 nhãn bao gồm các ký tự sau:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabdefghnqrt
Ở đây chúng em gộp các ký tự có cách viết hoa và viết thường giống nhau vào thành 1 nhãn
(VD: chữ o và O; chữ m và chữ M;…)

2.2.

Xử lí ảnh và trích chọn đặc trưng

Bộ dữ liệu sử dụng cho quá trình train model là bộ dữ liệu EMNIST. Các bức ảnh trong
bộ dữ liệu EMNIST là ảnh đen trắng (1 chanel), có kích thước 28x28 pixel (tổng cộng 784
pixel). Mỗi pixel mang một giá trị là một số tự nhiên từ 0 đến 255. Các pixel màu đen có giá trị
bằng 0, các pixel càng trắng thì có giá trị càng cao (nhưng không quá 255).
=> Mục tiêu: Ảnh đầu vào của ứng dụng là ảnh kĩ thuật số (digital image), sau q trình xử lí
ảnh, ảnh sẽ có dạng giống dạng ảnh trong EMNIST để tăng tối đa tính tương đồng về độ phân
giải, cường độ màu sắc => tăng độ chính xác cho dự đốn.
Để thực hiện việc này chúng em sử dụng thư viện cv2 và numpy của Python để thực hiện các
bước xử lý.
Các bước xử lí ảnh và trích chọn đặc trưng:

12

-

Ảnh load được từ thiết bị:


-

Chuyển ảnh từ ảnh màu qua ảnh xám


13

-

Làm sắc nét ảnh, loại bỏ các thành phần tần số cao như nhiễu hay làm trơn ảnh, chuyển
ảnh về dạng binary dạng nền đen chữ trắng

-

Tìm nét và làm đậm nét

-

Xác định vùng chứa kí tự : Xác định số lượng kí tự có trong ảnh, sau đó tìm và lọc
contours.


-

Cắt và Resize lại ảnh đã crop về 28pixel*28pixel

2.3.

Mơ hình mạng CNN


Cấu trúc mơ hình
Mơ hình gồm:
- Phần trích chọn đặc trưng:
3 bộ (Conv – Max Pooling – Batch Normalization). Trong đó,
tại mỗi bộ:





Conv: có sử dụng zero padding,
kernel: 32x3x3, stride = 1, activation
function: ReLU
Max Pooling: kích thước cửa sổ:
2x2, stride = 2.
BatchNormalization: sử dụng tham
số mặc định của Keras

- Phần dự đoán:
(Flatten – Dense – Dropout – Dense - Dense)

Dense: sử dụng activation function:
ReLU

Dropout: xác suất loại bỏ = 0.5
14


Hình 8. Mơ hình CNN để nhận diện


Q trình xây dựng mơ hình
- Lựa chọn số cặp (Conv-Maxpooling):

- Lựa chọn hàm kích hoạt:

Ở đây chúng em có xét 3 hàm kích hoạt ReLU, LeakyReLU, tanh. Do mỗi hàm có ưu
nhược điểm riêng nên chúng em chọn cách thử nghiệm để chọn hàm cho kết quả tốt hơn. Ở
trên cho thấy, hàm ReLU cho kết quả tốt hơn (xấp xỉ hơn hàm LeakyReLU và cao hơn hẳn
hàm tanh). Hàm ReLU có công thức như sau:
15


f(x) = max(0, x)

Hình 8: Hàm ReLU
Nguồn: />
Ưu điểm của ReLU đó là tính tốn nhanh hơn các hàm kích hoạt khác. Hơn nữa, ReLU
biến đầu ra của lớp sử dụng nó thành vector có nhiều phần tử bằng 0 (thưa). Điều này giúp
mơ hình giảm khả năng overfitting và loại bỏ được nhiễu. Và ReLU không gây ra hiện tượng
mất gradient (vanishing gradient problem) như hàm sigmoid và tanh do nó khơng thu hẹp
khoảng giá trị của đầu vào.
Tuy nhiên, hàm ReLU cũng có những hạn chế như là bùng nổ gradient. Nó khiến mơ
hình phải cập nhật trọng số đáng kể sau mỗi lần lan truyền ngược. Điều này khiến mơ hình
mất đi tính ổn định. Ngồi ra, mơ hình sử dụng ReLU có thể gặp phải tình trạng chết. Một nút
sẽ bị mất hoàn toàn tác dụng khi đầu ra của nó là âm. LeakyReLU khắc phục điều này tuy
nhiên khi thử nghiệm thấy ReLU cho kết quả tốt hơn.

16



-

Hàm mất mát: Cross-entropy
Chúng em sử dụng hàm mất mát cross-entropy. Cơng thức của nó như sau:

Trong đó:




ti là xác suất thực tế để nhãn thuộc vào nhãn i (ti = 1 nếu nhãn i, ngược lại ti = 0).
si là xác suất để nhãn là class i mà mô hình tính tốn được.
C: Tập nhãn

Ưu điểm của hàm cross-entropy đó là nó chỉ trừng phạt/thưởng dựa trên xác suất đối với
nhãn chính xác của dữ liệu, khơng bị ảnh hưởng bởi xác suất dự đoán trên nhãn mà dữ liệu
khơng thuộc vào. Ngồi ra, do sử dụng hàm logarit, nên nó sẽ trừng phạt rất nặng nếu mơ
hình dự đoán xác suất vào nhãn thực tế là bé.
Ở trong mơ hình này, chúng em cũng sử dụng kết hợp hàm cross-entropy kết hợp với
hàm softmax. Việc kết hợp này thường được sử dụng trong các mơ hình mạng CNN do hàm
softmax giúp biến kết quả tính tốn được từ mạng về dạng xác suất.
Hàm softmax được tính như sau:

Hàm softmax sẽ giúp đưa kết quả tính tốn được từ của các lớp trong mạng trở về giá trị
thuộc khoảng (0, 1). Tổng các đầu ra tính tốn trên từng nhãn là 1. Do đó, kết quả của
softmax được xem như xác suất để ảnh rơi vào từng ký tự.
Với dữ liệu đầu vào có nhãn thực tế là i=p, hàm mất mát cross entropy khi được sử
dụng kết hợp với hàm softmax sẽ được tính
như sau:
- Lựa chọn thuật toán tối ưu:


17


Từ thử nghiệm, chúng em chọn thuật toán tối ưu cho mơ hình là thuật tốn Adam. Đây cũng
là một thuật toán được sử dụng nhiều hiện nay.
Adam là thuật tốn tối ưu có khả năng thay đổi learning rate cho từng tham số trong q
trình tối ưu. Nó là kết hợp của 2 thuật toán tối ưu: RMSprop và Stochastic Gradient Descent sử
dụng momemtum.

Hình 9.Thuật tốn Adam.
Nguồn: Adam: A Method for Stochastic Optimization. Diederik P. Kingma, Jimmy Ba(2015).

Mỗi epoch sẽ thực hiện tích lũy như sau:

Trong đó, mt được tích lũy giúp cho q trình tối ưu có thể thoát khỏi
các điểm cực tiểu địa phương (hoặc các điểm dạng yên ngựa). vt được tích
lũy để điều chỉnh learning rate sao cho dần dần bước cập nhật càng nhỏ phù
hợp với khi gradient lớn (càng dốc) thì phải cập nhật bước nhỏ.
Tuy nhiên do mt và vt được khởi tạo là các vector 0 nên ở những bước
đầu giá trị tích lũy là khá nhỏ do đó thơng số tích lũy được scale như sau:

Từ đó, learning rate được cập nhật

2.4.
18

Đánh giá mơ hình

như sau:



Mơ hình có số lượng tham số là: 754,735
Độ chính xác trên tập test gồm 18800 ảnh là : 0.8893
Giá trị hàm mất mát: 0.3877
Ngồi ra chúng em cịn thực hiện test trên tập gồm 100 ảnh thực tế có dạng ma trận chữ
để kiểm tra kết hợp hiệu quả của khâu xử lý ảnh và khâu dự đoán. Cách thức chúng em
đánh giá đó là

Kết quả cho độ chính xác là 72,4%.

19


V.

20

Xây dựng ứng dụng nhận dạng


Ứng dụng được viết bằng Python chạy trên nền tảng Python 3.8.6, sử dụng các
thư viện sau:
- Để chạy ứng dụng nhận diện cần cài đặt các thư viện sau: PyQt5,
tensorflow, keras, cv2, numpy, typing.
- Huấn luyện mơ hình, chúng em sử dụng thêm các thư viện sau: pandas,
sklearn, typing.




Để sử dụng ứng dụng trước tiên cần cài đặt môi trường chạy Python:
/>và các thư viện sử dụng cmd: pip install <tên thư viện>




Ứng dụng không cần cài đặt, chỉ cần chạy file gui.py
Giao diện ứng dụng:



Để sử dụng người dùng load file ảnh cần nhận dạng từ thiết bị bằng nút Open,
nhấn Run để nhận dạng. Kết quả sẽ được hiển thị ở phần RESULT


VI. Đề xuất phát triển
21


-

22

Sử dụng các thuật tốn object-detection để tìm kiếm vùng chứa kí tự
Cải tiến mơ hình nhận dạng một từ, một đoạn văn bản
Điều chỉnh mơ hình để nâng cao độ chính xác và tốc độ nhận dạng


Mã nguồn và tài liệu tham khảo
[1]Lý thuyết về Convolutional Layer, Max Pooling Layer: Fei-Fei Li(2020). CS231n:

Convolutional Neural Networks for Visual Recognition | Spring 2020 | Convolutional Neural
Networks (CNNs / ConvNets), [Online Course] Standford University
[2]Lý thuyết về Batch Normalization Layer: Sergey Ioffe, Christian Szegedy(2015). Batch
Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
[Paper]. Retrieved from: />[3] Lý thuyết về thuật toán Adam: Diederik P. Kingma, Jimmy Ba(2015). Adam: A Method for
Stochastic Optimization [Paper]. Retrieved from />[4] Lý thuyết về thuật toán lan truyền ngược: Casper Hansen (2019). Neural Networks:
Feedforward and Backpropagation Explained & Optimization [Blog post]. Retrieved from
/>[5] Cách thức thử nghiệm mơ hình: Chris Deotte (2019). How to choose CNN Architecture
MNIST. [Online]. Retrieved from />[6] Bộ dữ liệu EMNIST: Chris Crawford(2017). EMNIST (Extended MNIST). [Online].
Retrieved from />
---HẾT---

23



×