1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo đồ án xây dựng mô hình phân lớp cho bài toán nhận dạng ảnh

27 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Xây dựng mô hình phân lớp cho bài toán nhận dạng ảnh
Tác giả Nguyễn Lê Minh Đức
Người hướng dẫn PTS. Nguyễn Đình Hoa Cương
Trường học Đại học Huế
Chuyên ngành Kỹ thuật và Công nghệ
Thể loại Đồ án
Năm xuất bản 2022 - 2023
Thành phố Huế
Định dạng
Số trang 27
Dung lượng 2,42 MB

Nội dung

3 4 5 6 1.1.3 Xây dựng cơ sở dữ liệu ảnh phục vụ việc huấn luyện và kiểm thứ mô hình Một cơ sở dữ liệu ảnh phục vụ mô hình phân lớp có thê được phát biểu là 7 Vol: e© - X là cơ sở dữ

Trang 1

| | a

KHOA KY THUAT VA CONG NGHE

IIHHIE4 ĐẠI HỌC HUẾ

BAO CAO DO ÁN oc ky I, nam hoc 2022 - 2023

Số phách (Do hội đồng chấm thi ghi)

Trang 2

LỜI CAM ĐOAN

Trong thời gian làm tiêu luận, em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến

và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè

Em xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Đình Hoa Cương, giáo viên

Bộ môn Học Máy I — Khoa Kỹ Thuật và Công Nghệ người đã tận tình hướng dẫn, chí

bảo em trong suốt quá trình làm đồ án Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Khoa Kỹ Thuật và Công Nghệ đã dạy dỗ cho em kiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập

Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành khoá luận tốt nghiệp

Trang 3

MỤC LỤC

LỜI CAM ĐOAN 5c 212 2222222112121 121212 21tr re i MỤC LỤC - 22225211 221211211211211211112122121 1212121211112 11g ra ii DANH MỤC HÌNH ẢNH 2 S222 22112112122121121121121121011221211 212g 1v DANH MỤC BẢNG BIỀỂU 2-1 22 122122 221121121121121121 2121220202111 erere Vv CHƯƠNG I: CƠ SỞ LÝ THUYYẾT 22-5: +21 2EES2E12217121212112117111 11.221 re 1

1.1.1 Chuẩn bị dữ liệu 5 52221 2122211211221271221221122221121122 de 1 1.1.2 Tiền xử lý dữ liệu amie ceccccsceccescsessesessessssesessesecevssvsevseetsensevseesseeesees 1 1.1.3 Xây dựng cơ sở dữ liệu ảnh phục vụ việc huấn luyện và kiểm thử mô hình 2

1.2 Mô hình phân lớp ảnh 2-22 5S 9EE2E9EE12E1271221211271211711121 11T EEE.EE2EE xe 4

1.2.2 Mô hình k- lân cận + 2+sx‡E9EE21EE5121211211211211212121121210221 21 re 5

I xui Dc::DẦ 8

CHƯƠNG II: XAY DUNG MO HINH PHAN LGP CHO BAI TOAN NHẬN DẠNG ANH ioc cccccccsscssecsecsessessussvsssessessessessessessessesssssvssussresssssessesressvssessussvsssesrsssessessessessvssesssesesees 12

2.1 Tiền xử lí đữ liệu ánh -¿- 2-2 2122E1225125122112111211211121121121212111121 1 xe 12

CHƯƠNG III: THÍ NGHIỆM VÀ KẾT LUẬN ¿55-2 2221221212112 reo 13 TÀI LIỆU THAM KHẢO -5 2s 2s 1E212212211211211211211 1121111211221 nrrrg 14

1

Trang 4

KET QUA KIEM TRA ĐẠO VĂN

1H

Trang 5

DANH MỤC HÌNH ẢNH

IV

Trang 6

DANH MUC BANG BIEU

Trang 7

Tập dữ liệu “Dogs&Cats” được tải xuống từ website của Microsoft, được sử dụng

để xây dựng mô hình học máy dùng cho nhiệm vụ phân lớp Tập dữ liệu được nén dưới dang zIp với dung lượng 787MB, sau khi giải nén ta được thư mục “Cat” và “Dog” bao

Xét một bức ảnh màu có số kênh là , kích thước chiều cao là , chiều rong có thể

biểu diễn không gian của bức ảnh màu là Như vậy, một cơ sở dữ liệu ảnh có bức ảnh có thé biểu diễn là

Từ ảnh màu vẽ ảnh xám có thé biéu diễn là một ánh xa

(1) Như vậy, quá trình chuyển một cơ sở dữ liệu ảnh màu thành một cơ sở dữ liệu ảnh

xám có thể biểu diễn là một ánh xạ

(2)

Trang |

Trang 8

