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

xây dựng hệ thống xử lý đa luồng kết hợp với ai cho hệ thống camera giám sát thông minh

63 0 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

Tiêu đề XÂY DỰNG HỆ THỐNG XỬ LÝ ĐA LUỒNG KẾT HỢP VỚI AI CHO HỆ THỐNG CAMERA GIÁM SÁT THÔNG MINH
Tác giả Vũ Đức Duy
Người hướng dẫn TS. Phạm Tiến Lâm
Trường học Trường Đại Học Phenikaa
Chuyên ngành Công nghệ thông tin Việt Nhật
Thể loại ĐỒ ÁN/KHÓA LUẬN TỐT NGHIỆP
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 63
Dung lượng 2,59 MB

Nội dung

LỜI CAM ĐOAN Tên tôi là: Vũ Đức Duy Mã sinh viên: 19010055 Lớp: Công nghệ thông tin Việt Nhật Ngành: Công nghệ thông tin Việt Nhật Tôi đã thực hiện đồ án/khóa luận tốt nghiệp với đề tài:

Trang 1

Sinh viên: Vũ Đức Duy

Mã số sinh viên: 19010055 Khóa: K13

Ngành: Công nghệ thông tin Việt Nhật Hệ: Đại học chính quy

Giảng viên hướng dẫn: TS.Phạm Tiến Lâm

Hà Nội – Năm 2023

Copies for internal use only in Phenikaa University

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHENIKAA

ĐỒ ÁN/KHÓA LUẬN TỐT NGHIỆP

TÊN ĐỀ TÀI XÂY DỰNG HỆ THỐNG XỬ LÝ ĐA LUỒNG KẾT HỢP VỚI

AI CHO HỆ THỐNG CAMERA GIÁM SÁT THÔNG MINH

Sinh viên: Vũ Đức Duy

Mã số sinh viên: 19010055 Khóa: K13

Ngành: Công nghệ thông tin Việt Nhật Hệ: Đại học chính quy

Giảng viên hướng dẫn: TS Phạm Tiến Lâm

Hà Nội – Năm 2023

Copies for internal use only in Phenikaa University

Trang 5

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC PHENIKAA

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

NHẬN XÉT ĐỒ ÁN/KHÓA LUẬN TỐT NGHIỆP

CỦA GIẢNG VIÊN PHẢN BIỆN

Giảng viên phản biện: ………Khoa: ………

Tên đề tài: ………

Sinh viên thực hiện: ………Lớp: ………

Giảng viên hướng dẫn: ………

NỘI DUNG NHẬN XÉT I Nhận xét ĐAKLTN: - Bố cục, hình thức trình bày:

- Đảm bảo tính cấp thiết, hiện đại, không trùng lặp:

- Nội dung:

- Mức độ thực hiện:

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

Copies for internal use only in Phenikaa University

Trang 6

III Ưu nhược điểm:

IV Kết luận: Đồng ý cho bảo vệ: Không đồng ý cho bảo vệ:

Hà Nội, ngày 29 tháng 09 năm 2023

GIẢNG VIÊN PHẢN BIỆN

(Ký, ghi rõ họ tên)

Copies for internal use only in Phenikaa University

Trang 7

LỜI CAM ĐOAN

Tên tôi là: Vũ Đức Duy

Mã sinh viên: 19010055 Lớp: Công nghệ thông tin Việt Nhật

Ngành: Công nghệ thông tin Việt Nhật

Tôi đã thực hiện đồ án/khóa luận tốt nghiệp với đề tài: Xây dựng hệ thống xử lý đa luồng kết hợp với AI cho hệ thống camera giám sát thông minh

Tôi xin cam đoan đây là đề tài nghiên cứu của riêng tôi và được sự hướng dẫn của: thầy Phạm Tiến Lâm

Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa được các tác giả khác công bố dưới bất kỳ hình thức nào Nếu phát hiện có bất kỳ hình thức gian lận nào tôi xin hoàn toàn chịu trách nhiệm trước pháp luật

GIẢNG VIÊN HƯỚNG DẪN

Trang 8

LỜI CẢM ƠN

Trải qua thời gian học tập, rèn luyện và trau dồi tích lũy kiến thức tại trường Đại học Phenikaa, một ngôi trường tuy còn mới mẻ trên bản đồ các trường đại học tại Việt Nam nhưng đã mang lại rất nhiều điều quý báu cho tôi trong suốt 4 năm tại ngôi trường Cũng tại đây tôi đã được học thêm nhiều kiến thức mới, được học tại một trong những nơi có cơ sở vật chất tốt nhất các trường đại học tại Việt Nam, tôi cũng được học dưới

sự chỉ dẫn tận tình của các thầy cô giáo chất lượng tại trường, cũng nhờ những điều đó

mà cho đến ngày hôm nay tôi có thể tích lũy được những kiến thức quan trọng và hoàn thành đồ án tốt nghiệp Để có được kết quả này tôi xin gửi lời cảm ơn:

● Tôi xin chân thành cảm ơn Ban giám hiệu cũng như các phòng ban tại trường Phenikaa đã tạo những điều kiện tốt nhất để tôi có thể theo học tại ngôi trường này, cùng với đó là các thầy cô trong Khoa Công nghệ thông tin đã cung cấp, hỗ trợ tôi tiếp cận đến những kiến thức chuyên môn, đồng thời tạo điều kiện cho tôi trong quá trình thực hiện đồ án tốt nghiệp

● Tôi cũng xin gửi lời cảm ơn chân thành đến thầy Phạm Tiến Lâm - người đã đồng hành cùng tôi trong suốt thời gian thực hiện đồ án Sự hướng dẫn cũng như những gợi ý và kiến thức sâu rộng từ thầy đã giúp ích rất nhiều cho tôi trong quá trình tôi làm đồ án cũng như là có những định hướng tốt nhất để vượt qua khó khăn và hoàn thành đồ án một cách tốt nhất

