1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh

107 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 107
Dung lượng 18,95 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU (11)
    • 1.1 Đặt vấn đề (11)
    • 1.2 Mô tả đề tài (12)
    • 1.3 Bố cục tổng quan (12)
  • CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG (14)
    • 2.1 Các tác nhân (14)
    • 2.2 Biểu đồ ca sử dụng (14)
    • 2.3 Đặc tả ca sử dụng (16)
    • 2.4 Quy trình nghiệp vụ của hệ thống (34)
    • 2.5 Yêu cầu phi chức năng (41)
  • CHƯƠNG 3. THIẾT KẾ HỆ THỐNG (42)
    • 3.1 Mô hình hoá cấu trúc (42)
    • 3.2 Mô hình hoá tương tác (47)
    • 3.3 Thiết kế giao diện (57)
    • 3.4 Thiết kế chi tiết lớp (64)
    • 3.5 Thiết kế cơ sở dữ liệu (81)
  • CHƯƠNG 4. TRIỂN KHAI HỆ THỐNG (86)
    • 4.1 Mô hình lập trình (86)
    • 4.2 Các công nghệ sử dụng (87)
    • 4.3 Kết quả đạt được (89)
    • 4.4 Đánh giá hiệu năng hệ thống (99)
  • Kết luận (104)
    • CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (105)
      • 5.1 Kết luận (105)
      • 5.2 Hướng phát triển (106)

Nội dung

Hệ thống được thiết kế để hỗ trợ ba bài toán gán nhãn quan trọng, đó là Object detection, Semantic segmentation, và Image classification. Ngoài ra, hệ thống cũng hỗ trợ người dùng trong việc quản lý và thực hiện công việc hiệu quả. Cụ thể, các worker được cung cấp các gợi ý gán nhãn thông qua các mô hình học máy được tích hợp, và các công cụ xử lý ảnh để phục vụ cho công việc. Người yêu cầu dễ dàng nhận được kết quả tổng hợp công việc, đối chiếu/so sánh công việc giữa các worker. Do đó, hệ thống là một cách tiếp cận hiệu quả cho việc giải quyết thách thức gán nhãn một lượng lớn dữ liệu.

GIỚI THIỆU

Đặt vấn đề

Hiện nay, sự phát triển mạnh mẽ cuộc Cách mạng công nghiệp 4.0 đã mở ra cơ hội lớn cho việc nghiên cứu và phát triển các ứng dụng Trí tuệ nhân tạo (Artificial Intelligence - AI) AI được coi là một công nghệ then chốt nhằm nâng cao tính tự động hoá, tăng hiệu suất xử lý và dần thay thế con người trong nhiều công việc đặc thù Theo thống kê [1], doanh thu của lĩnh vực AI trên toàn cầu đã đạt 156,5 tỷ USD trong năm 2020, và tiếp tục tăng trong các năm tiếp theo Để giúp cho các ứng dụng trí tuệ nhân tạo gia tăng tính chính xác và mức độ hiệu quả, các nhà phát triển cần một lượng lớn các tập dữ liệu đầu vào và các nhãn chú thích của chúng Phần dữ liệu mô tả này, sau đó sẽ được sử dụng để huấn luyện các mô hình học máy cũng như việc đánh giá hiệu quả của hệ thống Hiện nay, các tập dữ liệu thô có số lượng rất lớn, tuy vậy lượng dữ liệu được gán nhãn chỉ chiếm một phần nhỏ Việc xây dựng những bộ dữ liệu gán nhãn đòi hỏi một khối lượng lớn công sức và thời gian, khiến nó trở thành một rào cản đối với mọi nhà phát triển ứng dụng Trí tuệ nhân taọ Để giải quyết vấn đề này, họ có thể tự đầu tư, xây dựng bộ dữ liệu gán nhãn Tuy nhiên, tính khả thi của giải pháp này không cao bởi hạn chế về nguồn lực hiện có, cũng như việc sử dụng lượng lớn lao động chỉ cho một giai đoạn cụ thể Một lựa chọn khác là tìm đến sự hỗ trợ của lực lượng lao động tự do - freelancer trong việc gán nhãn dữ liệu

Crowdsourcing (tìm kiếm nguồn lực từ đám đông) [2] là một mô hình tìm kiếm nguồn nhân lực, trong đó một cá nhân hoặc tổ chức kêu gọi sự tham gia thực hiện của cộng đồng thông qua mạng Internet để giải quyết một công việc nào đó Các công việc được hỗ trợ rất đa dạng như lập trình, thiết kế ý tưởng, thiết kế logo, khảo sát ý kiến, v.v Người tham gia hỗ trợ có thể nhận được các phần thưởng từ người kêu gọi cho phần công việc thực hiện.Với khả năng kết nối mạnh mẽ, thuận tiện đến một lượng lớn nhân lực tự do, crowsourcing là một hình thức phù hợp để triển khai các công việc cần thực hiện trong khoảng thời gian ngắn, có khối lượng công việc lớn, hay không định kỳ Chính vì vậy, mô hình này hoàn toàn phù hợp để áp dụng cho bài toán gán nhãn dữ liệu Hiện nay ở Việt Nam, cũng đã có một số hệ thống crowdsourcing, nhưng chưa có một hệ thống nào hỗ trợ thuận tiện cho bài toán gán nhãn dữ liệu

Nhận thấy được các vấn đề trên, đồ án này sẽ trình bày việc xây dựng một hệ thống crowdsourcing, giúp kết nối những người cần thuê gán nhãn dữ liệu (người yêu cầu) và những người thực hiện gán nhãn dữ liệu (người lao động) Hệ thống cung

2 cấp các cơ chế như tổng hợp kết quả, đánh giá chất lượng công việc của người lao động Trong giới hạn thời gian thực hiện đồ án, hệ thống hiện đưa ra giải pháp cho ba bài toán bao gồm phân loại ảnh, phát hiện đối tượng và phân đoạn ngữ nghĩa

Lý do lựa chọn ba bài toán này vì chúng có sự tương đồng và là những mũi nhọn nghiên cứu trong lĩnh vực Trí tuệ nhân tạo.

Mô tả đề tài

Hệ thống là một trang web cho phép kết nối người cần thuê gán nhãn dữ liệu (requester) và người lao động (worker) Các chức năng chính hệ thống cung cấp bao gồm: đăng công việc gán nhãn; tìm kiếm công việc; quản lý, tổng hợp, đánh giá kết quả gán nhãn; đánh giá chất lượng làm việc của người gán nhãn Ngoài ra, hệ thống cũng cung cấp các công cụ hỗ trợ cho việc gán nhãn dữ liệu, nhằm giảm thiểu công sức của người lao động và gia tăng độ chính xác

Ba bài toán mà hệ thống hỗ trợ:

- Object detection (Phát hiện đối tượng): Xác định vị trí hiện diện của các đối tượng trong các hình hộp giới hạn theo các nhãn khác nhau Hệ thống hỗ trợ worker các công cụ như phóng to, thu nhỏ, di chuyển, thay đổi độ tương phản, độ sáng của ảnh; vẽ, xoá, ẩn, hiện đường bao quanh đối tượng; hoàn tác thao tác; sử dụng mô hình AI có sẵn để tạo ra các đường bao

- Semantic segmentation (Phân đoạn ngữ nghĩa): Xác định các đối tượng bằng đường bao quanh của chúng sử dụng những nhãn cho trước Hệ thống hỗ trợ worker tương tự như bài toán Object detection

- Image classification (Phân loại ảnh): Xác định nhãn của bức ảnh là gì Hệ thống hỗ trợ worker các công cụ như phóng to, thu nhỏ, di chuyển ảnh

Một công việc do requester tạo sẽ được hệ thống phân chia thành nhiều phân công công việc, giao cho mỗi worker một phần việc Mỗi phân công gồm nhiều bức ảnh cần được gán nhãn Ngoài ra, một phân công có thể được giao cho nhiều người cùng thực hiện để tăng độ tin cậy về kết quả.

Bố cục tổng quan

Đồ án bao gồm 5 chương có nội dung như sau:

Chương 1: Trình bày thực trạng thiếu hụt nguồn dữ liệu được gán nhãn trong các hệ thống trí tuệ nhân tạo, nguyên nhân của vấn đề này Từ đó đưa ra giải pháp để giải quyết vấn đề trên

