Professional Documents
Culture Documents
Bao Cao Chuan
Bao Cao Chuan
-----🙡🕮🙣-----
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Ngành Công nghệ thông tin
Đề tài:
TÌM HIỂU THUẬT TOÁN K-MEANS DỰA TRÊN
MÔ HÌNH MAPREDUCE VÀ ỨNG DỤNG TRONG
PHÂN CỤM ẢNH
LỜI CẢM ƠN
Sau hơn 4 năm học tập và nghiên cứu tại Khoa Công nghệ thông tin - Trường
Đại học Thủy Lợi, em đã được trải nghiệm trong môi trường đào tạo tốt và nhận
được sự chỉ dạy nhiệt tình của các thầy, các cô trong khoa.
Trước hết, em xin được bày tỏ lòng biết ơn và gửi lời cảm ơn chân thành đến
TS. Nguyễn Tu Trung đã dạy cho em có được những kiến thức vững chắc, tận tình
chỉ bảo, nhắc nhở và hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong khoa Công nghệ
thông tin nói riêng và trường Đại học Thủy Lợi nói chung đã trang bị cho tôi những
kiến thức quý báu làm hành trang trong những năm học vừa qua.
Em cũng xin bày tỏ lòng biết ơn sâu sắc đến: Cha mẹ và những người thân
trong gia đình đã chăm sóc, nuôi dạy, hỗ trợ, động viên và tạo mọi điều kiện thuận
lợi nhất cho em trong suốt thời gian qua và đặc biệt trong thời gian em làm đồ án tốt
nghiệp.
Ngoài ra, em cũng chân thành cảm ơn các bạn, các anh, các chị đã ủng hộ,
giúp đỡ, trao đổi kiến thức, kinh nghiệm và động viên tôi trong thời gian học tập và
nghiên cứu.
Trong quá trình nghiên cứu của mình, mặc dù được sự hướng dẫn rất nhiệt
tình, nghiêm túc của TS. Nguyễn Tu Trung cùng với sự nỗ lực của cá nhân nhưng
cũng không thể tránh được những thiếu sót. Em rất mong nhận được sự cảm thông
và những góp ý từ quý Thầy, Cô và các bạn để đề tài được hoàn thiện hơn.
Vũ Thị Hường
MỤC LỤC
LỜI CẢM ƠN.............................................................................................................1
MỞ ĐẦU....................................................................................................................8
3.4 Thuật toán IPKMeans – cải tiến của PKMeans cho phân cụm ảnh.................44
KẾT LUẬN...............................................................................................................67
MỞ ĐẦU
1. Tổng quan về vấn đề nghiên cứu.
Những năm gần đây, sự phát triển mạnh của công nghệ thông tin đã làm cho
khả năng thu thập và lượng thông tin tăng nhanh một cách chóng mặt. Sự ra đời của
các kênh truyền thông mới như mạng xã hội và các thiết bị tiên tiến hơn đã đặt ra
thách thức cho các nền công nghiệp phải tìm những cách để xử lý dữ liệu.
Các phương pháp song song hóa đã được đề cập từ lâu, khi mà J.Von
Neumann giới thiệu mô hình tính toán song song có tên Otomat tế bào. Từ đó đến
nay, lý thuyết về xử lý song song trở thành lĩnh vực nghiên cứu quan trọng và ngày
càng đem lại tính năng vượt trội so với mô hình lập trình tuần tự truyền thống.
Năm 2004, Google giới thiệu thiệu mô hình tính toán MapReduce tính toán
phân tán nhanh trên một tập dữ liệu lớn và dữ liệu được đặt trên nhiều cụm máy
tính. Cho đến nay MapReduce đã có tầm ảnh hưởng lớn nhất [9].
2. Lý do chọn đề tài.
Ngày nay, mọi doanh nghiệp lớn và vừa đều bị bao vây bởi hàng tấn dữ liệu
phi cấu trúc từ nhiều nguồn khác nhau và không ngừng gia tăng từng ngày.Vì vậy,
chúng ta luôn phải đối mặt với việc xử lý một lượng dữ liệu khổng lồ được gọi là
Big Data. Hầu hết dữ liệu lớn được tạo ra là ảnh.
Thị giác máy tính là một lĩnh vực nghiên cứu mới mẻ đầy tiềm năng và rất
được quan tâm. Tầm quan trọng và những khó khăn của việc gom cụm các đối
tượng mang tính tri giác của con người từ lâu đã được nghiên cứu nhiều trong các
lĩnh vực của thị giác máy tính đặc biệt trong lĩnh vực xử lý ảnh.
Phân cụm ảnh được ứng dụng rất mạnh mẽ trong các bài toán phân tích và
hiểu ảnh tự động, một trong những bước quan trọng của việc khai thác các hình ảnh,
nhưng đó cũng là một bài toán khó mà tới bây giờ các nhà khoa học cũng chưa tìm
ra cách giải hoàn toàn thấu đáo. Vậy: Làm thế nào để phân chia một ảnh thành các
tập con? Những cách khả thi để có thể làm được điều đó là gì?
Trong khoảng 30 trở lại đây đã có rất nhiều thuật toán được đề xuất để giải
quyết vấn đề phân cụm ảnh. Các thuật toán này hầu hết đều tiếp cận theo 2 hướng
chủ yếu là: dựa trên pixel và dựa trên trên đồi tượng [10]. Tuy nhiên việc xử lý ảnh
SVTH: VŨ THỊ HƯỜNG 8 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
còn tồn tại nhiều vấn đề như: Độ phức tạp của thời gian tính toán theo cấp số nhân;
khối lượng dữ liệu được xử lý giới hạn, vấn đề về lỗi, … [11]
Xuất phát từ thực tế và để giải quyết vấn đề đặt ra, em đã chọn thuật toán
IPKMeans - phương pháp phân cụm ảnh song song hoá dựa trên mô hình
MapReduce để giải quyết bài toán phân cụm ảnh lớn với đề tài "Tìm hiểu thuật
toán K-Means dựa trên mô hình MapReduce và ứng dụng trong phân cụm
ảnh." thực hiện làm học phần tốt nghiệp của mình.
3. Đối tượng nghiên cứu.
- Nghiên cứu kỹ thuật chuyển đổi điểm ảnh sang không gian màu RGB.
- Nghiên cứu mô hình lập trình MapReduce và Hadoop.
- Nghiên cứu phân cụm ảnh với thuật toán K-Means, PKMeans và IPKMeans.
- Nghiên cứu nền tảng mở docker, docker-compose tạo lập môi trường nhiều
máy ảo xử lý tính toán song song.
4. Phạm vi nghiên cứu.
- Mô hình MapReduce và Apache Hadoop.
- Thuật toán KMeans, PKMeans, IPKMeans.
- Ứng dụng phân cụm ảnh với Kmeans và IPKMeans.
- Xử lý phân cụm ảnh tính toán song song.
- Nền tảng mở docker, docker-compose.
5. Mục tiêu đề tài.
- Tìm hiểu về kỹ thuật xử lý ảnh, bài toán phân cụm ảnh xám, ảnh màu.
- Hiểu về cơ chế hoạt động của Hadoop bao gồm HDFS (Hadoop Distributed
File System) và MapReduce.
- Hiểu về thuật toán KMeans và IPKMeans.
- Xây dựng ứng dụng demo phân cụm ảnh với thuật toán KMeans và
IPKMeans.
- Chạy thử nghiệm ứng dụng song song nhiều node sử dụng docker.
- Thử nghiệm, phân tích đánh giá giải pháp KMeans và IPKMeans.
(3) Dữ liệu từ các thiết bị cảm biến như thiết bị chụp hình ảnh vệ tinh, cảm biến
đường, cảm biến khí hậu.
(4) Dữ liệu từ các thiết bị theo dõi. Ví dụ theo dõi dữ liệu từ điện thoại di động.
(5) Dữ liệu từ các hành vi. Ví dụ như tìm kiếm trực tuyến (tìm kiếm sản phẩm, dịch
vụ hay thông tin khác), đọc các trang mạng trực tuyến, ...
(6) Dữ liệu từ các thông tin về ý kiến, quan điểm của các cá nhân, tổ chức, trên các
phương tiện thông tin xã hội.
(7) Dữ liệu điện lực bao gồm các thông tin cụ thể từ các điểm giao nhau của các nút
thông tin sử dụng.
(8) Dữ liệu các thiết bị tìm kiếm, công cụ tìm kiếm có cơ sở dữ liệu cực kỳ rộng lớn,
nơi họ có thể tìm thấy dữ liệu họ cần.
(9) Dữ liệu từ các kênh truyền thông xã hội, được tạo ra và phát triển bởi các trang
truyền thông xã hội như Facebook, Instagram,…
- Dự báo quy mô thị trường dữ liệu lớn: Dựa trên doanh thu, từ năm 2011 đến
năm 2027 (tính bằng tỷ USD).
Hình 2. Xu hướng doanh thu từ phân tích dữ liệu lớn đem lại.
Thị trường dữ liệu lớn toàn cầu được dự báo sẽ tăng lên 103 tỷ USD vào năm
2027, gấp đôi quy mô thị trường dự kiến vào năm 2018. .
- Xu hướng phương tiện truyền thông xã hội và mạng xã hội ngày nay và sự gia
tăng mạng mẽ tính tương tác và chia sẻ của người dùng mobile làm cho bức trang
xác định về độ tin cậy và chính xác của dữ liệu ngày một khó khăn hơn.
- Bài toán phân tích và loại bỏ dữ liệu thiếu chính xác và nhiễu đang là tính chất
quan trọng của bigdata.
(5) Giá trị(Value):
- Là đặc điểm quan trọng nhất của dữ liệu lớn. Trước khi làm phân tích dữ liệu lớn
thì việc đầu tiên là lảm rõ, xác định rõ được giá trị của thông tin mang lại ra sao.
- Kết quả dự báo chính xác thể hiện rõ nét nhất về giá trị của dữ liệu lớn mang lại.
1.1.2 Tổng quan về phân tích dữ liệu lớn.
✯Nhiệm vụ khoa học công nghệ dữ liệu lớn:
- Quản trị dữ liệu (Data management): Lưu trữ, bảo trì và truy nhập các nguồn dữ
liệu lớn.
- Mô hình hoá và phân tích dữ liệu (Big Modeling and analytics): Tìm cách hiểu
được dữ liệu và tìm ra các thông tin hoặc tri thức quý báu từ dữ liệu.
- Trao đổi, hiển thị dữ liệu và kết quả phân tích dữ liệu (Visualization Decisions and
Values) để tạo ra sản phẩm giá trị.
✯ Quản lý dữ liệu lớn:
+ Giao thông.
+ Y tế. …
• Giải quyết vấn đề: Một số bài toán học máy không giám sát như tìm kiếm, phát
hiện các cụm, các mẫu dữ liệu trong một tập hợp dữ liệu ban đầu, các dữ liệu không
có nhãn.
• Quá trình phân cụm dữ liệu:
(1) Lựa chọn đặc trưng: Các đặc trưng được chọn một cách hợp lý để có thể "mã
hóa" nhiều nhất thông tin liên quan đến công việc quan tâm.
=> Mục tiêu chính là: Giảm thiểu độ dư thừa thông tin giữa các đặc trưng.
+ Chọn độ đo tương tự: Đưa ra mức độ tương tự hay không tương tự giữa hai
vector đặc trưng góp phần như nhau trong việc tính toán.
+ Tiêu chuẩn phân cụm: Có thể diễn đạt bởi kinh nghiệm của chuyên gia,
cũng có thể được diễn đạt bởi hàm chi phí hay loại quy tắc khác.
(2) Thuật toán phân cụm: Lựa chọn 1 thuật toán phân cụm riêng biệt nhằm làm
sáng tỏ cấu trúc cụm của tập dữ liệu.
(3) Đánh giá cụm: Khi đã có kết quả phân cụm thì tiến hành kiểm tra tính đúng đắn
của nó. Bằng việc dùng các kiểm định phù hợp.
(4) Giải thích kết quả: Trong nhiều trường hợp, phải kết hợp giữa kết quả phân loại
với bằng chứng thực nghiệm và phân tích để đưa ra các kết luận đúng đắn.
• Thế nào là phân cụm tốt?
- Một phương pháp phân cụm tốt sẽ sinh ra các cụm có chất lượng cao [3], trong đó:
+ Mức độ tương tự giữa các đối tượng trong cùng một cụm là cao.
+ Mức độ tương tự giữa các đối tượng nằm trong các cụm khác nhau là thấp.
- Chất lượng của kết quả phân cụm phụ thuộc vào cả độ đo tương tự được sử dụng
và cách thức thực hiện.
- Chất lượng của phương pháp phân cụm cũng được đánh giá bởi khả năng phát
hiện các mẫu tiềm ẩn.
✯ Một số ví dụ về phân cụm dữ liệu.
Phân cụm được ứng dụng trong nhiều lĩnh vực. Ví dụ như:
(1) Xử lý dữ liệu lớn: Việc khám phá tri thức trong các cơ sở dữ liệu thường phải xử
lý khối lượng dữ liệu rất lớn, nhiều khi ngay cả các thuật toán với độ phức tạp tính
toán là đa thức cũng không dùng được. Do đó, việc phân và xử lý theo các cụm là
một giải pháp hữu hiệu.
(2) Phân cụm dữ liệu trong hoạt động phân đoạn ảnh: Phân đoạn ảnh là việc phân
tích mức xám hay màu của ảnh thành lát đồng nhất.
(3) Tạo giả thuyết: Phân tích cụm được sử dụng để suy ra một số giả thuyết liên
quan đến dữ liệu.
(4) Thương mại: Tìm kiếm nhóm các khách hàng quan trọng có đặc trưng tương
đồng và những đặc tả họ từ các bản ghi mua bán trong cơ sở dữ liệu khách hàng.
(5) Phân cụm dữ liệu trong hoạt động nghiên cứu thị trường: Sử dụng để phân đoạn
thị trường và xác định mục tiêu thị trường.
1.2.2 Tổng quan về phân cụm ảnh.
Bài toán phân cụm ảnh:
Ngày nay, thời kỷ nguyên của dữ liệu lớn, hầu hết những dữ liệu lớn được
tạo ra là hình ảnh. Phân tích dữ liệu lớn đòi hỏi sức mạnh tốc độ tính toán có thể mở
rộng, khai thác dữ liệu, thống kê tinh vi và kỹ thuật học máy. Vì thế, vấn đề ở đây
quan tâm là phân cụm ảnh lớn - giai đoạn quan trọng đầu tiên trong quá trình xử lý
ảnh với ảnh dữ liệu lớn.
• Khái niệm: Phân cụm ảnh (hay phân đoạn ảnh) là chia ảnh thành các vùng không
trùng lặp. Mỗi vùng gồm một nhóm pixel liên thông và đồng nhất theo một tiêu chí
nào đó như về màu sắc, mức xám ,...
- Sau khi phân cụm mỗi pixel chỉ thuộc về một vùng duy nhất. Để đánh giá chất
lượng của quá trình phân cụm là rất khó. Vì vậy trước khi phân cụm ảnh cần xác
định rõ mục tiêu của quá trình phân cụm là gì?
• Bài toán đặt ra: Giả sử ta có một tập dữ liệu điểm ảnh và ta cần phải nhóm các
dữ liệu có tính chất tương tự nhau vào các cụm khác nhau chưa biết trước.
- Một cách đơn giản để mô phỏng bài toán này là biểu diễn qua hình học.
Các dữ liệu có thể coi là các điểm trong không gian và khoảng cách giữa các điểm
có thể được coi là thông số mức độ giống nhau của chúng. Những điểm càng gần
nhau thì chúng càng giống nhau.
- Bài toán dưới dạng hình thức như sau:
+ D liu: tp d liu X R (nd) gồm n điểm dữ liệu có d chiều.
+ Nhiệm vụ: Phân tập dữ liệu ra làm k cụm các dữ liệu tương tự nhau.
SVTH: VŨ THỊ HƯỜNG 19 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
+ Đặc điểm: - Phân cụm các điểm dữ liệu không cần giám sát.
- Không quan tâm tới thông tin trong không gian ảnh.
- Tồn tại các phương pháp heuristic và hữu hạn.
• Ví dụ:
(a) Hình ảnh gốc; (b) Hình ảnh kết quả của phân đoạn.
(1) Thu nhận ảnh: Ảnh có thể thu nhận được qua các thiết bị chụp ảnh.
(2) Tiền xử lý ảnh: Sau khi thu nhận ảnh có thể bị nhiễu hoặc độ tương phản thấp
nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng ảnh như lọc nhiễu, nâng cao
độ tương phản để làm ảnh rõ nét hơn, ...
(3) Phân cụm: Tách ảnh đầu vào thành các vùng thành phần để biểu diễn, phân tích,
nhận dạng ảnh. Đây là phần phức tạp, khó khăn nhất trong xử lý ảnh và cũng dễ gây
lỗi, làm mất độ chính xác của ảnh. Kết quả của nhận dạng ảnh phụ thuộc rất nhiều
vào công đoạn này.
(4) Biểu diễn và mô tả ảnh: Đầu ra của ảnh sau phân đoạn chứa các điểm ảnh của
vùng ảnh và mã liên kết với các vùng lân cận. Đưa ra kết quả ảnh.
(5) Nhận dạng và giải thích: Quá trình xác định ảnh thu được bằng cách so sánh với
ảnh gốc ban đầu.
(6) Cơ sở tri thức: Ảnh sau khi được phân tích, sẽ rút ra tri thức cần dùng.
Ứng dụng của phân cụm ảnh.
- Bộ phận cấu thành cơ bản trong nhiều ứng dụng về xử lý ảnh.
- Hình ảnh cấu hình và bộ chuyển đổi dùng để chuyển đổi ra ảnh kỹ thuật số, và
cuối cùng là đầu ra của hệ thống.
- Client Program: Chương trình MapReduce mà phía người dùng đang sử dụng và
tiến hành chạy một MapReduce Job.
- JobTracker: Tiếp nhận job và đảm nhận vai trò điều phối job này, nó có vai trò
như bộ não của MapReduce. Sau đó, nó chia nhỏ job thành các task, tiếp theo sẽ lên
lịch phân công các task (map task, reduce task) này đến các tasktracker để thực
hiện. Kèm theo vai trò của mình, JobTracker cũng có cấu trúc dữ liệu riêng của
mình để sử dụng cho mục đích lưu trữ, như nó sẽ lưu lại tiến độ tổng thể của từng
job, lưu lại trang thái của các TaskTracker để thuận tiện cho thao tác lên lịch phân
công task, lưu lại địa chỉ lưu trữ của các output của các TaskTracker thực hiện
maptask trả về.
- TaskTracker: Đơn giản nó chỉ tiếp nhận maptask hay reducetask từ JobTracker
để sau đó thực hiện. Và để giữ liên lạc với JobTracker, Mapreduce cung cấp cơ chế
gửi heartbeat từ TaskTracker đến JobTracker cho các nhu cầu như thông báo tiến độ
của task do TaskTracker đó thực hiện, thông báo trạng thái hiện hành của nó [4].
2.1.3 Nguyên tắc hoạt động của mô hình MapReduce.
MapReduce được xây dựng từ mô hình lập trình hàm và lập trình song song.
Tăng tốc độ thực thi xử lý dữ liệu là mục đích quan trọng nhất của MAPREDUCE.
Mô hình:
SVTH: VŨ THỊ HƯỜNG 23 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Theo google's mô hình lập trình MapReduce thực thi như sau [13].
(5): Định kỳ, các cặp dữ liệu trung gian sẽ được đẩy đến các worker tương ứng do
master điều khiển để hàm reducer xử lý. Các thuật toán sắp xếp, so sánh phân vùng
dữ liệu sẽ được sử dụng tại giai đoạn này. Các cặp dữ liệu trung gian có cùng key sẽ
được sắp xếp cùng một nhóm.
Hàm Reduce:
(6): Khi tất cả các tác vụ Map và Reduce đã hoàn tất thì sẽ cho ra kết quả cuối cùng
của quy trình MapReduce.
Ví dụ: Cho bài toán đếm từ, công việc là đếm số lần xuất hiện của các từ trong
văn bản. Công việc như vậy thì có thể phân chia thành hai phần như sau:
- Amazon: Có thể xử lý được file log phát sinh trong quá trình bán hàng trên mạng,
phục vụ cho việc dự đoán xu hướng mua hàng của khách hàng, …
- Facebook: Có thể xử lý được khối lượng hơn 10 tỷ hình ảnh mà họ đang lưu trữ
để trích xuất thông tin về kích thước hình ảnh, phát hiện các hình ảnh xấu, …
- Một số ứng dụng khác như:
Last.fm: Là một trang web hàng đầu về nghe nhạc sử dụng MapReduce để thống kê
Tại VN: Mwork sử dụng MapReduce để lưu trữ và xử lý Log.
2.2 Apache Hadoop.
2.2.1 Tổng quan về Apache Hadoop.
Sức mạnh của nền tảng Hadoop dựa trên hai thành phần phụ chính: Hệ thống
tệp phân tán Hadoop (HDFS) và khung làm việc MapReduce.
Để lưu trữ dữ liệu, Hadoop dựa trên cả hệ thống tệp HDFS và cơ sở dữ liệu
phi cấu trúc có tên là Apache HBase.
✯ Lợi ích của Hadoop:
+ Là một công nghệ dữ liệu lớn nổi tiếng có một cộng đồng hỗ trợ quan trọng. Nó
được thiết để mở rộng quy mô từ các máy chủ đơn lẻ đến hàng ngàn máy, mỗi máy
cung cấp tính toán và lưu trữ cục bộ, để tránh hiệu năng thấp và sự phức tạp gặp
phải khi xử lý và phân tích dữ liệu lớn bằng các công nghệ truyền thống.
+ Khả năng xử lý nhanh các tập dữ liệu lớn , nhờ các cụm song song và hệ thống
tệp phân tán.
Chẳng hạn, chỉ mất vài giây trên Hadoop để truy vấn terabyte dữ liệu thay vì 20
phút trở lên trên SIEM cổ điển.
+ Khả năng chạy các chương trình trong khi vẫn đảm bảo khả năng chịu lỗi ,
thường gặp trong môi trường phân tán . Để đảm bảo điều đó, nó ngăn ngừa mất dữ
liệu bằng cách sao chép dữ liệu trên máy chủ.
+ Viết bằng Java. Tuy nhiên, nhờ cơ chế streaming, Hadoop cho phép phát triển các
ứng dụng phân tán bằng cả java lẫn một số ngôn ngữ khác như C++, Python
+ Cung cấp một phương tiện lưu trữ dữ liệu phân tán trên nhiều node, hỗ trợ tối ưu
hoá lưu lượng mạng.
- Core: Là kiến trúc trung tâm của hadoop, cung cấp cơ chế quản lý tài nguyên hiệu
quả, linh hoạt và bảo mật thống nhất các công cụ trên toàn hadoop cluster. Đồng
thời cung cấp cho các lập trình viên mọt framework duy nhất để viết các ứng dụng
sử dụng dữ liệu trên hadoop.
- HDFS – Sức mạnh của Hadoop: Là hệ thống file phân tán, cung cấp khả năng
lưu trữ dữ liệu khổng lồ và tính năng tối ưu hoá việc sử dụng băng thông giữa các
node. Có thể được sử dụng để chạy trên một cluster lớn với hàng chục ngàn node.
- Duy trì một cấu trúc cây phân cấp các file thư mục mà các file sẽ đóng vai
trò là các node.
- Mỗi file được chia thành 1 hay nhiều block, mỗi block sẽ có 1 block ID để
nhận diện. Các block cùng 1 file sẽ có cùng kích thước. Mỗi block của file sẽ
được lưu trữ thành ra nhiều bản sao khác nhau vì mục đích an toàn dữ liệu.
Hình 17. Cấu trúc cây phân cấp file của Hadoop.
- MapReduce – Sức mạnh của Hadoop: Là một mô hình lập trình cho phép bạn xử
lý dữ liệu khổng lồ được lưu trữ trong Hadoop.
HBase: Một cơ sở dữ liệu phân tán, sử dụng HDFS làm hạ tầng cho việc lưu trữ dữ
SVTH: VŨ THỊ HƯỜNG 31 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
liệu bên dưới và cung cấp khả năng tính toán song song dựa trên MapReduce.
- HBase: một cơ sở dữ liệu phân tán, theo hướng cột (column-oriented). HBase sử
dụng HDFS làm hạ tầng cho việc lưu trữ dữ liệu bên dưới và cung cấp khả năng
tính toán song song dựa trên MapReduce.
- Hive: một data warehouse phân tán. Hive quản lý dữ liệu được lưu trữ trên HDFS
và cung cấp một ngôn ngữ truy vấn dựa trên SQL.
- Chukwa: một hệ thống tập hợp và phân tích dữ liệu. Chukwa chạy các collector
(các chương trình tập hợp dữ liệu), các collector này lưu trữ dữ liệu trên HDFS và
sử dụng MapReduce để phát sinh các báo cáo.
2.2.3 Các trình nền của Hadoop.
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc
các chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn. Những
trình nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại
trên nhiều máy chủ. Các daemon bao gồm: [14]
NameNode: Là một trình nền quan trọng nhất của Hadoop.
+ NameNode là master của HDFS để chỉ đạo các trình nền, duy trì thông tin về
cấu trúc cây phân cấp, các file thư mục và các metadata khác của hệ thống.
+ Quản lý các meta-data của hệ thống HDFS như file system. space, danh sách
các file trên hệ thống và các block id tương ứng của từng file.
+ Quản lý danh sách slave và tình trạng hoạt động của các DataNode.
+ Điều hướng quá trình đọc/ghi dữ liệu từ client lên các DataNode.
DataNode:
+ DataNode là cá lave trong cluster thực hiện các công việc nào đó của hệ
thống file phân tán: Đọc và ghi (I/O) file HDFS,
+ Chứa các block dữ liệu thực sự của các file trên HDFS, từng hệ thống phân
tán lên hệ thống file cục bộ của nó, mỗi block được lưu như 1 hệ thống file
riêng biệt trên hệ thống file cục bộ của DataNode.
+ Đáp ứng các yêu cầu tạo/xoá các block dữ liệu từ NameNode.
+ Client liên lạc trực tiếp với các trình nền DataNode để xử lý các file cục bộ
tương ứng với các block.
SVTH: VŨ THỊ HƯỜNG 32 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Secondary NameNode:
+ Là một trình nền hỗ trợ giám sát trạng thái của các cụm HDFS. Giống như
NameNode, mỗi cụm có một SNN và nó thường trú trên một máy của mình.
+ Nhiệm vụ: Duy trì một bản sao của meta-data trên NameNode và bản sao
này sẽ được dùng để phục hồi lại NameNode nếu NameNode bị hư hỏng.
JobTracker: Master MapReduce.
+ Tiếp nhận các yêu cầu thực thi MapReduce job.
+ Phân chia job thành các task và phân công cho các Task Tracker thực hiện.
+ Quản lý tình trạng thực hiện của Task Tracker.
TaskTracker:
+ Tiếp nhận các task được Job Tracker phân công và thực hiện nó.
Client gọi JobTracker bắt đầu công việc xử lý dữ liệu, JobTracker làm việc và giao
các nhiệm vụ cho mỗi TaskTracker trong cluster.
Trong mỗi cluster, kiến trúc của Hadoop là master-slave (chủ-tớ): NameNode và
JobTracker là Master và DataNode & TaskTracker là slave.
2.1.4 Nguyên tắc hoạt động của Hadoop MapReduce.
- Hadoop chia đầu vào cho mỗi công việc MapReduce vào các mảnh có kích thước
SVTH: VŨ THỊ HƯỜNG 33 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Công nghệ này đã được sử dụng rộng rãi bởi một số trang web lớn nhất thế
giới, chẳng hạn như Facebook, eBay, Amazon, Baidu, và Yahoo.
- Facebook: Sử dụng Hadoop để lưu trữ các log nội bộ và kích thước của nguồn dữ
liệu. Các dữ liệu này được dùng làm nguồn cho các báo cáo phân tích và máy học.
+ Ý tưởng chính: Tìm cách phân nhóm các đối tượng đã cho vào K cụm ( K là số
các cụm được xác định trước, K nguyên dương), sao cho tổng bình phương khoảng
cách giữa các đối tượng đến tâm cụm là nhỏ nhất.
Mục đích: Sinh ra k cụm dữ liệu {C1, C2, ..., CK} từ một tập dữ liệu ban đầu n
đối tượng trong không gian d chiều, sao cho hàm tiêu chuẩn: Đạt giá trị tối thiểu.
[1]
Trong đó:
Ci: Nhóm thứ i.
mi: Điểm trung tâm (centroid) của nhóm Ci.
d(x, mi): Khoảng cách (khác biệt) giữa điểm x và điểm trung tâm mi.
+ Hàm tiêu chuẩn (E): Hàm đo độ tương tự sử dụng khoảng cách Euclide, không
âm, giảm khi có sự thay đổi 1 trong 2 bước: gán dữ liệu và định lại vị trí tâm.
[2]
Với s = 1, 2, … m: m là số thuộc tính của vector toạ độ điểm.
Bước 3: Cập nhật lại trọng tâm.
Đối với mỗi cụm i=1,..,k, số thuộc tính m= 1..n, t số phần tử có của nhóm thứ i.
Cập nhật bằng cách xác định trung bình cộng của các vector đối tượng dữ liệu.
[3]
Bước 4: Lặp cho đến khi thoả mãn điều kiện dừng.
Lặp các bước 2 và 3 cho đến khi các trọng tâm của các cụm không thay đổi.
+ Không có (hoặc có không đáng kể) việc gán lại các điểm vào các nhóm
khác, hoặc không có (hoặc có không đáng kể) thay đổi về các điểm trung tâm
(centroids) của các nhóm, hoặc giảm không đáng kể về tổng lỗi phân nhóm Error:
Thuật toán KMeans được chứng minh là hội tụ và có độ phức tạp tính toán là:
[4]
Trong đó: n là số đối tượng dữ liệu, k là số cụm dữ liệu, d là số chiều, là số vòng
lặp, là thời gian để thực hiện một phép tính cơ sở như phép tính nhân, chia,...
Chất lượng phân cụm:
- Phụ thuộc nhiều vào tham số đầu vào như: số cụm k và trọng tâm khởi tạo.
- Nếu các trọng tâm khởi tạo ban đầu quá lệch so với các trọng tâm cụm tự nhiên thì
kết quả phân cụm của KMeans là rất thấp và ngược lại.
3.1.3 Ví dụ tính toán bằng tay.
Bài toán:
Group2: [P3{x: 846, y: 391}, P4{x: 876, y: 879}, P5{x: 980, y: 580}]
[LOOP4] Lặp tính lại toán lại trọng tâm 2 nhóm lần nữa như bước 3, thu được:
cendoird_point_1 = {x: 211.333, y: 799.667}
cendoird_point_2 = {x: 900.667, y: 616.667}
=> Nhận thấy tọa độ trọng tâm của các group không đổi. Dừng LOOP.
Kết quả: Từ 6 điểm đã cho ban đầu, chia thành 2 nhóm như sau:
Group1: [P1{x: 127, y: 933}, P2{x: 138, y: 741}, P6{x: 369, y: 725}]
Group2: [P3{x: 846, y: 391}, P4{x: 876, y: 879}, P5{x: 980, y: 580}]
3.1.4 Ưu điểm và nhược điểm của KMeans.
Ưu điểm:
- Tương đối nhanh. Độ phức tạp của thuật toán là O (tkn), trong đó: n là số điểm
trong không gian dữ liệu, k là số cụm cần phân, t là số lần lặp (t là khá nhỏ so với r).
- Thông thường t, k<<n. Nên thuật toán có hiệu quả tương đối với các CSDL lớn.
- Có khả năng mở rộng, có thể dễ dàng sửa đổi với những dữ liệu mới.
- Đảm bảo hội tụ sau 1 số bước lặp hữu hạn. Luôn có K cụm dữ liệu.
- Các cụm không phân cấp và không bị trồng chéo dữ liệu lên nhau.
Nhược điểm:
- Không đảm bảo đạt được tối ưu toàn cục và kết quả đầu ra phụ thuộc nhiều vào
việc chọn k điểm khởi đầu. Do đó có thể phải chạy lại thuật toán với nhiều bộ khởi
đầu khác nhau để có được kết quả đủ tốt.
- Cần phải xác định trước số cụm.
- Khó phát hiện các loại cụm có hình dạng phức tạp nhất là các dạng cụm không lồi.
- Chỉ có thể áp dụng với dữ liệu tính được trọng tâm.
- Nhạy với nhiễu và phần tử ngoại lai.
3.2 Ý tưởng và giải pháp MapReduce hoá thuật toán KMeans.
3.2.1 Đặc trưng của KMeans để MapReduce.
Trong thuật toán KMeans trình bày ở trên, phần lớn khối lượng tính toán tập
chung ở bước tính khoảng cách từ từng điểm (đối tượng) tới các tâm cụm. Số lượng
đối tượng trong tập dữ liệu càng lớn, thời gian cần cho bước này càng nhiều. Bên
cạnh đó, có thể nhận thấy việc tính toán khoảng cách từ một điểm tới tâm cụm là
SVTH: VŨ THỊ HƯỜNG 41 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Jaatun và cộng sự đã đưa ra thuật toán PKMeans (Parallel KMeans) [13] dựa trên
MapReduce được Hadoop triển khai để thực hiện phương pháp phân cụm áp dụng
cho dữ liệu kích thước lớn. Bằng cách áp dụng các cặp <key, value> thích hợp,
thuật toán được đề xuất có thể được thực hiện song song hiệu quả.
✯ Giải thuật của thuật toán PKMeans:: gồm 2 thuật toán chính cho hàm map và
hàm reduce:
Input: Global variable centers, the offset key, the sample value
Output: pair, where the key’ is the index of the closest center point and value’ is a
string comprise of sample information
1. Construct the sample instance from value;
2. minDis = Double.MAX VALUE;.
3. index = -1;
4. For i=0 to centers.length do dis= ComputeDist(instance, centers[i]);
If dis < minDis
{ minDis = dis; index = i; }
5. End For
6. Take index as key’;
7. Construct value’ as a string comprise of the values of different dimensions;
8. output < key , value > pair;
9. End
Input: key is the index of the cluster, V is the list of the partial sums from
different host
Output: < key , value > pair, where the key’ is the index of the cluster, value’ is a
string representing the new center
1. Initialize one array record the sum of value of each dimensions of the samples
contained in the same cluster, e.g. the samples in the list V;
2. Initialize a counter NUM as 0 to record the sum of sample number in the same
SVTH: VŨ THỊ HƯỜNG 43 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
cluster;
3. while(V.hasNext())
{ Construct the sample instance from V.next();
Add the values of different dimensions of instance to the array NUM += num;
4. }
5. Divide the entries of the array by NUM to get the new center’s coordinates;
6. Take key as key’;
7. Construct value’ as a string comprise of the center’s coordinates;
8. output < key , value > pair;
9. End
Từ thuật toán cho hàm map, ta thấy đầu vào cho thuật toán PKMeans phải ở
dạng list các đối tượng dữ liệu mà có thể chuyển về dạng key/value. Tuy nhiên, với
dữ liệu ảnh thì cần có một bước chuyển đổi. Ngoài ra, với kết quả của hàm reduce
như trên, mặc dù đã thu được tâm và thông tin điểm ảnh nhưng rất bất tiện nếu thực
hiện các thao tác tiếp theo trên ảnh mà sử dụng kết quả phân cụm vì thông tin vị trí
không bao gồm trong kết quả.
3.4 Thuật toán IPKMeans – cải tiến của PKMeans cho phân cụm ảnh.
Để phân cụm ảnh, cần trải qua 3 giai đoạn như sau:
B1: Chuyển đổi dữ liệu.
B2: Phân cụm với thuật toán IPKMeans.
B3: Khôi phục kết quả phân cụm ảnh.
3.4.1 Chuyển đổi dữ liệu.
- Chuyển đổi dữ liệu điểm ảnh thành dạng chuỗi là list các hàng
- Mỗi hàng bao gồm: thông tin vị trí và danh sách giá trị là các thành phần của
vector biểu diễn cho một điểm ảnh và được lưu trữ dưới dạng file .txt.
Dữ liệu ảnh sau khi được chuyển đổi sẽ về dạng chuỗi đó là những dữ liệu
chưa được gán nhãn (nghĩa là dữ liệu chưa được định nghĩa hoặc chưa có nhóm).
Mục tiêu là tìm các nhóm nhất định dựa trên đặc điểm tương tự của tập dữ liệu với
số lượng nhóm được xác định trước (ký hiệu là k).
SVTH: VŨ THỊ HƯỜNG 44 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Giải thuật thuật toán IPKMeans: gồm 2 thuật toán chính cho hàm mapImage
và hàm reduceImage:
● Thuật toán cho hàm mapImage:
Input: key is the index of the cluster, V is the list of the partial sums from
different host.
Output: < key , value > pair, where the key’ is the index of the cluster, value’ is a
string representing the new center.
1. Construct the sample instance from value;
2. minDis = Double.MAX VALUE;
3. index = -1;
Input: Global variable centers, the offset key, the sample value is the list of color
bands and position
Output: pair, where the key’ is the index of the closest center point and value’ is a
string comprise of color bands and position
1. Initialize one array record the sum of value of each dimensions of the samples
contained in the same cluster, e.g. the samples in the list V;
2. Initialize a counter NUM as 0 to record the sum of sample number in the same
cluster;
3. while(V.hasNext())
{
Construct the sample instance from V.next();
Add the values of different dimensions of instance to the array NUM += num;
}
4. Divide the entries of the array by NUM to get the new center’s coordinates;
5. Take key as key’;
6. Construct value’ as a string comprise of the center’s coordinates and position;
8. End
Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông còn
là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng
say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994.
Kiến trúc của hệ điều hành Linux:
Hardware: Phần cứng bao gồm tất cả các thiết bị ngoại vi (RAM/ HDD/ CPU, ...).
Kernel: Thành phần cốt lõi của hệ điều hành, tương tác trực tiếp với phần cứng,
cung cấp dịch vụ cấp thấp cho các thành phần lớp trên.
Shell: Nhận lệnh từ người dùng và thực thi chức năng của kernel.
Utilities: Các chương trình tiện ích cung cấp cho người dùng hầu hết các chức năng
của hệ điều hành.
Ưu điểm và nhược điểm:
- Ưu điểm – hệ điều hành số 1 thế giới:
(1) Nền tảng mã nguồn mở, miễn phí và được cập nhật thường xuyên.
(2) Bảo mật, rất an toàn virut hay mã độc không hoạt động được trên nền tảng này.
(3) Hoạt động mượt mà trên các máy tính có cấu hình yếu: Hệ điều hành này có thể
xử lý nhiều tiến trình nhiều kết nối đồng thời tốt hơn nhiều so với hệ điều hành
windows.
(4) Sức mạnh của dòng lệnh: Quản trị linux tất cả đều qua dòng lệnh với giao thức
SSH là chủ yếu với tốc độ xử lý rất nhanh chóng.
(5) Cộng đồng sử dụng linux lớn: Gần 80% máy chủ trên thế giới sử dụng hệ điều
hành linux.
- Nhược điểm:
(1) Số lượng ứng dụng hỗ trợ trên Linux còn hạn chế.
(2) Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.
(3) Khó làm quen, đặc biệt nếu bạn đã quá quen thuộc với Windows thì khi chuyển
sang Linux, bạn sẽ cần một khoảng thời gian để làm quen nó.
4.2 Công nghệ docker.
4.2.1 Tổng quan về docker.
Khái niệm:
Theo nguồn wikipedia: "Docker là một dự án mã nguồn mở giúp tự động
triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa."
Theo các trang mạng: "Docker là một open platform cung cấp cho người sử
dụng những công cụ và service để người sử dụng có thể đóng gói và chạy ứng dụng
của mình trên các môi trường khác nhau một cách nhanh nhất."
SVTH: VŨ THỊ HƯỜNG 50 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Docker hỗ trợ nhiều nền tảng hệ điều hành khác nhau bao gồm:
+ Linux: Ubuntu 12.04+, Fedora 19/20+, RHEL 6.5+, CentOS 6+, Gentoo,
ArchLinux, openSUSE 12.3+, CRUX 3.0+
+ Cloud: Amazon EC2m Google Compute Engine, Microsoft Azure,...
+ Max OS X
+ Windows: Windows 7+
Kiến trúc của docker:
socket hoặc RESTful API. Cung cấp cho người dùng giao diện tương tác dòng lệnh
và thực hiện phản hồi với các Docker daemon.
(2) Docker daemon sẽ thực hiện các tác vụ build, run và phân phối các Docker
container. Docker daemon chạy trên các máy host.
+ Docker image: Là 1 template chỉ đọc, được dùng để tạo 1 docker container.
Docker cho phép chúng ta build và cập nhật các image có sẵn một cách cơ bản nhất,
hoặc bạn có thể download Docker images của người khác.
+ Docker container: Một Docker container giữ mọi thứ chúng ta cần để chạy một
app. Mỗi container được tạo từ Docker image. Docker container có thể có các trạng
thái run, started, stopped, moved và deleted.
Quy trình thực thi hệ thống sử dụng docker:
Bước 1: Build.
Tạo một Dockerfile, trong dockerfile này chính là code thực thi các lệnh build môi
trường Docker. Dockerfile này sẽ đc Build tại 1 máy tính đã cài đặt Docker. Kết
quả: Thu được Container chứa toàn bộ thư viện và ứng dụng.
Bước 2: Push.
Thực hiện push Container lên đám mây và lưu trữ ở đó. Việc push này thực hiện
qua môi trường mạng internet.
Hình 30. Cài đặt nhiều node bên trong một mạng docker.
Kt lun:
Bằng cách sử dụng Docker và docker compose giúp:
- Tận dụng khoảng cách thiết lập cục bộ.
- Cài đặt nhiều cụm thực sự với chi phí bằng không.
- Kiểm tra cách Hadoop hoạt động như thế nào và mô phỏng hành việc
thêm/xoá các cụm trên mạng đó.
4.3 Ngôn ngữ lập trình Java.
4.3.1 Tổng quan về Java.
Java là gì?
Java là một ngôn ngữ lập trình, được phát triển bởi Sun Microsystem vào
năm 1995, là ngôn ngữ kế thừa từ C/C++ và là một ngôn ngữ lập trình hướng đối
tượng.
Ưu và nhược điểm:
- Ưu điểm:
+ Về tốc độ: Chạy nhanh hơn những ngôn ngữ thông dịch như Python, PHP nhiều
lần.
+ Về quản lý bộ nhớ: Bộ nhớ được quản lý bởi Java Virtual Machine (JVM) nên
hiện tượng rò rỉ bộ nhớ hầu như không xảy ra, không phải quan tâm đến việc cấp
phát và xóa bộ nhớ như C, C++.
+ Về cú pháp: Cú pháp hướng đối tượng hơn và ít tính năng xử lý cấp thấp hơn.
Nên việc viết một chương trình java dễ dàng hơn, đơn giản, đỡ tốn công sửa lỗi.
+ Được nhà phát triển mô hình map/reduce dùng xử lý dữ liệu lớn hiệu quả, ...
- Nhược điểm:
+ Tool tràn lan (NetBeans, Eclipse, IntelliJ, JBuilder, vv), đặc tính là free nên hỗ trợ
không thoải mái như Visual Studio.
+ Bảo mật source code không tốt (phần nguyên lý hoạt động sẽ nêu rõ).
Ứng dụng phổ biến của ngôn ngữ lập trình Java:
+ Phát triển ứng dụng cho các thiết bị di động: Các ứng dụng phổ biến nhất
trong Google PlayStore có thể kể đến như Whatsapp, Facebook, Linkedin, FlipKart.
+ Phát triển ứng dụng web: Với sự tiến bộ của Thương mại điện tử, phạm vi
ngày càng mở rộng. Ví dụ như SAP, NetSuite, Alfresco, Liferay, Youtube, Google,
Netflix, Mifox (giải pháp ngân hàng), v.v
+ Dữ liệu lớn: Các công ty hiện đang tung hứng với lượng lớn dữ liệu. Các công cụ
Quản lý dữ liệu lớn như Hadoop sử dụng Java theo nhiều cách. Ngoài ra có Apache
Spark, Tìm kiếm Đàn hồi (ELK), Cassandra, HBASE, v.v.
được phát triển bởi JetBrains (trước đây gọi là IntelliJ), nó được cấp phép Apache
cho phiên bản cộng đồng và là một phiên bản thương mại độc quyền. [7]
Đặc điểm:
+ IntelliJ IDEA, "thủ lĩnh" của Java IDE cả về tính năng và giá cả, có hai phiên bản:
Community miễn phí và Ultimate mất phí với các tính năng bổ sung.
+ IntelliJ IDEA là một IDE đầy đủ tính năng cho các nhà phát triển Java EE và mọi
thứ như Java. IntelliJ IDEA đến từ nhà phát triển của công ty JetBranins, công ty
kinh doanh cung cấp công cụ phát triển trong 15 năm qua với nhiều thành công lớn.
=> Ưu điểm vượt trội so với các công cụ khác như eclipse, netbean, ... đó là:
Phiên bản Ultimate mang lại nhiều tính năng bổ sung như:
- Khuôn khổ Spring MVC, Spring Security, Spring Integration và các công cụ khác.
- Hỗ trợ các khuôn khổ như Node.js, Angular và React.
- Hỗ trợ cho các ngôn ngữ phát triển web như JavaScript, Coffeescript,v.v….
- Hỗ trợ Java EE bao gồm JSF, JAX-RS, CDI, JPA,v.v….
- Grails, GWT, Griffon và hỗ trợ Vaadin.
- Kiểm soát phiên bản với Team Foundation Server, Perforce, Clearcase, ...
- Upload ảnh: Ứng dụng cho phép chọn ảnh từ các thư mục máy tính.
- IPKMeans clustering: Thực hiện phân cụm (hay phân đoạn) ảnh sử dụng thuật
toán IPKMeans theo kỹ thuật đề xuất..
- KMeans clustering: Thực hiện phân cụm (hay phân đoạn) ảnh sử dụng thuật toán
KMeans theo kỹ thuật truyền thống.
- Download image: Sau khi phân cụm xong, thì ứng dụng cho phép download ảnh
về máy, để mở phóng to thu nhỏ ảnh sau phân cụm để so sánh.
5.2 Xây dựng chương trình.
+ Vào quyền root phân quyền file cấu hình chạy chương trình:
# exit
$ ./copy_images.sh
$ docker-compose exec master bash
# cd hadoop
+ Chạy chương trình:
# ./start.sh
hoạt động và 3, 5, 6 máy slave sẽ thực thi nhiệm vụ do master điều phối gán.
Giao diện ứng dụng: Trước và sau khi chương trình kết thúc (1 trường hơp).
Ảnh
✯ Đánh giá 1: Đánh giá tính chính xác của các thuật toán:
Bảng 12. Kết quả ảnh sau khi phân cụm kích thước 128x128 và 300x300.
Bảng 13. Kết quả ảnh sau khi phân cụm kích thước 500x500 và 700x700.
- Lưu ý: Thực nghiệm 1 node trên môi trường local và thực nghiệm nhiều node
trên môi trường docker.
Từ dữ liệu trong bảng 12 và 13, ta thấy tập tâm cụm sinh ra bởi 2 thuật toán
là như sau. Nói cách khác, hai thuật toán cho chất lượng phân cụm tương đương
nhau.
=> Kết luận: Qua việc thực thi thuật toán IPKMeasn, em thấy rằng kết quả của các
thuật toán KMeans và IPKMeans là:
+ Kết quả hoàn toàn giống nhau.
+ Đều có kết quả trung gian giống nhau qua mỗi bước lặp và số lần lặp giống nhau.
- Dẫn chứng kết quả thực nghiệm với ảnh kích thước 128x128
SVTH: VŨ THỊ HƯỜNG 63 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin
Bảng 14. Kết quả tâm cụm sinh ra sau khi hội tụ 1.
- Dẫn chứng kết quả thực nghiệm với ảnh kích thước 300x300.
Bảng 15. Kết quả tâm cụm sinh ra sau khi hội tụ 2.
Bảng 16. Kết quả thống kê thời gian thực thi 128x128.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMeans IPKMean KMeans IPKMeans
s
1 15240 28868 67604 110266 34477 88786
3 18040 222160 41796 1048615 27471 801110
5 22609 289987 22366 545326 18706 490508
7 18091 235359 27537 482611 28037 531585
Bảng 17. Kết quả thống kê thời gian thực thi 300x300.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMean IPKMeans KMean IPKMeans
s s
1 1010783 296501 886060 312146 1239018 493502
3 1139861 1057883 646876 803021 1392884 1689318
5 1472401 1366532 573857 640248 992572 1657507
7 1142224 1081177 1292151 1285137 854062 1151390
Bảng 18. Kết quả thống kê thời gian thực thi 500x500.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMeans IPKMeans KMeans IPKMeans
1 5016357 1295988 3358817 956783 3305970 862954
3 2390198 1001712 2390309 1214319 2954896 1264067
5 3820414 1515108 1481568 708253 1347377 718491
7 3066427 1011371 2863084 1065389 2135302 1007419
Bảng 19. Kết quả thống kê thời gian thực thi 700x700.
Số 3 cụm 5 cụm 7 cụm
nod KMeans IPKMean KMeans IPKMean KMeans IPKMean
s s s
e
1 1701830 4977636 1165473 5188732 1593614 7142650
1 3 7
3 1854306 6090505 1845489 7291294 1673414 8244356
4 1 0
5 1452499 3878907 1562626 6046730 1423501 6516630
6 4 2
7 1170687 4811877 1594570 7560861 1357302 5774530
6 0 8
=> Kết luận: Giữ tập dữ liệu không đổi và tăng số lượng cụm và số lượng node.
Thực hiện trên bộ dữ liệu kích thước khác nhau. Kết quả cho thấy:
+ IPKMeans có hiệu suất thời gian chạy rất tốt, khi kích thước ảnh tăng, thì hiệu
suất, thời lượng và tính ổn định của việc phân cụm dữ liệu lớn được cải thiện và
hiệu quả hơn nhiều so với giải thuật KMeans truyền thống. Do đó, thuật toán
IPKMeans có thể xử lý các bộ dữ liệu lớn một cách hiệu quả.
+ Tuy nhiên nhận thấy, hiệu suất thực thi của các thuật toán cũng 1 phần phụ thuộc
vào tâm cụm khởi tạo ngẫu nhiên.
- Tăng kích thước dữ liệu test, kết quả thử nghiệm với số node bằng = 7 và số cụm
=7 chạy trên môi trường docker.
Bảng 20. Kết quả đánh giá hiệu suất theo kích thước dữ liệu.
Kích thước ảnh (px) Thời gian Kmeans (ms) Thời gian IPKMeans (ms)
(a) (b)
(c) (d)
(a) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 128x128.
(b) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 300x300.
(c) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 500x500.
(d) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 700x700.
KẾT LUẬN
Đồ án tốt nghiệp với đề tài "Tìm hiểu thuật toán K-Mean dựa trên mô hình
MapReduce và ứng dụng trong phân cụm ảnh" em đã thu được một số kết quả
cũng như nhận thấy một số hạn chế như sau:
Kết quả đạt được:
- Tìm hiểu tổng quan về bài toán phân cụm ảnh và giải quyết bài toán.
- Tìm hiểu về điểm ảnh, màu của ảnh cách xử lý điểm ảnh và khôi phục ảnh.
- Nghiên cứu về mô hình lập trình MapReduce và Apache Hadoop.
- Nghiên cứu áp dụng thuật toán IPKMeans trên mô hình lập trình MapReduce trên
framework Hadoop.
- Lập trình cài đặt ứng dụng phân cụm ảnh sử dụng 2 thuật toán KMeans và
IPKMeans.
- Đánh giá thuật toán dựa trên tính chính xác và hiệu suất của thuật toán.
- Cài đặt thử nghiệm phân cụm song song nhiều cụm máy tính trên môi trường
server ảo sử dụng công nghệ docker và docker-compose.
Một số hạn chế:
- Đã cài đặt thử nghiệm song song trên nhiều máy ảo. Tuy nhiên chưa cài đặt thử
nghiệm nhiều cụm trên nhiều máy tính thật.
Mặc dù đã rất cố gắng trong quá trình thực hiện để hoàn thành đồ án tốt nhất,
song do năng lực và trình độ còn hạn chế nên khó tránh khỏi những thiếu sót. Kính
mong các thầy cô và các bạn quan tâm phản hồi, chỉ bảo để ứng dụng của em hoàn
thiện hơn.
Hướng phát triển:
Nhận thấy đây là lĩnh vực rất có tiềm năng. Trong thời gian tới em sẽ cố
gắng tiếp tục nghiên cứu sâu hơn về MapReduce cũng như các dự án con của
Hadoop để tìm được các công cụ hữu ích hơn cho việc song song hóa các bài toán
thực tế có độ phức tạp cao hơn và áp dụng cho những thuật toán học máy khác để
có thể khai thác, phân tích và xử lý dữ liệu lớn hiệu quả hơn.