báo cáo đề tài số 6 phân loại dữ liệu ảnh chữ số viết tay

33 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo đề tài số 6 phân loại dữ liệu ảnh chữ số viết tay

Đ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

Trong đó, việc phân loại dữ liệu ảnh chữsố viết tay là một trong những bài toán cơ bản và quan trọng trong lĩnh vực trí tuệnhân tạo và máy học.Việc phân loại dữ liệu ảnh chữ số viết tay

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN HÀ NỘIĐẠI HỌC QUỐC GIA HÀ NỘI

BÁO CÁO ĐỀ TÀI SỐ 6

PHÂN LOẠI DỮ LIỆU ẢNH CHỮ SỐ VIẾT TAY

Giảng viên hướng dẫn: Cao Văn ChungMôn học: Học máy

Mã môn học: MAT 3533 3

STT Họ và tên Mã Sinh Viên1 Nguyễn Tùng Lâm 200020652 Phan Minh Hiếu 200020513 Hán Duy Khánh 20002059

Trang 2

Lời mở đầu

Trong thời đại kỹ thuật số ngày nay, dữ liệu ảnh được sử dụng rộng rãi để giải quyếtnhiều vấn đề trong cuộc sống và công việc Trong đó, việc phân loại dữ liệu ảnh chữsố viết tay là một trong những bài toán cơ bản và quan trọng trong lĩnh vực trí tuệnhân tạo và máy học.

Việc phân loại dữ liệu ảnh chữ số viết tay có ứng dụng rất rộng rãi, từ nhận dạng sốđiện thoại, mã vạch, mã zip đến các hệ thống xác thực người dùng, xử lý ảnh y khoavà nhiều ứng dụng khác Trong bối cảnh nhu cầu xử lý dữ liệu ngày càng tăng, việc ápdụng các phương pháp và thuật toán phân loại dữ liệu ảnh chữ số viết tay đang trở nêncực kỳ cần thiết.

Trong đề tài này, chúng ta sẽ tìm hiểu về các phương pháp và thuật toán phân loại dữliệu ảnh chữ số viết tay và cách chúng được áp dụng trong thực tế Chúng ta sẽ bàn vềcác kỹ thuật tiền xử lý dữ liệu, các mô hình học máy phổ biến như Support VectorMachines (SVM), Convolutional Neural Networks (CNN) và Deep Learning để phânloại dữ liệu ảnh chữ số viết tay Chúng ta cũng sẽ xem xét các ứng dụng của việc phânloại dữ liệu ảnh chữ số viết tay trong thực tế và các thách thức đối với việc phát triểncác hệ thống phân loại dữ liệu ảnh chữ số viết tay hiệu quả và đáng tin cậy.

Trang 3

Mục lục

LỜI MỞ ĐẦU

PHẦN I Khái quát chung……….… 4PHẦN II Thực hiện việc rút gọn số chiều dữ liệu, sau đó tham khảo đểhiển thị trực quan các phân lớp dữ liệu dạng 3D hoặc 2D……… 7PHẦN III Thực hiện phân cụm (clustering) dữ liệu gốc bằng 01 thuật toánphân cụm Hiển thị trực quan và đánh dấu các cụm……… …… 11PHẦN IV Xây dựng chương trình sử dụng mô hình CNN để phân loại cáchình ảnh và đánh giá mô hình……… 18PHẦN V Xây dựng chương trình sử dụng mô hình Multi-Classes SupportVector Machine……… 22Phần VI Đánh giá độ chính xác của mô hình……… … 26

TÀI LIỆU THAM KHẢO……… … 33

Trang 4

PHẦN I Khái quát chung:1.1 Đặt vấn đề:

Đề tài 6 Dựa vào tập dữ liệu ảnh chữ số viết tay (đã được giáo viên cung cấp trongphần thực hành) đặt trong các thư mục theo cấu trúc tương tự như trong bài thực hànhđã có.

1) Thực hiện việc rút gọn số chiều dữ liệu, sau đó tham khảo để hiển thị trực quan cácphân lớp dữ liệu dạng 3D hoặc 2D.