● Cuối cùng tôi cũng muốn bày tỏ lòng biết ơn đến bạn bè trong lớp tôi Sự hỗ trợ, chia sẻ và luôn thúc đẩy nhau cố gắng phấn đấu đã tạo ra một môi trường tích cực, cạnh tranh, thúc đẩy nhau phát triển, cũng nhờ đó mà tôi có thể hoàn thành thành công đồ án tốt nghiệp

Hà Nội, tháng 09 năm 2023 Sinh viên thực hiện

Copies for internal use only in Phenikaa University

Trang 9

1.4 Mục tiêu nghiên cứu và nội dung nghiên cứu của đồ án 2

Copies for internal use only in Phenikaa University

Trang 10

2.5.4 Apache Kafka: Nền tảng streaming mạnh mẽ 14

CHƯƠNG 3 TRIỂN KHAI THỰC NGHIỆM VÀ KẾT QUẢ 32

Copies for internal use only in Phenikaa University

Trang 11

3.1 Bài toán 32

CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48

Copies for internal use only in Phenikaa University

Trang 12

DANH MỤC BẢNG BIỂU

Bảng 2.1 So sánh SQL và NoSQL 21Bảng 2.2 Sự khác nhau giữa MongoDB với các SQL khác 23

Copies for internal use only in Phenikaa University

Trang 13

DANH MỤC HÌNH ẢNH

Hình 2.1 Hình ảnh về luồng (thread) và đa luồng (multi thread) 8

Hình 2.2 Hình ảnh logo của Apache Kafka [1] 9

Hình 2.3 Hình ảnh về ứng dụng của Kafka [2] 9

Hình 2.4 Các thành phần của Kafka [1] 10

Hình 2.5 Mô hình cấu trúc Kafka chi tiết [3] 11

Hình 2.6 Luồng hoạt động của một hệ thống Kafka [4] 12

Hình 2.7 Quy trình của mô hình học máy 16

Hình 2.8 Sự khác nhau về mô hình dữ liệu của MongoDB với SQL [5] 24

Hình 2.9 Sự khác nhau trong câu truy vấn của MongoDB và SQL [6] 24

Hình 2.10 Logo của Docker 25

Hình 2.11 Hình ảnh minh họa về container 25

Hình 2.12 Các thành phần của Docker [7] 26

Hình 2.13 Luồng hoạt động của Docker [8] 27

Hình 3.1 Luồng chạy chính của đề tài [9] 32

Hình 3.2 Cấu hình máy tính 34

Hình 3.3 Tạo các topic để nhận dữ liệu 38

Hình 3.4 Ví dụ về message gửi lên topic 39

Hình 3.5 Hình ảnh video các frames ảnh gửi lên topic 40

Hình 3.6 Ví dụ về dữ liệu được lưu vào MongoDB 42

Hình 3.7 Ví dụ khác về dữ liệu được lưu vào MongoDB 42

Hình 3.8 Giao diện hiển thị khi nhận diện và đếm người 44

Hình 3.9 Biểu đồ biến thiên thời gian và số người trong khung ảnh 46

Hình 3.10 Hình ảnh lưu vào máy với camera logitech 46

Hình 3.11 Hình ảnh từ camera laptop được lưu vào máy 47 Copies for internal use only in Phenikaa University

Trang 14

CHƯƠNG 1 MỞ ĐẦU 1.1 Đặt vấn đề

Trong thời đại đầy thách thức và cơ hội của cuộc cách mạng công nghiệp 4.0,

sự phát triển nhanh chóng của Trí Tuệ Nhân Tạo (AI) và lĩnh vực thị giác máy tính đang mang lại sự thay đổi đáng kể trong nhiều khía cạnh của cuộc sống Một trong những ứng dụng nổi bật của những tiến bộ này là sự kết hợp giữa hệ thống camera giám sát và trí tuệ nhân tạo, tạo nên hệ thống camera giám sát thông minh đang ngày càng trở nên quan trọng và quyết định trong việc đảm bảo an ninh và quản lý môi trường Sự phát triển của trí tuệ nhân tạo đã thúc đẩy khả năng của máy tính trong việc nhận diện và hiểu các đối tượng trong hình ảnh và video Điều này mở

ra nhiều cơ hội trong việc xây dựng các hệ thống camera giám sát thông minh có khả năng tự động phát hiện, theo dõi và phản ứng trước các sự kiện quan trọng Tuy nhiên, một trong những thách thức lớn trong lĩnh vực này là cách thức

xử lý và phân tích một lượng lớn dữ liệu từ các luồng camera giám sát một cách hiệu quả Trong quá khứ, việc thực hiện công việc này thường đòi hỏi sự can thiệp của con người, đội ngũ an ninh, và nhiều công cụ phức tạp Điều này không chỉ làm tốn nguồn nhân công lao động và nhiều nguy cơ sai sót, mà còn làm giảm tính khả thi của việc theo dõi và phản ứng nhanh chóng đối với các tình huống nguy hiểm

1.2 Giải pháp

Nhằm giải quyết vấn đề xử lý dữ liệu lớn từ nhiều luồng camera khác nhau,

đề tài đồ án tốt nghiệp "Xây dựng hệ thống xử lý đa luồng kết hợp với AI cho hệ thống camera giám sát thông minh" với mục tiêu tận dụng sự phát triển nhanh chóng của AI và các công nghệ liên quan để xây dựng một hệ thống hiệu quả và linh hoạt Để đối mặt với các thách thức này và khai thác tiềm năng của AI, đề tài này tập trung vào xây dựng một hệ thống camera giám sát thông minh đa luồng kết hợp với trí tuệ nhân tạo Sự kết hợp này cho phép hệ thống tự động xử lý và Copies for internal use only in Phenikaa University

Trang 15

