1. Trang chủ
  2. » Cao đẳng - Đại học

Đồ án tìm HIỂU bài TOÁN PHÂN LOẠI CHỮ số VIẾT TAY

216 25 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

Tiêu đề Đồ Án Tìm Hiểu Bài Toán Phân Loại Chữ Số Viết Tay
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Đồ Án
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 216
Dung lượng 212,5 KB

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

Nội dung

Trong suốt quá trình thực hiện đồán, Thầy luôn quan tâm và góp ý kịp thời để nhóm thực hiện đúng như kế hoạch đã định ra, cũng như cung cấp những tài liệu quan trọng về những kiến thức l

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

2

Trang 3

KHOA CÔNG NGHỆ PHẦN MỀM

3

Trang 4

-oOo -4

Trang 9

ĐỒ ÁN 2

9

Trang 10

10

Trang 11

TÌM HIỂU BÀI TOÁN

11

Trang 12

PHÂN LOẠI CHỮ SỐ VIẾT TAY

12

Trang 17

Giảng viên hướng dẫn:

17

Trang 18

TS Huỳnh Ngọc Tín

18

Trang 19

Lớp: SE122.L11.PMCL

19

Trang 20

Nhóm sinh viên thực hiện:

20

Trang 21

Nguyễn Thanh Trung - 17520021

21

Trang 24

Tp Hồ Chí Minh, 01/2021

24

Trang 25

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

25

Trang 26

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

26

Trang 27

LỜI CẢM ƠN

27

Trang 29

Để hoàn thành đồ án này, nhóm thực hiện đồ án xin gửi lời cảm ơn sâu sắc đến TS.Huỳnh Ngọc Tín là người đã tận tình hướng dẫn nhóm Trong suốt quá trình thực hiện đồ

án, Thầy luôn quan tâm và góp ý kịp thời để nhóm thực hiện đúng như kế hoạch đã định

ra, cũng như cung cấp những tài liệu quan trọng về những kiến thức liên quan để nhóm

bổ sung và tìm ra những hướng giải quyết đúng đắn cho đồ án

29

Trang 30

Một lần nữa nhóm xin chân thành cảm ơn!

30

Trang 31

Nhóm thực hiện đồ án

31

Trang 32

MỤC LỤC

32

Trang 36

DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT

36

Trang 38

(1) UIT: University of Information Technology (Trường Đại học Công nghệ Thông tin)

38

Trang 39

(2) DR: Digit Recognizer

39

Trang 40

(3) ML: Machine Learning

40

Trang 41

(4) AI: artificial intelligence

41

Trang 62

LỜI MỞ ĐẦU

62

Trang 65

Cuộc cách mạng 4.0 mang đến sự bùng nổ về công nghệ, nhiều công nghệ bậc cao lênngôi và trở nên phổ biến trong hầu hết dữ liệu được đưa vào máy vi tính thông qua bànphím Nhưng trong một số trường hợp, sử dụng chữ viết tay vẫn thích hợp hơn chẳng hạnnhư công việc ghi chép bài vở trên lớp học Trong hoàn cảnh đó, bài toán nhận dạng chữ

được nghiên cứu nhằm làm hoàn thiện thêm cách thức giao tiếp giữa người và máy.Bài toán nhận dạng chữ viết tay đã được nghiên cứu và phát triển trong 40 nămqua, và cũng đã đạt được nhiều kết quả đáng kể Trong đồ án này, em tìm hiểu về bài toánphân loại chữ viết thay thông qua thuật toán K-mean để có cái nhìn tổng quan về bài toán

và máy học

65

Trang 66

Các vấn đề và công nghệ liên quan đến quá trình nghiên cứu và hiện thực đồ án sẽ đượcnhóm trình bày cụ thể trong những phần sau của báo cáo này.

66

Trang 67

Bố cục báo cáo gồm có 6 chương:

67

Trang 68

Chương I: Tổng quan Giới thiệu khái quát về bài toán Digit Recogizer; các công trình

nghiên cứu liên quan trong và ngoài nước; mục tiêu, đối tượng, phạm vi nghiên cứu của

đề tài

68

Trang 69

Chương II: Các khái niệm và công nghệ liên quan Giới thiệu về những khái niệm và các

công nghệ liên quan trong quá trình hiện thực đồ án như: Machine Learning,

69

Trang 70

Chương III: Hướng tiếp cận và giải pháp Các giai đoạn hiện thực bài toán, công cụ và

cách hiện thực từng giai đoạn

70

Trang 71

