Vì vậy, đã có rất nhiều phương pháp được áp dụng để giải quyết vấn đề nàynhư: Phân đoạn ảnh theo ngưỡng, phân đoạn ảnh theo đường biên, … và nóđược xây dựng bởi rất nhiều thuật toán nhưn
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
======***======
BÁO CÁO THỰC NGHIỆM HỌC PHẦN: HỌC MÁY
TÌM HIỂU THUẬT TOÁN K-MEANS VÀ ÁP DỤNG TRONG
BÀI TOÁN PHÂN ĐOẠN ẢNH
Giáo viên hướng dẫn: TS Trần Hùng Cường
Lớp: 20222IT6047002 Khoá: K15
Nhóm: 12
Sinh viên thực hiện:
Mã SV: 2020602290 Họ và tên: Trần Việt Anh
Mã SV: 2020601903 Họ và tên: Lê Hoàng Điệp
Mã SV: 2020603381 Họ và tên: Lê Văn Nghĩa
Trang 3MỤC LỤC
DANH MỤC HÌNH ẢNH 3
LỜI CẢM ƠN 4
MỞ ĐẦU 5
CHƯƠNG 1: TỔNG QUAN 6
1.1 Tìm hiểu về Machine Learning (Học Máy) 6
1.2 Một số kỹ thuật trong Machine Learning 7
1.3 Một số phương pháp của Machine Learning 8
1.3.1 Học có giám sát (supervised learning) 8
1.3.2 Học không có giám sát (unsupervised learning) 10
1.3.3 Học bán giám sát (semi-supervised learning) 11
1.3.4 Học tăng cường hay học củng cố (reinforcement learning) 12
1.4 Ứng dụng của Machine Learning 12
CHƯƠNG 2: THUẬT TOÁN K-MEANS 14
2.1 Giới thiệu thuật toán và các định nghĩa cơ sở 14
2.2 Mô tả về thuật toán 14
2.3 Ví dụ về thuật toán 15
2.4 Ưu điểm của thuật toán 20
2.5 Nhược điểm của thuật toán 20
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN K-MEANS TRONG PHÂN ĐOẠN ẢNH 22
3.1 Giới thiệu về phân đoạn ảnh 22
3.1.1 Các hướng tiếp cận phân đoạn ảnh 22
3.1.2 Các phương pháp dựa trên không gian đặc trưng 23
Trang 43.1.3 Các phương pháp dựa trên không gian ảnh 24
3.1.4 Các phương pháp dựa trên mô hình vật lý 24
3.2 Các thư viện chính được sử dụng trong chương trình 25
3.3 Thực hiện bài toán 27
3.3.1 Các bước xây dựng mô hình cho bài toán 27
3.3.2 Mã giả xây dựng giải quyết bài toán: 28
KẾT LUẬN 34
TÀI LIỆU THAM KHẢO 35
Trang 5DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình tri thức kim tự tháp 6
Hình 1.2 Học có giám sát (Supervised learning) 8
Hình 1.3: Học không có giám sát (unsupervised learning) 10
Hình 1.4: Học bán giám sát (semi-supervised learning) 11
Hình 1.5: Học tăng cương (reinforcement learning) 12
Hình 2.1: Ví dụ thuật toán K-Means 16
Hình 2.2: Tính khoảng cách từ các đối tượng 16
Hình 3.1: Thư viện numpy 26
Hình 3.2: Thư viện Scikit learn 26
Hình 3.3: Thư viện Matpotlib 27
Hình 3.4: Ảnh đầu vào 29
Hình 3.5: Thực hiện chương trình với số cụm bằng 2 (k=2) 30
Hình 3.6: Thực hiện chương trình với số cụm bằng 5 (k=5) 31
Hình 3.7: Thực hiện chương trình với số cụm bằng 10 (k=10) 31
Hình 3.8: Thực hiện chương trình với cụm bằng 15 (k=15) 32
Hình 3.9: Thực hiện chương trình với số cụm bằng 20 (k=20) 32
Trang 6LỜI CẢM ƠN
Lời đầu tiên nhóm chúng em xin gửi lời cảm ơn sâu sắc đến giáo viênngười trực tiếp hướng dẫn, giảng dạy chúng em trong suốt quá trình học tập,nghiên cứu và hoàn thành đề tài Phân đoạn ảnh là một kĩ thuật luôn đượcquan tâm, phát triển để xây dựng được mô hình trong xử lí ảnh và học máy
Vì vậy, đã có rất nhiều phương pháp được áp dụng để giải quyết vấn đề nàynhư: Phân đoạn ảnh theo ngưỡng, phân đoạn ảnh theo đường biên, … và nóđược xây dựng bởi rất nhiều thuật toán nhưng nổi bật nhất là thuật toán K-Means ( một trong những thuật toán phổ biến nhất hiện nay trong xử lý ảnh)Mỗi mô hình đều có điểm mạnh riêng của mình và đều cho ra kết quả và
độ chính xác cao Tuy nhiên nhóm bọn em đã thực hiện và chọn thuật toán Means để làm giải quyết vấn đề đề tài kết thúc môn của mình Trong quá trìnhnghiên cứu và làm đề tài, do năng lực, kiến thức, trình độ bản thân chúng emcòn hạn hẹp nên không tránh khỏi những thiếu sót và chúng em mong mỏinhận được sự thông cảm và những góp ý từ quý thầy cô cũng như các bạntrong lớp Chúng em xin chân thành cảm ơn
K- Chúng em xin chân thành cảm ơn!
Trang 7LỜI MỞ ĐẦU
Những năm gần đây, AI nổi lên như một bằng chứng của cuộc cáchmạng công nghiệp lần thứ 4 Trí tuệ nhân tạo có thể được định nghĩa như mộtngành của khoa học máy tính liên quan đến việc tự động hóa các hành vithông minh Machine learning là một lĩnh vực của trí tuệ nhân tạo (AI) Mụctiêu của machine learning nói chung là hiểu cấu trúc dữ liệu và điều chỉnh dữliệu đó thành các model mà mọi người có thể hiểu và sử dụng.Các ứng dụngcủa Machine Learning đã quá quen thuộc với con người: xe tự hành củaGoogle và Tesla, hệ thống tự tag khuôn mặt trên Facebook, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix …, chỉ là một vài trong
vô vàn những ứng dụng của trí tuệ nhân tạo và cụ thể là Machine Learning.Xuhướng phát triển công nghệ thông tin ngày càng tăng, song song với nó lượng
dữ liệu được sinh ra cũng ngày lớn Vì vậy nhu cầu để xử lý dữ liệu cũng lớnhơn, Machine Learning đang góp phần giải quyết vấn đề này Một trongnhững thuật toán thường dùng trong Machine Learning đó là thuật toán K-means Ứng dụng của thuật toán này được sử dụng rất nhiều và rộng rãi trongcác bài toán phân đoạn ảnh
Trang 8CHƯƠNG 1: TỔNG QUAN
1.1 Tìm hiểu về Machine Learning (Học Máy)
Rất khó để có thể định nghĩa một cách chính xác về máy học Một trongnhững định nghĩa rộng nhất về thuật ngữ máy học là: “một cụm từ dùng đểchỉ khả năng một chương trình máy tính để tăng tính thực thi dựa trên nhữngkinh nghiệm đã trải qua” hoặc “là để chỉ khả năng một chương trình có thể phát sinh ra một cấu trúc dữ liệu mới khác với các cấu trúc dữ liệu cũ”
Lợi điểm của các phương pháp máy học là nó phát sinh ra các luật tườngminh, có thể được sửa đổi, hoặc được huấn luyện trong một giới hạn nhấtđịnh.Các phương pháp này học trên các dữ liệu có đặc tả thông tin Cấu trúcthông tin gồm 4 mức được gọi là tri thức kim tự tháp
Hình 1.1: Mô hình tri thức kim tự thápHọc máy là sự tự động của quy trình học và việc học thì tương đươngvới việc xây dựng những luật dựa trên việc quan sát trạng thái trên cơ sở dữliệu và những sự chuyển hoá của chúng
Học máy kiểm tra những ví dụ trước đó và kiểm tra luôn cả những kếtquả của chúng khi xuất và học làm cách nào để tái tạo lại những kết quả này
và tạo nên những sự tổng quát hóa cho những trường hợp mới
Nói chung, máy học sử dụng một tập hữu hạn dữ liệu được gọi là tậphuấn luyện Tập này chứa những mẫu dữ liệu mà nó được viết bằng mã theomột cách nào đó để máy có thể đọc và hiểu được
Trang 9Tuy nhiên, tập huấn luyện bao giờ cũng hữu hạn do đó không phải toàn
bộ dữ liệu sẽ được học một cách chính xác
o Lợi ích của học máy
Các thông tin ngày càng nhiều, hàng ngày ta phải xử lý rất nhiều thôngtin đến từ nhiều nguồn khác nhau Học máy có thể giúp xứ lý và dự báo cácthông tin đó bằng cách tạo ra các luật sản xuất từ dữ liệu thu thập.Ở nhữngnơi không có chuyên gia, máy học có thể giúp tạo ra được các quyết định từcác dữ liệu có được.Các thuật toán sử dụng trong máy học máy học có thểgiúp xử lý khi dữ liệu không đầy đủ, không chính xác
Học máy giúp thiết kế hệ thống huấn luyện tự động (mạng nơron nhântạo) và giải mã mối liên hệ giữa các tri thức được lưu trữ trong mạng từ dữliệu.Công nghệ Học máy là một trong những phương pháp chính trong khai phá dữ liệu Nó được sử dụng trong tiến trình khám phá tri thức
1.2 Một số kỹ thuật trong Machine Learning
Trợ lý cá nhân ảo (Virtual Personal Assistants)
Phân loại khuôn mặt , giọng nói , vân tay , chữ , số ,…
Chuyển đổi lời nói thành văn bản
Xử lý ngôn ngữ tự nhiên
Chuyển đổi văn bản thành giọng nói
Ứng dụng trong các mạng xã hội
Tự động phân loại
Trang 101.3 Một số phương pháp của Machine Learning
1.3.1 Học có giám sát (supervised learning)
Hình 1.2 Học có giám sát (Supervised learning)Đây là cách học từ những mẫu dữ liệu mà ở đó các kỹ thuật máy họcgiúp hệ thống xây dựng cách xác định những lớp dữ liệu Hệ thống phải tìmmột sự mô tả cho từng lớp (đặc tính của mẫu dữ liệu).Người ta có thể sử dụngcác luật phân loại hình thành trong quá trình học và phân lớp để có thể sửdụng dự báo các lớp dữ liệu sau này
Thuật toán học có giám sát gồm tập dữ liệu huấn luyện M cặp:
S = {(xi, cj) i=1,…,M; j=1,…,C}
Các cặp huấn luyện này được gọi là mẫu, với xi là vector n-chiều còn gọi
là vector đặc trưng,cj là lớp thứ j đã biết trước
Thuật toán máy học giám sát tìm kiếm không gian của những giả thuyết
có thể, gọi là H Đối với một hay nhiều giả thuyết, mà ước lượng tốt nhất hàmkhông được biết chính xác f : x c.Đối với công việc phân lớp có thể xemgiả thuyết như một tiêu chí phân lớp
Thuật toán máy học tìm ra những giả thuyết bằng cách khám phá ranhững đặc trưng chung của những ví dụ mẫu thể hiện cho mỗi lớp.Kết quảnhận được thường ở dạng luật (Nếu thì)
Trang 11Khi áp dụng cho những mẫu dữ liệu mới, cần dựa trên những giả thuyết
đã có để dự báo những phân lớp tương ứng của chúng Nếu như không giangiả thuyết lớn, thì cần một tập dữ liệu huấn luyện đủ lớn nhằm tìm kiếm mộthàm xấp xỉ tốt nhất Tùy thuộc vào mức độ của thuật toán học giám sát, người
ta có những mô hình học giám sát như sau:
- Học vẹt (rote): hệ thống luôn luôn được “dạy” những luật đúng, rồi cóhọc hội tụ
- Học bằng phép loại suy (analogy): hệ thống được dạy phản hồi đúngcho một công việc tương tự, nhưng không xác định Vì thế hệ thống phải hiệu chỉnh phản hồi trước đó bằng cách tạo ra một luật mới cóthể áp dụng cho trường hợp mới
- Học dựa trên trường hợp (case-based learning ): trong trường hợp này
hệ thống học lưu trữ tất cả các trường hợp, cùng với kết quả đầu racủa chúng Khi bắt gặp một trường hợp mới, nó sẽ cố gắng hiệu chỉnhđến trường hợp mới này cách xử lý trước đó của nó đã được lưu trữ
- Học dựa trên sự giải thích (explanation-based learning), hệ thống sẽ phân tích tập hợp những giải pháp nhằm chỉ ra tại sao mỗi phương pháp
là thành công hay không thành công Sau khi những giải thích này đượctạo ra, chúng sẽ được dùng để giải quyết những vấn đề mới
Một số thuật toán học có giám sát
- Support Vector Machine – SVM
Trang 121.3.2 Học không có giám sát (unsupervised learning)
Hình 1.3: Học không có giám sát (unsupervised learning)
Đây là việc học từ quan sát và khám phá Hệ thống khai thác dữ liệuđược ứng dụng với những đối tượng nhưng không có lớp được định nghĩatrước, mà để nó phải tự hệ thống quan sát những mẫu và nhận ra mẫu Hệthống này dẫn đến một tập lớp, mỗi lớp có một tập mẫu được khám phá trongtập dữ liệu.Học không giám sát còn gọi là học từ quan sát và khám phá
Trong trường hợp chỉ có ít, hay gần như không có tri thức về dữ liệu đầuvào, khi đó một hệ thống học không giám sát sẽ khám phá ra những phân lớpcủa dữ liệu, bằng cách tìm ra những thuộc tính, đặc trưng chung của nhữngmẫu hình thành nên tập dữ liệu.Một thuật toán máy học giám sát luôn có thể biến đổi thành một thuật toán máy học không giám sát (Langley 1996).Đốivới một bài toán mà những mẫu dữ liệu được mô tả bởi n đặc trưng, người ta
có thể chạy thuật toán học giám sát n-lần, mỗi lần với một đặc trưng khácnhau đóng vai trò thuộc tính lớp, mà chúng ta đang tiên đoán.Kết quả sẽ là ntiêu chí phân lớp (n bộ phân lớp), với hy vọng là ít nhất một trong n bộ phânlớp đó là đúng
Một số thuật toán học không giám sát:
- Thuật toán K-means
- Mô hình mạng Neural
- Hệ thống ART(adaptive resonance theory)
Trang 131.3.3 Học bán giám sát (semi-supervised learning)
Hình 1.4: Học bán giám sát (semi-supervised learning)
Học máy bán giám sát hoạt động khi các nhà khoa học cung cấp mộtlượng nhỏ dữ liệu đào tạo được gắn nhãn cho một thuật toán Từ đó, thuậttoán tìm hiểu các kích thước của tập dữ liệu, sau đó nó có thể áp dụng cho dữliệu mới, chưa được gắn nhãn Hiệu suất của các thuật toán thường được cảithiện khi chúng đào tạo trên các tập dữ liệu được gắn nhãn Tuy nhiên việcghi nhãn dữ liệu có thể tốn thời gian và tốn kém Học máy bán giám sát đặtnền tảng trung gian giữa hiệu suất của học máy có giám sát và hiệu quả củahọc máy không giám sát Một số lĩnh vực sử dụng phương pháp học máy bángiám sát bao gồm:
Dịch máy: Dạy các thuật toán dịch ngôn ngữ dựa trên ít hơn một từđiển đầy đủ các từ
Phát hiện gian lận: Xác định các trường hợp gian lận khi bạn chỉ cómột vài ví dụ tích cực
Dán nhãn dữ liệu: Các thuật toán được đào tạo trên tập dữ liệu nhỏ
có thể học cách áp dụng nhãn dữ liệu cho các tập lớn hơn một cách
tự động
Trang 141.3.4 Học tăng cường hay học củng cố (reinforcement learning)
Hình 1.5: Học tăng cường (reinforcement learning)
Học máy tăng cường hoạt động bằng cách lập trình một thuật toán vớimột mục tiêu riêng biệt và một bộ quy tắc được chỉ định để hoàn thành mụctiêu đó Các nhà khoa học cũng lập trình thuật toán để tìm kiếm phần thưởngtích cực mà nó nhận được khi thực hiện một hành động có lợi cho mục tiêucuối cùng và tránh các hình phạt – mà nó nhận được khi thực hiện một hànhđộng khiến nó càng xa mục tiêu cuối cùng Học máy tăng cường thường được
1.4 Ứng dụng của Machine Learning
Ngày nay, Học máy ngày càng được ứng dụng rộng rãi, đa lĩnh vựctrong thực tiễn cuộc sống con người ngày nay Các bạn có thể dàng nhận thấyMachine Learning đang được sử dụng với mục đích phân tích dữ liệu lớn để
Trang 15có thể đưa ra những dự đoán xu hướng trong tương lai Ví dụ như dự đoán kếtquả bầu cử chính trị, dự đoán biến động của thị trường chứng khoán …
Machine Learning cũng được áp dụng trong công nghệ nhận diện hìnhảnh nhằm cung cấp dữ liệu cho các mô hình định giá hoặc mô hình kinh tế.Bằng khả năng phân tích dữ liệu từ hệ thống vệ tinh, thuật toán học máy sẽtiến hành xử lý và cung cấp tới bạn những thông tin về số lượng khách hàngtại bãi đậu xe, các hoạt động vận chuyển, sản lượng sản xuất …
Machine Learning ngày càng thể hiện được rõ vai trò của mình trong sự phát triển của công nghệ trong thời đại mới Am hiểu về học máy sẽ giúp bạn
có thể mở ra những cơ hội phát triển cùng sự thăng tiến trong tương lai Do
đó, bạn hãy xây dựng cho mình một lộ trình nghiên cứu học máy từ cơ bảnđến nâng cao để nâng cao trình độ chuyên môn của mình tốt hơn nhé
Trang 16CHƯƠNG 2: THUẬT TOÁN K-MEANS
2.1 Giới thiệu thuật toán và các định nghĩa cơ sở
Thuật toán K-means thuộc vào loại thuật toán không giám sát rất đơngiản và được áp dụng rộng rãi vào các mẫu bài toán phân cụm do MacQueengiới thiệu trong tài liệu “J Some Methods for Classification and Analysis
of Multivariate Observations” năm 1967
Bài toán phân cụm là quá trình nhóm một nhóm các điềm dữ liệu vàotrong một số lượng nhỏ các cụm Tổng quát về mặt biểu diễn toán học, chúng
ta có n điểm dữ liệu xi,i=1 n cần phải được phân vào trong k cụm Mục tiêucủa bài toán là một điểm dữ liệu cho một cụm Thuật toán K-means cung cấpcho chúng ta một phương pháp để tìm ra được vị trí các điểm μi,i=1 k củacác cụm sao cho hàm khoảng cách từ các điểm đến các cụm là nhỏ nhất
Trong đó ci là một tập các điểm bên trong cụm i Thuật toán K-means sửdụng khoảng cách Euclidean
2.2 Mô tả về thuật toán
Thuật toán K-means được dùng để giải bài toán về phân cụm hoạt độngqua từng bước như sau:
Trang 173 Gán điểm dữ liệu vào các cụm:
o Tính khoảng cách giữa mỗi điểm dữ liệu và các điểm trung tâmcụm
o Gán mỗi điểm dữ liệu vào cụm có điểm trung tâm gần nhất
6 Kết quả:
o Các điểm dữ liệu được gán vào các cụm tương ứng
o Các điểm trung tâm cuối cùng của các cụm là kết quả cuối cùngcủa thuật toán
Thuật toán k-means trên được chứng minh là hội tụ và có độ phức tạptính toán là:
2.3 Ví dụ về thuật toán
Ví dụ minh họa thuật toán K-Mean:
Giả sử ta có 4 loại thuốc A,B,C,D, mỗi loại thuộc được biểu diễn bởi 2 đặc
trưng X và Y như sau Mục đích của ta là nhóm các thuốc đã cho vào 2 nhóm(K=2) dựa vào các đặc trưng của chúng
Trang 18Bước 1 . Khởi tạo tâm (centroid) cho 2 nhóm Giả sử ta chọn A là tâm của
nhóm thứ nhất (tọa độ tâm nhóm thứ nhất c1(1,1)) và B là tâm của nhóm thứ
2 (tạo độ tâm nhóm thứ hai c2 (2,1))
Hình 2.6: Ví dụ thuật toán K-Means
Bước 2 . Tính khoảng cách từ các đối tượng đến tâm của các nhóm (Khoảngcách Euclidean)