phân tích dữ liệu từ nhiều nguồn camera khác nhau, giúp giám sát và phản ứng hiệu quả hơn đối với các tình huống thường xảy ra

Đề tài này không chỉ giới thiệu một giải pháp hiệu quả cho việc xây dựng hệ thống camera giám sát thông minh, mà còn thể hiện sự quan trọng của việc kết hợp trí tuệ nhân tạo và công nghệ camera trong cuộc sống hàng ngày Hệ thống này có thể ứng dụng rộng rãi trong lĩnh vực an ninh, giao thông, quản lý sự kiện, và nhiều ứng dụng khác, đóng góp vào việc cải thiện cuộc sống và tăng cường an toàn cho cộng đồng

Trong phạm vi đề tài, tôi sẽ tập trung vào việc phát triển hệ thống này, từ việc

xử lý đa luồng dữ liệu đến tích hợp trí tuệ nhân tạo, và cuối cùng là việc triển khai

hệ thống trong môi trường thực tế Chúng ta sẽ cùng nhau trải qua quá trình nghiên cứu, phát triển, và đánh giá hiệu suất của hệ thống này, với hy vọng rằng đây sẽ là một bước tiến quan trọng trong việc ứng dụng AI vào các lĩnh vực thực tế

1.3 Tên đề tài

Xây dựng hệ thống xử lý đa luồng kết hợp với AI cho hệ thống camera giám sát thông minh

1.4 Mục tiêu nghiên cứu và nội dung nghiên cứu của đồ án

1.4.1 Mục tiêu nghiên cứu của đồ án

Mục tiêu chính của đồ án tập trung vào việc xây dựng và phát triển hệ thống camera giám sát thông minh đa luồng kết hợp với trí tuệ nhân tạo (AI) để nhận diện và đếm người trong khung hình Cụ thể, các mục tiêu cụ thể của dự án bao gồm:

● Phát triển hệ thống camera giám sát thông minh đa luồng: Xây dựng

một hệ thống có khả năng xử lý đồng thời nhiều luồng dữ liệu từ hai camera khác nhau Hệ thống này sẽ thu thập dữ liệu hình ảnh từ các nguồn và xử lý chúng đồng thời, đảm bảo tính nhất quán và hiệu quả trong việc quản lý dữ

liệu

● Sử dụng trí tuệ nhân tạo để nhận diện và đếm người: Áp dụng trí tuệ

nhân tạo vào việc nhận diện và đếm số lượng người trong các hình ảnh từ Copies for internal use only in Phenikaa University

Trang 16

các camera Sử dụng mô hình học máy hoặc mạng nơ-ron học sâu (deep

learning) để thực hiện công việc này một cách chính xác và hiệu quả

● Xây dựng giao diện quản lý hệ thống thông minh đa luồng: Xây dựng

giao diện ứng dụng web hiển thị video từ hai luồng camera trực tiếp Đồng thời, tạo biểu đồ thống kê số lượng người theo thời gian, giúp hỗ trợ người

dùng thống kê và phân tích thông tin theo thời gian thực

1.4.2 Nội dung nghiên cứu của đồ án

● Tích hợp các mô hình trí tuệ nhân tạo vào hệ thống camera thông minh đa luồng, đồng thời sử dụng các kỹ thuật xử lý ảnh trong thị giác máy tính

● Xây dựng hệ thống camera giám sát thông minh

● Xử lý đa luồng sử dụng Apache Kafka và quản lý dữ liệu sử dụng MongoDB

1.5 Phương thức thực hiện và kết quả

1.5.1 Phương thức thực hiện

● Sử dụng kiến thức cơ bản về ngôn ngữ Python và chạy trên Ubuntu

● Sử dụng Apache Kafka để xử lý đồng thời dữ liệu từ hai nguồn camera là camera laptop và camera logitech

● Triển khai MongoDB để lưu trữ và quản lý dữ liệu hình ảnh thu thập từ các nguồn khác nhau

● Triển khai và tích hợp mô hình Trí tuệ nhân tạo về nhận diện mặt người vào

hệ thống và đếm số lượng người trong khung hình từ hai camera

● Cài đặt môi trường và triển khai trên Docker

● Tiến hành chạy kiểm tra để đánh giá khả năng xử lý đồng thời của hệ thống

từ hai nguồn camera

● Xây dựng giao diện có thể quản lý hệ thống camera thông minh đa luồng, thống kê và quản lý dữ liệu thu thập từ hệ thống đa luồng

Trang 17

● Hệ thống có khả năng xử lý đồng thời dữ liệu hình ảnh từ 2 nguồn camera

và cung cấp thông tin phân tích đáng tin cậy

● Bước đầu xây dựng được phần mềm quản lý thông tin phát hiện được từ hệ thống camera thông minh, giúp người dùng có thể dễ dàng truy cấp đến các thời điểm hệ thống phát hiện người trong vùng quan sát

Copies for internal use only in Phenikaa University

Trang 18

CHƯƠNG 2 TỔNG QUAN 2.1 Giới thiệu về camera thông minh

2.1.1 Giới thiệu về camera giám sát

Camera giám sát là camera được sử dụng để quan sát và ghi lại hình ảnh hoặc video của một khu vực hoặc sự kiện cụ thể Camera giám sát giúp cải thiện

an ninh, quản lý và giám sát từ xa Chúng đã trở thành một phần quan trọng trong cuộc sống hàng ngày và trong nhiều lĩnh vực khác nhau như an ninh, giao thông,

y tế, công nghiệp và nhiều lĩnh vực khác

2.1.2 Camera thông minh

Camera thông minh (Smart Camera) là một phát triển mới mẻ trong lĩnh vực giám sát Chúng không chỉ giúp ghi lại hình ảnh, mà còn có khả năng xử lý thông tin trực tiếp trên thiết bị Điều này đặc biệt hữu ích trong việc giảm tải mạng

