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 2LỜ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 3MỤ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 4KET QUA KIEM TRA ĐẠO VĂN
1H
Trang 5DANH MỤC HÌNH ẢNH
IV
Trang 6DANH MUC BANG BIEU
Trang 7Tậ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 8Do 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 9Tậ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 12e - 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 14Trong 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 15Recall = —— (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 17False Positive Rate
Hinh 8: Duong ROC (Nguồn: towardsdatascience)
Trang 11
Trang 18CHƯƠNG II: XÂY DỰNG MÔ HÌNH PHẦN LỚP CHO BÀI
Trang 19CHUONG 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