Ứng dụng thuật toán k-means trên mô hình MapReduce trong phân tích ảnh

MỤC LỤC

Kiến trúc của Apache 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ữ 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 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 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 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.

Các trình nền của Hadoop

Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin + 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ộ. 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.

+ Phân chia job thành các task và phân công cho các Task Tracker thực hiệ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. Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin JobTracker là Master và DataNode & TaskTracker là slave.

Hình  21. Mô tả hoạt động của JobTracker.
Hình 21. Mô tả hoạt động của JobTracker.

PHÂN CỤM DỮ LIỆU VỚI THUẬT TOÁN KMEANS 3.1 Thuật toán KMeans

  • Ý tưởng và giải pháp MapReduce hoá thuật toán KMeans
    • Thuật toán IPKMeans – cải tiến của PKMeans cho phân cụm ảnh

      + Ý 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. + 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. ✯ Minh họa quá trình phân cụm như sau:. Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin. Minh họa quá trình phân cụm. ✯ Lưu đồ biểu diễn KMeans. Lưu đồ thuật toán KMeans. 3.1.2 Giải thuật của thuật toán KMeans. Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin. Giải thuật thuật toán KMeans. Số cụm k muốn phân cụm. Đầu ra: Danh sách k nhóm và các điểm thuộc mỗi nhóm. Chọn ngẫu nhiên K đối tượng trong N là trọng tâm ban đầu. Bước 2: Tính toán khoảng cách và phân cụm. n), tính toán khoảng cách dựa vào khoảng cách Euclide. 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,.

      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. Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin nhóm, tính tổng của vector trong từng nhóm nhỏ song song và cuối cùng là hàm reduce sẽ tính tổng chung và tính lại các trọng tâm mới. + Do các điểm được tính toán độc lập với nhau, nên chúng ta có thể lưu trữ các phần của dữ liệu trên nhiều máy khác nhau để tăng tốc tính toán.

      Gửi lại kết quả trả về hàm sẽ gộp các điểm thuộc cùng một nhóm, trộn dữ liệu và gửi tới hàm reduce để tính lại trọng tâm mới sau mỗi vòng lặp. Từ thuật toán KMeans [8] và mô hình xử lý dữ liệu phân tán MapReduce, 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. 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ả.

      - 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. Từ thuật toán PKMeans, em và TS.Nguyễn Tu Trung đã đưa ra bài báo được chấp nhận tại hội nghị khoa học thường niêm của Trường Đại học Thuỷ Lợi (2019), đã đưa ra thuật toán IPKMeans để phân cụm dữ liệu ảnh lớn.

      Hình  22. Mô hình phân cụm đơn giản.
      Hình 22. Mô hình phân cụm đơn giản.

      CƠ SỞ CÔNG NGHỆ 4.1 Hệ điều hành Linux

      Công nghệ docker

        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.". 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.

        (2) Khả năng di động (portable): Môi trường develop được dựng lên bằng docker có thể chuyển từ người này sang người khác mà không làm thay đổi cấu hình ở trong. (3) Versioning: Docker được tích hợp VCS-git, để tracking các dòng lệnh thiết lập, hay đánh dấu version. Các môi trường được dựng lên sau đó sẽ kiểm tra các mã ID trước đó, nếu trùng docker sẽ sử dụng lại.

        (6) Sharing: Docker Hub (public registry), các developer có thể tìm và sử dụng các môi trường được dựng sẵn. Chính vì thế, để sử dụng Docker trên Windows thì Docker sẽ phải run một máy ảo linux rồi mới có thể thực thi được. Cho tới hiện tại khi cài Docker trên Windows thì Docker sẽ cài một máy ảo Linux trên máy thật và Docker hoạt động dựa trên máy ảo Linux đó.

        => Vì thế em đã cài đặt docker và sử dụng công nghệ này để cấu hình chương trình chạy song song trên nhiều cụm máy tính ảo trên hệ điều hành linux. Hadoop cho phép hai chế độ cài đặt, thiết lập nút đơn để cài đặt một cụm giả trong đó mỗi nút chạy trong một luồng và thiết lập nhiều nút, trong mỗi nút được giả định chạy trong một máy chủ mạng riêng biệt.

        Hình  28. Kiến trúc của docker.
        Hình 28. Kiến trúc của docker.

        Ngôn ngữ lập trình Java

          - 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 đó. Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin 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ả,.

          + 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. + 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. Các công cụ Quản lý dữ liệu lớn như Hadoop sử dụng Java theo nhiều cách. Swing (javax.swing.*) là một framework mới được giới thiệu đầu tiên là java 1.2 bao gồm các đặc tính của AWT và thêm nhiều tính năng nổi trội khác.

          Không giống AWT, java Swing cung cấp các thành phần gọn nhẹ và độc lập nền tảng. + C (Controller): Quản lý thao tác của người dùng tác động lên GUI thông qua các sự kiện như click chuột, bàn phím,.

          Hình  32. Minh hoạ ứng dụng của Java.
          Hình 32. Minh hoạ ứng dụng của Java.

          XÂY DỰNG CHƯƠNG TRÌNH VÀ THỰC NGHIỆM ĐÁNH GIÁ

          Yêu cầu hệ thống

            $ : Chỉ thị chạy lệnh tại thư mục mã nguồn code ipkmeans-docker với quyền user. # : Chỉ thị chạy lệnh tại thư mục mã nguồn code iplmeans-docker với quyền root. $ docker-compose down (đối với trường hợp chương trình đã chạy và muốn thay đổi số lượng node).

            Thực nghiệm và đánh giá

              Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin chịu trách hiệm điều phối hoạt động vừa thực thi nhiệm vụ như slave (DataNode). - 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. + Đề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.

              => 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. + 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.

              Bảng 11. Ảnh dữ liệu đầu vào.
              Bảng 11. Ảnh dữ liệu đầu vào.