Do các bức ảnh có kích thước khác nhau nên cần điều chỉnh về chung kích thước đề dễ xử lý Trong khuôn khổ đồ án này, chúng tôi chọ kích thước chuẩn la

(3) (4) (5) (6)

1.1.3 Xây dựng cơ sở dữ liệu ảnh phục vụ việc huấn luyện và kiểm thứ mô hình

Một cơ sở dữ liệu ảnh phục vụ mô hình phân lớp có thê được phát biểu là

(7)

Vol:

e© - X là cơ sở dữ liệu ảnh xám đã được tiền xử lí trong :

® y là vector chứa các nhãn lớp tương ứng của mỗi bức ảnh 1.1.4 Phân chia dữ liệu huấn luyện và kiểm thử

Trong machine learning, chúng ta cần kiểm thử để dự đoán khả năng hoạt động

hiệu quả của mô hình trên thực tế Có rất nhiều cách để kiểm thử và đánh giá hiệu năng

của mô hình

Cách đơn giản nhất là đưa ra dùng thử một thời gian Cách này khá tốn kém thời

gian, cũng như khá tốn công đề thiết kế các kịch bản kiểm thử phù hợp, hoặc trong nhiều trường hợp cũng khó sử dụng

Cách thứ hai hợp lý hơn đó là chúng ta sử dụng một tập dữ liệu kiểm thử (testing

set) độc lập đối với tập dữ liệu huấn luyện (training set) để đánh giá và ước lượng hiệu

quả của mô hình Thông thường training set và testing set được tách ra ngay từ dữ liệu quan sát được cung cấp (chăng hạn lấy 80% dữ liệu quan sát được cung cấp để huấn luyện và 20% dữ liệu quan sát còn lại không liên quan đến 80% trước đề đánh giá)

Trang 2

Trang 9

Tập huấn luyện (training set) là tập dữ liệu được sử dụng đề huấn luyện mô hình

Các thuật toán học máy sẽ học các mô hình từ tập huấn luyện này Việc học sẽ khác nhau tùy thuộc vào thuật toán và mô hình sử dụng

Ví dụ, khi sử dụng môt hình Hồi quy tuyến tính (Linear Regression), các điểm trong tập huấn luyện được sử dụng để tìm ra hàm số hay đường phù hợp nhất mô tả quan hệ giữa đầu vào và đầu ra của tập dữ liệu huấn luyện bằng cách sử dụng một số phương pháp tối ưu hóa hoặc các thuật toán tối ưu gần đúng như gradient descent hay stochastic gradient descent

Để biết một thuật toán hay mô hình có tốt hay không thì sau khi được huấn luyện, mô hình cần được đánh giá hiệu quả thông qua bộ dữ liệu kiểm thử (testing set) Bộ dữ

liệu này được sử dụng để tính độ chính xác hoặc sai số của mô hình dự đoán đã được

huấn luyện Chúng ta biết nhãn thực của mọi điểm trong tập hợp dữ liệu kiểm thử này, nhưng chúng ta sẽ tạm thời giả vờ như không biết và đưa các giá trị đầu vào của tập vào

mô hình dự đoán để nhận kết quả dự đoán đầu ra Sau đó chúng ta có thể nhìn vào các

nhãn thực và so sánh nó với kết quả dự đoán của các đầu vào tương ứng này và xem liệu mô hình có dự đoán đúng hay không Việc tính tông trung bình của toàn bộ các lỗi này

chúng ta có thể tính toán được lỗi dự đoán trên tập kiểm thử

Trang 10

1.2 Mô hình phân lớp ảnh 1.2.1 Mô hình Logistic Regression

Bài toán hồi quy Logistic:

(8) (9) Với và Khi do:

Tổng quát hơn, mô hình hồi quy Logistic xây dựng hàm

(10)

Ghi chú: ¢ Ham con goi la ham sigmoid

Hình 3: Đồ thị hàm Sigmoid trong không gian 2 chiéu (eudn: vn.gor-it.ai)

Áp dụng hàm sigmoid trong dự đoán nhãn lớp như sau:

Nhung mà, thay vì lập trình mô hình hồi quy logistic hoàn toàn như cách làm trong bài học lý thuyết, chúng tôi sử dụng mô hình LogisticRegression do thư viện sklearn cung cấp

Ở mức đơn giản nhất, việc sử dụng mô hình LogisticRegression gồm các bước

sau:

Trang 4

Trang 11

©_ Bước I: Khởi tạo mô hình

o_ Bước 2: Huấn luyện mô hình với hàm

6_ Bước 3: Sử dụng mô hình đề dự đoán với hàm Lưu ý: Đối với mô hình hồi quy logistic (thực chất đây là mô hình phân lớp —

classifier/classification model) thì vector y chứa các giá trị rời rạc chứ không phải các gia trị liên tục với Do vậy, khi điều chỉnh giá trị của dữ liệu, chúng ta cần loại vector y ra —