Chương IV: Thực nghiệm và xây dựng chương trình Hiện thực các giai đoạn được giới

thiệu trong Chương III

71

Trang 72

Chương V: Kết luận và hướng phát triển Tóm tắt kết quả thực hiện được và đề xuất

hướng phát triển mới trong tương lai

72

Trang 73

CHƯƠNG I: TỔNG QUAN

73

Trang 76

Để giải quyết được bài toán chúng ta cần nắm rõ bài toán này là gì, các yêu cầu của nónhư thế nào Những câu hỏi đó sẽ được trả lời trong chương này Ngoài ra, chương nàycòn trình bày tổng quan về một số công trình nghiên cứu liên quan đến bài toán đã đượccông bố trong và ngoài nước Từ đó xác định mục tiêu, đối tượng và phạm vi nghiên cứucho đồ án.

76

Trang 77

I.1. Giới thiệu bài toán

77

Trang 78

Nhận dạng chữ số viết tay là cần thiết và được ứng dụng rộng rãi trong nhiều lĩnh vựcnhư nhận dạng các chữ số trên chi phiếu ngân hàng, mã số trên bì thư của dịch vụ bưuchính, hay các chữ số trên các biểu mẫu nói chung Vấn đề nhận dạng chữ viết tay nóichung 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 Bài toán lớn luôn đặt ra phía trước vì sự phức tạp của việc nhận dạng chữviết phụ thuộc nhiều vào phong cách viết và cách thể hiện ngôn ngữ của người viết.Chúng ta không thể luôn luôn viết một ký tự chính xác theo cùng một cách Do vậy, xâydựng hệ thống nhận dạng chữ viết có thể nhận dạng bất cứ ký tự nào một cách đáng tincậy trong tất cả các ứng dụng là điều không dễ dàng Hệ thống nhận dạng thường baogồm hai bước: rút trích đặc trưng từ ảnh và học tự động từ các đặc trưng để có thể nhậndạng ký tự Hiệu quả của hệ thống nhận dạng phụ thuộc vào các phương pháp sử dụng ởhai giai đoạn trên

78

Trang 79

Các nghiên cứu

79

Trang 80

- Hệ thống hiện nay (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, hay trung lập

80

Trang 82

82

Trang 84

I.2. Mục tiêu, đối tượng và phạm vi nghiên cứu của đề tài

84

Trang 85

I.2.1. Mục tiêu

85

Trang 86

Tìm hiểu và áp dụng các thuật toán cơ bản của ML vào trong bài toán nhận diện chữ viếttay Và cụ thể hơn là bài toán phân loại hình ảnh.

86

Trang 87

I.2.2. Đối tượng

87

Trang 88

Các hình ảnh chụp chữ số viết tay được chụp lại

88

Trang 89

I.2.3. Phạm vi nghiên cứu

89

Trang 90

Các hình ảnh trên thư viện MNIST.

90

Trang 91

CHƯƠNG II: CÁC KHÁI NIỆM VÀ CÔNG NGHỆ LIÊN QUAN

91

Trang 93

Trong chương này sẽ trình bày về các khái niệm và công nghệ liên quan trong quá trìnhhiện thực đồ án Đây là những khái niệm và công nghệ quan trọng và cốt lõi cần nắm rõ

để có thể hiện thực được đồ án một cách tốt nhất

93

Trang 94

II.1.Các khái niệm liên quan

94

Trang 95

II.1.1. Machine Learning

95

Trang 96

Machine Learning là một tập con của AI.

96

Trang 97

Trong giới chuyên môn không có một khái niệm cụ thể và được xem là đúng đắn nhất vềMachine Learning [6] Tuy nhiên có một vài định nghĩa được đánh giá cao như sau:

97

Trang 98

- Theo A Samuel: Machine Learning là một lĩnh vực nghiên cứu mà máy tính có thể

tự học mà không cần lập trình cụ thể

98

Trang 99

- Theo Tom Mitchell: Machine Learning là chương trình máy tính sử dụng kinhnghiệm E để thực hiện công việc T với hiệu năng P.

99

Trang 100

Ví dụ: chức năng tự gắn thẻ bạn bè trên Facebook, chức năng gợi ý sản phẩn liên quâncủa Amazon, …

100

Trang 101

Sự ra đời của Machine Learning giúp con người giải quyết nhanh chóng những công việcphức tạp nếu xử lí thủ công sẽ tốn rất nhiều thời gian, chi phí và nhân lực

101

Trang 102

102

Trang 103

II.1.2. Digit Recognizer

103

Trang 104

Bài toán là từ dữ liệu văn bản đầu vào là một hình ảnh chụp lại của các chữ số viết bằngtay, từ đó có thể nhận dạng được và số hóa vào máy tính

104

Trang 105

Ví dụ: Lĩnh vực như nhận dạng các chữ số trên chi phiếu ngân hàng, mã số trên bì thưcủa dịch vụ bưu chính, hay các chữ số trên các biểu mẫu nói chung.

105

Trang 106

Các giai đoạn chính trong việc xử lí bài toán:

106

Trang 107

- Giai đoạn 0: Thu thập dữ liệu

107

Trang 108

- Giai đoạn 1: Tiền xử lí

108

Trang 109

- Giai đoạn 2: Mã hóa dữ liệu

109

Trang 110

- Giai đoạn 3: Dạy cho máy học

110

Trang 112

II.2.Các công nghệ liên quan

112

Trang 113

II.2.1. Python

113

Trang 114

- Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động Python có cấu trúc cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đốivới lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vô cùng lớn

vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầuhết các nền tảng

114

Trang 116

II.2.2. Bộ cơ sở dữ liệu MNIST

116

Trang 117

Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay và được

sử dụng trong hầu hết các thuật toán nhận dạng hình ảnh (Image Classification)

117

Trang 119

CHƯƠNG III: HƯỚNG TIẾP CẬN VÀ GIẢI PHÁP

119

Trang 120

III.1 Giới thiệu thuật toán K-means clustering

120

Trang 121

Trong thuật toán K-means clustering, chúng ta không biết nhãn (label) của từng điểm dữliệu Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster) khác nhau sao

