1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay

18 29 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 1,24 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

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

LỜ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 4

Chươ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 5

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

Chươ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 8

Convolution 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 9

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

nà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 11

Mộ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 12

Như 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 13

Thủ 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 14

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

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

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

Ngày đăng: 14/05/2022, 14:11

HÌNH ẢNH LIÊN QUAN

III. Tình hình nghiên cứu ở nước ngoài - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
nh hình nghiên cứu ở nước ngoài (Trang 5)
Là một cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình dưới: - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
m ột cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình dưới: (Trang 7)
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) - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
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) (Trang 9)
Đó 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. - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
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 (Trang 10)
Chương 3 ỨNG DỤNG MÔ HÌNH CNN TRONG NHẬN DẠNG CHỮ VIẾT TAY - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
h ương 3 ỨNG DỤNG MÔ HÌNH CNN TRONG NHẬN DẠNG CHỮ VIẾT TAY (Trang 15)
Hình 7.1. Phương pháp k-fold Cross val được sử dụng cho các tập data có ít dữ liệu. - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
Hình 7.1. Phương pháp k-fold Cross val được sử dụng cho các tập data có ít dữ liệu (Trang 17)
Hình 7.2. High variance và high bias - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
Hình 7.2. High variance và high bias (Trang 17)
Hình 7.3. Công thức tính precision và recall. - báo cáo máy học: Xây dựng hệ thống nhận diện chữ viết tay
Hình 7.3. Công thức tính precision và recall (Trang 18)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w