2) Thực hiện phân cụm (clustering) dữ liệu gốc bằng 01 thuật toán phân cụm Hiểnthị trực quan và đánh dấu các cụm.

3) Xây dựng chương trình sử dụng mô hình CNN để phân loại các hình ảnh Kiếntrúc cụ thể như sau: Mạng gồm ít nhất 03 tầng tích chập hỗn hợpConvolution+Activation ReLU + Max Pooling, 02 tầng fully connected với số units phù hợp vàtầng quyết định cuối cùng sử dụngsoftmax Huấn luyện mô hình bằngtập dữ liệutraining sau đó chạy kiểm tra với dữ liệu trong tập validation.

4) Xây dựng chương trình sử dụng mô hình Multi-Classes Support Vector Machineđể phân loại các hình ảnh, huấn luyện mô hình bằng tập dữ liệu training sau đó chạykiểm tra với dữ liệu trong tập validation.

5) So sánh độ chính xác (sử dụng accuracy, confusion matrix, recall và precision)của các mô hình trong ý 4) và ý 3).

1.2 Tổng quan và tiền xử lý dữ liệu:Ngôn ngữ lập trình: Python

Bộ Dữ liệu làm việc của Đề tài 6: là bộ dữ liệu MNIST, được sử dụng rộng rãi tronglĩnh vực học máy và nhận dạng chữ số viết tay Nó bao gồm 60000 ảnh training và10000 ảnh test của các chữ số viết tay từ 0 đến 9, với mỗi ảnh có kích thước 28x28pixel.

Trang 5

Cụ thể hơn, dữ liệu của Đề tài 6 này lấy từ:MNIST handwritten digit database, YannLeCun, Corinna Cortes and Chris Burges,các tệp tin được nén nên cần đoạn chươngtrình giải nén Dữ liệu được để trong 4 tệp (dạng gz) với thông tin như dưới đây:

● train-images-idx3-ubyte: training set images (dữ liệu ảnh train)

● train-labels-idx1-ubyte: training set labels (dữ liệu nhãn ứng với ảnh train)● t10k-images-idx3-ubyte: test set images (dữ liệu ảnh test)

● t10k-labels-idx1-ubyte: test set labels (dữ liệu nhãn ứng với ảnh test)Chú ý dữ liệu ảnh các chữ số viết tay ở đây được lưu liên tiếp nhau và không theođịnh dạng ảnh.

Chuẩn bị dữ liệu:

Để giải quyết được vấn đề được đặt ra ở đầu bài (đề tài 6), bằng ngôn ngữ lập trìnhPython, với bộ dữ liệu được đặt trong 4 tệp gz như trên, chúng ta cần tiền xử lý dữliệu, với bước đầu là viết phần đọc dữ liệu từ các file nén, rồi thực hiện các yêu cầutrong đề bài một cách lần lượt Thông tin chung về dữ liệu:

● Số chiều: d = 28 x 28 = 784 chiều;● Số phân lớp: C = 10 (từ 0 đến 9);● Số mẫu dữ liệu training: N = 5000.

BƯỚC ĐẦU TIÊN (CODE): thiết lập các đường dẫn đến tập dữ liệu huấn luyệnvà kiểm tra của bộ dữ liệu MNIST (cụ thể là 4 tệp gz).

data_path = '/content/drive/MyDrive/MACHINE_LEARNING/PROJECT CUỐIKỲ_MACHINELEARNING/FINAL-TERM-PROJECT'

train_images_path=os.path.join(data_path,'train-images-idx3-ubyte.gz')train_labels_path=os.path.join(data_path,'train-labels-idx1-ubyte.gz')test_images_path=os.path.join(data_path,'t10k-images-idx3-ubyte.gz')test_labels_path=os.path.join(data_path,'t10k-labels-idx1-ubyte.gz')

Trang 6