cho dữ liệu trong cùng một cụm có tính chất giống nhau.

121

Trang 122

Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong một không

gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp thông tin về một

điểm dữ liệu là rất lớn) Hình bên dưới là một ví dụ về 3 cụm dữ liệu

122

Trang 124

Bài toán với 3 clusters.

124

Trang 125

Giả sử mỗi cluster có một điểm đại diện (center) màu vàng Và những điểm xung quanh

mỗi center thuộc vào cùng nhóm với center đó Một cách đơn giản nhất, xét một điểm bất

kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc về cùng nhóm với center đó

Tới đây, chúng ta có một bài toán thú vị: Trên một vùng biển hình vuông lớn có ba đảo

hình vuông, tam giác, và tròn màu vàng như hình trên Một điểm trên biển được gọi là thuộc lãnh hải của một đảo nếu nó nằm gần đảo này hơn so với hai đảo kia Hãy xác định ranh giới lãnh hải của các đảo.

125

Trang 126

Hình dưới đây là một hình minh họa cho việc phân chia lãnh hải nếu có 5 đảo khác nhauđược biểu diễn bằng các hình tròn màu đen:

126

Trang 128

Phân vùng lãnh hải của mỗi đảo Các vùng khác nhau có màu sắc khác nhau.

128

Trang 129

Chúng ta thấy rằng đường phân định giữa các lãnh hải là các đường thẳng (chính xác hơnthì chúng là các đường trung trực của các cặp điểm gần nhau) Vì vậy, lãnh hải của mộtđảo sẽ là một hình đa giác.

129

Trang 130

Cách phân chia này trong toán học được gọi là Voronoi Diagram.

130

Trang 131

Trong không gian ba chiều, lấy ví dụ là các hành tinh, thì (tạm gọi là) lãnh không của mỗi

hành tinh sẽ là một đa diện Trong không gian nhiều chiều hơn, chúng ta sẽ có những thứ

(mà tôi gọi là) siêu đa diện (hyperpolygon).

131

Trang 137

III.2 Thuật toán

137

Trang 139

Đầu vào: Dữ liệu X và số lượng cluster cần tìm K.

139

Trang 140

Đầu ra: Các center M và label vector cho từng điểm dữ liệu Y.

140

Trang 141

1. Chọn K điểm bất kỳ làm các center ban đầu.

141

Trang 142

2. Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.

142

Trang 143

3. Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với vòng lặptrước nó thì ta dừng thuật toán.

143

Trang 144

4. Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất các cácđiểm dữ liệu đã được gán vào cluster đó sau bước 2.

144

Trang 145

5. Quay lại bước 2.

145

Trang 146

Chúng ta có thể đảm bảo rằng thuật toán sẽ dừng lại sau một số hữu hạn vòng lặp

146

Trang 147

III.3 Hạn chế thuật toán

147

Trang 148

