daotao.vku.udn.vndaotao.vku.udn.vn/uploads/2021/01/1609926560-nguyenthin... · web viewnguyễn...
TRANSCRIPT
ĐAI HOC ĐA NĂNGKHOA CÔNG NGHÊ THÔNG TIN VA TRUYÊN THÔNG
----------
BAO CAO ĐỒ AN
Đê tai:
TÌM HIỂU VA XÂY DỰNG CHƯƠNG TRÌNH NHÂN DIÊN CHƯ VIÊT BĂNG NƠRON
SVTH : Nguyên Thi Nhât Lê
Nguyên Hiêu Nghia
Lơp: 18IT3
GVHD: TS. Nguyên Đức Hiển
Đa Năng, tháng 11 năm 2020
ĐAI HOC ĐA NĂNGKHOA CÔNG NGHÊ THÔNG TIN VA TRUYÊN THÔNG
----------
BAO CAO ĐỒ AN
Đê tai:
TÌM HIỂU VA XÂY DỰNG CHƯƠNG TRÌNH NHÂN DIÊN CHƯ VIÊT BĂNG NƠRON
SVTH : Nguyên Thi Nhât Lê
Nguyên Hiêu Nghia
Lơp: 18IT3
GVHD: TS. Nguyên Đức Hiển
Đa Năng, tháng 11 năm 2020
MUC LUCLƠI CAM ƠN.................................................................................................................5
LƠI NÓI ĐẦU................................................................................................................6
CHƯƠNG I: TỔNG QUAN...........................................................................................8
1.1 Khái quát............................................................................................................8
1.2. Mục tiêu nghiên cứu............................................................................................8
1.3. Đối tượng va phạm vi nghiên cứu........................................................................9
1.3.1. Đối tượng......................................................................................................9
1.3.2. Phạm vi nghiên cứu......................................................................................9
1.4. Phương pháp nghiên cứu.....................................................................................9
1.4.1. Phương pháp lý thuyêt..................................................................................9
1.4.2. Phương pháp thực nghiêm............................................................................9
1.5 Ý nghia của đề tai..................................................................................................9
CHƯƠNG II. CƠ SƠ LÝ THUYÊT.............................................................................10
2.1 Thuât toán CNN – Convolutional Neural Network:........................................10
2.1.1 Convolutional la gì?..................................................................................11
2.1.2 Cấu trúc của mạng CNN...........................................................................11
2.1.3 Giơi thiêu về Gradient Descent:..................................................................12
2.2 Giơi thiêu về các thư viên hỗ trợ:....................................................................13
2.2.1 Thư viên Tensorflow.................................................................................13
2.2.2 Giơi thiêu về Node.js...................................................................................14
2.2.3 Google Colab la gì?...................................................................................15
CHƯƠNG III: PHÂN TÍCH BÀI TOÁN.....................................................................17
3.1 Mục tiêu...........................................................................................................17
3.2 Đao tạo mô hình deep learning phân loại chữ viêt tay....................................17
3.2.1 Tổng quan về tâp dữ liêu huấn luyên...........................................................17
3.2.2 Xử lý hình ảnh đầu vao.............................................................................17
3.2.3 Xây dựng mô hình phân loại........................................................................18
3.3 Các bươc thực hiên..........................................................................................18
CHƯƠNG IV: KÊT LUẬN CHUNG...........................................................................21
4.1 Kêt quả đạt được..............................................................................................21
4.2 Ưu điểm va nhược điểm của mô hình phân loại..............................................24
TÀI LIỆU THAM KHAO.............................................................................................25
LƠI CAM ƠNTrên thực tê không có sự thanh công nao ma không gắn liền vơi những sự hỗ
trợ, giúp đỡ dù ít hay nhiều, dù trực tiêp hay gián tiêp của người khác. Trong suốt
quãng thời gian từ khi bắt đầu học tâp tại giảng đường trường Đại học công nghê
thông tin va truyền thông Viêt Han - Đại học Đa Năng, tôi đã nhân được rất nhiều sự
quan tâm, giúp đỡ của thầy cô va các bạn.
Vơi lòng biêt ơn sâu sắc nhất, tôi xin gửi lời cảm ơn chân thanh tơi toan thể các
thầy cô giáo trong khoa Công nghê thông tin va truyền thông Đại học Viêt Han, những
người đã dạy dỗ va truyền đạt vốn kiên thức vô cùng quý báu của mình cho chúng em
trong suốt quãng thời gian học tại đây. Những tình cảm va kiên thức ma thầy cô đã gửi
trao cho chúng em sẽ la hanh trang cho chúng em để bươc đi trên những đoạn đường
tương lai.
Tôi cũng xin gửi lời cảm ơn sâu sắc tơi Thầy Nguyên Đỗ Công Pháp , người đã
tân tình hỗ trợ va dẫn dắt tôi trong suốt quá trình thực hiên đồ án để có được kêt quả
một cách tốt nhất.
Một lần nữa tôi xin được chân thanh cảm ơn!
LƠI NÓI ĐẦUNhân dạng la linh vực được các nha 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 linh 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
va nhân dạng chữ số viêt tay nói riêng la một vấn đề thách thức đối vơi những nha
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, nha
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 va nhâp vao máy tính bảng điểm viêt tay
của giáo viên bộ môn, công tác nay luôn chiêm nhiều thời gian va đôi khi không đảm
bảo tiên độ hoạt động của nha trường.
Để nhân dạng chữ số viêt tay, có nhiều phương pháp va 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 hoan toan các yêu cầu của người dùng.
Vây nên, cần có một ứng dụng nhân dạng chữ viêt có phương pháp va kỹ thât
cao hơn để có thể dê dang tiêp cân vơi người dùng, hạn chê những lỗi cơ bản của nhân
dạng.
NHÂN XÉT
(Của giảng viên)……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
Đa Năng, ngay 04 tháng 09 năm 2020
(Ký va ghi rõ họ tên)
CHƯƠNG I: TỔNG QUAN
1.1 Khái quát.
Nhân dạng chữ viêt tay la bai toán khó trong lơp các bai toán nhân dạng chữ, va vẫn luôn thu hút được nhiều sự quan tâm nghiên cứu của các nha khoa học. Đặc biêt la trong vai thâp niên gần đây, do sự thúc đẩy của quá trình tin học hóa trong mọi linh vực, ứng dụng nhân dạng chữ cang có nhiều ý nghia khi được sử dụng cho các bai toán trong thực tê. Cũng như nhiều bai toán nhân dạng tiêng nói, hình ảnh… khác, thì độ chính xác của hê thống vẫn tiêp tục cần phải cải thiên nhằm vươn tơi khả năng nhân dạng giống như con người.
Tuy nhiên, vơi bai toán nhân dạng chữ viêt tay thì vấn đề trở nên phức tạp hơn nhiều so vơi bai toán nhân dạng chữ in thông thường ở những vấn đề sau đây:
Vơi chữ viêt tay thì không thể có các khái niêm font chữ, kích cỡ chữ. Các kí tự trong một văn bản chữ viêt tay thường có kích thươc khác nhau. Thâm chí, cùng một kí tự trong một văn bản do một người viêt nhiều khi cũng có độ rộng, hẹp, cao, thấp khác nhau, ...
Vơi những người viêt khác nhau chữ viêt có độ nghiêng khác nhau (chữ nghiêng nhiều/ít, chữ nghiêng trái/phải...).
Các kí tự của một từ trên văn bản chữ viêt tay đối vơi hầu hêt người viêt thường bi dính nhau vì vây rất khó xác đinh được phân cách giữa chúng.
Các văn bản chữ viêt tay còn có thể có trường hợp dính dòng (dòng dươi bi dính hoặc chồng lên dòng trên).
Trong những năm gần đây, mô hình mạng Neuron theo hương học sâu đã cho thấy những kêt quả tốt trong nhiều bai toán khác nhau, trong đó có nhân dạng chữ.
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 va xử lý ảnh. Deep Learning la 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 đó lam rõ nghia 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 bai 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 bai toán vơi số lượng lơn, kích thươc đầu vao 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.
1.2. Mục tiêu nghiên cứu
Mục tiêu chính của đề tai nay la 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.
1.3. Đối tượng va phạm vi nghiên cứu
1.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
1.3.2. Phạm vi nghiên cứu
Nghiên cứu kỹ thuât xử lý ảnh, Anh quét chữ số viêt tay, Các chữ số tự nhiên tự 0 đên 9,
1.4. Phương pháp nghiên cứu
1.4.1. Phương pháp lý thuyết
Các tai liêu về cơ sở lý thuyêt: xử lý ảnh số, lọc trích ảnh số, xác đinh 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 tai liêu liên quan tơi lâp trình
1.4.2. Phương pháp thực nghiệm
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.
1.5 Ý nghĩa của đê tai
Về khoa học: Đề tai sẽ mang ý nghia cung cấp về mặt lý thuyêt để lam rõ về các phương pháp va 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ố.
CHƯƠNG II. CƠ SƠ LÝ THUYÊT
2.1 Thuật toán CNN – Convolutional Neural Network:
Convolutional Neural Network (CNNs – Mạng nơ-ron tích châp) la 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 bai toán nhân dạng các object trong ảnh. Để
tìm hiểu tại sao thuât toán nay đượ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 nay.
Tương tự như viêc trẻ em học cách nhân diên đối tượng, chúng ta cần cho thuât
toán học rất nhiều hình ảnh trươc khi nó có thể đưa ra dự đoán cho hình ảnh đầu vao
ma nó chưa từng thấy.
Máy tính “nhìn” theo cách khác con người. Trong thê giơi máy tính chỉ có những
con số. Mỗi hình ảnh có thể được biểu diên dươi dạng mảng 2 chiều những con số
được gọi la các pixel.
Mặc dù máy tính nhìn nhân theo cách khác con người, chúng ta vẫn có thể dạy
máy tính nhân diên các mẫu như con người. Điều quan trọng la chúng ta cần nghi về
hình ảnh theo một cách khác đi.
Để dạy thuât toán nhân diên đối tượng trong hình ảnh, ta sử dụng một loại Mạng
Nơ-ron Nhân Tạo (Artificial Neural Network): Mạng Nơ-ron Tích Châp. Tên của nó
được dựa trên phép tính quan trọng được sử dụng trong mạng đó la Tích Châp.
Mạng Nơ-ron Tích Châp lấy cảm hứng từ não người. Nghiên cứu trong những thâp
niên 1950 va 1960 của D.H Hubel va T.N Wiesel trên não của động vât đã đề xuất một
mô hình mơi cho viêc cách ma động vât nhìn nhân thê giơi. Trong báo cáo, hai ông đã
diên tả 2 loại tê bao nơ-ron trong não va cách hoạt động khác nhau: tê bao đơn giản
(simple cell – S cell) va tê bao phức tạp (complex cell – C cell).
Các tê bao đơn giản được kích hoạt khi nhân diên các hình dáng đơn dản như
đường nằm trong một khu vực cố đinh va một góc cạnh của nó. Các tê bao phức tạp có
vùng tiêp nhân lơn hơn va đầu ra của nó không nhạy cảm vơi những vi trí cố đinh
trong vùng.
Trong thi giác, vùng tiêp nhân của một nơ-ron tương ứng vơi một vùng trên võng
mạc nơi ma sẽ kích hoạt nơ-ron tương ứng.
Năm 1980, Fukushima đề xuất mô hình mạng nơ-ron có cấp bâc gọi la
neocognitron. Mô hình nay dựa trên khái niêm về S cell va C cell. Mạn neocognitron
có thể nhân diên mẫu dựa trên viêc học hình dáng của đối tượng.
Sau đó vao năm 1998, Mạng Nơ-ron Tích Châp được giơi thiêu bởi Bengio, Le
Cun, Bottou va Haffner. Mô hình đầu tiên của họ được gọi tên la LeNet-5. Mô hình
nay có thể nhân diên chữ số viêt tay.
2.1.1 Convolutional la gì?
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 ma không cần chọn các feature.
Trong hình ảnh ví dụ trên, ma trân bên trái la một hình ảnh trắng đen được số hóa.
Ma trân có kích thươc 5×5 va mỗi điểm ảnh có giá tri 1 hoặc 0 la giao điểm của dòng
va cột.
Convolution hay tích châp la nhân từng phần tử trong ma trân 3. Sliding Window
hay còn gọi la kernel, filter hoặc feature detect la một ma trân có kích thươc nhỏ như
trong ví dụ trên la 3×3.
Convolution hay tích châp la 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 la 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.
2.1.2 Cấu trúc của mạng CNN
Mạng CNN la một tâp hợp các lơp Convolution chồng lên nhau va sử dụng các
ham nonlinear activation như ReLU va 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 ham 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 ham 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 vao (input node) cho mỗi neural đầu ra trong các lơp tiêp
theo.
Mô hình nay gọi la mạng kêt nối đầy đủ (fully connected layer) hay mạng toan 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 la kêt quả convolution từ layer trươc đó, nhờ vây ma 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ó hang trăm hang
nghìn filter như vây va kêt hợp kêt quả của chúng lại. Ngoai 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á tri qua các
lơp filter dựa vao cách thức ma 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 la tính bất biên (Location
Invariance) va tính kêt hợp (Compositionality). Vơi cùng một đối tượng, nêu đối tượng
nay đượ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ẽ bi ảnh hưởng đáng kể.
Pooling layer sẽ cho bạn tính bất biên đối vơi phép dich chuyển (translation), phép
quay (rotation) va 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 va trừu tượng hơn thông qua
convolution từ các filter.
Đó la 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).
2.1.3 Giơi thiệu vê Gradient Descent:
Trong Machine Learning nói riêng va Toán Tối Ưu nói chung, chúng ta thường
xuyên phải tìm giá tri nhỏ nhất (hoặc đôi khi la lơn nhất) của một ham số nao đó. Ví
dụ như các ham mất mát trong hai bai Linear Regression va K-means Clustering. Nhìn
chung, viêc tìm global minimum của các ham mất mát trong Machine Learning la rất
phức tạp, thâm chí la bất khả thi. Thay vao đó, người ta thường cố gắng tìm các điểm
local minimum, va ở một mức độ nao đó, coi đó la nghiêm cần tìm của bai toán.
Các điểm local minimum la nghiêm của phương trình đạo ham bằng 0. Nêu bằng
một cách nao đó có thể tìm được toan bộ (hữu hạn) các điểm cực tiểu, ta chỉ cần thay
từng điểm local minimum đó vao ham số rồi tìm điểm lam cho ham có giá tri nhỏ nhất
(đoạn nay nghe rất quen thuộc, đúng không?). Tuy nhiên, trong hầu hêt các trường
hợp, viêc giải phương trình đạo ham bằng 0 la bất khả thi. Nguyên nhân có thể đên từ
sự phức tạp của dạng của đạo ham, từ viêc các điểm dữ liêu có số chiều lơn, hoặc từ
viêc có quá nhiều điểm dữ liêu.
Hương tiêp cân phổ biên nhất la xuất phát từ một điểm ma chúng ta coi la gần vơi
nghiêm của bai toán, sau đó dùng một phép toán lặp để tiên dần đên điểm cần tìm, tức
đên khi đạo ham gần vơi 0. Gradient Descent (viêt gọn la GD) va các biên thể của nó
la một trong những phương pháp được dùng nhiều nhất.
2.2 Giơi thiệu vê các thư viện hỗ trợ:
2.2.1 Thư viện Tensorflow
TensorFlow la một framework nguồn mở cho Machine Learning, đặc biêt la Deep
Learning, nó cung cấp đầy đủ các công cụ để xây dựng một thuât toán Machine
Learning từ nhỏ bé cho đên cực lơn. Không những vây, đi kèm vơi TensorFlow còn có
một số công cụ vô cùng tuyêt vời:
TensorBoard: công cụ giúp minh họa các đồ thi tính toán (computational graph),
sự thay đổi giá tri của các ham tính toán (loss, accuracy,…) dươi dạng biểu đồ.
TensorFlow Serving: công cụ giúp triển khai các mô hình Machine Learning viêt
bằng TensorFlow thanh một sản phẩm thực sự.
Các API giúp cho viêc sử dụng TensorFlow dê dang hơn được phát triển bởi
những nha nghiên cứu về Machine Learning trên toan thê giơi (TensorFlow High
Level API, TF-Slim, TensorFlow Object Detection API)
2.2.2 Giơi thiệu vê Node.js
Nodejs la một nền tảng (Platform) phát triển độc lâp được xây dựng ở trên
Javascript Runtime của Chrome ma chúng ta có thể xây dựng được các ứng dụng
mạng một cách nhanh chóng va dê dang mở rộng.
Nodejs được xây dựng va phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ
sở tại California, Hoa Kỳ.
Phần Core bên dươi của Nodejs được viêt hầu hêt bằng C++ nên cho tốc độ xử lý
va hiêu năng khá cao.
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.
Nodejs áp dụng cho các sản phẩm có lượng truy câp lơn, cần mở rộng nhanh, cần
đổi mơi công nghê, hoặc tạo ra các dự án Startup nhanh nhất có thể.
Những ứng dụng nên viết bằng Nodejs
Rõ rang, không phải cứ hot va mơi la Nodejs lam gì cũng tốt, ví dụ như một ứng
dụng cần tính ổn đinh cao, logic phức tạp thì các ngôn ngữ PHP hay Ruby… vẫn la sự
lựa chọn tốt hơn. Còn dươi đây la những ứng dụng có thể va nên viêt bằng Nodejs:
Websocket server: Các máy chủ web socket như la Online Chat, Game
Server…
Fast File Upload Client: la các chương trình upload file tốc độ cao.
Ad Server: Các máy chủ quảng cáo.
Cloud Services: Các dich vụ đám mây.
RESTful API: đây la những ứng dụng ma được sử dụng cho các ứng dụng
khác thông qua API.
Any Real-time Data Application: bất kỳ một ứng dụng nao có yêu cầu về tốc độ
thời gian thực. Micro Services: Ý tưởng của micro services la chia nhỏ một ứng dụng
lơn thanh các dich vụ nhỏ va kêt nối chúng lại vơi nhau. Nodejs có thể lam tốt điều
nay.
Lý do để tự tin sử dụng Nodejs
Các ứng dụng Nodejs được viêt bằng javascript, ngôn ngữ nay la một ngôn ngữ
khá thông dụng. Theo tác giả của ngôn ngữ Javascript, Ryan Dahl: “Javascript có
những đặc tính ma lam cho nó rất khác biêt so vơi các ngôn ngữ lâp trình động còn lại,
cụ thể la nó không có khái niêm về đa luồng, tất cả la đơn luồng va hương sự kiên.”
Nodejs chạy đa nền tảng phía Server, sử dụng kiên trúc hương sự kiên Event-
driven, cơ chê non-blocking I/O lam cho nó nhẹ va hiêu quả.
Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn
nữa cộng đồng Nodejs rất lơn va hoan toan miên phí. Các bạn có thể thấy cộng đồng
Các ứng dụng NodeJS đáp ứng tốt thời gian thực va chạy đa nền tảng, đa thiêt bi.
2.2.3 Google Colab la gì?
Colaboratory hay còn gọi la Google Colab, la một sản phẩm từ Google Research,
nó cho phép chạy các dòng code python thông qua trình duyêt, đặc biêt phù hợp vơi
Data analysis, machine learning va giáo dục. Colab không cần yêu cầu cai đặt hay cấu
hình máy tính, mọi thứ có thể chạy thông qua trình duyêt, bạn có thể sử dụng tai
nguyên máy tính từ CPU tốc độ cao va cả GPUs va cả TPUs đều được cung cấp cho
bạn.
Colab cung cấp nhiều loại GPU, thường la Nvidia K80s, T4s, P4s and P100s, tuy
nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi
theo thời gian. Vì la dich vụ miên phí, nên Colab sẽ có những thứ tự ưu tiên trong viêc
sử dụng tai nguyên hê thống, cũng như giơi hạn thời gian sử dụng, thời gian sử dụng
tối đa lên tơi 12 giờ.
Ưu điểm:
Google Colab miên phí.
Cung cấp phần cứng mạnh cho viêc chạy thử code từ CPU, GPU đên TPU.
Dê dang sử dụng va truy câp, kêt nối lưu trữ trực tiêp trên Google Drive, Github
Sử dụng được nhiều thư viên phổ dụng danh cho DeepLearning như Keras,
TensorFlow, PyTorch, va OpenCV
Nhược điểm:
Thời gian sử dụng có giơi hạn, sau 12 giờ VM của colab bi reset.
Không thể tự lựa chọn cấu hình phần cứng, vơi account free.
CHƯƠNG III: PHÂN TÍCH BAI TOAN
3.1 Mục tiêu
Xây dựng một model deep learning có khả năng phân loại tơi 39 chữ cái, số va kí tự
viêt tay khác nhau trên một tâp dữ liêu cho trươc.
3.2 Đao tạo mô hình deep learning phân loại chữ viết tay
3.2.1 Tổng quan vê tập dữ liệu huấn luyện
Tâp dữ liêu chứa tất cả các chữ cái tiêng Anh (nhỏ va viêt hoa), chữ số (0-9) va
một số ký tự đặc biêt (@, #, $, &)
Hình ảnh la hình ảnh đen trắng 32 x 32 pixel
Có tổng cộng 39 loại, 26 cho chữ cái (chữ cái nhỏ va chữ hoa được kêt hợp để
tạo ra một lơp duy nhất của mỗi ký tự), 9 loại chữ số (tức la từ 1 đên 9). để
tránh phân loại sai chữ số 0 được kêt hợp trong loại ký tự O va một số ký tự đặc
biêt (@, #, $, &).
Nguồn: https://www.kaggle.com/vaibhao/handwritten-characters
3.2.2 Xử lý hình ảnh đầu vao
Tăng cường dữ liêu huấn luyên
Tiên hanh tăng cường dữ liêu cho tâp huấn luyên bằng các phương pháp như
rescale, width shift, height shift.
Điều nay sẽ giúp mô hình phân loại hoạt động tốt hơn vơi các bức ảnh mô hình
chưa từng được học.
Thay đổi kích thươc của các bức ảnh trong tâp dữ liêu
Thay đổi kích thươc của tất cả bức ảnh trong tâp dữ liêu lam cho dữ liêu đồng
nhất, dê dang quyêt đinh được đầu vao va các layer của mô hình đao tạo.
3.2.3 Xây dựng mô hình phân loại
Đinh nghia các layer của mô hình đao tạo
o Layer 1: La một lơp Convolutional 2D có 32 filter va kích thươc của mỗi
filter la 3x3, đầu vao của nó la một ảnh có kích thươc 32x32x3 va ham
kích hoạt la ReLU.
o Layer 2: La một lơp MaxPooling2D có tham số mặc đinh la 2x2 giúp
giảm kích thươc của bức ảnh đi một nửa, kích thươc hiên tại la
16x16x32.
o Layer 3: La một lơp Convolutional 2D có 64 filter va kích thươc của mỗi
filter la 3x3, ham kích hoạt la ReLU.
o Layer 4: La một lơp MaxPooling2D có tham số mặc đinh la 2x2 giúp
giảm kích thươc của bức ảnh đi một nửa, kích thươc hiên tại la 8x8x64.
o Layer 5: La một Flatten giúp duỗi thẳng bức ảnh ra thanh kích thươc
4096x1.
o Layer 6: La một lơp Dense layer gồm 256 param va ham kích hoạt la
ReLU
o Layer 7: La một lơp Dense layer gồm 39 param tương ứng vơi 39 loại kí
tự va ham kích hoạt la Softmax
3.3 Các bươc thực hiện
Import các thư viên cần thiêt
Download dataset từ https://www.kaggle.com/vaibhao/handwritten-characters
va giải nén
Tạo các biên lưu vi trí của thư mục Train va Validation
Tạo các biên train_generator va valid_generator để đinh nghia các thuộc tính
nhằm tăng cường tâp dữ liêu huấn luyên
Tiên hanh nhâp dữ liêu từ các thư mục va tăng cường dữ liêu
Tạo mô hình huấn luyên
Biên dich mô hình huấn luyên
Tiên hanh đao tạo
Chuyển đổi mô hình sang TensorFlow.js để thực hiên demo trên web
CHƯƠNG IV: KÊT LUÂN CHUNG
4.1 Kết quả đạt được
Mô hình có khả năng phân loại tơi 39 chữ cái, số va kí tự viêt tay khác nhau từ
một hình ảnh được cung cấp bởi người dùng
Một số hình ảnh:
4.2 Ưu điểm va nhược điểm của mô hình phân loại
Ưu điểm
o Có thể phân loại được 39 kí tự khác nhau
o Giao diên web dê sử dụng
o Tốc độ nhân diên nhanh
o Độ chính xác tương đối cao
Nhược điểm
o Do giơi hạn dữ liêu nên viêc nhân dạng chữ thường khá khó khăn
o Nhân diên sai sẽ trả ra kêt quả la @
o Hình ảnh được đưa vao để nhân diên phải la chữ trắng nền đen
TAI LIÊU THAM KHAO1. https://www.tensorflow.org/tutorials/keras/classification
2. https://www.youtube.com/watch?v=98dZscH8b-0&feature=youtu.be
3. https://machinelearningmastery.com/how-to-develop-a-convolutional-neural-
network-from-scratch-for-mnist-handwritten-digit-classification/
4. https://xemtailieu.com/tai-lieu/nghien-cuu-mo-hinh-hoc-sau-deep-learning-va-
ung-dung-trong-nhan-dang-chu-viet-tay-1298083.html