Tải bản đầy đủ (.pdf) (24 trang)

Nhận dạng chữ số viết tay sử dụng kỹ thuật học sâu (deep learning)

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 (1.08 MB, 24 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA


HUỲNH VĂN NHỨT

NHẬN DẠNG CHỮ SỐ VIẾT TAY SỬ DỤNG
KỸ THUẬT HỌC SÂU (DEEP LEARNING)

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01

TÓM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng – Năm 2018


Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA

Ngƣời hƣớng dẫn khoa học: TS. HUỲNH HỮU HƢNG

Phản biện 1: PGS. TS. Nguyễn Tấn Khôi
Phản biện 2: TS. Phạm Văn Việt

Luận văn đã được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ Khoa học máy tính tại Trường Đại học Bách khoa
vào ngày 16 tháng 06 năm 2018.

Có thể tìm hiểu luận văn tại:
 Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học


Bách khoa.
 Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách
khoa – ĐHĐN.


1
MỞ ĐẦU
1. Tính cấp thiết của đề tài
Nhận dạng là lĩnh vực được các nhà khoa học rất quan tâm để
giải quyết các yêu cầu trong cuộc sống hiện nay, có nhiều lĩnh vực
nhận dạng như nhận dạng tín hiệu, nhận dạng tiếng nói hay nhận
dạng ảnh. Vấn đề nhận dạng chữ viết tay nói chung và nhận dạng
chữ số viết tay nói riêng là một vấn đề thách thức đối với những nhà
nghiên cứu.
Chữ số viết tay xuất hiện ở hầu hết trong các công việc của các
cơ quan, nhà máy, xí nghiệp, trường học. Trong các trường phổ
thông hiện nay, đều có một bộ phận quản lý điểm để thực hiện các
khâu tiếp nhận và nhập vào máy tính bảng điểm viết tay của giáo
viên bộ môn, công tác này luôn chiếm nhiều thời gian và đôi khi
không đảm bảo tiến độ hoạt động của nhà trường.
Để nhận dạng chữ số viết tay, có nhiều phương pháp và kỹ
thuật khác nhau như: logic mờ, giải thuật di truyền, mô hình xác xuất
thống kê, mô hình mạng nơ ron. Đã có nhiều công trình nghiên cứu
về nhận dạng chữ số viết tay đạt hiệu quả cao, tuy nhiên, các ứng
dụng vẫn chưa đáp ứng hoàn toàn các yêu cầu của người dùng.
Hiện nay với sự phát triển không ngừng của máy tính, phương
pháp Deep Learning ra đời đã đáp ứng cơ bản trong việc nhận dạng
và xử lý ảnh. Deep Learning là một thuật toán dựa trên một số ý
tưởng từ não bộ tới việc tiếp thu nhiều tầng biểu đạt, cả cụ thể lẫn
trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu. Deep Learning

được ứng dụng trong nhận diện hình ảnh, nhận diện giọng nói, xử lý
ngôn ngữ tự nhiên. Hiện nay rất nhiều các bài toán nhận dạng sử
dụng Deep Learning để giải quyết do Deep Learning có thể giải


2
quyết các bài toán với số lượng lớn, kích thước đầu vào lớn với hiệu
năng cũng như độ chính xác vượt trội so với các phương pháp phân
lớp truyền thống.
Với những lý do trên, tôi chọn nghiên cứu đề tài :”Nhận dạng
chữ số viết tay sử dụng kỹ thuật học sâu (Deep learning)”
2. Mục tiêu nghiên cứu
Mục tiêu chính của đề tài này là sử dụng kỹ thuật Deep
learning để xây dựng chương trình nhận dạng chữ số viết tay
3. Đối tƣợng và phạm vi nghiên cứu
3.1. Đối tượng
- Các chữ số viết tay.
- Cơ sở lý thuyết về nhận dạng ảnh.
- Các phương pháp, giải thuật về nhận dạng.
- Kỹ thuật Deep Learning
3.2. Phạm vi nghiên cứu
- Nghiên cứu kỹ thuật xử lý ảnh
- Ảnh quét chữ số viết tay
- Các chữ số tự nhiên tự 0 đến 9
4. Phƣơng pháp nghiên cứu
4.1. Phương pháp lý thuyết
- Các tài liệu về cơ sở lý thuyết: xử lý ảnh số, lọc trích ảnh số,
xác định biên, rút trích số, nhận dạng ký tự số.
- Nghiên cứu mạng Nơ ron nhận dạng chữ viết tay.
- Phương pháp Deep Learning

- Các tài liệu liên quan tới lập trình
4.2. Phương pháp thực nghiệm


3
- Xây dựng chương trình thử nghiệm.
- Kiểm thử tính hiệu quả của chương trình với các chữ số khác
nhau.
5. Ý nghĩa của đề tài
Về khoa học: Đề tài sẽ mang ý nghĩa cung cấp về mặt lý
thuyết để làm rõ về các phương pháp và kỹ thuật nhận dạng chữ số
viết tay.
Về thực tiễn: Góp phần hỗ trợ cho việc nhập văn bản với dữ
liệu số.


4
CHƢƠNG 1-

TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ NHẬN

DẠNG CHỮ SỐ VIẾT TAY
1.1. Tổng quan về nhận dạng chữ số viết tay
1.1.1. Giới thiệu chung
Hiện nay, vấn đề nhận dạng chữ số viết tay rất cần thiết, có
nhiều ứng dụng rộng rãi trong đời sống xã hội như nhận dạng bảng
điểm, nhận dạng bảng số xe, nhận dạng phiếu hàng hóa,… Vấn đề
nhận dạng chữ viết tay nói chung và nhận dạng chữ số viết tay nói
riêng là một thách thức lớn đối với các nhà nghiên cứu. Mỗi người
có một cách viết chữ số khác nhau, chúng ta không thể xác định cách

duy nhất để nhận dạng chữ số. Do vậy, xây dựng hệ thống nhận dạng
chữ số viết tay một cách đáng tin cậy để có có thể nhận dạng bất cứ
ký tự số nào là điều không dễ dàng.
Các hệ thống nhận dạng trước đây như (LeCun et al., 1998),
(Simard et al., 2003), (Kégl & BusaFekete, 2009) đều sử dụng các
đặc trưng cơ bản từ ảnh ký tự như đường biên, cạnh, độ dày, giá trị
mức xám, haar-like, với các xử lý đặc thù như lấy mẫu, dao động các
điểm ảnh, biến đổi ảnh, thêm dữ liệu ảo. Sau đó hệ thống nhận dạng
huấn luyện các mô hình học tự động như k láng giềng (kNN), mạng
nơ-ron, máy véc tơ hỗ trợ (SVM), boosting. Các hệ thống này cơ bản
đáp ứng yêu cầu của người sử dụng, tuy nhiên vẫn chưa thỏa mãn
một cách triệt để yêu cầu đề ra. Với mong muốn tìm ra giải pháp để
nhận dạng chữ số viết tay hiệu quả, chúng tôi nghiên cứu kỹ thuật
học sâu (Deep learning), đây là phương pháp có thể giải quyết các
bài toán với số lượng lớn, kích thước đầu vào lớn với hiệu năng cũng
như độ chính xác vượt trội so với các phương pháp phân lớp truyền
thống.


5
1.1.2. Những khó khăn trong việc nhận dạng chữ số viết tay
1.1.3. Các công trình nghiên cứu trong và ngoài nước.
1.1.3.1. Công trình trong nước
1.1.3.2. Công trình nước ngoài
1.1.4. Các bước trong quá trình xử lý ảnh

-Cải thiện ảnh
-Phục hồi ảnh
-Xử lý hình thái
Đối

tượng

Thu
nhận
ảnh

Trích chọn đặc
trưng

Tiền
xử lý

Tách
đối
tượng

-Phân đoạn
ảnh

Mô tả/
Biểu
diễn

Đánh
giá

-Nhận dạng
-Ra quyết
định
-Phân cụm


Hình 1.4. Sơ đồ tổng quát các giai đoạn xử lý ảnh cơ bản
1.1.4.1. Thu nhận ảnh
1.1.4.2. Tiền xử lý
1.1.4.3. Tách đối tượng
1.1.4.4. Mô tả/ biểu diễn


6
1.1.4.5. Nhận dạng ảnh
1.1.5. Một số khái niệm trong xử lý ảnh
1.1.5.1. Điểm ảnh
1.1.5.2. Độ phân giải ảnh
1.1.5.3. Mức xám của ảnh
1.2. Các phƣơng pháp xử lý ảnh
1.2.1. Lọc mịn ảnh
1.2.2. Nhị phân ảnh
1.2.3. Chỉnh nghiêng
1.2.4. Chuẩn kích thước
1.2.5. Lấp khoảng trống ảnh
1.2.5.1. Một số định nghĩa
1.2.5.2. Phép giãn ảnh
1.2.5.3. Phép co ảnh
1.2.5.4. Phép đóng ảnh
1.2.6. Phát hiện biên và làm trơn biên
1.2.6.1. Phát hiện biên
1.2.6.2. Dò biên và mã hóa đường biên
1.2.7. Xác định hướng của điểm biên (Freeman code)
1.2.8. Làm trơn đường biên
1.3. Các phƣơng pháp nhận dạng chữ số viết tay

Có nhiều phương pháp trong các hệ thống nhận dạng chữ số
viết tay, có thể kể đến như : đối sánh mẫu, thống kê, cấu trúc, mạng
nơ-ron, SVM,…


7
1.3.1. Phương pháp đối sánh mẫu
1.3.2. Phương pháp tiếp cận cấu trúc
1.3.3. Phương pháp học máy với SVM (Support vector machine)
1.3.3.1. Giới thiệu SVM
1.3.3.2. Ý tưởng


8
CHƢƠNG 2- MÔ HÌNH MẠNG NEURAL TÍCH CHẬP
Một trong những mô hình Deep Learning tiên tiến giúp chúng ta
xây dựng được những hệ thống thông minh với độ chính xác cao đó
là Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập).
Trong chương này, chúng ta sẽ trình bày về Convolution (tích chập)
cũng như ý tưởng của mô hình CNNs trong nhận dạng chữ số viết
tay.
2.1. Mạng neural nhân tạo
2.1.1. Sơ lược về neural sinh học
2.1.2. Mạng Neural nhân tạo
2.1.3. Kiến trúc mạng
2.1.4. Mạng một tầng
2.1.5. Mạng đa tầng
2.1.6. Huấn luyện mạng neural
2.1.6.1. Phương pháp học
2.1.6.2. Học có giám sát

