TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN KỸ THUẬT MÁY TÍNH – VIỄN THÔNG Hướng dẫn TS TRẦN VŨ HOÀNG Sinh viên NGUYỄN TẤN ĐẠT MSSV 17119117 NGUYỄN NGỌC KHA MSSV 17119080 Hồ Chí Minh, Tháng 112020 NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH XÂY DỰNG HỆ THỐNG NHẬN DIỆN CHỮ VIẾT TAY BÁO CÁO GIỮA KÌ MỤC LỤC LỜI MỞ ĐẦU 2 Chương 1 GIỚI THIỆU ĐỀ TÀI 3 I Giới thiệu về nhận dạng chữ viết tay 3 II Tình hình nghiên cứu trong nước 3 III Tình hình nghiên cứu ở nước ngoài 4 IV Cách tiếp.
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN KỸ THUẬT MÁY TÍNH – VIỄN THÔNG
Hướng dẫn : TS TRẦN VŨ HOÀNG
Sinh viên : NGUYỄN TẤN ĐẠT MSSV: 17119117
NGUYỄN NGỌC KHA MSSV: 17119080
Hồ Chí Minh, Tháng 11/2020
NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
XÂY DỰNG HỆ THỐNG NHẬN DIỆN
CHỮ VIẾT TAY
BÁO CÁO GIỮA KÌ
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 2
Chương 1 GIỚI THIỆU ĐỀ TÀI 3
I Giới thiệu về nhận dạng chữ viết tay 3
II Tình hình nghiên cứu trong nước 3
III Tình hình nghiên cứu ở nước ngoài 4
IV Cách tiếp cận giải quyết bài toán 4
V Tổng quan về phương pháp huấn luyện : 5
Chương 2 CƠ SỞ LÝ THUYẾT 6
I Mạng nơron tích chập CNN 6
II Lý thuyết về tiền xử lí ảnh 6
Convolutional là gì? 6
Cấu trúc của mạng CNN: 7
Trường tiếp nhận cục bộ (local receptive field) 9
Lớp tổng hợp (pooling layer) 11
Cách chọn tham số cho CNN 13
Chương 3 ỨNG DỤNG MÔ HÌNH CNN TRONG NHẬN DẠNG CHỮ VIẾT TAY I Ứng Dụng của CNN trong nhận dạng chữ viết tay 14
II Cài đặt và sử dụng phương pháp CNN 15
III PHƯƠNG PHÁP ĐÁNH GIÁ DỰ KIẾN SẼ SỬ DỤNG 16
Cross Validation 16
Bias and variance 16
Precision, Recall 17
Trang 3LỜI MỞ ĐẦU
Nhận dạng là bài toán xuất hiện cách đây khá lâu và vẫn luôn thu hút được nhiều sự quan tâm, nghiên cứu Đặc biệt là trong vài thập niên gần đây, do sự thúc đẩy của quá trình tin học hoá trong mọi lĩnh vực, bài toán nhận dạng không còn dừng lại ở mức độ nghiên cứu nữa mà nó trở thành một lĩnh vực để áp dụng vào thực tế Các bài toán nhận dạng đang được ứng dụng trong thực tế hiện nay tập trung vào nhận dạng mẫu, nhận dạng tiếng nói và nhận dạng chữ Trong số này, nhận dạng chữ là bài toán được quan tâm rất nhiều và cũng đã đạt được nhiều thành tựu rực rỡ Các ứng dụng có ý nghĩa thực tế lớn có thể kể đến như: nhận dạng chữ in dùng trong quá trình sao lưu sách báo trong thư viện, nhận dạng chữ viết tay dùng trong việc phân loại thư ở bưu điện, thanh toán tiền trong nhà băng và lập thư viện sách cho người mù (ứng dụng này
có nghĩa: scan sách bình thường, sau đó cho máy tính nhận dạng và trả về dạng tài liệu
mà người mù có thể đọc được)
Xuất phát từ yêu cầu thực tế, đang rất cần có nhưng nghiên cứu về vấn đề này Chính
vì vậy tôi đã chọn đề tài nhận dạng ký tự viết tay làm đồ án tốt nghiệp với mong muốn phần nào áp dụng vào bài toán thực tế
Bài toán đãđặt ra phải giải quyết được những yêu cầu sau:
✓ Nhận dạng được các ký tự từ ảnh đầu vào
✓ Trích chọn được các đặc trưng của ảnh
✓ Tiến hành nhận dạng với thuật toán Markov ẩn
Với nhưng yêu cầu đã đặt ra ở trên, cấu trúc của khóa luận sẽ bao gồm những nội dung sau đây:
➢ Chương 1: Giới thiệu đề tài
Giới thiệu về bài toán nhận dạng chữ viết tay, tình hình nghiên cứu trong và ngoài nước, quy trình chung để giải quyết bài toán và các phương pháp điển hình trong việc huấn luyện nhận dạng, phạm vi của đề tài
➢ Chương 2:CƠ SỞ LÝ THUYẾT VỀ CNN
Trình bày các khái niệm cơ bản, thuật toán của mô hình CNN
➢ Chương 3: ỨNG DỤNG MÔ HÌNH CNN TRONG NHẬN DẠNG CHỮ VIẾT
TAY
Giới thiệu về thuật toán nhận dạng Các bước cài đặt thuật toán Những khó khăn và giải pháp khắc phục
Trang 4Chương 1 GIỚI THIỆU ĐỀ TÀI
I Giới thiệu về nhận dạng chữ viết tay
Nhận dạng chữ in: đã được giải quyết gần như trọn vẹn (sản phẩm
FineReader 9.0 của hãng ABBYY có thể nhận dạng chữ in theo 192 ngôn ngữ
khác nhau, phần mềm nhận dạng chữ Việt in VnDOCR 4.0 của Viện Công nghệ Thông tin Hà Nội có thể nhận dạng được các tài liệu chứa hình ảnh, bảng và
văn bản với độ chính xác trên 98%)
Nhận dạng chữ viết tay: vẫn còn là vấn đề thách thức lớn đối với các nhà
nghiên cứu Bài toàn này chưa thể giải quyết trọn vẹn được vì nó hoàn toàn phụ
thuộc vào người viết và sự biến đổi quá đa dạng trong cách viết và trạng thái
sức khỏe, tinh thần của từng người viết
II Tình hình nghiên cứu trong nước
Nhận dạng chữ viết tay được chia thành hai lớp bài toán lớn là nhận dạng chữ viết tay trực tuyến (online) và nhận dạng chữ viết tay ngoại tuyến (offline) Trong nhận dạng chữ viết tay ngoại tuyến, dữ liệu đầu vào được cho dưới dạng các ảnh được quét từ các giấy tờ, văn bản Ngược lại nhận dạng chữ viết tay trực tuyến là nhận dạng các chữ trên màn hình ngay khi nó được viết Trong hệ nhận dạng này máy tính sẽ lưu lại các thông tin về nét chữ như thứ tự nét viết, hướng và tốc độ của nét… Tại Việt Nam, năm
2010, nhóm nghiên cứu Huỳnh Hữu Lộc, Lưu Quốc Hải, Đinh Đức Anh Vũ (Khoa Khoa học và Kỹ thuật máy tính, Trường Đại học Bách khoa TP Hồ Chí Minh) đã đạt được những bước tiến đáng kể trong nhận dạng ký tự viết tay
Hướng tiếp cận của nhóm nghiên cứu là nhận dạng dựa trên thông tin tĩnh Dựa trên nền tảng giải thuật rút trích thông tin theo chiều, nhóm tác giả đã cải tiến đa số các bước để đạt được độ chính xác cao hơn trong việc nhận dạng ký tự (khoảng 95%) và
có những bước tiến đáng kể trong nhận dạng cả từ Tuy nhiên sản phẩm vẫn chưa nhận dạng được chữ viết tay tiếng Việt Như vậy có thể thấy nhận dạng chữ viết tay, đặc biệt chữ viết tay tiếng Việt hiện đang là một hướng nghiên cứu rất được quan tâm hiện nay và đang còn nhiều vấn đề cần phải hoàn thiện
Trang 5III Tình hình nghiên cứu ở nước ngoài
Nhận dạng chữ viết đã được nghiên cứu hơn 40 năm qua Ngày nay nhận dạng chữ viết đã nhận được sự quan tâm đáng kể do sự phát triển của các máy tính cầm tay và điện thoại cầm tay dựa trên các bàn phím, chuột và nhiều dạng thiết bị định vị khác Các phương pháp này tỏ ra không hữu hiệu hoặc xử lý chậm Do đó người ta cần nghiên cứu phương pháp nghiên cứu phương pháp nhận dạng chữ viết tay trên các máy Palm Pilot hay các máy TABLET PC
IV Cách tiếp cận giải quyết bài toán
Nhận dạng chữ viết tay thường bao gồm năm giai đoạn: tiền xử lý (preprocessing),
tách chữ (segmentation), trích chọn đặc trưng(representation), huấn luyện và nhận dạng (training and recognition), hậu xử lý (postprocessing)
- Tiền xử lý: giảm nhiễu cho các lỗi trong quá trình quét ảnh, hoạt động viết của con người, chuẩn hóa dữ liệu và nén dữ liệu
- Tách chữ: chia nhỏ văn bản thành những thành phần nhỏ hơn ,tách các từ trong câu hay các kí tự trong từ
- Biểu diễn, rút trích đặc điểm: giai đoạn đóng vai trò quan trọng nhất trong nhận dạng chữ viết tay Để tránh những phức tạp của chữ viết tay cũng như tăng cường độ chính xác, ta cần phải biểu diễn thông tin chữ viết dưới những dạng đặc biệt hơn và cô đọng hơn, rút trích các đặc điểm riêng nhằm phân biệt các ký tự khác nhau
- Huấn luyện và nhận dạng: phương pháp điển hình so trùng mẫu, dùng thống kê, mạng nơ-ron ,mô hình markov ẩn ,trí tuệ nhân tạo hay dùng phương pháp kết hợp các phương pháp trên
Trang 6- Hậu xử lý: sử dụng các thông tin về ngữ cảnh để giúp tăng cường độ chính xác, dùng
từ điển dữ liệu
V Tổng quan về phương pháp huấn luyện :
Để huấn luyện cho mô hình nhận dạng chữ viết tay , hiện nay có rất nhiều các phương pháp , đa số các phương pháp này đều chung cơ sở là : Xử lí ảnh đầu vào , trích chọn đặc trưng của ảnh , tách chữ , huấn luyện và nhận dạng chữ viết Từ đó qua các giai đoạn hậu xử lí , khi ta đưa đầu vào là 1 ảnh chữ viết tay bất kì , mô hình sẽ nhận dạng
và cho ra kết quả chữ viết là gì
Các phương pháp phổ biến hiện nay : Markov ẩn , KNN , Máy vector tựa ( SVM ), … Trong mô hình này , nhóm sử dụng phương pháp CNN để huấn luyện cho quá trình nhận dạng chữ viết tay ( hand writing detection )
Trang 7Chương 2 CƠ SỞ LÝ THUYẾT
I Mạng nơron tích chập CNN
Convolutional Neural Network (CNN – Mạng nơ-ron tích chập) là một trong những
mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh
II Lý thuyết về tiền xử lí ảnh
Để tìm hiểu tại sao thuật toán CNN được sử dụng rộng rãi cho việc nhận dạng (detection), chúng ta hãy cùng tìm hiểu về thuật toán này
1.1 Convolutional là gì?
Là một cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình dưới:
Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature
Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa Ma trận có kích thước 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột
Trang 8Convolution hay tích chập là nhân từng phần tử trong ma trận 3 Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong
ví dụ trên là 3×3
Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 với ma trận bên trái Kết quả được một ma trận gọi là Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5×5 bên trái
Trang 91.2 Cấu trúc của mạng CNN:
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo
Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo
Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó
Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu)
Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ
cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh
Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối tượng
Trang 10này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter
Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giống như cách con người nhận biết các vật thể trong tự nhiên
Mạng CNN sử dụng 3 ý tưởng cơ bản:
Các trường tiếp nhận cục bộ (local receptive field)
Trọng số chia sẻ (shared weights)
Tổng hợp (pooling)
1.3 Trường tiếp nhận cục bộ (local receptive field)
Đầu vào của mạng CNN là một ảnh Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận Trong
mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh
Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ
Trang 11Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau:
1 Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1
2 Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2.
với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một feature map
là shared bias Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map
Trang 12Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp
Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào Chúng ta gọi việc map từ input layer sang hidden layer là một feature map
Một convolutional layer bao gồm các feature map khác nhau Mỗi một feature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhất của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN
1.4 Lớp tổng hợp (pooling layer)
Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản hóa thông tin đầu ra để giảm bớt số lượng neuron
Trang 13Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong vùng đầu vào 2×2
Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất Ngoài Max Pooling còn có L2 Pooling
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neuron với số lượng tùy bài toán
2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer) Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra
Trang 141.5 Cách chọn tham số cho CNN
Số các convolution layer: càng nhiều các convolution layer thì performance càng được cải thiện Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách đáng kể
Filter size: thường filter theo size 5×5 hoặc 3×3
Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn
Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param tốt nhất
VI.
Trang 15Chương 3 ỨNG DỤNG MÔ HÌNH CNN TRONG NHẬN DẠNG CHỮ VIẾT TAY
I Ứng Dụng của CNN trong nhận dạng chữ viết tay
CNN được sử dụng để trích xuất các tính năng của hình ảnh bằng cách sử dụng nhiều lớp bộ lọc
Các lớp tích chập thường được theo sau bởi các lớp maxpool được sử dụng để giảm số lượng các tính năng được trích xuất Cuối cùng đầu ra của các lớp maxpool và các lớp tích chập được làm phẳng thành một vectơ có chiều duy nhất và được cung cấp như một đầu vào cho Dense layer ( Mạng được kết nối đầy đủ)
Sau đó ta biên dịch và làm cho phù hợp với mô hình
Biên dịch mô hình, xác định hàm tối ưu và hàm mất mát từ đó đem sử dụng để điều chỉnh cho mô hình
Hàm tối ưu hóa được sử dụng là Adam, là sự kết hợp của các thuật toán tối ưu hóa RMSprop & Adagram
Vì tập dữ liệu rất lớn nên chỉ huấn luyện ít dữ liệu cho mỗi chữ cái Tuy nhiên, theo yêu cầu thì có thể huấn luyện nó nhiều hơn với lượng dữ liệu đang có ,để nhận dạng ký
tự có độ chính xác tốt hơn
Đầu tiên từ dataset có 784 dữ liệu pixel , ta định hình về dạng 28x28 Sau đó chuyển đổi hình ảnh từ BGR sang mức xám và áp dụng ngưỡng cho nó Ở đây không cần áp