Chương 2: Phân tích yêu cầu của hệ thống, bao gồm các đối tượng sử dụng, quy trình nghiệp vụ, biểu đồ hoạt động, biểu đồ ca sử dụng, đặc tả ca sử dụng và các yêu cầu phi chức năng của hệ thống

Chương 3: Thiết kết hệ thống, bao gồm các biểu đồ mô hình hoá cấu trúc, mô hình hoá sự tương tác, thiết kế chi tiết lớp, cơ sở dữ liệu, thiết kế giao diện, kiến trúc hệ thống và các bài toán được hỗ trợ

Chương 4: Các công nghệ mà hệ thống sử dụng, trình bày chi tiết các bài toán, đánh giá hiệu năng của hệ thống và kết quả đạt được

Chương 5: Trình bày kết luận, những gì đã làm được, chưa làm được của đồ án và đưa ra hướng phát triển trong tương lai

PHÂN TÍCH HỆ THỐNG

Các tác nhân

Hệ thống có 4 tác nhân là Guest, Requester, Worker, Admin

• Guest là người truy cập vào hệ thống nhưng chưa đăng nhập Sau khi đăng nhập thành công Guest sẽ trở thành Requester, Worker, Admin tương ứng với vai trò của mình

• Requester là người thuê gán nhãn dữ liệu.

• Worker là người thực hiện gán nhãn dữ liệu

• Admin là người quản trị hệ thống, có quyền xoá tài khoản, xoá công việc, xoá bình luận.

Biểu đồ ca sử dụng

Biểu đồ ca sử dụng tổng quan

Hình 2.1 Biểu đồ ca sử dụng tổng quan

Biểu đồ phân rã ca sử dụng Requester quản lý công việc

Hình 2.2 Biểu đồ phân rã ca sử dụng Requester quản lý công việc

Biểu đồ phân rã ca sử dụng Tìm kiếm worker

Hình 2.3 Biểu đồ phân rã ca sử dụng Tìm kiếm worker

Biểu đồ phân rã ca sử dụng Tìm việc làm

Hình 2.4 Biểu đồ phân rã ca sử dụng Tìm việc làm

Đặc tả ca sử dụng

Ca sử dụng UC01: Đăng ký

Mã usecase UC01 Tên usecase Đăng ký

Mục đích sử dụng Đăng ký để tạo tài khoản người dùng mới

Sự kiện kích hoạt Khi click vào button "Đăng ký"

Luồng sự kiện chính STT Thực hiện Hành động

1 Guest Chọn chức năng đăng ký

2 Hệ thống Hiển thị màn hình đăng ký

3 Guest Nhập thông tin (mô tả phía dưới *)

4 Guest Yêu cầu đăng ký

5 Hệ thống Kiểm tra xem Guest đã nhập hợp lệ các trường bắt buộc nhập hay chưa Kiểm tra email đã tồn tại hay chưa

6 Hệ thống Tạo tài khoản, trả về thông báo thành công

Luồng sự kiện thay thế STT Thực hiện Hành động

5a Hệ thống Thông báo lỗi: Cần nhập các trường bắt buộc nhập nếu Guest nhập thiếu

5b Hệ thống Thông báo lỗi: Các trường nhập không đúng định dạng 5c Hệ thống Thông báo lỗi: Email đã tồn tại 6a Hệ thống Tạo tài khoản lỗi: Thông báo lỗi

Hậu điều kiện Guest đăng ký thành công tài khoản, hệ thống đã lưu tài khoản mới, sẵn sàng đăng nhập

Bảng 2.1 Bảng đặc tả ca sử dụng Đăng ký

Dữ liệu đầu vào các trường thông tin cá nhân gồm

STT Trường dữ liệu Mô tả Bắt buộc? Điều kiện hợp lệ

1 Email có duong@gmail.com

2 Họ tên có Nguyễn Tùng Dương

5 Xác nhận mật khẩu có 123456

7 Vai trò Requester hoặc worker có worker

8 Ảnh đại diện không https://cloudinary.com/abc

Bảng 2.2 Bảng dữ liệu đầu vào ca sử dụng Đăng ký

Ca sử dụng UC02: Đăng nhập

Mã usecase UC02 Tên usecase Đăng nhập

Mục đích sử dụng Xác thực người dùng, cho phép người dùng sử dụng các chức năng của tác nhân "admin", "requester", "worker"

Sự kiện kích hoạt Guest click vào button đăng nhập

Luồng sự kiện chính STT Thực hiện Hành động

1 Guest chọn chức năng Đăng nhập

2 Hệ thống Hiển thị màn hình đăng nhập

3 Guest Nhập email, mật khẩu, vai trò (mô tả phía dưới *)

4 Guest Yêu cầu đăng nhập

5 Hệ thống Kiểm tra tính hợp lệ và đầy đủ của các trường Guest nhập

6 Hệ thống Kiểm tra tài khoản tồn tại hay không

7 Hệ thống Chuyển hướng đến màn hình "Trang chủ"

Luồng sự kiện thay thế STT Thực hiện Hành động

5a Hệ thống Thông báo lỗi : Guest cần nhập các trường bắt buộc nếu thiếu

6a Hệ thống Thông báo lỗi : Thông tin đăng nhập không đúng nếu không tìm thấy thông tin như Guest nhập

Hậu điều kiện Hệ thống lưu thông tin đăng nhập của người sử dụng, tạo lập một phiên hoạt động, lưu trạng thái, cho phép người sử dụng có thể sử dụng các chức năng và vai trò của họ

Bảng 2.3 Bảng đặc tả ca sử dụng Đăng nhập

Dữ liệu đầu vào của thông tin cá nhân bao gồm những trường sau:

Bắt buộc? Điều kiện hợp lệ

1 Email có duong@gmail.com

Bảng 2.4 Bảng dữ liệu đầu vào ca sử dụng Đăng nhập

Ca sử dụng UC03: Worker tìm kiếm việc làm

Mã usecase UC03 Tên usecase Worker tìm kiếm việc làm

Mục đích sử dụng Cho phép người dùng tìm kiếm việc làm theo các giá trị của từng thuộc tính

Sự kiện kích hoạt Người dùng click vào tìm kiếm việc làm

Luồng sự kiện chính STT Thực hiện Hành động

1 Worker Chọn chức năng "tìm kiếm việc làm"

2 Hệ thống Hiển thị màn hình tìm kiếm việc làm

3 Worker Nhập các trường tìm kiếm (mô tả phía dưới *)

4 Worker Ấn chọn tìm kiếm

5 Hệ thống Thực hiện truy vấn vào cơ sở dữ liệu theo các trường đã nhập

6 Hệ thống Trả về danh sách tìm kiếm

7 Worker Ấn nút yêu cầu nhận việc trên công việc mong muốn

8 Hệ thống Lưu thông tin yêu cầu làm việc của worker

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống trả về danh sách tìm kiếm cho người dùng

Bảng 2.5 Bảng đặc tả ca sử dụng Worker tìm kiếm việc làm

STT Trường dữ liệu Bắt buộc? Điều kiện hợp lệ

3 Yêu cầu chất lượng worker không

Bảng 2.6 Bảng dữ liệu đầu vào ca sử dụng Worker tìm kiếm việc làm

Ca sử dụng UC04: Tìm kiếm worker

Mã usecase UC04 Tên usecase Tìm kiếm worker

Mục đích sử dụng Cho phép người dùng tìm kiếm worker theo từng giá trị của thuộc tính

Sự kiện kích hoạt Người dùng click vào tìm kiếm worker

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "tìm kiếm worker"

2 Hệ thống Hiển thị màn hình tìm kiếm worker

3 Requester Nhập các trường tìm kiếm (mô tả phía dưới *)

4 Requester Ấn chọn tìm kiếm

5 Hệ thống Thực hiện truy vấn vào cơ sở dữ liệu theo các trường đã nhập

6 Hệ thống Trả về danh sách tìm kiếm

7 Requester Click vào worker muốn xem

8 Hệ thống Hiển thị màn hình chi tiết worker

9 Requester Ấn nút mời làm việc

10 Hệ thống Lưu thông tin mời làm việc của requester

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống trả về danh sách tìm kiếm cho người dùng