2.1.6.3. Học không giám sát
2.1.6.4. Học tăng cường
2.1.6.5. Thuật toán huấn luyện mạng
Thuật Toán Lan Truyền Ngược Back Propagation
Những hạn chế của phương pháp lan truyền ngược:
2.2. Mạng Neural tích chập (Convolutional Neural Networks –
CNNs)
2.2.1. Convolution (tích chập)


9

Hình 2.6. Minh họa tích chập
2.2.2. Khái niệm CNNs

Hình 2.9. Mô hình mạng nơ ron truyền thống


10

Hình 2.10. Image Classification with CNN

Hình 2.11. Minh họa mô hình CNNs
2.2.3. Những phương pháp tích chập (convolution)


11

Hình 2.13. Ma trận điểm ảnh (ảnh gốc) và ma trận kernel (đóng
vai trò làm mặt nạ) cho quá trình tích chập

2.2.3.1. Phương pháp SAME

Hình 2.14. Minh họa phương pháp SAME
Phương pháp same: Đường biên ngoài (nền vàng) của Matrix
không thuộc ảnh gốc nên giá trị được tính =0 khi thực hiện phép
toán Convolution.


12
2.2.3.2. Phương pháp FULL

Hình 2.15. Minh họa phương pháp FULL
Phương pháp FULL:
- Khởi đầu, tâm của kernel được đặt ngay điểm ảnh ở
góc trên bên trái (tọa độ (0,0)) của ảnh (Matrix)
- Đường biên ngoài (nền vàng) của Matrix không thuộc
ảnh gốc nên giá trị được tính =0 khi thực hiện phép
toán Convolution.
- Đường biên ngoài (nền xanh) của Result Matrix là phần
được mở rộng thêm so với kích thước ban đầu của ảnh
(Matrix)


