Tải bản đầy đủ (.docx) (17 trang)

[CS406.K11] - NỘP ĐỒ ÁN CUỐI KỲ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (271.16 KB, 17 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA KHOA HỌC MÁY TÍNH
----//----

BÁO CÁO ĐỒ ÁN CUỐI KỲ
MÔN: XỬ LÝ ẢNH VÀ ỨNG DỤNG CS406.K11
ĐỀ TÀI: XÂY DỰNG BỘ PHÂN LOẠI CHÓ, MÈO
HAY GẤU TRÚC VỚI K-NN

Giảng viên hướng dẫn: THS. MAI TIẾN DŨNG
Sinh viên thực hiện:

Nguyễn Xuân Duy Hiển – 16521670
Trần Phước Lợi – 16521723
1


Võ Văn Tiên – 16521581

TP.Hồ Chí Minh, tháng 12 năm 2019

2


MỤC LỤC

Lời mở đầu
Môn học Xử lý ảnh và ứng dụng cung cấp cho chúng em những kiến thức cơ bản về ngơn
ngữ lập trình python, mathlap…, những ngun lý, phương pháp và kỹ thuật xử lý ảnh cũng như
văn bản đa phương tiện. Đồng thời cung cấp kiến thức giúp chúng em hiểu rõ các cơ chế xử lý của


các thành phần về lĩnh vực đa phương tiện
Đề tài Phân loại ảnh là một chủ để quen thuộc với nhiều sinh viên IT, để hiểu rõ hơn cơ chế
của phân tích ảnh chúng em quyết định tìm hiểu sâu về truy vấn ảnh cũng như cơ chế hoạt trong
bên trong đó cùng với các vấn để liên quan. Đây cũng là một chủ để chúng em rất thích, chính vì
vậy chúng em đã chọn đề tài này cho đồ án cuối kì này.
Trong q trình hồn thành đề tài, chúng em đã tìm hiểu được các khái niệm về biến nói
chung và một số khái niệm, đặc điểm về biến trong các ngơn ngữ lập trình phổ biến như: python,
mathlap…vv cũng như kỹ năng tìm hiểu tham khảo tài liệu và các làm việc nhóm thuyết trình.
Chúng em xin trân trọng cám ơn sự hướng dẫn tận tình của thầy Mai Tiến Dũng về mặc
chuyên môn cũng như định hướng. Vì kiến thức cịn hạn hẹp nên trong q trình thực hiện đề tài
khơng thể tránh khỏi sai sót. Vì vậy rất mong nhận được sự góp ý của thầy để đề tài có thể hồn
thiện hơn nữa.

3


1.Tổng quan đề tài
1.1. Đặt vấn đề
Trong thời đại công nghệ số những chiếc camera càng ngày càng phổ biến, kéo
theo đó số lượng ảnh được sinh ra mỗi ngày một nhiều. Với số lượng ảnh lớn như
thế vấn đề tìm kiếm những bức ảnh có nội dung liên quan nhau cũng trở nên khó
khăn. Để giải quyết vấn đề đó và sử dụng những kiến thức về xử lý ảnh đã học
được, chúng em quyết định chọn đề tài “Xây dựng bộ phân lồi chó,mèo hay gấu
trúc với K-NN” để thực hiện.
1.2. Mục tiêu nghiên cứu
Mục tiêu của đề tài này là xây dựng một hệ thống phân loài động vật đơn giản có
sử dụng mơ hình K-nearest neighbors để giải quyết vấn đề tìm kiếm các bức ảnh
có nội dung liên quan trong một kho ảnh lớn (vài nghìn ảnh).
1.3. Nội dung thực hiện
Tìm hiểu về phương pháp K-nearest neighbors và các phương pháp liên quan từ

đó xây dựng module để nhận ảnh input và trả về danh sách kết quả.
Xây dựng giao diện cho chương trình giúp việc sử dụng dể dàng hơn.

4


2. Cơ sở lý thuyết K-Nearest Neighbors
KNN (K-Nearest Neighbors) là một trong những thuật tốn học có giám sát đơn
giản nhất được sử dụng nhiều trong khai phá dữ liệu và học máy. Ý tưởng của thuật
tốn này là nó khơng học một điều gì từ tập dữ liệu học (nên KNN được xếp vào loại
lazy learning), mọi tính tốn được thực hiện khi nó cần dự đốn nhãn của dữ liệu
mới.
Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đốn từ các lớp (nhãn) của k
hàng xóm gần nó nhất.
Ví dụ minh họa, Giả sử ta có D là tập các dữ liệu đã được phân loại thành 2 nhãn
(+) và (-) được biểu diễn trên trục tọa độ như hình vẽ và một điểm dữ liệu mới A
chưa biết nhãn. Vậy làm cách nào để chúng ta có thể xác định được nhãn của A là (+)
hay (-)?
Có thể thấy cách đơn giản nhất là so sánh tất cả các đặc điểm của dữ liệu A với
tất cả tập dữ liệu học đã được gắn nhãn và xem nó giống cái nào nhất, nếu dữ liệu
(đặc điểm) của A giống với dữ liệu của điểm mang nhãn (+) thì điểm A mang nhãn
(+), nếu dữ liệu A giống với dữ liệu nhãn (-) hơn thì nó mang nhãn (-), trơng có vẻ rất
đơn giản nhưng đó là những gì mà KNN làm.
Trong trường hợp của KNN, thực tế nó khơng so sánh dữ liệu mới (không được
phân lớp) với tất cả các dữ liệu khác, thực tế nó thực hiện một phép tính tốn học để
đo khoảng cách giữa dữ liệu mới với tất cả các điểm trong tập dữ liệu học D để thực
hiện phân lớp. Phép tính khoảng cách giữa 2 điểm có thể là Euclidian, Manhattan,
trọng số, Minkowski, …

5



Với KNN, trong bài toán Classification, label của một điểm dữ liệu mới (hay kết quả của
câu hỏi trong bài thi) được suy ra trực tiếp từ K điểm dữ liệu gần nhất trong training set.
Label của một test data có thể được quyết định bằng major voting (bầu chọn theo số
phiếu) giữa các điểm gần nhất, hoặc nó có thể được suy ra bằng cách đánh trọng số khác
nhau cho mỗi trong các điểm gần nhất đó rồi suy ra label. Chi tiết sẽ được nêu trong phần
tiếp theo.
Trong bài toán Regresssion, đầu ra của một điểm dữ liệu sẽ bằng chính đầu ra của điểm
dữ liệu đã biết gần nhất (trong trường hợp K=1), hoặc là trung bình có trọng số của đầu ra
của những điểm gần nhất, hoặc bằng một mối quan hệ dựa trên khoảng cách tới các điểm
gần nhất đó.
Một cách ngắn gọn, KNN là thuật tốn đi tìm đầu ra của một điểm dữ liệu mới bằng
cách chỉ dựa trên thông tin của K điểm dữ liệu trong training set gần nó nhất (K-lân
cận), khơng quan tâm đến việc có một vài điểm dữ liệu trong những điểm gần nhất này là
nhiễu. Hình dưới đây là một ví dụ về KNN trong classification với K = 1.

6


Ví dụ trên đây là bài tốn Classification với 3 classes: Đỏ, Lam, Lục. Mỗi điểm dữ liệu
mới (test data point) sẽ được gán label theo màu của điểm mà nó thuộc về. Trong hình
này, có một vài vùng nhỏ xem lẫn vào các vùng lớn hơn khác màu. Ví dụ có một điểm
màu Lục ở gần góc 11 giờ nằm giữa hai vùng lớn với nhiều dữ liệu màu Đỏ và Lam.
Điểm này rất có thể là nhiễu. Dẫn đến nếu dữ liệu test rơi vào vùng này sẽ có nhiều khả
năng cho kết quả khơng chính xác.
2.1 Khoảng cách trong không gian vector
Trong không gian một chiều, khoảng cách giữa hai điểm là trị tuyệt đối giữa hiệu giá trị
của hai điểm đó. Trong khơng gian nhiều chiều, khoảng cách giữa hai điểm có thể được
định nghĩa bằng nhiều hàm số khác nhau, trong đó độ dài đường thằng nổi hai điểm chỉ là

một trường hợp đặc biệt trong đó. Nhiều thơng tin bổ ích (cho Machine Learning) có thể
được tìm thấy tại Norms (chuẩn) của vector trong tab Math.

7


2.2 Các bước trong KNN
1. Ta có D là tập các điểm dữ liệu đã được gắn nhãn và A là dữ liệu chưa được phân
loại.
2. Đo khoảng cách (Euclidian, Manhattan, Minkowski, Minkowski hoặc Trọng số) từ
dữ liệu mới A đến tất cả các dữ liệu khác đã được phân loại trong D.
3. Chọn K (K là tham số mà bạn định nghĩa) khoảng cách nhỏ nhất.
4. Kiểm tra danh sách các lớp có khoảng cách ngắn nhất và đếm số lượng của mỗi lớp
xuất hiện.
5. Lấy đúng lớp (lớp xuất hiện nhiều lần nhất).
6. Lớp của dữ liệu mới là lớp mà bạn đã nhận được ở bước 5.
2.3 Ưu điểm
1. Thuật toán đơn giản, dễ dàng triển khai.
2. Độ phức tạp tính tốn nhỏ.
3. Xử lý tốt với tập dữ liệu nhiễu
2.4 Nhược điểm
1. Với K nhỏ dễ gặp nhiễu dẫn tới kết quả đưa ra khơng chính xác
2. Cần nhiều thời gian để thực hiện do phải tính tốn khoảng cách với tất cả các đối
tượng trong tập dữ liệu.
3. Cần chuyển đổi kiểu dữ liệu thành các yếu tố định tính.

8


3.


Các bước thực hiện hệ thống
3.1 Xây dựng bộ tiền xử lý và đọc dữ liệu
Ở đây, class DatasetLoader sẽ giúp đọc các hình ảnh từ bộ nhớ lên, chuyển chúng
về cùng kích thước 32x32 và lưu lại label tương ứng với mỗi ảnh.

9


Thơng thường các thuật tốn machine learning như k-NN, SVM, CNNs sẽ
yêu cầu chúng ta đưa đầu vào là một feature vector (hiểu nôm na là một chuỗi
số đặc trưng cho dữ liệu) có chiều dài cố định. Thơng thường các ảnh đầu vào
sẽ được resize về một kích thước cố định. Ở đây, các ảnh sẽ được đưa về kích
thước là 32x32 (dịng 23), và sau đó sẽ được coi như một chuỗi số có kích thước
32x32x3 = 3072 để so sánh với nhau (3 ở đây là 3 màu RGB).

10


3.2 Xây dựng bộ phân loại KNN để nhận biết chó mèo và gấu trúc


Dịng 1: Ở đây chúng ta sẽ sử dụng class KNeighborsClassifier có trong
package sklearn cho thuật tốn k-NN.



Dịng 2: LabelEncoder sẽ giúp chuyển label của hình ảnh từ dạng chữ (dog,
cat, panda) sang sạng số (0, 1, 2). Đây là việc thường thấy khi sử dụng các
thuật tốn machine learning. Việc này sẽ giúp cơng việc lập trình và xử lý đơn

giản hơn.



Dịng 3: train_test_split giúp chúng ta chia dữ liệu train và test dễ dàng.



Dịng 4: classification_report giúp chúng ta đánh giá hiệu quả của model vừa
huấn luyện.

11


3.3 Huấn luyện và đánh giá



Bước 1 (dịng 19-33): Nạp dữ liệu: Dataset của chúng ta có 3000 ảnh, 1000 ảnh
mỗi loài. Sau khi load ảnh lên, chúng ta đưa ảnh về kích thước 32x32. Vì mỗi ảnh
có 3 kênh màu R,G,B nên mỗi ảnh sẽ được biểu diễn bằng 32x32x3 = 3072 số
nguyên. Ở dòng 24, dữ liệu sẽ được làm phẳng (reshape, flatten) để mỗi ảnh trở
thành một dãy số có 3072 phần tử.

12




Bước 2 (dòng 35-37): Chia dữ liệu: Dataset được chia làm 2 phần, 1 phần cho

training (huấn luyện), một phần cho testing (đánh giá model). Ở đây 75% dữ liệu
sẽ được dùng cho training và 25% còn lại sẽ được sử dụng cho testing.



Bước 3 (dịng 41-43): Huấn luyện: Thực tế việc huấn luyện k-NN chỉ là tạo bộ
phân loại bằng KNeighborsClassifier và nạp các dữ liệu training vào.



Bước 4 (dòng 44): Đánh giá model: Đánh giá hiệu quả của model k-NN đã thu
được.
4. Chạy chương trình
Sau khi chạy chương trình, thực hiện trên ngơn ngữ lập trình python
Kết quả của chương trình đa phần cho ra kết quả ảnh mẫu tương tự với tập ảnh
truy vấn ban đầu tuy nhiên vẫn cịn nhiều bức hình vẫn chưa ra kết quả đúng:
Tốc độ thực thi trên máy cá nhân: 15s Intel Core I5-8250U 1.6Ghz, 8Gb RAM
=> Tốc độ tương đối chậm
Kết quả với k = 10

13


Kết quả với k = 1

Nhìn vào kết quả, chúng ta có thể kết luận độ chính xác của bộ phân loại là
52% (0.52). Đó chắc chắn khơng phải là kết quả tốt, vì suy cho cùng chúng ta
chỉ thực hiện so sánh các điểm ảnh của các bức ảnh với nhau, khơng sử dụng
thêm thuật tốn nào để trích xuất các đặc trưng từ ảnh. Tuy nhiên đối với một
thuật toán chỉ dựa vào việc so sánh các ảnh, độ chính xác 52% cũng là khá cao

so với việc đoán ngẫu nhiên (ở đây xác suất đoán ngẫu nhiên là 1/3 ~ 33%).
Gấu trúc được phân loại đúng đến 87% vì có thể ảnh gấu trúc có các vùng
trắng và đen rất rõ ràng tạo thành các vùng điểm trắng đen nằm liên tiếp nhau,
do vậy dễ dàng có thể nhận ra bằng cách so sánh các điểm ảnh. Tuy thế, việc
nhận ra chó và mèo là khá tệ. Điều này dễ hiểu vì trong các bức ảnh có q
nhiều chi tiết khác nhau, từ màu sắc lơng chó, mèo đến màu sắc nền của bức
ảnh. Do vậy, chỉ dựa vào việc so sánh các giá trị điểm ảnh thì khơng thể địi hỏi
độ chính xác cao hơn được.
-

Ưu và nhược điểm
Ưu điểm: Ưu điểm lớn nhất của k-NN là rất dễ hiểu và implement. Không tốn

-

thời gian huấn luyện. Tất cả những gì chúng ta cần làm là lưu lại tồn bộ dataset.
Nhược điểm: Tuy khơng tốn thời gian huấn luyện nhưng k-NN phải chạy trên
toàn bộ dataset khi phân loại. Chính vì thế thuật tốn này tốn nhiều thời gian chạy,
nhất là trong các bài tốn có dataset lớn. Trên thực tế có thể sử dụng các biến thể
khác như KdTree hoặc Ball tree để tăng tốc thực hiện. Chưa thực sự chạy nhanh

14


với tập dữ liệu lớn cũng như một số kết quả cịn sai, độ chính xác cịn thấp
(pricision). Thuật tốn không phù hợp với bộ dữ liệu với số chiều lớn và nhiều
nhiễu (như hình ảnh).
5. Cải tiến truy vấn.
Mục tiêu của cải tiến truy vấn là để tăng tốc độ truy vấn bằng hình ảnh của mơ hình
này với tập dữ liệu với kích thước lớn hoặc rất lớn. Ngồi việc tính tốn khoảng

cách từ một điểm test data đến tất cả các điểm trong traing set (Brute Force), có một
số thuật tốn khác giúp tăng tốc việc tìm kiếm này. Dựa vào thuật toán như: K-D
Tree và Ball Tree.

6. Phân cơng
STT

Tên

Cơng việc được giao

Mức độ hồn
thành (%)

1

Hiển Lợi

Báo cáo phần 4.3, 4.4

100%

2

Lợi Tiên

Báo cáo phần 3, 5, 6

100%


3

Hiển Tiên

Báo cáo phần 4.1 , 4.2, 4.4

100%

15


7. Tài liệu tham khảo
[1]. />[2]. />[3]. />[4]. a/p/knn-k-nearest-neighbors-1-djeZ14ejKWz
[5]. />
Nhận xét của giảng viên hướng dẫn:
..................................................................................................
..................................................................................................
..................................................................................................

16


..................................................................................................
..................................................................................................
..................................................................................................
..................................................................................................
..................................................................................................
..................................................................................................
..................................................................................................
..................................................................................................

..................................................................................................
..................................................................................................

17



×