Có một vài hạn chế của thuật toán K-means clustering:

148

Trang 149

- Chúng ta cần biết số lượng cluster cần clustering Trong thực tế, nhiều trường hợp chúng ta không xác định được giá trị này

149

Trang 150

- Nghiệm cuối cùng phụ thuộc vào các centers được khởi tạo ban đầu Tùy vào các center ban đầu mà thuật toán có thể có tốc độ hội tụ rất chậm, hoặc thậm chí cho chúng ta nghiệm không chính xác (chỉ là local minimum - điểm cực tiểu - mà không phải giá trị nhỏ nhất)

150

Trang 151

- Các cluster cần có dạng hình tròn Tức các cluster tuân theo phân phối chuẩn và matrận hiệp phương sai là ma trận đường chéo có các điểm trên đường chéo giống nhau.

151

Trang 152

- Khi một cluster nằm phía trong 1 cluster khác

152

Trang 153

Có một vài cách khắc phục đó là:

153

Trang 154

● Chạy K-means clustering nhiều lần với các center ban đầu khác nhau rồi chọncách có hàm mất mát cuối cùng đạt giá trị nhỏ nhất.

154

Trang 155

● K-means++ -Improve initialization algorithm - wiki.

155

Trang 156

● Có thể xem bài báo khoa học “Cluster center initialization algorithm for K-meansclustering”.

156

Trang 157

- Các cluster cần có só lượng điểm gần bằng nhau

157

Trang 159

CHƯƠNG IV: THỰC NGHIỆM VÀ XÂY DỰNG CHƯƠNG TRÌNH

159

Trang 161

Nội dung chính của chương này sẽ trình bày chi tiết về quá trình hiện thực chương trình

từ các bước chuẩn bị (thiết kế và xây dựng cơ sở dữ liệu, cài đặt môi trường) đế giai đoạnhiện thực mã nguồn cho chương trình

161

Trang 163

IV.1 Cài đặt môi trường, dữ liệu

163

Trang 165

import numpy as np

165

Trang 166

from mnist import MNIST # require `pip install python-mnist`

166

Trang 167

import matplotlib.pyplot as plt

167

Trang 168

from sklearn.cluster import KMeans

168

Trang 169

Thực hiện thuật toán K-means clustering trên toàn bộ 10k chữ số.

169

Trang 170

from display_network import *

170

Trang 172

mndata = MNIST( ' /MNIST/' ) # path to your MNIST folder

172

Trang 173

173

Trang 174

X = mndata.test_images

174

Trang 176

kmeans = KMeans(n_clusters=K).fit(X)

176

Trang 177

pred_label = kmeans.predict(X)

177

Trang 187

IV.2 Mã nguồn

187

Trang 191

Áp dụng K-means clustering vào tập test set của bộ cơ sở dữ liệu MNIST với K = 10 cluster Cột 1: centers của các cluster Các cột còn lại: Mỗi hàng là 20 điểm dữ liệu ngẫu nhiên được chọn ra từ

mỗi cluster

191

Trang 197

CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

197

Trang 199

Chương này với mục đích kết luận về kết quả thực hiện được trong đồ án và từ đó đề rahướng phát triển cho đồ án trong tương lai.

199

Trang 200

VI.1. Kết luận

200

Trang 201

Mặc dù có những hạn chế, K-means clustering vẫn cực kỳ quan trọng trongMachine Learning và là nền tảng cho nhiều thuật toán phức tạp khác sau này

201

Trang 203

VI.2. Hướng phát triển

203

Trang 204

Chạy K-means clustering nhiều lần với các center ban đầu khác nhau rồi chọncách có hàm mất mát cuối cùng đạt giá trị nhỏ nhất.

204

Trang 205

K-means++ -Improve initialization algorithm - wiki.

205

Trang 206

Có thể xem bài báo khoa học “Cluster center initialization algorithm for K-meansclustering”.

206

Trang 207

Các cluster cần có só lượng điểm gần bằng nhau

207

Trang 208

CNN (Convolutional neural network) là một thuật toán có thể giải quyết tốt hơn

208

Trang 210

DANH MỤC TÀI LIỆU THAM KHẢO

210

Trang 212

[1] Machine Learning cơ bản:https://machinelearningcoban.com/

212

Trang 213

[2] Khóa học Machine Learning của Andrew Ng:https://www.coursera.org/

213

Trang 214

PHỤ LỤC

214

Ngày đăng: 05/09/2021, 20:46

TỪ KHÓA LIÊN QUAN

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

w