không thực hiện điều chỉnh dữ liệu (data scaling) đối với y

1.2.2 Mô hình k- lân cận

Bài toán mô hình k — lân cận: Cho tập dữ liệu với X là tập các điểm đữ liệu trong

không gian và y là vector chứa các nhãn lớp tương ứng của các điểm dữ liệu Hình 1 minh họa áp dụng mô hình k-NN vào bài toán phân lớp

"sion?

Hình 4: Phân lớp dữ liệu bang mé hinh k-NN (vguén: medium.com)

Phép tính khoảng cách giữa các điểm là nền tảng của phương pháp k-NN, ví dụ:

q2) Nhãn lớp của điểm cần dự đoán sẽ được suy đoán từ k điểm đữ liệu gần nhất với

nó theo cơ chế bỏ phiếu (nghĩa là trong k điểm lân cận, nhãn lớp nào chiếm đa số sẽ là nhãn lớp của điểm cần dự đoán)

Đặc điểm của mô hình k-NN:

e - Quá trình xây dựng k-NN không trải qua bước huấn luyện (training) Nên

đây có thé duoc xem là một thuật toán lười học — lazy learning;

Trang 5

Trang 12

e - Việc chọn k thường là một số lẻ và có chỉ số chính xác (accuracy) cao nhất Mẹo kỹ thuật thông thường chọn giá trị của k trong khoảng với m là số điểm đữ liệu trong ;

e - Mô hình k-NN còn có thê áp dụng cho bài toán hồi quy 1.3 K-fold cross-validation với mô hình Hồi quy

Sau khi chia tập dữ liệu D ban đầu thành 2 tập tram — test với fỉ lệ thông thường la

70% - 30%, quá trình huấn luyện diễn ra với tập được tiễn hành bằng cách lấy ra từ một

phần nhỏ dữ liệu làm tập dữ liệu kiểm thử cho bước huấn luyện thứ ¡ — gọi là Phần dữ liệu còn lại đóng vai trò là tập dữ liệu huấn luyện Quá trình này lặp lại nhiều lần cho đến

khi mô hình huấn luyện đạt được yêu cầu Tóm lại, quy trình thực hiện k-fold cross-

validation (với k thông thường được chọn k = 10 — nên gọi là 10-fold cross-validation)

được tóm tắt như sau: Bước L: Đọc đữ liệu gốc D Bước 2: Điều chỉnh dữ liệu

Bước 3: Chia train — test theo tỉ lệ (thông thường là 70% - 30%)

Bước 4: Xác định k

Bước 5: Thực hiện huấn luyên mô hình với k-fold eross validation

Bước 6: Kiểm định mô hình với tập dữ liệu test

Minh họa quy trình này với 5-fold cross-validation theo vi du cua sklearn

Trang 6

Trang 13

Đối với phân loại nhị phân, độ chính xác cũng có thể được tính theo giá trị dương va âm như sau:

TP+TN

Trang 7

Accuracy =

Trang 14

Trong do TP= Khang dinh Đúng, TN = Phủ định Dung, FP = Khang dinh Sai va

FN = Phu dinh Sai

1.4.2 Ma tran hén hop (Confusion matrix)

Đối với mô hình phân lớp, một số thuật ngữ chuyên ngành sau cần năm bắt kỹ: ¢ true positives, true negatives, false positives, va false negatives; ¢ Thuat ngir positive va negative biéu dat két qua dw doan cia m6 hinh phan

Predicted condition <¬ Sem

.=ˆxzk Positive (PP) Negative (PN) BM

=TPR + TNR