Nhận xét: Đoạn code trên thiết lập đường dẫn cho tập dữ liệu MNIST (gồm 4 file gz),bao gồm đường dẫn cho tập huấn luyện và tập kiểm tra, kết hợp tên file và đường dẫncơ sở, đảm bảo tính di động và độc lập với hệ điều hành ⇒ một bước quan trọng đểtải và tiền xử lý dữ liệu MNIST

BƯỚC THỨ HAI (CODE): Xây dựng phương thức đọc dữ liệu từ tệp gzip, giảinén và đưa về định dạng là một dãy ảnh (một dãy ma trận nguyên)

(code ở BƯỚC THỨ HAI trong file FINAL-TERM-PROJECT-6-(END).ipynb)

train_images, train_labels =get_mnist_data(train_images_path,train_labels_path,5000,shuffle=True)

test_images, test_labels = get_mnist_data(test_images_path, test_labels_path,10000,_is=False,shuffle=True)

Nhận xét:Kết quả này cho thấy kích thước của các ma trận ảnh và nhãn tương ứngvới tập huấn luyện và tập kiểm tra Theo đó:

train_images có kích thước (5000, 784), tức là tập huấn luyện có 5000 ảnh và mỗiảnh được biểu diễn dưới dạng một vector đặc trưng có kích thước 784 (28x28).train_labels có kích thước (5000,), tức là tập huấn luyện có 5000 nhãn tương ứng với5000 ảnh đó.

test_images có kích thước (10000, 784), tức là tập kiểm tra có 10000 ảnh và mỗi ảnhđược biểu diễn dưới dạng một vector đặc trưng có kích thước 784 (28x28).

test_labels có kích thước (10000,), tức là tập kiểm tra có 10000 nhãn tương ứng với10000 ảnh đó.

Với kết quả này, ta có thể sử dụng các ma trận ảnh và nhãn tương ứng để huấn luyệnvà kiểm tra các mô hình học máy phân loại ảnh chữ số viết tay.

Trang 7

PHẦN II Thực hiện việc rút gọn số chiềudữ liệu, sau đó hiển thị trực quan các phânlớp dữ liệu ở dạng 3D hoặc 2D.

Đầu tiên, ta cần chuẩn hóa dữ liệu để đảm bảo các giá trị của các thuộc tính trongkhoảng giá trị tương đương Sau đó, ta áp dụng phương pháp PCA trên dữ liệu đãđược chuẩn hóa để giảm số chiều dữ liệu xuống 2 hoặc 3 chiều.

Lưu ý: Khi chạy phân tích thành phần chính (PCA), việc chuẩn hóa dữ liệu là cực kỳquan trọng Nguyên nhân là do PCA là phương pháp dựa trên độ lớn của các vectơtrong không gian đa chiều để tìm ra các hướng mới cho các trục tọa độ sao cho chúngta có thể giảm số lượng chiều của dữ liệu Nếu các biến không được chuẩn hoá, mộtsố biến có phạm vi giá trị lớn hơn có thể có ảnh hưởng lớn hơn đến kết quả PCA,trong khi một số biến có phạm vi giá trị nhỏ hơn có thể bị bỏ qua Việc này có thể dẫnđến các thành phần chính không phản ánh tốt sự biến động của các biến trong dữ liệu.

-PCA (Principal Component Analysis)làmộtphươngphápphântíchđabiếnđượcsửdụng để giảm chiều dữ liệuvàtríchxuấtcáctínhchấtquantrọngcủadữliệu.PCAđược sử dụng rộng rãi trong nhiềulĩnhvực,nhưphântíchtínhiệu,nhậndạnghìnhảnh,dữliệusinhhọc,dữliệutàichính,vànhiềulĩnhvựckhác.

Trong PCA, tatìmracácthànhphầnchínhcủadữliệubằngcáchtìmracáchướngtrongkhônggiandữliệumàcóđộlớnphươngsailớnnhất Các thành phần chínhnày được sắp xếp theo độ lớn củaphươngsaitươngứng,vớithànhphầnchínhđầutiêncóphươngsailớnnhất.