13
2.2.3.3. Phương pháp VALID

Hình 2.16. Minh họa phương pháp VALID

Phương pháp VALID:


-Khởi đầu, tọa độ (0,0) của ảnh (Matrix) và của kernel được đặt
trùng nhau
-Các pixel nằm trên đường biên ngoài (nền vàng) của Matrix sẽ
không có trong Result Matrix sau khi thực hiện phép Convolution
theo Một
phương
pháptích
Valid.
2.2.4.
số phép
chập thường sử dụng trong xử lý ảnh

Hình 2.17. Minh họa cách biểu diễn ảnh


14
2.2.4.1. Blur (làm mờ ảnh)

Input image
Output Image
Hình 2.18. Minh họa kết quả tích chập trong kỹ thuật blur
2.2.4.2. Sharpen (làm ảnh trở nên sắc nét hơn)

Hình 2.19. Minh họa kết quả tích chập trong kỹ thuật Outline


15
2.2.4.3. Outline (phác thảo những nét chính trên ảnh)

Hình 2.20. Minh họa kết quả tích chập trong kỹ thuật Emboss



16
CHƢƠNG 3NHẬN DẠNG CHỮ SỐ VIẾT TAY VỚI
MẠNG NƠ RON TÍCH CHẬP
3.1. Bài toán nhận dạng
3.1.1. Phát biểu bài toán
3.1.2. Ảnh đầu vào của bài toán
3.2. Mô hình tổng quan
- Lấy ảnh đầu vào đã qua tiền
xử lý