và giảm độ trễ trong truyền tải dữ liệu Một số tính năng chính của camera thông minh bao gồm:

● Trí tuệ nhân tạo (AI): Camera thông minh thường được trang bị trí tuệ nhân tạo để nhận diện và phân tích đối tượng và hành vi Điều này cho phép chúng tự động phát hiện sự kiện quan trọng và gửi cảnh báo

● Xử lý trong thời gian thực: Camera thông minh thường có khả năng xử lý

dữ liệu trong thời gian thực trên thiết bị, giúp giảm độ trễ và tăng tính hiệu quả trong việc phát hiện và xử lý sự kiện

● Kết nối mạng: Chúng có khả năng kết nối mạng để truyền dữ liệu hoặc tương tác với các hệ thống và thiết bị khác

2.1.3 Ứng dụng của camera thông minh

Camera thông minh có nhiều ứng dụng rộng rãi trong nhiều lĩnh vực:

● An ninh: Trong lĩnh vực an ninh, camera thông minh có thể phát hiện các hành vi đáng ngờ như xâm nhập vào khu vực cấm hoặc vật thể lạ

● Giao thông: Trong lĩnh vực giao thông, chúng có thể giúp giám sát luồng giao thông, phát hiện tai nạn và quản lý luồng xe

Copies for internal use only in Phenikaa University

Trang 19

● Y tế: Camera thông minh có thể được sử dụng trong y tế để theo dõi bệnh nhân, phát hiện triệu chứng bất thường và cung cấp dịch vụ chăm sóc y tế

từ xa

● Công nghiệp: Trong môi trường công nghiệp, chúng có thể được sử dụng

để theo dõi quá trình sản xuất, kiểm tra chất lượng và đảm bảo an toàn

● Giám sát môi trường: Chúng có thể được sử dụng để giám sát môi trường

tự nhiên hoặc công nghiệp và phát hiện sự cố như ô nhiễm môi trường

2.1.4 Thách thức của camera thông minh

Một trong những thách thức quan trọng của camera thông minh là khả năng

xử lý dữ liệu một cách hiệu quả từ các nguồn khác nhau và truyền dữ liệu đến hệ thống trung tâm Dưới đây là một số thách thức cụ thể mà chúng ta phải đối mặt:

● Lượng dữ liệu lớn: Camera thông minh thường tạo ra lượng dữ liệu lớn liên tục Các luồng video hoặc hình ảnh đầu vào có thể có tốc độ cao, đặc biệt khi có nhiều camera Điều này đặt ra một thách thức về việc truyền và lưu trữ dữ liệu một cách hiệu quả

● Đa định dạng dữ liệu: Các camera thông minh có thể tạo ra dữ liệu ở nhiều định dạng khác nhau, chẳng hạn như luồng video, hình ảnh, hoặc âm thanh Việc đảm bảo rằng hệ thống có thể xử lý và đồng nhất hóa các định dạng

dữ liệu này là một thách thức

● Thời gian thực: Trong các ứng dụng giám sát và an ninh, việc phát hiện và phản ứng vào các sự kiện xảy ra trong thời gian thực rất quan trọng Điều này đặt ra yêu cầu về khả năng xử lý và truyền dữ liệu một cách nhanh chóng và hiệu quả để đảm bảo sự phản hồi kịp thời

● Độ tin cậy: Hệ thống camera thông minh thường được triển khai để giám sát và bảo vệ Do đó, độ đáng tin cậy của hệ thống là một yếu tố quan trọng Việc xử lý dữ liệu và truyền tải chúng phải đảm bảo tính liên tục và không

bị gián đoạn

● Quản lý nguồn tài nguyên: Một hệ thống có nhiều camera thông minh đồng thời cần quản lý tài nguyên máy tính, bao gồm CPU, bộ nhớ và băng thông mạng Sự quản lý hiệu quả của các tài nguyên này là một thách thức khác Copies for internal use only in Phenikaa University

Trang 20

2.2 Xử lý đa luồng và dữ liệu lớn

Việc xử lý dữ liệu từ nhiều nguồn camera thông minh đồng thời và đối mặt với lượng dữ liệu lớn đang trở thành một thách thức đáng kể trong ngành giám sát

và an ninh Trong mục này, tôi sẽ trình bày về những vấn đề chính phải đối mặt khi xử lý song song và dữ liệu lớn

2.2.1 Tăng cường khả năng xử lý đa luồng

Việc sử dụng nhiều camera thông minh đồng thời đòi hỏi hệ thống phải xử

lý đa luồng một cách hiệu quả để có thể theo dõi và phân tích dữ liệu từ các nguồn này cùng lúc Trong những phần tiếp theo sẽ trình bày cách hệ thống đã được thiết

kế để xử lý đa luồng một cách hiệu quả, bao gồm sự tích hợp của Apache Kafka

để quản lý và phân phối dữ liệu từ nhiều nguồn

2.2.2 Quản lý dữ liệu lớn

Lượng dữ liệu lớn từ các camera thông minh đòi hỏi hệ thống phải có khả năng lưu trữ và truy xuất dữ liệu một cách hiệu quả Tôi sẽ thảo luận về việc sử dụng MongoDB để lưu trữ dữ liệu video và thông tin liên quan, cùng với cách tối

ưu hóa việc truy xuất dữ liệu để đảm bảo khả năng phản hồi nhanh chóng

2.2.3 Phân tích và nhận diện thời gian thực

Với mục tiêu giám sát thông minh, hệ thống phải thực hiện phân tích và nhận diện thời gian thực trên dữ liệu video đầu vào Điều này đặt ra một loạt thách thức trong việc phát hiện và đếm các đối tượng, như người, trong các khung hình video động Tôi đã sử dụng các mô hình trí tuệ nhân tạo (AI) để thực hiện nhận diện người và đếm số lượng người trong thời gian thực Cùng với đó, cũng sẽ giải quyết các vấn đề về hiệu suất của mô hình AI trong môi trường thời gian thực