ĐểthựchiệnPCA,tathườngđưadữliệuvềdạngmatrận,sauđótínhtoánmatrậnhiệp phương sai (covariance matrix) của dữ liệu Sauđó,tatìmracácvectorriêng(eigenvectors) và giá trị riêng (eigenvalues) của matrậnhiệpphươngsai.Cácvectorriêng này chính là các thành phần chính,vàgiátrịriêngtươngứnglàđộlớnphươngsai của dữ liệu theohướngcủavectorriêngđó.Tasắpxếpcácvectorriêngtheođộ

Trang 8

lớn củagiátrịriêngtươngứng,vàsauđógiữlạichỉcácvectorriêngcóđộlớngiátrịriêngđángkểđểgiảmchiềudữliệu.KhisửdụngPCAđểgiảmchiềudữliệu,tagiữlạichỉcácthànhphầnchínhcóđộlớnphương sai đáng kể, bỏ qua các thành phầnchínhcóđộlớnphươngsaithấp.Bằngcáchnày,ta có thể giảm số chiều của dữ liệu,đồngthờigiữlạilượngthôngtinquantrọngnhấtcủadữliệu.

Ngoài ra, PCA cũng có thể được sử dụng đểbiếnđổidữliệusangkhônggianmới,trong đó các trục tương ứng với các thànhphầnchính.Điềunàycóthểgiúptáchbiệtcác tính chất khác nhau của dữ liệu và tạoracácbiểuđồphântíchhoặchìnhảnhcóthể giúphiểurõhơnvềdữliệu.Tuynhiên,cầnlưuýrằngPCAchỉphùhợpchocácbộdữliệucótínhchấttuyếntínhvàcóphươngsaiđồngnhấttrêncácchiều

Trang 9

Bước 1.1 (CODE):Chuẩn hóa dữ liệu và Giảm chiều dữ liệu xuống còn 2 chiều.Sau đó hiển thị trực quan 2D

-Ta sẽ thực hiện chuẩn hóa dữ liệu bằng phương pháp StandardScaler, sau đó giảmchiều dữ liệu của các ảnh trong bộ dữ liệu MNIST từ 784 chiều xuống còn 2 chiềubằng phương pháp PCA Cuối cùng là trực quan hóa bằng biểu đồ phân tán 2D

(code cụ thể ở bước 1.1 trong file FINAL-TERM-PROJECT-6-(END).ipynb gửi kèm)

Trang 10

Giải thích:

● Chấm màu sắc: Được sử dụng để biểu thị nhãn lớp của từng điểm dữ liệutrong tập huấn luyện MNIST Ví dụ, nếu số 0 được gán màu đỏ, thì tất cả cácđiểm dữ liệu tương ứng với số 0 trên biểu đồ sẽ có màu đỏ.

● Trục x: Giá trị trên trục x của mỗi điểm dữ liệu trên biểu đồ tương ứng với giátrị của chiều thứ nhất (sau khi đã giảm chiều) của điểm dữ liệu tương ứng trongdữ liệu MNIST ban đầu.

● Trục y: Giá trị trên trục y của mỗi điểm dữ liệu trên biểu đồ tương ứng với giátrị của chiều thứ hai của điểm dữ liệu (sau khi giảm chiều) tương ứng trong dữliệu MNIST ban đầu.

Nhận xét: Dựa trên biểu đồ phân tán 2D, ta có thể nhận thấy rằng các điểm dữ liệumặc dù đã có sự phân biệt về màu sắc, nhưng chưa được phân tách rõ ràng thành cácnhóm tương ứng với những số trong bộ dữ liệu MNIST Tóm lại là chưa thể hiện mộtcách rõ nét điều gì về bộ dữ liệu MNIST.

Trang 11

-PhươngphápStandardScalerlà một phươngphápchuẩnhóadữliệutrongkhoahọcdữ liệu vàhọcmáy.Khiápdụngphươngphápnày,cácgiátrịdữliệuđượcchuẩnhóasaochocótrungbìnhbằng0vàđộlệchchuẩnbằng1.Phươngphápnàylà phươngphápchuẩnhóathườngđượcsửdụngnhấttrongcácbàitoánhọcmáy.

