Trong đề tài này, tôi sẽ tìm hiểu về thuật toán K-means và ứng dụng thuật toán trong bài toán tách vật thể trong ảnh.. Mục tiêu cụ thể Đề tài tập trung vào các mục tiêu chính: - Tìm hiể
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH
NGUYỄN THỊ THẢO
LUẬN VĂN THẠC SỸ Chuyên ngành: Công nghệ thông tin
Trang 2LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc nhất tới Thầy giáo
TS Trần Xuân Sang, người đã tận tình hướng dẫn tôi trong quá trình thực hiện đề
tài
Tôi xin gửi lời cảm ơn sâu sắc tới quý Thầy Cô trong Viện kỹ thuật công
nghệ trường Đại học Vinh đã truyền đạt kiến thức quý báu cho tôi trong 2 năm
học vừa qua
Cuối cùng, tôi xin chân thành cảm ơn tới gia đình và bạn bè, đặc biệt là các
thành viên trong lớp K24 CNTT Đại học Vinh đã ủng hộ, giúp đỡ và động viên
tôi trong suốt thời gian học tập vừa qua
Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho
phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Kính mong nhận
được sự góp ý chân thành của quý Thầy Cô và các bạn
Tôi xin chân thành cảm ơn!
Vinh, ngày 25 tháng 06 năm 2018
Học Viên
Nguyễn Thị Thảo
Trang 3LỜI CAM KẾT
Tôi xin cam đoan luận văn này do bản thân tôi thực hiện và có sự giúp đỡ từ giáo viên hướng dẫn TS Trần Xuân Sang Các nội dung nghiên cứu và kết quả trong đề tài này là trung thực, các tin thứ cấp sử dụng trong luận văn là có nguồn gốc và được trích dẫn rõ ràng
Tôi xin hoàn toàn chịu trách nhiệm về tính xác thực và nguyên bản của luận văn
Tác giả
Nguyễn Thị Thảo
Trang 4MỤC LỤC
LỜI CAM KẾT 3
MỤC LỤC 4
PHẦN MỞ ĐẦU 1
1 Sự cần thiết của vấn đề nghiên cứu 1
2 Mục tiêu nghiên cứu 1
2.1 Mục tiêu tổng quát 1
2.2 Mục tiêu cụ thể 1
3 Đối tượng và phạm vi nghiên cứu 2
3.1 Đối tượng nghiên cứu 2
3.2 Phạm vi nghiên cứu 2
4 Nội dung nghiên cứu 2
CHƯƠNG 1 BÀI TOÁN PHÂN CỤM DỮ LIỆU 3
1.1 Tổng quan về phân cụm dữ liệu 3
1.2 Tổng quan về tình hình nghiên cứu 4
1.2.1 Tình hình nghiên cứu trong nước 4
1.2.2 Tình hình nghiên cứu nước ngoài 4
1.3 Kết luận chương 1 4
CHƯƠNG 2 THUẬT TOÁN K- MEANS 5
2.1 Giới thiệu 5
2.1.1 Giới thiệu về thuật toán K – means 5
2.1.2 Các ứng dụng của thuật toán K – means 5
2.2 Phân tích toán học 6
2.2.1 Một số kí hiệu toán học 6
Trang 52.2.3 Thuật toán tối ưu hàm mất mát 7
2.3 Hoạt động của thuật toán K-means 9
2.3.1 Dữ liệu vào 9
2.3.2 Dữ liệu ra 9
2.3.3 Các bước thực hiện 10
2.4 Ví dụ minh hoạ 11
2.5 Đánh giá thuật toán 17
2.5.1 Ưu điểm 17
2.5.2 Nhược điểm 17
CHƯƠNG 3 TÁCH VẬT THỂ CÓ TRONG ẢNH 18
3.1 Giới thiệu 18
3.2 Áp dụng thuật toán K-means 18
3.2.1 Khởi tạo 19
3.2.2 Giai đoạn phân cụm của thuật toán K-means 20
3.2.3 Tính khoảng cách Euclidian 21
3.3 Thử nghiệm 22
KẾT LUẬN 39
TÀI LIỆU THAM KHẢO 40
Trang 6PHẦN MỞ ĐẦU
1 Sự cần thiết của vấn đề nghiên cứu
Học máy (Machine Learning) là một thành phần quan trọng của trí tuệ nhân tạo nhằm nghiên cứu và phát triển các phương pháp, kỹ thuật giúp cho các
hệ thống hay máy tính có khả năng học Trong lĩnh vực học máy có các phương pháp học như: Học có giám sát (Supervised Learning), học không có giám sát (Unsupervised Learning), học bán giám sát (Semi-supervised Learning) và học tăng cường (Reinforcement Learning)
Thuật toán K-means thuộc về loại học không có giám sát (Unsupervised Learning) Trong thuật toán K-means, chúng ta không biết nhãn (label) của từng điểm dữ liệu Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster) khác nhau sao cho dữ liệu trong cùng một cụm có tính chất giống nhau Đây là thuật toán tương đối đơn giản, dễ cài đặt và có khả năng phân cụm đạt hiểu quả tốt
Trong đề tài này, tôi sẽ tìm hiểu về thuật toán K-means và ứng dụng thuật toán trong bài toán tách vật thể trong ảnh
2 Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Nghiên cứu và sử dụng thuật toán K-means trong bài toán tách vật thể trong ảnh
2.2 Mục tiêu cụ thể
Đề tài tập trung vào các mục tiêu chính:
- Tìm hiểu về bài toán phân cụm dữ liệu
- Nghiên cứu về thuật toán K-means
- Ứng dụng thuật toán K-means trong bài toán tách vật thể trong ảnh
- Cài đặt minh họa thuật toán
Trang 73 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
a) Nghiên cứu lý thuyết
- Nghiên cứu các tài liệu về bài toán phân cụm dữ liệu
- Nghiên cứu các tài liệu về các bước xây dựng thuật toán K-means đã được công bố
- Nghiên cứu các tài liệu về ứng dụng thuật toán K-means trong bài toán tách vật thể trong ảnh
b) Nghiên cứu thực nghiệm
- Nghiên cứu các bước xây dựng thuật toán K-means
- Nghiên cứu ứng dụng thuật toán K-means trong bài toán tách vật thể trong ảnh
3.2 Phạm vi nghiên cứu
Có nhiều thuật toán phân cụm dữ liệu khác nhau như K-means, Kmeans, Puzzy C-means…Trong phạm vi đề tài luận văn, tôi tập trung nghiên cứu và sử dụng thuật toán K-means
Pillar-4 Nội dung nghiên cứu
- Nghiên cứu tổng quan về bài toán phân cụm dữ liệu
- Nghiên cứu tổng quan về thuật toán K-means
- Nghiên cứu về ứng dụng của thuật toán K-Means trong bài toán tách vật thể trong ảnh
Trang 8CHƯƠNG 1 BÀI TOÁN PHÂN CỤM DỮ LIỆU
1.1 Tổng quan về phân cụm dữ liệu
Phân cụm dữ liệu (clutering) là một quá trình phân vùng một tập hợp dữ liệu nhất định thành các nhóm đồng nhất dựa trên các tính năng nhất định sao cho các đối tượng tương tự được giữ trong một nhóm trong khi các đối tượng khác nhau nằm trong các nhóm khác nhau Đây là vấn đề học tập không giám sát (Unsupervised Learning) quan trọng nhất Nó đề cập đến việc tìm kiếm cấu trúc trong một bộ sưu tập dữ liệu không được dán nhãn (label)
Hình I: Hiển thị bốn cụm được hình thành từ bộ dữ liệu không được dán nhãn
Mục tiêu của phân cụm dữ liệu là xác định nhóm nội tại trong một tập hợp dữ liệu không được gắn nhãn Vậy làm thế nào để quyết định những gì tạo thành một cụm tốt? Có thể thấy rằng không có tiêu chí “tốt nhất” tuyệt đối nào sẽ độc lập với mục tiêu cuối cùng của phân cụm Do đó, người dùng phải cung cấp tiêu chuẩn theo cách mà kết quả của việc phân cụm sẽ phù hợp với nhu cầu của
họ
Ví dụ, ta có thể quan tâm đến việc tìm các đại diện cho các nhóm đồng nhất (giảm dữ liệu) trong việc tìm kiếm “các cụm tự nhiên” và mô tả các thuộc
Trang 9nhóm hữu ích và phù hợp (các lớp dữ liệu “hữu ích”) hoặc trong việc tìm kiếm các đối tượng dữ liệu bất thường (phát hiện ngoại lệ)
Một số thuật toán phân cụm tiêu biểu như: thuật toán phân cụm K – means, thuật toán phân cụm phân cấp Hierarchical Clustering, thuật toán phân cụm theo mật độ DBSCAN, thuật toán phân cụm EM…
1.2 Tổng quan về tình hình nghiên cứu
1.2.1 Tình hình nghiên cứu trong nước
Có rất nhiều luận văn, đề tài, bài báo viết về thuật toán phân cụm K- means và các ứng dụng thực tế của nó Như luận văn của Lê Minh Hải, 2013: Học Viện Công Nghệ Bưu Chính Viễn Thông, phân loại hành vi khách hàng sử dụng dịch vụ di động dựa trên thuật toán phân cụm K – means Luận văn của Đào Minh Tùng: Trường Đại học Quốc Gia Hà Nội, 2011, phân cụm đa mức Web bằng K – means dựa trên chủ đề ẩn và thực nghiệm đánh giá
1.2.2 Tình hình nghiên cứu nước ngoài
Có rất nhiều luận văn, đề tài khoa học nghiên cứu về lĩnh vực này như xử
lý hình ảnh ứng dụng trong y tế, phân đoạn ảnh, nhận dạng chữ số, nhận dạng chữ ký viết tay…
1.3 Kết luận chương 1
Trong chương này, tôi đã trình bày tổng quan về bài toán phân cụm dữ liệu Có một số thuật toán phân cụm dữ liệu, nhưng trong khuôn khổ luận văn này, tôi chọn thuật toán K-means để nghiên cứu vì tính đơn giản, và cho kết quả khá tốt với một số bài toán cụ thể
Trang 10CHƯƠNG 2 THUẬT TOÁN K- MEANS
2.1 Giới thiệu
2.1.1 Giới thiệu về thuật toán K – means
Thuật toán K-means clustering do James MacQueen giới thiệu trong tài liệu “J Some Methods for Classification and Analysis of Multivariate Observations” năm 1967, dựa trên ý tưởng của Hugo Steinhaus năm 1957 Tuy nhiên thuật toán được đưa ra lần đầu tiên bởi Stuart Lloyd năm 1957 nhưng không được xuất bản cho đến năm 1982 Năm 1965, EW Forgy xuất bản về cơ bản cùng một phương pháp với thuật toán của Stuart Lloyd , đó là lý do tại sao đôi khi nó được gọi là Lloyd-Forgy [6]
K-means Clustering là một thuật toán được dùng trong các bài toán phân loại/nhóm N đối tượng (objects) thành K nhóm (clusters) dựa trên đặc tính/thuộc tính của đối tượng (K, N nguyên, dương)
Theo thuật toán này, giả sử có N đối tượng, mỗi đối tượng có M thuộc tính, ta phân chia được các đối tượng thành K nhóm dựa trên các thuộc tính của chúng
Ta coi mỗi thuộc tính của đối tượng (đối tượng có M thuộc tính) như một toạ độ của không gian M chiều và biểu diễn đối tượng như một điểm của không gian M chiều Cách thức phân loại/nhóm dữ liệu thực hiện dựa trên khoảng cách Euclidean nhỏ nhất giữa đối tượng đến phần tử trung tâm của các nhóm Phần tử trung tâm của nhóm được xác định bằng giá trị trung bình các phần tử trong nhóm
2.1.2 Các ứng dụng của thuật toán K – means
Bài toán phân cụm có nhiều ứng dụng trong các lĩnh vực như:
- Sinh học: phân loại động vật và thực vật dựa vào thuộc tính của chúng
- Tìm kiếm thông tin: phân nhóm văn bản, tài liệu
- Địa lí: phát hiện các vùng địa lí tương tự nhau
Trang 11- Social networds: phân nhóm người dùng cúng sở thích
- Library: theo dõi độc giả, sách, dự đoán nhu cầu của độc giả
- Web mining: phân loại tài liệu, phân loại người dùng web…
2.2 Phân tích toán học
Mục đích của thuật toán phân cụm là: Từ dữ liệu đầu vào và số lượng cluster, hãy chỉ ra center của mỗi nhóm và phân các điểm dữ liệu vào các nhóm tương ứng Giả sử rằng mỗi điểm dữ liệu chỉ thuộc vào đúng 1 cụm [2]
2.2.1 Một số kí hiệu toán học
Giả sử có N điểm dữ liệu là X =[x1, x2, …,xN]RdxN và K là số cluster muốn phân chia (với K<N) Ta cần tìm các center m1, m2, …,mK Rdx1 và label của mỗi điểm dữ liệu
Với mỗi điểm dữ liệu xi đặt yi =[yi1, yi2,…,yik] là label vector của nó, trong
đó nếu xi được phân vào cluster k thì yik=1 và yij=0, ∀j≠k Điều này có nghĩa là
có đúng 1 phần tử của vector yi là bằng 1 (tương ứng với cluster của xi), các phần
tử còn lại bằng 0 Ví dụ: nếu một điểm dữ liệu có label vector là [1,0,0,…,0] thì
nó thuộc vào cluster 1, là [0,1,0,…,0] thì nó thuộc vào cluster 2, … cách mã hoá label của dữ liệu như thế này được gọi là biểu diễn one-hot (http://en.wikipedia.org/wiki/one-hot) [2]
Ràng buộc của yi có thể viết dưới dạng toán học như sau:
2.2.2 Hàm mất mát và bài toán tối ưu
Nếu coi center mk là center của mỗi cluster và ước lượng tất cả các điểm được phân vào cluster này bởi mk, thì một điểm dữ liệu xi được phân vào cluster
k sẽ bị sai số là (xi - mk) Để sai số này có giá trị tuyệt đối nhỏ nhất ta sẽ tìm cách
để đại lượng sau đây đạt giá trị nhỏ nhất:
2 2
|| xi mk ||
Trang 12Mặt khác, vì xi được phân vào cluster k nên yik=1, yịj=0, ∀j≠k Khi đó biểu thức trên sẽ được viết lại là:
Ta cần bài toán tối ưu sau:
2 2 Y,M 1 1
2.2.3 Thuật toán tối ưu hàm mất mát
Như vậy bài toán (2) khó tìm điểm tối ưu bởi nó có thể thêm các điều kiện rằng buộc Đây là bài toán thuộc loại mix-integer progamming là loại rất khó tìm nghiệm tối ưu toàn cục Tuy nhiên trong một số trường hợp vẫn có thể tìm được phương pháp để tìm được nghiệm gần đúng hoặc điểm cực tiểu
Cách đơn giản để giải bài toán (2) là xen kẽ Y và M khi biến còn lại được
cố định Đây là một thuật toán lặp, cũng là kỹ thuật phổ biến khi giải bài toán tối
ưu Ta lần lượt giải quyết 2 bài toán sau đây:
Cố định M, tìm Y
Trang 13Giả sử đã tìm được các centers, hãy tìm các label vector để hàm mất mát đạt giá trị nhỏ nhất Điều này tương đương với việc tìm cluster cho mỗi điểm dữ liệu
Khi các centers là cố định, bài toán tìm label vector cho toàn bộ dữ liệu có thể được chia nhỏ thành bài toán tìm label vector cho từng điểm dữ liệu xi như sau:
i
2 2
Vì || xi mj ||22 chính là bình phương khoảng cách tính từ điểm xi tới
center mj, ta có thể kết luận rằng mỗi điểm xi thuộc vào cluster có center gần nó nhất Từ đó ta có thể dễ dàng suy ra label vector của từng điểm dữ liệu
Trang 14Ta có thể tìm nghiệm bằng phương pháp giải đạo hàm bằng 0, vì hàm cần tối ưu là một hàm liên tục và có đạo hàm xác định tại mọi điểm Đây là hàm lồi theo mj nên ta sẽ tìm được giá trị nhỏ nhất và điểm tối ưu tương ứng
Đặt l(mj) là hàm bên trong dấu argmin, ta có đạo hàm:
j i i
ij i
y x m
Như vậy, i N1y xij i chính là tổng các điểm dữ liệu trong cluster j
Còn i N1yij chính là phép đếm số lượng các điểm dữ liệu trong cluster j
mj là trung bình cộng của các điểm trong cluster j
2.3 Hoạt động của thuật toán K-means
Trang 152.3.3 Các bước thực hiện
Thuật toán K-means được thực hiện qua các bước sau đây :
Bước 1: Chọn K điểm bất kỳ làm các điểm trung tâm ban đầu
Bước 2: Phân mỗi điểm dữ liệu vào cụm có điểm trung tâm gần nó nhất Bước 3: Nếu việc gán dữ liệu vào từng cụm ở bước 2 không thay đổi so
với vòng lặp trước nó thì ta dừng thuật toán
Bước 4: Tính lại giá trị điểm trung tâm cho từng cụm bằng cách lấy trung
bình cộng của tất cả các điểm dữ liệu đã được gán vào cụm đó sau bước 2
-
Kết thúc
Trang 162.4 Ví dụ minh hoạ
Dữ liệu vào: Cho tập hợp dữ liệu D: DANH SÁCH BẢNG ĐIỂM HỌC SINH gồm 24 học sinh với các môn Toán, Văn, Anh dưới đây
Dữ liệu ra: gom tập dữ liệu thành 3 cụm (k=3)
DANH SÁCH BẢNG ĐIỂM HỌC SINH
Trang 17Trong 24 dữ liệu này đƣợc gom thành 3 cụm
Cụm 1: Khởi tạo trọng tâm C1 là dòng thứ 3 (5, 8, 9)
Cụm 2: Khởi tạo trọng tâm C2 là dòng thứ 14 (2, 7, 5)
Cụm 3: Khởi tạo trọng tâm C3 là dòng thứ 18 (10, 7, 8)
Lặp lần 1: Tính khoảng cách từ các trọng tâm C1, C2, C3 đến điểm của các học sinh ( theo công thức tính khoảng cách Euclidean)
Ta đƣợc kết quả:
Trang 18Tính khoảng cách
Trọng tâm C1
Trọng tâm C2
Trọng tâm C3
Điểm Anh
Gần C1
Gần C2
Gần C3
Trang 20Tính khoảng cách
Trọng tâm C1
Trọng tâm C2
Trọng tâm C3
Điểm Anh
Gần C1
Gần C2
Gần C3
Trang 22Cụm 1, trọng tâm C1(6.1 ; 6.8 ; 7.9) ; gồm 8 học sinh có SBD (D03 ; D04 ; D08 ; D13 ; D15 ; D19 ; D20 ; D22)
Cụm 2, trọng tâm C2(3.7 ; 7.1 ; 5.1) ; gồm 7 học sinh có SBD (D05 ; D09 ; D11 ; D14 ; D16 ; D21 ; D24)
Cụm 3, trọng tâm C3(9.0 ; 6.7 ; 7.3) ; gồm có 9 học sinh có SBD (D01 ; D02 ; D06 ; D07 ; D10 ; D12 ; D17 ; D18 ; D23)
2.5 Đánh giá thuật toán
- Khó khăn trong việc xác định các trọng tâm cụm ban đầu
- Khó để chọn ra được số lượng cụm tối ưu ngay từ đầu, mà phải qua nhiều lần thử để tìm ra được số lượng cụm tối ưu
- Rất nhạy cảm với nhiễu và các phần tử ngoại lai trong dữ liệu
- Không phải lúc nào mỗi đối tượng cũng chỉ thuộc về 1 cụm, chỉ phù hợp với đường biên giữa các cụm rõ
Trang 23CHƯƠNG 3 TÁCH VẬT THỂ CÓ TRONG ẢNH
3.1 Giới thiệu
Tách vật thể trong ảnh là chia một hình ảnh thành tập hợp các điểm ảnh, trong đó các điểm ảnh trong một khu vực là tương tự nhau theo một số các tiêu chí như màu sắc, cường độ hoặc kết cấu để định vị và xác định các vật thể và ranh giới trong một hình ảnh Nó trở thành một chủ thể nghiên cứu chính cho nhiều quá trình xử lý ảnh bởi các ứng dụng là vô tận Ứng dụng của nó bao gồm nâng cao hình ảnh, phát hiện đối tượng, truy xuất hình ảnh, nén hình ảnh và xử lý hình ảnh…[5]
3.2 Áp dụng thuật toán K-means
Về cơ bản, thuật toán tách vật thể trong ảnh có thể được xây dựng theo các bước như sau:
Bước 1: Tạo một cụm ban đầu có chứa một hình ảnh gốc và một bộ các
điểm trọng tâm được lựa chọn ngẫu nhiên từ hình ảnh Nối cụm ban đầu được xây dựng đến mảng của các cụm;
Bước 2: Lấy cụm hiện tại từ mảng và lặp thông qua tập hợp các siêu điểm
ảnh đó (tức là các trọng tâm);
Bước 3: Đối với mỗi siêu điểm ảnh, tính khoảng cách thực tế đến mỗi
điểm ảnh trong hình ảnh hiện tại Để làm được điều này, chúng ta thường sử dụng biến thể của công thức khoảng cách Euclidian cho phép chúng ta tìm khoảng cách giữa hai vectơ 3D của màu sắc (R; G; B) của một trong hai siêu điểm ảnh hoặc điểm ảnh hiện tại trong hình ảnh đã cho tương ứng;
Bước 4: Thực hiện tìm kiếm tuyến tính để tìm các điểm ảnh mà giá trị của
khoảng cách đến siêu điểm ảnh hiện tại (tức là trọng tâm) không vượt quá một ranh giới cụ thể;
Bước 5: Xây dựng một cụm mới dựa trên hình ảnh mới có chứa tất cả các
điểm ảnh đã chọn ở bước trước đó và giá trị hiện tại của siêu điểm ảnh Trong trường hợp này siêu điểm ảnh sẽ đóng vai trò là một trọng tâm của một cụm mới