Trong đồ án này, tôi sử dụng Apache Kafka để xử lý các luồng camera, các

mô hình học sâu để phân tích dữ liệu thu được từ các luồng để nhận diện và đếm

số người và công nghệ lưu trữ dữ liệu lớn NoSQL MongoDB để lưu trữ các dữ liệu

Copies for internal use only in Phenikaa University

Trang 21

2.3 Luồng (Thread) và Đa luồng (Multi thread)

Trước khi khám phá sâu hơn về Apache Kafka, hãy tìm hiểu thêm về khái niệm về luồng và đa luồng trong ngữ cảnh xử lý dữ liệu Cùng với sự gia tăng không ngừng của dữ liệu trong thời đại số hóa, việc hiểu và tận dụng khả năng xử

lý đa luồng trở nên quan trọng hơn bao giờ hết

Luồng (Thread) là một luồng thực thi đơn giản nhất của một chương trình Mỗi luồng hoạt động theo một dòng thời gian riêng, thực hiện các tác vụ một cách tuần tự Tuy nhiên, trong môi trường xử lý dữ liệu lớn và đa luồng, mô hình luồng đơn lẻ thường không đủ để đáp ứng nhu cầu xử lý Đây là lúc đa luồng (Multithreading) được sử dụng

Đa luồng là một khái niệm mà một ứng dụng hoặc chương trình có thể thực thi nhiều luồng cùng một lúc Điều này cho phép chương trình xử lý nhiều công việc đồng thời và tận dụng tài nguyên máy tính một cách hiệu quả hơn Đa luồng giúp chúng ta tận dụng được các bộ vi xử lý đa nhân (multi-core) và cải thiện hiệu suất xử lý dữ liệu

Trong ngữ cảnh của đề tài "Xây dựng hệ thống xử lý đa luồng kết hợp với trí tuệ nhân tạo cho hệ thống camera giám sát thông minh," việc sử dụng đa luồng

là một phần quan trọng để đảm bảo xử lý đồng thời dữ liệu từ nhiều nguồn camera một cách hiệu quả

Hình 2.1 Hình ảnh về luồng (thread) và đa luồng (multi thread)

Tiếp theo sẽ chuyển sang tìm hiểu về cách Apache Kafka giúp quản lý và

xử lý dữ liệu từ các nguồn camera khác nhau

Copies for internal use only in Phenikaa University

Trang 22

2.4 Apache Kafka

2.4.1 Kafka là gì

Apache Kafka là một nền tảng theo kiến trúc phân tán cho phép lưu trữ sự kiện và xử lý dữ liệu luồng mã nguồn mở được LinkedIn phát triển ban đầu vào năm 2010 và sau đó được tặng cho Quỹ phần mềm Apache Nó được viết bằng Java và Scala Là hệ thống message publish/subscribe phân tán (distributed messaging systtôi) Nó đã trở thành một trong những công cụ phổ biến và được áp dụng rộng rãi nhất mà hầu như mọi công ty, doanh nghiệp hàng đầu trên thế giới đều sử dụng trong cơ sở hạ tầng để xây dựng và xử lý dữ liệu luồng thời gian thực (streaming real time) [2]

Hình 2.2 Hình ảnh logo của Apache Kafka [1]

Hình 2.3 Hình ảnh về ứng dụng của Kafka [2]

2.4.2 Lý thuyết liên quan đến Apache Kafka

Để hiểu rõ hơn về cách hoạt động của một hệ thống xử lý đa luồng thì sau đây là một vài lý thuyết cần nắm được trước khi sang luồng hoạt động [2]

● Sản xuất (Producer): là thành phần chịu trách nhiệm chính là gửi dữ liệu (messages) lên chủ đề (topic) cụ thể trong kafka

● Tiêu thụ (Consumer): là thành phần chịu trách nhiệm cho việc đọc và xử lý

dữ liệu (messages) từ các chủ đề (topic) của kafka

Copies for internal use only in Phenikaa University

Trang 23

● Chủ đề (Topic): Topic trong Apache Kafka là một khái niệm logic đại diện cho một dòng dữ liệu hoặc một loại dữ liệu cụ thể Nó là một cách để tổ chức và phân loại các messages trong Kafka Mỗi chủ đề có thể có một hoặc nhiều partition để phân phối và xử lý dữ liệu

Hình 2.4 Các thành phần của Kafka [1]

● Phân vùng (Partition): là một phần của một chủ đề Kafka Mỗi chủ đề có thể chứa nhiều partition Mỗi partition là một dòng log có thứ tự, và nó chứa một tập hợp các message Partition là cách Kafka chia nhỏ dữ liệu trong chủ

đề thành các phần nhỏ hơn để quản lý và xử lý dữ liệu hiệu quả hơn

● Thông điệp, dữ liệu (Messages): Message là dữ liệu cơ bản, là một đơn vị

dữ liệu cơ bản trong Kafka, thường là thông tin, sự kiện hoặc dữ liệu liên quan đến ứng dụng hoặc hệ thống Kafka sử dụng message là đơn vị cơ bản

để truyền thông tin giữa producer (nhà sản xuất) và consumer (người tiêu dùng) trong hệ thống

● Broker: là thành phần quản lý các topic cùng với các partition của chúng Mỗi partition có thể nằm trên một broker khác nhau và broker chịu trách nhiệm quản lý việc lưu trữ và sao chép dữ liệu trong các partition này Broker cũng tham gia vào việc phân phối và xử lý dữ liệu trong Kafka cluster Điều này đảm bảo tính nhất quán, bền vững và hiệu suất trong hệ thống Kafka