- Chuyển đổi ảnh của ký số sang ma trận
điểm ảnh.

- Co dãn ảnh (scale) về kích thước chuẩn (32 X 32)
Mạng neural.

Kết quả.

Hình 3.4. Mô hình tổng quan nhận dạng


17
3.3. Xây dựng mạng Neural nhận dạng ký tự
3.3.1. Xây dựng mạng neural

Hình 3.5. Minh họa mô hình mạng sử dụng trong luận văn
3.3.2. Xử lý dữ liệu (phân tích ảnh)
3.3.2.1. Thuật toán xử lý dữ liệu

3.3.2.2. Mô tả chi tiết các bước trong thuật toán
a) Tìm kiếm các ký số có trong ảnh (Bước 2.1 trong thuật toán nhận
dạng ký số)
b) Biến sử dụng trong chương trình
c) Giải thuật tìm tất cả các ký số có trong ảnh
d) Lưu đồ chi tiết của B3


18
3.3.2.3. Scale đưa ảnh về kích thước cố định (32x32)
3.3.2.4. Thực hiện convolution trên ảnh đã scale (32x32)
a) Thao tác thực hiện tích chập
b) Phương pháp trích đặc trưng sử dụng CNNs

Hình 3.10. Quá trình trích chọn đặc trưng sử dụng CNNs
3.3.2.5. Huấn luyện mạng neural
3.4. Xây dựng chƣơng trình thử nghiệm
3.4.1. Giới thiệu Python


19
3.4.2. Giới thiệu Tensorflow và cách cài đặt
3.4.3. Xây dựng mô hình mạng tích chập
Gradient Descent
Convolutional Neural Network
3.4.4. Đầu vào và nhãn
3.4.5. Lớp Convolution với hàm kích hoạt relu
3.4.6. Lớp Pooling
3.4.7. Lớp FC
3.4.8. Mô hình đầy đủ

3.4.9. Huấn luyện và kiểm chứng mô hình
Để huấn luyện cho mô hình trước tiên ta cần định nghĩa hàm
lỗi. Chúng ta dùng hàm cross_entropy với softmax của kết quả đầu ra
của mô hình. Chúng ta tính trung bình độ lỗi giữa kết quả mô hình
trả ra và nhãn của dữ liệu.
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labe
ls=targets, logits=y_pred))
Sau khi có hàm lỗi, chúng ta có thể dùng các thuật toán tối ưu
để cực tiểu hóa giá trị của hàm lỗi. Phương pháp thường thấy là
Gradient Descent. Tensorflow cung cấp sẵn các bộ optimizer nhằm
làm thay công việc đó cho chúng ta. Thay vì phải tự cài đặt lại, ta có
thể sử dụng các bộ optimizer đó.
train_step = tf.train.AdagradOptimizer(0.1).minimize(loss)
Giá trị truyền vào AdagradOptimizer là giá trị learning_rate =
0.1. Giá trị này có thể được điều để tăng hiệu quả của mô hình. Nếu


20
learning_rate quá lớn có thể dẫn đến không hội tụ còn nếu quá nhỏ sẽ
dẫn đến hội tụ chậm.
Trong quá trình huấn luyện, chúng ta cũng cần tính độ chính
xác của mô hình để kiểm chứng tính hiệu quả.
correct_prediction = tf.equal(tf.argmax(y_pred, 1), tf.argmax(targets,
1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
Huấn luyện mô hình:
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(epoch_num):
batch_id = 0

while (batch_id + batch_size) < train_X.shape[0]:
sess.run(train_step, feed_dict={img1: train_X[batch_id:(batch_i
d + batch_size)], targets: train_y[batch_id:(batch_id + batch_size)]})
batch_id += batch_size
print('test accuracy %g' % accuracy.eval(feed_dict={img1: test_
X, targets: test_y}, session=sess))
Trong đó epoch_num chính là số lần lặp mà ta muốn huấn luyện
mô hình. Với mỗi lần lặp, thay vì phải truyền vào toàn bộ dữ liệu, ta
có thể chỉ truyền một phần dữ liệu có kích thước batch_size để tăng
tốc độ tính toán.


21
3.5. Kết quả thử nghiệm
Với mô hình CNNs đầy đủ trên, ta thu được kết quả
Mất mát

Độ chính xác

Mẫu huấn luyện

0.0132

99.60

Mẫu thử nghiệm

0.027

99.43%


Số liệu cho thấy CNN cho độ chính xác cao trong bài toán nhận
diện chữ số.
Đồ thị cho thấy: với mô hình CNN sẽ có giá trị mất mát trên tập
huấn luyện giảm dần và xấp xỉ dẫn đến độ chính xác trên tập này gần
như tuyệt đối là hợp lí.
Giá trị mất mát trên tập thử nghiệm ban đầu giảm nhưng từ
vòng lặp thứ 24 trở lên bắt đầu tăng trở lại dẫn đến độ chính xác
giảm. Do đó, thuật toán bị overfitting khi số vòng lớn hơn 24. Số
vòng lặp lí tưởng cho bài toán là khoảng 24.

Hình 3.14. Đồ thị biểu diễn kết quả thử nghiệm


22
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Kết luận
Quan luận văn này, tác giả đã tìm hiểu và nắm được những
kiến thức của mạng neural nhân tạo. Sử dụng mô hình CNN trong
công việc xây dựng nhận dạng ký tự số viết tay.
Luận văn đã được hoàn thành về mặt cơ bản nội dung đã đề
ra. Đó là sự kết hợp giữa xử lí ảnh và lý thuyết nhận dạng nhằm giải
quyết một phần bài toán nhận dạng ký tự số viết tay. Chương trình
đang bước đầu thử nghiệm và đạt được kết quả thực nghiệm dựa trên
10.000 tập mẫu với độ chính xác trên 99%.
Hạn chế
Tuy đã hoàn thành về nội dung và chương trình nhận dạng
nhưng vẫn còn một số hạn chế cần được khắc phục như:
Chương trình đang ở mức thử nghiệm, chưa áp dụng vào thực tế.
Với những ký tự dính xác nhau hoặc chồng thì việc xử lý phân tích

còn giới hạn chưa chính xác, dẫn đến nhận dạng ký tự còn sai.
Sự phức tạp về cấu tạo ký tự do nhiều cách viết khác nhau nên
chưa thu thập đủ cơ sở dữ liệu ảnh ký tự.
Hƣớng phát triển
Xây dựng chương trình nhận dạng chữ số viết tay hoàn chỉnh,
ứng dụng để nhận dạng bảng điểm phục vụ cho các đơn vị trường
học.



×