Bảng 2.7 Bảng đặc tả ca sử dụng Tìm kiếm worker

Mô tả trường dữ liệu

STT Trường dữ liệu Bắt buộc? Điều kiện hợp lệ

2 Chất lượng làm việc của worker không

Bảng 2.8 Bảng dữ liệu đầu vào ca sử dụng Tìm kiếm worker

Ca sử dụng UC05: Requester tạo việc làm

Mã usecase UC05 Tên usecase Requester tạo việc làm

Mục đích sử dụng Cho phép người dùng tạo việc làm

Sự kiện kích hoạt Người dùng click vào Tạo việc làm

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "Tạo việc làm"

2 Hệ thống Hiển thị màn hình tạo việc làm

3 Requester Nhập các trường của công việc(mô tả phía dưới *)

4 Requester Ấn nút Tạo việc

5 Hệ thống Kiểm tra tính hợp lệ và đầy đủ của các trường người dùng nhập

6 Hệ thống Tạo công việc

7 Requester Click vào worker muốn xem

8 Hệ thống Hiển thị màn hình chi tiết worker

9 Requester Ấn nút mời làm việc

10 Hệ thống Lưu thông tin mời làm việc của requester

Luồng sự kiện thay thế

Bảng 2.9 Bảng đặc tả ca sử dụng Requester tạo việc làm

Mô tả các trường tìm kiếm

STT Trường dữ liệu Bắt buộc? Điều kiện hợp lệ

3 Mô tả công việc có

4 Số lượng task mỗi worker có

5 Tiền thưởng mỗi task có

6 Thời gian hết hạn có

7 Số lượng bản sao của mỗi assignment có

8 Yêu cầu chất lượng của worker có

9 Dữ liệu của công việc có

Bảng 2.10 Bảng dữ liệu đầu vào ca sử dụng Requester tạo việc làm

Ca sử dụng UC06: Requester quản lý thông tin cá nhân

Mã usecase UC06 Tên usecase

Requester quản lý thông tin cá nhân

Mục đích sử dụng Cho phép người dùng xem, chỉnh sửa thông tin các nhân của mình

Sự kiện kích hoạt Người dùng ấn vào Thông tin các nhân

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "Quản lý thông tin các nhân"

2 Hệ thống Hiển thị màn hình thông tin các nhân

3 Requester Chọn sửa thông tin cá nhân

4 Hệ thống Hiển thị màn hình sửa thông tin cá nhân

5 Requester Nhập các giá trị cần sửa, nhấn submit

6 Hệ thống Lưu lại thông tin đã cập nhật, hiển thị thông tin đã sửa

Luồng sự kiện thay thế STT Thực hiện

6a Hệ thống Thông báo lỗi: sai định dạng các giá trị nhập Hậu điều kiện Hệ thống cập nhật các thông tin của requester

Bảng 2.11 Bảng đặc tả ca sử dụng Requester quản lý thông tin cá nhân

Mô tả các trường cập nhật :

STT Trường dữ liệu Điều kiện hợp lệ Ví dụ

1 Họ tên nguyen tung duong

4 Ảnh đại diện https://cloudinary.com/abc

Bảng 2.12 Bảng dữ liệu đầu vào ca sử dụng Requester quản lý thông tin cá nhân

Ca sử dụng UC07: Worker quản lý thông tin cá nhân

Mã usecase UC07 Tên usecase Worker quản lý thông tin cá nhân

Mục đích sử dụng Cho phép người dùng xem, chỉnh sửa thông tin các nhân của mình

Sự kiện kích hoạt Người dùng ấn vào Thông tin các nhân

Luồng sự kiện chính STT Thực hiện Hành động

1 Worker Chọn chức năng "Quản lý thông tin các nhân"

2 Hệ thống Hiển thị màn hình thông tin các nhân

3 Worker Chọn sửa thông tin cá nhân

4 Hệ thống Hiển thị màn hình sửa thông tin cá nhân

5 Worker Nhập các giá trị cần sửa, nhấn submit

6 Hệ thống Lưu lại thông tin đã cập nhật, hiển thị thông tin đã sửa

Luồng sự kiện thay thế STT Thực hiện Hành động

6a Hệ thống Thông báo lỗi: sai định dạng các giá trị nhập

Hậu điều kiện Hệ thống cập nhật các thông tin của worker

Bảng 2.13 Bảng đặc tả ca sử dụng Worker quản lý thông tin cá nhân

Mô tả các trường cập nhật :

STT Trường dữ liệu Điều kiện hợp lệ Ví dụ

1 Họ tên nguyen tung duong

4 Ảnh đại diện https://cloudinary.com/abc

Bảng 2.14 Bảng dữ liệu đầu vào ca sử dụng Worker quản lý thông tin cá nhân

Ca sử dụng UC08: Requester phê duyệt yêu cầu làm việc

Mã usecase UC08 Tên usecase

Requester phê duyệt yêu cầu làm việc

Mục đích sử dụng Cho phép requester quản lý công việc

Sự kiện kích hoạt Requester ấn vào quản lý công việc

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "Quản lý công việc"

2 Hệ thống Hiển thị màn hình danh sách công việc

3 Requester Click vào công việc muốn quản lý

4 Hệ thống Trả về danh sách worker yêu cầu làm việc

5 Requester Chấp nhận hoặc từ chối worker làm công việc của mình

6 Hệ thống Lưu lại thông tin worker đc chấp nhận hoặc từ chối

Luồng sự kiện thay thế

Bảng 2.15 Bảng đặc tả ca sử dụng Requester phê duyệt yêu cầu làm việc

Ca sử dụng UC09: Requester quản lý công việc

Mã usecase UC09 Tên usecase Requester quản lý công việc

Mục đích sử dụng Cho phép người dùng quản lý công việc

Sự kiện kích hoạt Requester ấn vào "Quản lý công việc"

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "Quản lý công việc"

2 Hệ thống Hiển thị màn hình danh sách công việc

3 Requester Click vào công việc muốn quản lý

4 Hệ thống Trả về danh sách phân công công việc của công việc đó

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị trang quản lý công việc

Bảng 2.16 Bảng đặc tả ca sử dụng Requester quản lý công việc

Ca sử dụng UC10: Requester quản lý phân công công việc

Mã usecase UC10 Tên usecase Requester quản lý phân công công việc

Mục đích sử dụng Cho phép requester quản lý phân công công việc của từng công việc

Sự kiện kích hoạt Requester ấn vào phân công công việc ở Danh sách phân công công việc

Luồng sự kiện chính STT Thực hiện Hành động

1 Requester Chọn chức năng "Quản lý công việc"

2 Hệ thống Hiển thị màn hình danh sách công việc

3 Requester Click vào công việc muốn quản lý

4 Hệ thống Trả về danh sách phân công công việc của công việc đó

5 Requester Người dùng ấn vào phân công công việc ở danh sách phân công công việc

6 Hệ thống Trả về trang kết quả các đơn vị công việc của phân công công việc

7 Requester Chấp nhận hoặc từ chối đơn vị công việc

8 Hệ thống Lưu lại thông tin

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị trang quản lý phân công công việc, chấp nhận từ chối đơn vị công việc

Bảng 2.17 Bảng đặc tả ca sử dụng Requester quản lý phân công công việc

Ca sử dụng UC11: Worker làm việc

Mã usecase UC11 Tên usecase Worker làm việc

Mục đích sử dụng Cho phép worker làm việc

Sự kiện kích hoạt Worker ấn vào công việc ở danh sách công việc

Luồng sự kiện chính STT Thực hiện Hành động

1 Worker Chọn chức năng "Quản lý công việc"

2 Hệ thống Hiển thị màn hình danh sách công việc

3 Worker Click vào công việc muốn làm

4 Hệ thống Trả về màn hình làm việc

5 Worker Người dùng làm việc và nộp kết quả

6 Hệ thống Lưu kết quả làm việc

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị màn hình làm việc, lưu kết quả làm việc

Bảng 2.18 Bảng đặc tả ca sử dụng Worker làm việc

Ca sử dụng UC12: Admin quản lý requester

Mã usecase UC12 Tên usecase Admin quản lý requester

Mục đích sử dụng Cho phép admin quản lý requester

Sự kiện kích hoạt Admin ấn vào tìm kiếm requester