● Cluster: là tập hợp các broker hoạt động cùng nhau trong hệ thống Kafka Cluster đảm bảo tính sẵn sàng và bền vững của hệ thống bằng cách quản lý metadata của các topic và phân phối partition trên các broker Cluster Kafka đóng vai trò quan trọng trong việc duy trì và quản lý cơ sở hạ tầng Kafka, Copies for internal use only in Phenikaa University

Trang 24

giúp đảm bảo rằng dữ liệu được lưu trữ và xử lý một cách hiệu quả và tin cậy

Hình 2.5 Mô hình cấu trúc Kafka chi tiết [3]

2.4.3 Kafka hoạt động như nào

Sau khi đã nắm được một số khái niệm trong kafka thì việc hiểu được luồng hoạt động của một hệ thống kafka sẽ dễ dàng hơn Cụ thể tùy theo bài toán nhưng thường sẽ có các bước như sau:

● Bước 1: Đầu tiên là tạo Kafka Cluster: Trước tiên, ta cần khởi tạo một Kafka cluster bằng cách triển khai và cấu hình các broker Kafka trên các máy chủ

● Bước 2: Tạo chủ đề (Topic): Sau khi có Kafka cluster, ta sẽ tạo các chủ đề (topic) để tổ chức dữ liệu Mỗi chủ đề có thể có nhiều partition để phân phối

dữ liệu và tăng hiệu suất

● Bước 3: Producer gửi messages: Producer tạo và gửi các message lên các chủ đề Kafka Producer chỉ cần biết về chủ đề mà nó muốn gửi dữ liệu tới, không cần quan tâm đến broker cụ thể

● Bước 4: Broker quản lý messages: Các broker trong Kafka cluster nhận và quản lý các message Các messages được lưu trữ trên các partition trong các broker Kafka tự động sao chép dữ liệu giữa các broker để đảm bảo tính bền vững

● Bước 5: Consumer tiêu thụ messages: Consumer đăng ký để đọc từ các chủ

đề hoặc các partition cụ thể Các consumer đọc các message từ broker và

xử lý chúng theo nhu cầu

Copies for internal use only in Phenikaa University

Trang 25

● Bước 6: Xử lý dữ liệu: Consumer xử lý các message theo nhu cầu của ứng dụng hoặc hệ thống Điều này có thể bao gồm lưu trữ, phân tích, hoặc thực hiện các tác vụ khác liên quan đến dữ liệu

Hình 2.6 Luồng hoạt động của một hệ thống Kafka [4]

2.4.4 Ưu nhược điểm của Kafka

● Ưu điểm:

○ Xử lý dữ liệu thời gian thực: Kafka được thiết kế đặc biệt cho việc

xử lý dữ liệu thời gian thực và streaming data Điều này làm cho nó phù hợp cho các ứng dụng yêu cầu xử lý dữ liệu liên tục và trong thời gian gần như thực

○ Khả năng mở rộng: Kafka dễ dàng mở rộng bằng cách thêm các broker hoặc chủ đề mới vào cluster Điều này giúp hệ thống Kafka đáp ứng được nhu cầu tăng trưởng của ứng dụng một cách linh hoạt

○ Tính nhất quán và bền vững: Kafka đảm bảo tính nhất quán của dữ liệu bằng cách sao chép dữ liệu trên nhiều broker và cung cấp khả năng bền vững đối với dữ liệu

○ Hiệu suất cao: Kafka có hiệu suất cao và có thể xử lý hàng triệu message mỗi giây

○ Dữ liệu đa dạng: Kafka hỗ trợ định dạng dữ liệu đa dạng, cho phép bạn lưu trữ và truyền các message trong các định dạng khác nhau như JSON, Avro, hoặc Protobuf

Copies for internal use only in Phenikaa University

Trang 26

○ Hỗ trợ đa ngôn ngữ: Kafka có các client cho nhiều ngôn ngữ lập trình khác nhau, cho phép bạn phát triển ứng dụng Kafka bằng các ngôn ngữ như Java, Python, Scala, và nhiều ngôn ngữ khác

○ Đòi hỏi hiểu biết sâu về cấu hình: Để triển khai và quản lý Kafka hiệu quả, ta cần có hiểu biết sâu về cấu hình và tùy chỉnh

2.5 Video streaming và Streaming processing

Video streaming là một ứng dụng nổi bật của kafka Khi đã trang bị kiến thức về Apache Kafka và cách nó giúp chúng ta quản lý và truyền dữ liệu một cách hiệu quả, chúng ta có thể tiến xa hơn trong khám phá khái niệm về stream và stream processing Đây là hai yếu tố quan trọng trong đề tài về hệ thống giám sát thông minh và xử lý dữ liệu đa luồng

2.5.1 Khái niệm về Stream