CácbướcthựchiệnphươngphápStandardScalernhưsau:1.Tínhgiátrịtrungbìnhvà độlệchchuẩncủatừngthuộctínhdữliệu.2.Chuẩnhóadữliệubằngcáchtrừgiátrịtrungbìnhvàchiachođộlệchchuẩn.

-PHẦN III Thực hiện phân cụm (clustering)dữ liệu gốc bằng 01 thuật toán phân cụm.Hiển thị trực quan và đánh dấu các cụmđể thực hiện phân cụm dữ liệu gốc của bộ dữ liệu MNIST, ta có thể sử dụng thuật toánSpectral Clustering kết hợp với PCA để giảm chiều dữ liệu xuống còn số chiều nhỏhơn (bước giảm chiều bằng PCA đã được thực hiện ở phần trước), sau đó áp dụngSpectral Clustering để phân cụm dữ liệu Spectral Clustering sử dụng phân tích giá trịriêng để phân cụm dữ liệu Trong trường hợp này, ta có thể chọn số lượng cụm là 10,tương ứng với số lượng lớp trong tập dữ liệu MNIST

-Clustering (phân cụm) làmộtkỹthuậttronglĩnhvựchọc không giám sát, được sửdụng đểphânloạicácđiểmdữliệuthànhcácnhóm(cụm)dựatrêncácđặctrưngtươngtựcủachúng.Mụctiêucủaphâncụmlàtìm ra các nhóm dữ liệu khác nhau vàđồngnhấtbêntrongmỗinhóm,đồngthờigiữchosựkhácbiệtgiữacácnhóm.

Trang 12

SpectralClusteringlàmộtphươngphápphâncụmdữliệudựatrênphântích giá trịriêngcủamatrậntươngđồnghoặcmatrậnLaplacecủađồthịtươngđồng Phươngphápnàyđượcđưaravàonăm2000bởi người sáng lập của Microsoft Research,JianboShivàJitendraMalik.((Dướiđâylàcácbướcthựchiện))

1 Xây dựng ma trận tương kề hoặc ma trậnLaplacecủađồthịtươngkềtừdữliệubanđầu.

1.2.TínhmatrậnLaplacian(cả2hình,hìnhthứ3làkếtquả(L)):

Trang 13

2.Phântíchgiátrịriêngvàvectorriêngcủamatrậntươngđồng(hoặcLaplace).3 Giảm chiều dữ liệuxuốngmộtsốchiềunhỏhơnbằngcáchchọncácvectorriêngtươngứngvớicácgiátrịriênglớnnhất.

4.Ápdụngmộtthuậttoánphâncụm(vídụnhưK-means)đểphâncụmcácđiểm

Trang 14

K-means là một thuậttoántronglĩnhvựcphâncụm(clustering),giúpphânloạicácđiểm dữ liệu thành các cụm dựatrêncácđặctrưngtươngtựcủachúng.Thuậttoánnày được sử dụngrộngrãitrongcáclĩnhvựcnhưxửlýảnh,phântíchdữliệu,khaiphádữliệu,họcmáy,v.v.(Dướiđâylàcácbướcthựchiện)

1.Chọnsốcụmcầnphânloạidữliệu(k)vàkhởitạokđiểmtrungtâmcủacáccụm.2.Gántừngđiểmdữliệuvàocụmgầnnhấtvớiđiểmtrungtâmcủacụmđó.3 Cập nhậtlạicácđiểmtrungtâmcủacáccụmbằngcáchtínhtrungbình(mean)cácđiểmdữliệutrongmỗicụm.

4 Lặp lại bước 2 và 3 chođếnkhikhôngcósựthayđổivềphânloạicủacácđiểmdữliệuhoặcđạtđếnđiềukiệndừngđượcthiếtlậptrước.