Luồng sự kiện chính STT Thực hiện Hành động

1 Admin Chọn chức năng "Tìm kiếm requester"

2 Hệ thống Hiển thị màn hình Tìm kiếm requester

3 Admin Ấn nút xóa requester

4 Hệ thống Lưu thông tin

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị danh sách requester, lưu thông tin

Bảng 2.19 Bảng đặc tả ca sử dụng Admin quản lý requester

Ca sử dụng UC13: Admin quản lý worker

Mã usecase UC13 Tên usecase Admin quản lý worker

Mục đích sử dụng Cho phép admin quản lý worker

Sự kiện kích hoạt Admin ấn vào tìm kiếm worker

Luồng sự kiện chính STT Thực hiện Hành động

1 Admin Chọn chức năng "Tìm kiếm worker"

2 Hệ thống Hiển thị màn hình Tìm kiếm worker

3 Admin Ấn nút xóa worker

4 Hệ thống Lưu thông tin Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị danh sách worker, lưu thông tin

Bảng 2.20 Bảng đặc tả ca sử dụng Admin quản lý worker

Ca sử dụng UC14: Admin quản lý công việc

Mã usecase UC14 Tên usecase Admin quản lý công việc

Mục đích sử dụng Cho phép admin quản lý công việc

Sự kiện kích hoạt Admin ấn vào tìm kiếm công việc

Luồng sự kiện chính STT Thực hiện Hành động

1 Admin Chọn chức năng "Tìm kiếm công việc"

2 Hệ thống Hiển thị màn hình Tìm kiếm công việc

3 Admin Ấn nút xóa công việc

4 Hệ thống Lưu thông tin

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị danh sách công việc, lưu thông tin người dùng

Bảng 2.21 Bảng đặc tả ca sử dụng Admin quản lý công việc

Ca sử dụng UC15: Worker quản lý công việc

Mã usecase UC15 Tên usecase Worker quản lý công việc

Mục đích sử dụng Cho phép người dùng quản lý công việc

Sự kiện kích hoạt Worker ấn vào "Quản lý công việc"

Luồng sự kiện chính STT Thực hiện Hành động

1 Worker Chọn chức năng "Quản lý công việc"

2 Hệ thống Hiển thị màn hình danh sách công việc

3 Worker Click vào công việc muốn quản lý

4 Hệ thống Trả về trang chi tiết công việc

Luồng sự kiện thay thế

Hậu điều kiện Hệ thống hiển thị trang quản lý công việc

Bảng 2.22 Bảng đặc tả ca sử dụng Worker quản lý công việc

Quy trình nghiệp vụ của hệ thống

Hình 2.5 Biểu đồ hoạt động Đăng ký

Hình 2.6 Biểu đồ hoạt động Đăng nhập

Quy trình "Worker tìm việc làm"

Hình 2.7 Biểu đồ hoạt động Worker tìm việc làm

Quy trình "Requester tạo việc làm"

Hình 2.8 Biểu đồ hoạt động Requester tạo việc làm

Quy trình "Requester quản lý công việc"

Hình 2.9 Biểu đồ hoạt động Requester quản lý công việc

Quy trình "Requester quản lý phân công công việc"

Hình 2.10 Biểu đồ hoạt động Requester quản lý phân công công việc

Quy trình "Quản lý thông tin cá nhân"

Hình 2.11 Biểu đồ hoạt động Quản lý thông tin cá nhân

Quy trình "Worker quản lý công việc"

Hình 2.12 Biểu đồ hoạt động Worker quản lý công việc

Quy trình "Worker làm việc"

Hình 2.13 Biểu đồ hoạt động Worker làm việc

Quy trình "Tìm kiếm worker"

Hình 2.14 Biểu đồ hoạt động Tìm kiếm worker

Quy trình "Admin quản lý người dùng"

Hình 2.15 Biểu đồ hoạt động Admin quản lý người dùng

Quy trình "Admin quản lý công việc"

Hình 2.16 Biểu đồ hoạt động Admin quản lý công việc

Quy trình "Requester phê duyệt yêu cầu làm việc"

Hình 2.17 Biểu đồ hoạt động Requester phê duyệt yêu cầu làm việc

Yêu cầu phi chức năng

- Mật khẩu đăng nhập của người dùng được phải được mã hoá Không ai có thể truy cập được thông tin này

- Hệ thống phải đáp ứng được nhu cầu sử dụng của nhiều người truy cập cùng lúc Thời gian phản hồi và độ trễ phải ở mức chấp nhận được

- Giao diện hệ thống phải thân thiện với người dùng, ít nhất chạy được trên trình duyệt Chrome, Microsoft Edge

- Hệ thống sử dụng ngôn ngữ tiếng Việt

- Hệ thống phải đảm bảo khả năng nâng cấp và mở rộng các tính năng Các tính năng sau không ảnh hưởng đến các tính năng đã phát triển rồi

THIẾT KẾ HỆ THỐNG

Mô hình hoá cấu trúc

Ca sử dụng UC01: Đăng ký

Hình 3.1 Biểu đồ lớp Đăng ký

Ca sử dụng UC02: Đăng nhập

Hình 3.2 Biểu đồ lớp Đăng nhập

Ca sử dụng UC03: Worker tìm kiếm việc làm

Hình 3.3 Biểu đồ lớp Tìm kiếm việc làm

Ca sử dụng UC04: Tìm kiếm worker

Hình 3.4 Biểu đồ lớp Tìm worker

Ca sử dụng UC05: Tạo việc làm

Hình 3.5 Biểu đồ lớp Tạo việc làm

Ca sử dụng UC06: Quản lý thông tin cá nhân requester

Hình 3.6 Biểu đồ lớp Quản lý thông tin cá nhân của requester

Ca sử dụng UC07: Quản lý thông tin các nhân worker

Hình 3.7 Biểu đồ lớp Quản lý thông tin cá nhân của worker

Ca sử dụng UC08: Requester phê duyệt yêu cầu làm việc

Hình 3.8 Biểu đồ lớp Requester phê duyệt yêu cầu làm việc

Ca sử dụng UC09: Requester quản lý công việc

Hình 3.9 Biểu đồ lớp Requester quản lý công việc

Ca sử dụng UC10: Requester quản lý phân công công việc

Hình 3.10 Biểu đồ lớp Requester quản lý phân công công việc

Ca sử dụng UC11: Worker làm việc

Hình 3.11 Biểu đồ lớp Woker làm việc

Ca sử dụng UC12: Admin quản lý requester

Hình 3.12 Biểu đồ lớp Admin quản lý requester

Ca sử dụng UC13: Admin quản lý worker

Hình 3.13 Biểu đồ lớp Admin quản lý worker

Ca sử dụng UC14: Admin quản lý công việc

Hình 3.14 Biểu đồ lớp Admin quản lý công việc

Ca sử dụng UC15: Worker quản lý công việc

Hình 3.15 Biểu đồ lớp Worker quản lý công việc

Mô hình hoá tương tác

Biểu đồ tuần tự cho ca sử dụng "Đăng ký"

Hình 3.16 Biểu đồ tuần tự cho ca sử dụng Đăng ký

Biểu đồ tuần tự cho ca sử dụng "Đăng nhập"

Hình 3.17 Biểu đồ tuần tự cho ca sử dụng Đăng nhập

Biểu đồ tuần tự cho ca sử dụng "Tìm kiếm việc làm"

Hình 3.18 Biểu đồ tuần tự cho ca sử dụng Tìm kiếm việc làm

Biểu đồ tuần tự cho ca sử dụng "Tìm kiếm worker"

Hình 3.19 Biểu đồ tuần tự cho ca sử dụng Tìm kiếm worker

Biểu đồ tuần tự cho ca sử dụng "Tạo việc làm"

Hình 3.20 Biểu đồ tuần tự ca sử dụng Tạo việc làm

Biểu đồ tuần tự cho ca sử dụng "Requester quản lý thông tin cá nhân"

Hình 3.21 Biểu đồ tuần tự cho ca sử dụng Requester quản lý thông tin cá nhân

Biểu đồ tuần tự cho ca sử dụng "Worker quản lý thông tin cá nhân"

Hình 3.22 Biểu đồ tuần tự cho ca sử dụng Worker quản lý thông tin cá nhân