Stream (dịch sang tiếng Việt có thể hiểu là "dữ liệu trực tiếp" hoặc "luồng

dữ liệu") đề cập đến việc truyền tải dữ liệu theo thời gian thực và liên tục từ nguồn đến đích Trong ngữ cảnh của đề tài này, streaming ám chỉ việc thu thập, truyền tải và xử lý dữ liệu video từ các camera thông minh đồng thời và một cách liên tục

2.5.2 Stream Processing

Stream processing (xử lý dòng dữ liệu) là quá trình xử lý dữ liệu trong thời gian thực khi dữ liệu đang được truyền tải Nó cho phép thực hiện các phân tích, biến đổi và trích xuất thông tin từ dữ liệu streaming mà không cần lưu trữ dữ liệu vào các cơ sở dữ liệu trung gian

Copies for internal use only in Phenikaa University

Trang 27

Trong đề tài này, stream processing có vai trò quan trọng trong việc nhận diện và đếm các đối tượng trong luồng video thời gian thực từ các camera thông minh Tôi sử dụng mô hình trí tuệ nhân tạo (AI) để thực hiện các nhiệm vụ này, và kết quả được truyền đi để cung cấp thông tin liên quan đến giám sát và an ninh

2.5.3 Streaming Platform

Để xây dựng và triển khai các hệ thống xử lý dữ liệu streaming, chúng ta cần một nền tảng mạnh mẽ để hỗ trợ các tác vụ này Các streaming platform cung cấp các công cụ và thư viện cho việc quản lý và xử lý dữ liệu streaming một cách

dễ dàng

Tôi đã sử dụng Apache Kafka không chỉ để quản lý dữ liệu đa luồng từ các camera thông minh mà còn để tạo nền tảng cho xử lý dữ liệu streaming Kafka cho phép chúng ta truyền dữ liệu streaming từ nguồn đến các ứng dụng xử lý streaming một cách hiệu quả

2.5.4 Apache Kafka: Nền tảng streaming mạnh mẽ

Apache Kafka không chỉ là một hệ thống truyền tải dữ liệu mà còn là một nền tảng streaming mạnh mẽ cho việc quản lý và xử lý dữ liệu streaming Với khả năng tích hợp các ứng dụng xử lý streaming và sử dụng các thư viện và framework như Kafka Streams và KSQL, chúng ta có thể xây dựng các ứng dụng stream processing mạnh mẽ và linh hoạt

2.6 Tổng quan về trí tuệ nhân tạo

● Y Tế: Giúp trong phẫu thuật, chẩn đoán bệnh và sản xuất thuốc

Copies for internal use only in Phenikaa University

Trang 28

● Sản Xuất: Sử dụng robot và AI để thực hiện nhiệm vụ chính xác và quản lý tồn kho

● An Ninh và Giao Thông: Áp dụng thị giác máy tính, học máy, và học sâu

để cải thiện an ninh và giao thông

2.7 Học máy (Machine learning)

Học máy là một nhánh của trí tuệ nhân tạo (AI) và khoa học máy tính, tập trung vào việc sử dụng dữ liệu và thuật toán để bắt chước cách con người học, dần dần cải thiện độ chính xác của nó

Quy trình làm việc (workflow) trong machine learning bao gồm nhiều bước

từ việc thu thập dữ liệu đến triển khai mô hình và đánh giá hiệu suất của nó Dưới đây là một quy trình cơ bản cho machine learning:

● Thu thập và Tiền xử lý Dữ liệu (Data Collection and Preprocessing):

○ Thu thập dữ liệu: Xác định và thu thập dữ liệu liên quan đến bài toán thực hiện

○ Khám phá dữ liệu (Data Exploration): Hiểu rõ cấu trúc và tính chất của dữ liệu thông qua việc sử dụng biểu đồ, thống kê, và khám phá

dữ liệu

○ Tiền xử lý (Data Preprocessing): Làm sạch và chuẩn hóa dữ liệu bằng cách xử lý dữ liệu bị thiếu, loại bỏ nhiễu, mã hóa biến phân loại, và chuẩn hóa biến số

● Chọn Mô hình (Model Selection):

○ Lựa chọn mô hình: Chọn mô hình máy học phù hợp với bài toán của bạn, chẳng hạn như hồi quy tuyến tính, cây quyết định, máy vector

hỗ trợ (SVM), mạng nơ-ron, và nhiều mô hình khác

○ Chia dữ liệu (Data Splitting): Phân chia dữ liệu thành bộ huấn luyện,

bộ kiểm tra và (nếu cần) bộ xác nhận để đánh giá hiệu suất mô hình Copies for internal use only in Phenikaa University

Trang 29

Hình 2.7 Quy trình của mô hình học máy

● Huấn luyện và đánh giá mô hình (Model Training and Evaluation):

○ Huấn luyện mô hình: Sử dụng bộ dữ liệu huấn luyện để đào tạo mô hình

○ Đánh giá mô hình: Sử dụng bộ kiểm tra để đánh giá hiệu suất mô hình, sử dụng các metric như độ chính xác, F1-score, hoặc RMSE (đối với bài toán hồi quy)

● Tinh chỉnh mô hình (Model Tuning):

○ Tinh chỉnh siêu tham số (Hyperparameter Tuning): Tối ưu hóa các siêu tham số của mô hình để cải thiện hiệu suất

○ Xtôi xét lại kiến trúc mô hình: Cân nhắc việc thay đổi kiến trúc mô hình, thêm hoặc bớt lớp, đơn vị nơ-ron, và các phần tử khác để tối

ưu hóa mô hình

● Triển khai Mô hình (Model Deployment):

○ Triển khai mô hình: Đưa mô hình vào môi trường sản xuất để phục

vụ các ứng dụng thực tế

○ Kiểm tra tích hợp (Integration Testing): Đảm bảo rằng mô hình hoạt động một cách đúng đắn trong môi trường sản xuất

Các mô hình học máy được chia thành các loại chính sau:

● Học máy giám sát (Supervised machine learning): Sử dụng dữ liệu gắn nhãn

để dự đoán hoặc phân loại dữ liệu Một số phương pháp được sử dụng trong học có giám sát ví dụ như naive bayes, hồi quy tuyến tính, hồi quy logistic Copies for internal use only in Phenikaa University

Trang 30

● Học máy không giám sát (Unsupervised machine learning): Phân nhóm dữ liệu không gắn nhãn và khám phá mẫu Các thuật toán khác được sử dụng trong học tập không giám sát bao gồm mạng lưới thần kinh (neural network), phân cụm k-means (k-means clustering),

● Học bán giám sát (Semi-supervised learning): Kết hợp dữ liệu gán nhãn và không gắn nhãn Học bán giám sát có thể giải quyết vấn đề không có đủ dữ liệu được dán nhãn cho thuật toán học có giám sát Nó cũng hữu ích nếu việc dán nhãn đủ dữ liệu quá tốn kém

● Học máy tăng cường (Reinforctôient machine learning): Học thông qua thử

và sai, thường áp dụng trong trò chơi và quyết định tự động

● Thị giác máy tính: Công nghệ AI này cho phép máy tính lấy được thông tin

có ý nghĩa từ hình ảnh kỹ thuật số, video và các đầu vào trực quan khác, sau đó thực hiện hành động thích hợp Được hỗ trợ bởi mạng lưới thần kinh tích chập (convolutional neural network - CNN), thị giác máy tính có các ứng dụng trong việc gắn thẻ ảnh trên mạng xã hội, chụp ảnh X quang trong chăm sóc sức khỏe và xe tự lái trong ngành công nghiệp ô tô

● Công cụ đề xuất: Sử dụng dữ liệu hành vi tiêu dùng trong quá khứ, thuật toán AI có thể giúp khám phá các xu hướng dữ liệu có thể được sử dụng để phát triển các chiến lược bán chéo hiệu quả hơn Cách tiếp cận này được các nhà bán lẻ trực tuyến sử dụng để đưa ra đề xuất sản phẩm phù hợp cho khách hàng trong quá trình thanh toán

Copies for internal use only in Phenikaa University

Trang 31

2.8 Deep learning (Học sâu)

2.8.1 Deep learning là gì

Học sâu là một tập hợp con của học máy , về cơ bản là một neural network (mạng lưới thần kinh) có ba lớp trở lên Các neural network này cố gắng mô phỏng hành vi của bộ não con người, nó “học” từ một lượng lớn dữ liệu Mặc dù neural network có một lớp vẫn có thể đưa ra dự đoán gần đúng, nhưng các lớp ẩn bổ sung

có thể giúp tối ưu hóa và tinh chỉnh để đảm bảo độ chính xác

2.8.2 Học sâu hoạt động như nào

Mạng lưới thần kinh sâu sử dụng dữ liệu đầu vào, trọng số, và độ lệch để nhận dạng, phân loại và mô tả các đối tượng trong dữ liệu Nó bao gồm nhiều lớp nút kết nối với nhau, và tiến trình tính toán thông qua mạng được gọi là "lan truyền tiến" Lan truyền ngược sử dụng giảm độ dốc để điều chỉnh trọng số và độ lệch trong quá trình huấn luyện mô hình

● Dịch vụ khách hàng: Công nghệ deep learning được tích hợp vào chatbots

và trợ lý ảo để cải thiện dịch vụ khách hàng

● Chăm sóc sức khỏe: Ngành chăm sóc sức khỏe sử dụng học sâu để phân tích hình ảnh và hồ sơ bệnh viện, giúp bác sĩ trong việc chẩn đoán và quản

lý bệnh

2.9 Nhận dạng khuôn mặt (Face recognition)

2.9.1 Phát hiện khuôn mặt (Face Detection)

Phát hiện khuôn mặt (Face Detection) là một phần quan trọng của hệ thống nhận dạng khuôn mặt Nhiệm vụ của phát hiện khuôn mặt là xác định vị trí và kích thước của khuôn mặt trong một bức ảnh hoặc video Điều này là một bước quan trọng để trích xuất và nhận dạng khuôn mặt sau này

Copies for internal use only in Phenikaa University

Ngày đăng: 17/07/2024, 10:42

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] FPT Aptech Edu, “Kafka là gì? Những điều bạn có thể chưa biết về Kafka”. [Trực tuyến]. Địa chỉ: https://aptech.fpt.edu.vn/kafka-la-gi.html [Truy cập ngày 22/09/2023] Sách, tạp chí
Tiêu đề: Kafka là gì? Những điều bạn có thể chưa biết về Kafka
[2] Confluent Development, “What Is Apache Kafka?”. [Trực tuyến]. Địa chỉ: https://developer.confluent.io/what-is-apache-kafka/ [Truy cập ngày 26/09/2023] Sách, tạp chí
Tiêu đề: What Is Apache Kafka
[3] admin, “Kafka là gì”. 17/05/2022. [Trực tuyến]. Địa chỉ: https://hocphp.net/tong-quan/kafka-la-gi/ [Truy cập ngày 22/09/2023] Sách, tạp chí
Tiêu đề: Kafka là gì
[5] Buzz Moschetti. “MongoDB vs SQL: Day 1-2”. 28/04/2017. [Trực tuyến]. Địa chỉ: https://www.mongodb.com/blog/post/mongodb-vs-sql-day-1-2 [Truy cập ngày 23/09/2023] Sách, tạp chí
Tiêu đề: MongoDB vs SQL: Day 1-2
[6] “Welcome to the MongoDB Documentation”. [Trực tuyến]. Đỉa chỉ: https://dochub.mongodb.org/ [Truy cập ngày 23/09/2023] Sách, tạp chí
Tiêu đề: Welcome to the MongoDB Documentation
[7] TechMelyTeam, “Kiến trúc và thành phần của docker”. [Trực tuyến]. Địa chỉ: https://kungfutech.edu.vn/bai-viet/docker/kien-truc-va-thanh-phan-cua-docker [Truy cập ngày 23/09/2023] Sách, tạp chí
Tiêu đề: Kiến trúc và thành phần của docker
[8] CloudxLab Official, “Docker Workflow”. 02/02/2021. [Trực tuyến]. Địa chỉ: https://www.youtube.com/watch?v=i_aMIbdbw9s [Truy cập ngày 23/09/2023] Sách, tạp chí
Tiêu đề: Docker Workflow
[9] Neeraj Krishna, “Kafka in Action: Building a distributed multi-video processing pipeline with Python and Confluent Kafka”. 25/09/2020. [Trực tuyến].Địa chỉ: https://towardsdatascience.com/kafka-in-action-building-a-distributed-multi-video-processing-pipeline-with-python-and-confluent-9f133858f5a0[Truy cập 01/06/ 2023] Sách, tạp chí
Tiêu đề: Kafka in Action: Building a distributed multi-video processing pipeline with Python and Confluent Kafka

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

TÀI LIỆU LIÊN QUAN

w