True positive rate (TPR), recal = False negative (FN), False neg: ate (FNR 5 ' True positive (TP), sensitivity (s on

Trang 15

Recall = —— (16)

Chí số Precision biêu đạt khả năng mà mô hình phân lớp sẽ không gán nhãn positive cho mẫu có nhãn negative Trong khi, chỉ số Recall biêu đạt khả năng tìm ra tất cả các mẫu positive của mô hình phân lớp

1.4.4 Phép do F1 — F1 measure Trong phân tích thống kê về phân loại nhị phân, chí số F (F-score) hoặc thước đo

F (F-measure) là thước đo độ chính xác của bài kiểm tra Nó được tính toán từ độ chính

xác và khả năng thu hồi của xét nghiệm, trong đó độ chính xác là số kết quả khăng định đúng chia cho số lượng tất cả các kết quả khẳng định, bao gồm cả những kết quả không

được xác định chính xác và khả năng thu hồi là số kết quả khăng định đúng chia cho số

lượng tất cả các mẫu lẽ ra phải được xác định là khẳng định Độ chính xác còn được gọi

là giá trị tiên đoán dương và khả năng thu hồi còn được gọi là độ nhạy trong phân loại nhị

phân chân đoán

Chí số F1 được tính bằng công thức:

PrecisionxRecall

F1=2 Giá trị của chỉ số FL: 0 < F1 < 1 (0 là trường hợp xấu nhất; 1 là trường hợp tốt nhất)

1.5 Trực quan hóa kết quả 1.5.1 Đường precision — recall

Duong Precision — Recall chi ra mức độ “trao đổi — tradeoff” giữa cặp giá trị Precision và Recall tại mỗi mức ngưỡng khác nhau Phần diện tích dưới đường cong này càng lớn thi chi s6 Precision va Recall cang cao (am chi gia tri false positive va false negative tuong img cang thap) Đường Precision — Recall thường được dùng khi tập dữ

liệu mắt cân bằng về nhãn lớp

Mục tiêu là có cả khả năng thu hồi cao và độ chính xác cao Tương tự, có sự đánh đôi giữa việc có độ chính xác cao và khả năng thu hồi cao: ngưỡng ỗ càng thấp, khả năng thu hồi cảng cao nhưng độ chính xác cũng càng thấp

Trang 9

Trang 16

—— Cl 1, AUPRC = 0.0717 —— Cl, 2, AUPRC = 0.1121

siön

).0 ).2 0.4 0( ).8 L.{

Recal

Hinh 7: Duong Precision — Recall (Nguén: towardsdatascience)

1.5.2 Đường Receiver Operating Characteristic (ROC) Đường cong đặc tính vận hành máy thu, hoặc đường cong RÓC, là một biểu đồ đồ

họa minh họa khả năng chân đoán của hệ thông phân loại nhị phân khi ngưỡng phân biệt của nó thay đôi Phương pháp này ban đầu được phát triển cho những người vận hành

máy thu radar quân sự bắt đầu từ năm 1941, dẫn đến tên của nó

Đường ROC thường được áp dụng đối với tập dữ liệu có số lượng nhãn lớp cân bằng

Trang 10

Trang 17

False Positive Rate

Hinh 8: Duong ROC (Nguồn: towardsdatascience)

Trang 11

Trang 18

CHƯƠNG II: XÂY DỰNG MÔ HÌNH PHẦN LỚP CHO BÀI

Trang 19

CHUONG III: THI NGHIEM VA KET LUAN

Đầu tiên, ta cần xây dựng hàm đề kiểm tra các fle lỗi và không đúng định dạng Để xây dựng hàm này, ta dùng thư viện PIL va goi ham open cua class Image

from PIL import Image

def check corrupted _image (img file)

try: with Image.open(img file) a

print (e) return True

Trong tệp dữ liệu

thường sẽ có ít nhiều những file bị lỗi Nên ta cần xây dựng hàm check corrupte

d image ()nham

kiêm tra những ánh bị lỗi hay không đúng

def count_unique labels({y):

unigue, counts = np.unigue(y, r eturn couts = True)

result = dict(zip(unigue, count

# Doc anh -> xam, resize

# đọc CẬC cả file trong path

for img file in files:

if not (check corrupted_imag

e(os.path.join(path,img file))):

img = io.imread(os.path join(path, img file), as_gray=True - Su dung ham

resize() dé thay đối

kích thước ảnh, đưa tất cả ảnh về chung một kích thước - Ham flatten() dùng

dé lat phang layer

(lam phang anh) VD: shape : 20x20 qua layer nay sé la 400x1

Trang 13

Trang 20

) # chuyển ảnh sang ảnh xám

img = resize(img, size)

# resize dé dua tAt cA cAac Anh vé c

hung một kích thước

img vector =

n{) # Làm phẳng ảnh

labels.append(labels) img data.append(img vec

img.flatte

tor) labels = np.array(labels) return labels, img data

f#† Xây dung Cc

SDL anh def build_imd data():

cat path = '/content/drive/MyDr ive/Classroom/Hoc may 1 Phan co sV/ final testl/PetImages/Cat'

dog_path = '/content/drive/MyDr ive/Classroom/Hoc may 1 Phan co sV/ final testl/PetImages/Dog'

images, labels = read img data(

cat_path, ‘cat', (32, 32))

ata(dog path, 'dog', (32, 32)) images.extend(img_dog)

X = np.array (images) y = LabelBinarizer().fit_transf orm(labels)

pickle out = open("X.pickle", "wb")

pickle.dump(X, pickle out) pickle out.close()

pickle out = open("y.pickle", "wb")

pickle.dump(y, pickle out)

pickle để lưu lại dữ

liệu của X và y sau

khi tiền xử lí dữ liệu Để sử dụng dữ liệu đã

luu vao pickle nhập

lệnh:

pickle in = open("X.pickle", "rb”)

X = pickle load(pick le in)

Trang l4

Ngày đăng: 24/09/2024, 16:38

w