Biểu đồ tuần tự cho ca sử dụng "Requester phê duyệt yêu cầu làm việc"

Hình 3.23 Biểu đồ tuần tự cho ca sử dụng Requester phê duyệt yêu cầu làm việc

Biểu đồ tuần tự "Requester quản lý công việc"

Hình 3.24 Biểu đồ tuần tự cho ca sử dụng Requester quản lý công việc

Biểu đồ tuần tự "Requester quản lý phân công công việc"

Hình 3.25 Biều đồ tuần tự cho ca sử dụng Requester quản lý phân công công việc

Biểu đồ tuần tự ca sử dụng "Worker làm việc"

Hình 3.26 Biểu đồ tuần tự cho ca sử dụng Worker làm việc

Biểu đồ tuần tự ca sử dụng "Admin quản lý requester"

Hình 3.27 Biểu đồ tuần tự cho ca sử dụng Admin quản lý requester

Biểu đồ tuần tự ca sử dụng "Admin quản lý worker"

Hình 3.28 Biểu đồ tuần tự cho ca sử dụng Admin quản lý worker

Biểu đồ tuần tự ca sử dụng "Admin quản lý công việc"

Hình 3.29 Biểu đồ tuần tự cho ca sử dụng Admin quản lý công việc

Biểu đồ tuần tự ca sử dụng "Worker quản lý công việc"

Hình 3.30 Biểu đồ tuần tự cho ca sử dụng Worker quản lý công việc

Thiết kế giao diện

Giao diện dành cho Guest

Hình 3.31 Giao diện Đăng ký

Hình 3.32 Giao diện Đăng nhập

Hình 3.33 Giao diện Requester tạo công việc

Hình 3.34 Giao diện Tìm kiếm worker

Hình 3.35 Giao diện Quản lý thông tin cá nhân

Hình 3.36 Giao diện Quản lý công việc

Hình 3.37 Giao diện Quản lý phân công công việc

Hình 3.38 Giao diện Thông tin chi tiết worker

Hình 3.39 Giao diện Tìm kiếm việc làm

Hình 3.40 Giao diện Worker làm việc

Hình 3.41 Giao diện Thông tin chi tiết công việc

Hình 3.42 Giao diện Worker quản lý công việc

Hình 3.43 Giao diện Quản lý thông tin cá nhân

Thiết kế chi tiết lớp

Sơ đồ lớp tổng quan

Hình 3.44 Sơ đồ lớp gói Guest

Hình 3.45 Sơ đồ lớp gói Worker

Hình 3.46 Sơ đồ lớp gói Requester

Hình 3.47 Sơ đồ lớp gói Admin

Hình 3.48 Sơ đồ lớp gói Truy cập và xử lý dữ liệu

Hình 3.49 Sơ đồ gói lớp Dự đoán Đặc tả chi tiết các lớp

Giao diện Đăng ký tài khoản b) Danh sách thuộc tính

Tên Phạm vi truy cập Kiểu dữ liệu Mô tả email public string email password public string mật khẩu name public string họ tên role public string vai trò phone public string số điện thoại

DoB public date ngày sinh avatar public string đường dẫn ảnh đại diện c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả

57 register() public email string password string name string role string phone string

DoB date avatar string void gửi yêu cầu đăng ký notifyFailure() public error string void thông báo lỗi cho người dùng

Giao diện Đăng nhập b) Danh sách thuộc tính

Tên Phạm vi truy cập Kiểu dữ liệu Mô tả email public string email password public string mật khẩu role public string vai trò c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về

Mô tả login() public email string password string role string void gửi yêu cầu đăng nhập notifyFailure() public error string void thông báo lỗi cho người dùng

Create_Job_Interface a) Mục đích

Giao diện Tạo công việc

Tên Phạm vi truy cập

Mô tả name public string tên công việc description public string mô tả công việc number_duplicate public int số bản sao của một phân công công công việc reward_per_task public int thưởng mỗi đơn vị công việc task_per_assignment public int số đơn vị công việc mỗi phân công công việc deadline public date hạn hoàn thành công việc labels public array danh sách nhãn dữ liệu data public array danh sách dữ liệu cần gán nhãn qualification public object chất lượng làm việc yêu cầu của worker, gồm + tổng số công việc đã làm

+ tỉ lệ đơn vị công việc được chấp nhận

+ tỉ lệ đơn vị công việc đã hoàn thành

+ tổng đơn vị công việc được chấp nhận

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về

Mô tả createJob() public name string description string number_duplicate int reward_per_task int task_per_assignment int deadline date labels array data array qualification object void gửi yêu cầu tạo công việc

Requester_Manage_Job_Interface a) Mục đích

Giao diện Requester quản lý công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả showListJob() public requesterId string Array

< Job> gửi yêu cầu lấy danh sách công việc của requester

Find_Worker_Interface a) Mục đích

Giao diện Tìm kiếm worker b) Danh sách thuộc tính

Tên Phạm vi truy cập

Kiểu dữ liệu Mô tả name public string tên công việc qualification public object chất lượng làm việc yêu cầu của worker, gồm

+ tổng số công việc đã làm + tỉ lệ đơn vị công việc được chấp nhận

+ tỉ lệ đơn vị công việc đã hoàn thành

+ tổng đơn vị công việc được chấp nhận c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả findWorker() public name string qualification object

gửi yêu cầu tìm kiếm worker inviteWorker() public workerId string void gửi yêu cầu mời worker

Approve_Worker_Join_Job_Interface a) Mục đích

Giao diện Phê duyệt yêu cầu tham gia công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả accept() public jobId string workerId string void chấp nhận yêu cầu tham gia công việc reject() public jobId string workerId string void từ chối yêu cầu tham gia công việc

Manage_Assignment_Interface a) Mục đích

Giao diện Quản lý phân công công việc b) Danh sách thuộc tính

Tên Phạm vi truy cập

Mô tả acceptTask() public void chấp nhận đơn vị công việc rejectTask() public void từ chối đơn vị làm việc nextTask() public void chuyển sang đơn vị công việc tiếp theo previousTask() public void quay lại đơn vị công việc trước đó notifyFailure() public void thông báo lỗi cho người dùng

List_Assignment_Interface a) Mục đích

Giao diện Danh sách phân công công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về Mô tả showListAssignment() public Array

lấy danh sách phân công công việc selectAssignment() public assignmentId string void xem chi tiết phân công công việc

62 downloadData() public assignmentId string void tải về dữ liệu gán nhãn notifyFailure() public void thông báo lỗi cho người dùng

Worker_Detail_Interface a) Mục đích

Giao diện Thông tin chi tiết worker b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về

Mô tả rate() public star int void đánh giá worker comment() public content string void bình luận về worker

Find_Job_Interface a) Mục đích

Giao diện Tìm kiếm công việc b) Danh sách thuộc tính

Tên Phạm vi truy cập

Mô tả name public string tên công việc qualification public object chất lượng làm việc yêu cầu của worker, gồm + tổng số công việc đã làm + tỉ lệ đơn vị công việc được chấp nhận

+ tỉ lệ đơn vị công việc đã hoàn thành

+ tổng đơn vị công việc được chấp nhận category public string loại công việc c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả findJob() public name string qualification object category string

< Job> đánh giá worker joinJob() public content string void bình luận về worker

Giao diện Quản lý thông tin cá nhân b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả showInfo() public void hiển thị thông tin người dùng updateInfo() public user User void cập nhật thông tin người dùng changePassword() public password string void đổi mật khẩu

64 b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả showJob() public Job hiển thị công việc submitTask() public data object void nộp kết quả đơn vị công việc nextTask() public void chuyển sang đơn vị công việc tiếp theo previousTask() public void chuyển sang đơn vị công việc trước đó

Worker_Manage_Job _Interface a) Mục đích

Giao diện Worker quản lý công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về

Mô tả showListJob() public Array

< Job> hiển thị danh sách công việc

Find_Requester_Interface a) Mục đích

Giao diện Tìm kiếm requester b) Danh sách thuộc tính

Tên Phạm vi truy cập Kiểu dữ liệu Mô tả name public string tên requester

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về Mô tả findRequester() public name string Array

tìm kiếm requester deleteRequester() public requesterId string void xoá requester