Bước 2.1 (CODE):Phân loại các điểm dữ liệu thành các cụm khác nhau trongkhông gian 2 chiều, rồi hiển thị kết quả

-Ta sẽ áp dụng phương pháp Spectral Clustering để phân loại các điểm dữ liệu thànhcác cụm khác nhau trong không gian 2 chiều (sau khi đã giảm từ 784 xuống còn 2chiều bằng PCA), và cuối cùng là hiển thị kết quả phân cụm bằng đồ thị scatter plot.

(code cụ thể ở bước 2.1 trong file FINAL-TERM-PROJECT-6-(END).ipynb gửi kèm)

Trang 15

Giải thích: (trục x,y và điểm màu sắc thì tương tự như của biểu đồ ở bước 1.3)Nhận xét: Dựa trên biểu đồ phân tán 2D của Clustering of MNIST Training Data,ta có thể nhận thấy rằng các điểm dữ liệu đã được phân tách rõ ràng thành các nhómtương ứng với những số trong bộ dữ liệu MNIST Các số giống nhau được gom lại gầnnhau trên biểu đồ Điều này cho thấy rằng phương pháp PCA đã giảm chiều dữ liệumột cách hiệu quả và giữ lại thông tin quan trọng để phân biệt các số trong bộ dữ liệuMNIST Mô hình này cũng cho ta thấy rằng bộ dữ liệu MNIST có sự phân bố đều trênkhông gian 2 chiều => bộ dữ liệu MNIST là một bộ dữ liệu đa dạng và đủ để đào tạocác mô hình học máy phân loại các số trong hình ảnh.

Trang 21

Đầu ra của tầng Convolution đưa qua hàm kích hoạt ReLU để giữ lại các giá trị khôngâm và đưa giá trị âm về 0.

Tầng Max Pooling giúp giảm kích thước của feature maps bằng cách chọn giá trị lớnnhất trong một vùng quét kích thước 2x2 và bỏ qua các giá trị khác.

Tầng 4: Fully connected với 128 units.

Các feature maps sau khi được Flatten và đưa qua các tầng Convolution và MaxPooling tiếp theo được truyền qua một tầng fully connected với 128 units để tính toánvà trích xuất các đặc trưng phức tạp hơn.

Tầng 5: Fully connected với 10 units (số lượng lớp).

Đầu ra của tầng Fully connected trước đó được truyền qua một tầng fully connectedvới 10 units để tính toán xác suất của các lớp đầu ra Hàm softmax được sử dụng đểchuyển đổi các giá trị đầu ra thành xác suất tương ứng với từng lớp Lớp với xác suấtcao nhất sẽ được chọn là lớp dự đoán cho đầu vào.

3 Quá trình huấn luyện mô hình

Quá trình huấn luyện mô hình bắt đầu bằng việc tải dữ liệu từ các tập tin gzip chứa dữliệu ảnh và nhãn của tập huấn luyện và tập kiểm tra Dữ liệu ảnh được đọc và chuyểnđổi thành mảng numpy, sau đó được chuẩn hóa bằng cách chia cho 255 để đưa giá trịcác pixel về khoảng từ 0 đến 1.

Mô hình CNN được định nghĩa sử dụng API Keras Sequential Mô hình bao gồm balớp tích chập, mỗi lớp được theo sau bởi một lớp max pooling, và hai lớp kết nối đầyđủ Lớp đầu ra sử dụng hàm kích hoạt softmax để đưa ra phân phối xác suất trên 10lớp có thể có.

Mô hình được biên dịch với tối ưu hóa Adam và hàm mất mát categoricalcrossentropy thưa, và được huấn luyện trong 5 epoch trên tập huấn luyện, với việcđánh giá trên tập kiểm tra sau mỗi epoch Trong quá trình huấn luyện, mô hình đượcđào tạo trên tập huấn luyện với các lô kích thước 32, và các giá trị đánh giá được tínhtoán trên tập kiểm tra sau mỗi epoch.

Ngày đăng: 14/05/2024, 16:03

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan