Để 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
Trang 1KỸ 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
Trang 2Cô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
Trang 3MỞ ĐẦ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
Trang 4quyế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
- 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
Trang 5- 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ố
Trang 6CHƯƠ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
Trang 71.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
Hình 1.4 Sơ đồ tổng quát các giai đoạn xử lý ảnh cơ bản
Mô tả/
Biểu diễn -Phân đoạn
ảnh
Trích chọn đặc trưng
-Nhận dạng -Ra quyết định -Phân cụm
Tiền
xử lý
Đánh giá
Trang 81.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,…
Trang 91.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
Trang 10CHƯƠ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.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)
Trang 11Hì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
Trang 12Hì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)
Trang 13Hì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
Trang 14- Đườ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)
Trang 162.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
Trang 172.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
Trang 18CHƯƠNG 3- NHẬ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
Trang 193.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
Trang 203.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
Trang 213.4.2 Giới thiệu Tensorflow và cách cài đặt
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(labels=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
Trang 22learning_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
Trang 23Giá 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
Trang 24KẾ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