Woker_Controller a) Mục đích Điều khiển nghiệp vụ của worker b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả getDetailWorker() public workerId string Worker lấy thông tin chi tiết worker updateWorker() public worker Worker void cập nhật worker getListWorker() public name string qualification object array

lấy danh sách worker deleteWorker() public void xoá worker Requester_Controller a) Mục đích Điều khiển nghiệp vụ của requester b) Danh sách thuộc tính c) Danh sách phương thức

Tham số đầu vào Kiểu trả về Mô tả

66 truy cập getDetailRequester() public requesterId string Requester lấy thông tin chi tiết requester updateRequester() public requester Requester void cập nhật requester getListRequester () public name string Array

lấy danh sách requester deleteRequester () public void xoá requester

Comment_Controller a) Mục đích Điều khiển nghiệp vụ bình luận b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về Mô tả getListComment() public Array

lấy danh sách bình luận updateComment () public comment Comment void cập nhật bình luận deleteComment () public void xoá bình luận

Login_Controller a) Mục đích Điều khiển nghiệp vụ đăng nhập b) Danh sách thuộc tính

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về

Mô tả notifyFailure() public void thông báo lỗi cho người dùng checkAuthentication

() public email string password string role string boolean xác thực người dùng

Register_Controller a) Mục đích Điều khiển nghiệp vụ Đăng ký tài khoản b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Mô tả notifyFailure() public void thông báo lỗi cho người dùng checkEmailExist () public email string boolean kiểm tra email đã tồn tại chưa saveUser() public user User void Lưu thông tin người dùng

Job_Controller a) Mục đích Điều khiển nghiệp vụ Công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về

68 createJob () public job Job void tạo công việc getListJob() public Job lấy danh sách công việc getDetailJob() public jobId string Job lấy chi tiết công việc acceptWorkRequest() public void chấp nhận tham gia công việc rejectWorkRequest() public void từ chối tham gia công việc saveWorkRequest() public void Yêu cầu tham gia công việc Assignment_Controller a) Mục đích Điều khiển nghiệp vụ Phân công công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập

Tham số đầu vào Kiểu trả về Mô tả createAssignment () public assignment Assignment void tạo phân công công việc getListAssigment() public jobId string Assigment lấy danh sách phân công công việc getDetailAssignment() public assignmentId string Assigment lấy chi tiết

69 công việc saveTaskResult() public void lưu kết quả đơn vị công việc

Dự đoán nhãn của công việc b) Danh sách thuộc tính c) Danh sách phương thức

Tên Phạm vi truy cập Tham số đầu vào Kiểu trả về Mô tả predict() public image string void dự đoán nhãn của công việc

Thiết kế cơ sở dữ liệu

Tổng quan cơ sở dữ liệu

Hình 3.50 Tổng quản cơ sở dữ liệu

71 Đặc tả chi tiết các bảng dữ liệu

Tên trường Kiểu dữ liệu Mô tả id string id email string email password string mật khẩu name string họ tên role string vai trò phone string số điện thoại

DoB date ngày sinh avatar string đường dẫn ảnh đại diện

Tên trường Kiểu dữ liệu Mô tả id string id email string email password string mật khẩu name string họ tên role string vai trò phone string số điện thoại

DoB date ngày sinh avatar string đường dẫn ảnh đại diện

Tên trường Kiểu dữ liệu Mô tả id string id email string email password string mật khẩu name string họ tên role string vai trò phone string số điện thoại

DoB date ngày sinh avatar string đường dẫn ảnh đại diện qualification object chất lượng làm việc của worker, gồm

+ tổng số công việc đã làm + tỉ lệ đơn vị công việc được chấp nhận + tỉ lệ đơn vị công việc đã hoàn thành + tổng đơn vị công việc được chấp nhận invitedJob array Danh sách công việc được mời

Tên trường Kiểu dữ liệu Mô tả id string id của assignment requester_id string id của requester job_id string id của công việc worker_id string id của worker data array dữ liệu của assignment

+ url: đường dẫn tới dữ liệu + result: kết quả làm việc + status: trạng thái

Tên trường Kiểu dữ liệu Mô tả id string id requester_id string id requester name string tên description string mô tả công việc category string loại công việc task_per_assignment int số lượng đơn vị công việc trên một phân công công việc number_duplicate int số lượng bản sao của một phân công công việc reward_per_task string thưởng trên một đơn vị công việc qualification object chất lượng làm việc yêu cầu của worker, gồm + tổng số công việc đã làm + tỉ lệ đơn vị công việc được chấp nhận + tỉ lệ đơn vị công việc đã hoàn thành + tổng đơn vị công việc được chấp nhận work_request array danh sách yêu cầu làm việc deadline date hạn hoàn thành công việc data array danh sách dữ liệu cần gán nhãn labels array danh sách nhãn dữ liệu

Tên trường Kiểu dữ liệu Mô tả id string id của comment requester_id string id của requester content string nội dung comment worker_id string id của worker star int số sao requester đánh giá

TRIỂN KHAI HỆ THỐNG

Mô hình lập trình

Hệ thống được phát triển theo mô hình microservices

Hình 4.1 Mô hình microservices [3] Ứng dụng được tách thành các service, mỗi service quản lý một cơ sở dữ liệu riêng, được triển khai và chạy độc lập với nhau Các service tách biệt về mặt mã nguồn, về hoạt động và dữ liệu Mỗi service có nơi chứa dữ liệu của riêng của nó và chỉ có nó có quyền truy cập vào vùng dữ liệu này

Microservices cho phép dễ dàng thực hiện tự động tích hợp và tự động triển khai Mỗi service có kích thước nhỏ giúp các lập trình viên dễ tiếp cận, đọc hiểu mã nguồn Các service khởi động nhanh giúp quá trình phát triển, kiểm thử cũng nhanh hơn Dễ dàng mở rộng và tích hợp với các dịch vụ của bên thứ ba Khi một service bị lỗi và ngừng hoạt động thì các service khác vẫn có thể hoạt động bình thường Với mô hình nguyên khối, một lỗi nhỏ có thể làm cả hệ thống ngừng hoạt động Khi cần thay đổi một thành phần, thì chỉ cần sửa đổi, cập nhật và triển khai lại thành phần đó chứ không cần triển khai lại toàn bộ hệ thống

Mô hình microservices của hệ thống:

Hình 4.2 Mô hình microservices của hệ thống

Account service có nhiệm vụ truy cập và xử lý thông tin của người dùng, cập nhật chất lượng làm việc của worker, cập nhật danh sách lời mời làm việc của worker Job service có nhiệm vụ truy cập và xử lý công việc như tạo công việc, tìm kiếm công việc, yêu cầu tham gia công việc, làm việc, xem kết quả làm việc, tải về dữ liệu làm việc

Predict service có nhiệm vụ dự đoán nhãn của đơn vị công việc (ảnh).

Các công nghệ sử dụng

ReactJS là một thư viện JavaScript mã nguồn mở để xây dựng giao diện người dùng hoặc các thành phần giao diện ReactJS có thể được sử dụng để phát triển các ứng dụng một trang hoặc ứng dụng di động

Công nghệ DOM ảo của ReactJS giúp tăng hiệu năng cho ứng dụng, là nơi mà các thành phần thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều ReactJS tính toán những thay đổi nào cần cập nhật lên DOM và chỉ thực hiện chúng Điều này giúp ReactJS tránh những thao tác trên DOM mà nhiều chi phí

NodeJS là một hệ thống phần mềm được thiết kế để viết các ứng dụng internet có khả năng mở rộng, đặc biệt là máy chủ web Chương trình được viết bằng

JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhập/xuất không đồng bộ để tối thiểu tổng chi phí và tối đa khả năng mở rộng

NodeJS có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking) NodeJS có thể dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn nhất Nhận và xử lý nhiều kết nối chỉ với một luồng Nhờ đó, hệ thống xử lý sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử NodeJS lý nhanh hơn rất nhiều

MongoDB là một chương trình cơ sở dữ liệu hướng tài liệu đa nền tảng có sẵn nguồn Được phân loại là một chương trình cơ sở dữ liệu NoSQL, MongoDB sử dụng các tài liệu giống JSON với các lược đồ tùy chọn

MongoDB là document database, dữ liệu lưu dưới dạng JSON, không bị bó buộc về số lượng trường, kiểu dữ liệu… có thể thêm thoải mái dữ liệu mà mình muốn MongoDB có sẵn các phương để thực hiện đọc, thêm, xoá, sửa dữ liệu

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 Docker cung cấp một lớp trừu tượng và tự động ảo hóa dựa trên Linux

Docker là nền tảng cho phép đóng gói, triển khai và chạy các ứng dụng trên hệ thống một cách nhanh chóng Ứng dụng này mở ra cho các lập trình viên, quản trị hệ thống để xây dựng, vận chuyển hay chạy các ứng dụng phân tán Docker làm việc trong một môi trường độc lập, không tác động tới môi trường hiện tại của máy tính Ứng dụng docker chạy trong vùng chứa container có thể chạy trên bất kỳ hệ thống như: máy tính xách tay, hệ thống cơ sở hoặc hệ thống đám mây

Kubernetes là một hệ thống điều phối vùng chứa mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý ứng dụng máy tính

Kubernetes có thể expose một container sử dụng DNS hoặc địa chỉ IP của riêng nó Nếu lưu lượng truy cập đến một container cao, Kubernetes có thể cân bằng tải và phân phối lưu lượng mạng để việc triển khai được ổn định

Khi cung cấp cho Kubernetes một cluster gồm các node mà nó có thể sử dụng để chạy các tác vụ được đóng gói và mỗi container cần bao nhiêu CPU và bộ nhớ (RAM) Kubernetes có thể điều phối các container đến các node để tận dụng tốt nhất các tài nguyên

Kubernetes khởi động lại các containers bị lỗi, thay thế các container, xoá các container không phản hồi lại theo cấu hình định sẵn và trong suốt với người dùng biết đến chúng cho đến khi chúng sẵn sàng hoạt động

Kết quả đạt được

Một số giao diện của ứng dụng

Giao diện tạo công việc

80 Giao diện tìm kiếm worker

Giao diện thông tin cá nhân

81 Giao diện quản lý công việc

Giao diện tìm kiếm công việc

Giao diện chi tiết công việc

Giao diện danh sách công việc

Giao diện chi tiết worker

Object detection (Phát hiện đối tượng) Để tạo loại công việc này, requester cần tải lên một tập dữ liệu ảnh, các nhãn cần gán, quy định công việc sẽ gồm bao nhiêu phân công công việc (phần công việc

84 của một worker), mỗi worker sẽ gán nhãn bao nhiêu ảnh, chất lượng làm việc tối thiểu của worker cần phải có để tham gia công việc và một số trường khác như tên, mô tả công việc, v.v

Trong công việc này, worker cần phải xác định khung hình chữ nhật bao quanh đối tượng, có nhãn nằm trong tập các nhãn mà requester tạo ra ban đầu Để hỗ trợ người dùng quan sát ảnh dễ dàng, hệ thống sẽ hiển thị ảnh trên một bản đồ, cho phép worker phóng to, thu nhỏ, di chuyển, thay đổi độ sáng, độ tương phản hình ảnh

Worker gán nhãn bằng cách lựa chọn nhãn cần gán, chọn 2 điểm tương ứng với điểm góc tây bắc và đông nam để vẽ khung chữ nhật

Hình 4.3 Worker thực hiện vẽ khung hình chữ nhật

Worker có thể sử dụng mô hình YOLOv5 [4] do hệ thống cung cấp sẵn để tạo ra khung cho các đối tượng, tuy nhiên họ vẫn cần phải điều chỉnh các khung này khớp với đối tượng hơn nữa

Hình 4.4 Sử dụng mô hình YOLOv5 sinh ra khung hình chữ nhật

Worker có thể xoá, hoàn tác, điều chỉnh hoặc ẩn, hiện khung chữ nhật để thực hiện gán nhãn khác

Hình 4.5 Worker thực hiện gán nhãn ảnh 2

Sau khi hoàn thành gán nhãn cho một bức ảnh, worker sẽ nộp kết quả, kết quả gửi đến cho requester với mỗi nhãn là toạ độ của 2 góc tây bắc, đông nam của khung hình chữ nhật và kích thước của hình ảnh

Hệ thống hỗ trợ requester xem công việc worker đã làm một cách trực quan, gồm đầy đủ các chức năng hỗ trợ cho worker Requester có thể sử dụng mô hình YOLOv5 để tạo ra các nhãn tham khảo để so sánh với kết quả làm việc của worker, từ đó đánh giá chất lượng gán nhãn của worker bằng cách chấp nhận hoặc từ chối ảnh đó Requester có thể tải xuống dữ liệu gán nhãn với định dạng JSON

Hình 4.6 Requester xem kết quả công việc

Semantic segmentation (Phân đoạn ngữ nghĩa) Để tạo loại công việc này, requester cần tải lên một tập dữ liệu ảnh, các nhãn cần gán, quy định công việc sẽ gồm bao nhiêu phân công công việc (phần công việc của một worker), mỗi worker sẽ gán nhãn bao nhiêu ảnh, chất lượng làm việc tối thiểu của worker cần phải có để tham gia công việc và mốt số trường khác như tên, mô tả công việc, v.v

Trong công việc này, worker sẽ xác định các đường bao tương ứng với các nhãn mà requester quy định ở lúc tạo công việc Khi bắt đầu làm việc, hệ thống sẽ hiển thị ảnh trên một bản đồ, cho phép worker phóng to, thu nhỏ, di chuyển, thay đổi độ sáng, độ tương phản hình ảnh, giúp worker có thể quan sát ảnh một cách tốt nhất

Hình 4.7 Worker thực hiện vẽ đường bao

Worker có thể sử dụng thư viện Detectron2 [5] do hệ thống cung cấp sẵn để tạo ra các đường bao Tuy nhiên, worker vẫn cần phải điều chỉnh để đường bao này sát với các đối tượng hơn nữa Worker gán nhãn bằng cách lựa chọn các điểm xung quanh đối tượng để nối lại thành đường bao

Hình 4.8 Sử dụng thư viện detectron2 để sinh ra đường bao

Worker có thể xoá, hoàn tác, điều chỉnh hoặc ẩn, hiện đường bao để thực hiện gán nhãn khác

Sau khi hoàn thành gán nhãn cho một bức ảnh, worker sẽ nộp kết quả, kết quả gửi đến cho requester với mỗi nhãn là toạ độ của tất cả các điểm tạo nên đường bao quanh các đối tượng thuộc nhãn đó Requester xem và đánh giá công việc của worker tương tự công việc Object detection

Image classification (Phân loại ảnh) Để tạo loại công việc này, requester cần tải lên một tập dữ liệu ảnh, các nhãn cần gán, quy định công việc sẽ gồm bao nhiêu phân công công việc (phần công việc của một worker), mỗi worker sẽ gán nhãn bao nhiêu ảnh, chất lượng làm việc tối thiểu của worker cần phải có để tham gia công việc và mốt số trường khác như tên, mô tả công việc, v.v

Trong công việc này, worker cần chọn chủ đề tương ứng với các nhãn mà requester quy định ở lúc tạo công việc Khi bắt đầu làm việc, hệ thống sẽ hiển thị ảnh trên một bản đồ, cho phép worker phóng to, thu nhỏ, di chuyển, giúp worker có thể quan sát ảnh một cách tốt nhất

Hình 4.9 Worker lựa chọn nhãn phù hợp nhất với bức ảnh

Sau khi hoàn thành gán nhãn cho một bức ảnh, worker sẽ nộp kết quả, kết quả gửi đến cho requester với mỗi nhãn chủ đề của bức ảnh Requester xem và đánh giá công việc của worker tương tự công việc trên

Đánh giá hiệu năng hệ thống

Hệ thống sử dụng một cụm 3 máy chủ gồm 2 nhân, 4GB RAM do Kubenetes điều phối, mở rộng và quản lý Mỗi service sẽ có 2 bản sao, trong trường hợp một service gặp sự cố, Kubenetes tự điều phối bản sao còn lại để hệ thống hoạt động ổn định, trong suốt với người dùng Ngoài ra, Docker để sử dụng đóng gói các service, giúp tự động triển khai CI/CD các service với Gitlab, nhằm giảm thiểu thời gian triển khai hệ thống Đánh giá hiệu năng API Tìm kiếm worker Để đánh giá hiệu năng của hệ thống, em sử dụng "wrk2" [6]- công cụ đo điểm chuẩn HTTP

Thực hiện chạy điểm chuẩn trên 1 máy, trong vòng 30s, sử dụng 12 luồng, giữ 100 kết nối HTTP luôn mở và thông lượng không đổi là lần lượt là 1000 request/s, 200 request/s, 2500 request/s trong 10 lần Kết quả đạt được như sau:

Hình 4.10 Kết quả đo điểm chuẩn API Tìm kiếm worker với 1000 request/s Độ trễ trung bình là 65.92ms khi số lượng request đạt 99.9%

Hình 4.11 Kết quả đo điểm chuẩn API Tìm kiếm worker với 2000 request/s Độ trễ trung bình là 358.65ms khi số lượng request đạt 99.9%

Hình 4.12 Kết quả đo điểm chuẩn API Tìm kiếm worker với 2500 request/s Độ trễ trung bình là 2.48s khi số lượng request đạt 99.9%

Hình 4.13 Biểu đồ mô tả mối quan hệ giữa số lượng request/s và độ trễ của API

90 Đánh giá hiệu năng API Tìm kiếm công việc

Thực hiện chạy điểm chuẩn trên 1 máy, trong vòng 30s, sử dụng 12 luồng, giữ 100 kết nối HTTP luôn mở và thông lượng không đổi là lần lượt là 100 request/s, 30 request/s, 500 request/s trong 10 lần Kết quả đạt được như sau:

Hình 4.14 Kết quả đo điểm chuẩn API Tìm kiếm công việc với 100 request/s Độ trễ trung bình là 195.57ms khi số lượng request đạt 99.9%

Hình 4.15 Kết quả đo điểm chuẩn API Tìm kiếm công việc với 300 request/s Độ trễ trung bình là 230.65ms khi số lượng request đạt 99.9%

Hình 4.16 Kết quả đo điểm chuẩn API Tìm kiếm công việc với 500 request/s Độ trễ trung bình là 5.42s khi số lượng request đạt 99.9%

Hình 4.17 Biểu đồ mô tả mối quan hệ giữa số lượng request/s và độ trễ của API

92 Đánh giá hiệu năng API lấy thông tin chi tiết phân công công việc

Thực hiện chạy điểm chuẩn trên 1 máy, trong vòng 30s, sử dụng 12 luồng, giữ 100 kết nối HTTP luôn mở và thông lượng không đổi là lần lượt là 1000 request/s,

3500 request/s, 4000 request/s trong 10 lần Kết quả đạt được như sau:

Hình 4.18 Kết quả đo điểm chuẩn API lấy thông tin chi tiết phân công công việc với 1000 request/s Độ trễ trung bình là 4.81ms khi số lượng request đạt 99.9%

Hình 4.19 Kết quả đo kiểm chuẩn API lấy thông tin chi tiết phân công công việc với 3500 request/s Độ trễ trung bình là 1.48s khi số lượng request đạt 99.9%

Hình 4.20 Kết quả đo điểm chuẩn API lấy thông tin chi tiết phân công công việc với 4000 request/s Độ trễ trung bình là 2.26s khi số lượng request đạt 99.9%.

Hình 4.21 Biểu đồ mô tả mối quan hệ giữa số lượng request/s và độ trễ của API lấy thông tin chi tiết phân công việc

Ngày đăng: 16/05/2024, 13:26

HÌNH ẢNH LIÊN QUAN

Hình 2.2 Biểu đồ phân rã ca sử dụng Requester quản lý công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.2 Biểu đồ phân rã ca sử dụng Requester quản lý công việc (Trang 15)
Bảng 2.18 Bảng đặc tả ca sử dụng Worker làm việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Bảng 2.18 Bảng đặc tả ca sử dụng Worker làm việc (Trang 30)
Hình 2.5 Biểu đồ hoạt động Đăng ký - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.5 Biểu đồ hoạt động Đăng ký (Trang 34)
Hình 2.6 Biểu đồ hoạt động Đăng nhập - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.6 Biểu đồ hoạt động Đăng nhập (Trang 35)
Hình 2.8 Biểu đồ hoạt động  Requester  tạo việc làm - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.8 Biểu đồ hoạt động Requester tạo việc làm (Trang 36)
Hình 2.11 Biểu đồ hoạt động Quản lý thông tin cá nhân - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.11 Biểu đồ hoạt động Quản lý thông tin cá nhân (Trang 37)
Hình 2.14 Biểu đồ hoạt động Tìm kiếm worker - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.14 Biểu đồ hoạt động Tìm kiếm worker (Trang 39)
Hình 2.16 Biểu đồ hoạt động Admin quản lý công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 2.16 Biểu đồ hoạt động Admin quản lý công việc (Trang 40)
Hình 3.19 Biểu đồ tuần tự cho ca sử dụng Tìm kiếm worker - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.19 Biểu đồ tuần tự cho ca sử dụng Tìm kiếm worker (Trang 49)
Hình 3.21 Biểu đồ tuần tự cho ca sử dụng Requester quản lý thông tin cá nhân - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.21 Biểu đồ tuần tự cho ca sử dụng Requester quản lý thông tin cá nhân (Trang 50)
Hình 3.22 Biểu đồ tuần tự cho ca sử dụng Worker quản lý thông tin cá nhân - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.22 Biểu đồ tuần tự cho ca sử dụng Worker quản lý thông tin cá nhân (Trang 51)
Hình 3.23 Biểu đồ tuần tự cho ca sử dụng Requester phê duyệt yêu cầu làm việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.23 Biểu đồ tuần tự cho ca sử dụng Requester phê duyệt yêu cầu làm việc (Trang 51)
Hình 3.24 Biểu đồ tuần tự cho ca sử dụng Requester quản lý công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.24 Biểu đồ tuần tự cho ca sử dụng Requester quản lý công việc (Trang 52)
Hình 3.27 Biểu đồ tuần tự cho ca sử dụng Admin quản lý requester - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.27 Biểu đồ tuần tự cho ca sử dụng Admin quản lý requester (Trang 55)
Hình 3.29 Biểu đồ tuần tự cho ca sử dụng Admin quản lý công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.29 Biểu đồ tuần tự cho ca sử dụng Admin quản lý công việc (Trang 56)
Hình 3.34 Giao diện Tìm kiếm worker - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.34 Giao diện Tìm kiếm worker (Trang 58)
Hình 3.33 Giao diện Requester tạo công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.33 Giao diện Requester tạo công việc (Trang 58)
Hình 3.35 Giao diện Quản lý thông tin cá nhân - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.35 Giao diện Quản lý thông tin cá nhân (Trang 59)
Hình 3.37 Giao diện Quản lý phân công công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.37 Giao diện Quản lý phân công công việc (Trang 60)
Hình 3.38 Giao diện Thông tin chi tiết worker - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.38 Giao diện Thông tin chi tiết worker (Trang 60)
Hình 3.39 Giao diện Tìm kiếm việc làm - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.39 Giao diện Tìm kiếm việc làm (Trang 61)
Hình 3.42 Giao diện Worker quản lý công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.42 Giao diện Worker quản lý công việc (Trang 62)
Hình 3.43 Giao diện Quản lý thông tin cá nhân - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.43 Giao diện Quản lý thông tin cá nhân (Trang 63)
Hình 3.45 Sơ đồ lớp gói Worker - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.45 Sơ đồ lớp gói Worker (Trang 65)
Hình 3.50 Tổng quản cơ sở dữ liệu - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 3.50 Tổng quản cơ sở dữ liệu (Trang 81)
Hình 4.2 Mô hình microservices của hệ thống - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 4.2 Mô hình microservices của hệ thống (Trang 87)
Hình 4.5 Worker thực hiện gán nhãn ảnh 2 - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 4.5 Worker thực hiện gán nhãn ảnh 2 (Trang 96)
Hình 4.6 Requester xem kết quả công việc - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 4.6 Requester xem kết quả công việc (Trang 96)
Hình 4.7 Worker thực hiện vẽ đường bao - Xây dựng hệ thống crowdsourcing cho việc gán nhãn dữ liệu ảnh
Hình 4.7 Worker thực hiện vẽ đường bao (Trang 97)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w