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

Đồ án tốt nghiệp Công nghệ kỹ thuật điều khiển và tự động hóa: Thiết kế và thi công smartkey-Iot tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt

96 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

Định dạng
Số trang 96
Dung lượng 4,98 MB

Nội dung

Đề tài "Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo AI để nhận diện khuôn mặt" đặt mục tiêu tạo ra một hệ thống khóa cửa tiên tiến, hiện đại, phù h

Trang 1

THÀNH PHỐ HỒ CHÍ MINH

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

GVHD: TS NGUYỄN VĂN THÁI SVTH: HUỲNH TUẤN KIỆT

Trang 2

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN -⸙∆⸙ -

Tp Hồ Chí Minh tháng 6 năm 2024

Trang 3

Em xin tỏ lòng biết ơn chân thành đến công ty 3DVisionLab vì đã tài trợ đồ án và cung cấp các tài nguyên quan trọng, từ đó giúp đồ án của em có thể đi đến thành công như ngày hôm nay

Em xin chân thành gửi lời cảm ơn đến Thầy – Tiến sĩ Nguyễn Văn Thái, thầy đã dành nhiều thời gian và tâm huyết để hỗ trợ và hướng dẫn em trong quá trình thực

hiện đề tài "Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý và trí tuệ nhân tạo (AI) ảnh để nhận diện khuôn mặt"

Thầy đã là người đi đầu, truyền tải kiến thức và kinh nghiệm quý báu của mình một cách nhiệt tình và tận tâm Nhờ sự chỉ dẫn nhiệt tình của Thầy, em đã có thể vượt qua những thách thức trong quá trình nghiên cứu và phát triển dự án này

Thầy không chỉ là một người hướng dẫn xuất sắc mà còn là người đồng hành đầy cảm hứng và động viên trong suốt quá trình làm việc Em rất biết ơn sự cổ vũ của Thầy đã giúp tôi duy trì niềm tin và nỗ lực để hoàn thành đề tài một cách tốt nhât Cuối cùng, em cảm ơn những người thân, bạn bè đã luôn ủng hộ, hỗ trợ và cổ vũ em trong thời gian làm việc Sự ủng hộ từ những người thân yêu này không chỉ là nguồn động viên mà còn là động lực lớn giúp em vượt qua mọi khó khăn

Xin chân thành cảm ơn Thầy,

Trang 4

LỜI CAM ĐOAN

Dưới sự hướng dẫn, hỗ trợ của Thầy – Tiến sĩ Nguyễn Văn Thái, em đã tự mình

nghiên cứu, thực hiện đề tài "Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt" Qua quá trình

này, em cam đoan rằng đề tài được triển khai hoàn toàn bằng công sức và nỗ lực của riêng bản thân

Em đã dành thời gian để tổng hợp và vận dụng những kiến thức đã được, nghiên cứu những tài liệu liên quan đến việc thiết kế và thi công các phần mềm và phần cứng liên quan

Em cam kết rằng mọi kết quả đạt được trong đề tài đều là những thành quả của việc nghiên cứu một cách trung thực và không phải được sao chép từ bất kỳ nguồn nào

Tp Hồ Chí Minh , ngày tháng năm 2024

Sinh viên thực hiện (Ký và ghi rõ họ tên)

Huỳnh Tuấn Kiệt

Trang 5

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

TRƯỜNG ĐẠI HỌC SPKT TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN

CỘNG HÓA XÃ HỘI CHỦ NGHĨA

VIỆT NAM ĐỘC LẬP – TỰ DO – HẠNH PHÚC

o0o

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Ngành: Công nghệ kỹ thuật Điều khiển và Tự động hóa Lớp: 201512B

Giảng viên hướng dẫn: TS Nguyễn Văn Thái

Ngày nhận đề tài: 4/2/2024 Ngày nộp đề tài: 21/6/2024

Tên đề tài: Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí

tuệ nhân tạo (AI) để nhận diện khuôn mặt

Nội dung thực hiện đề tài:

− Thiết kế được phần cứng cho khóa

− Tìm hiểu về màn hình DWIN

− Tìm hiểu về Jetson nano

− Tìm hiểu về xử lý ảnh, nhận diện khuôn mặt

− Thiết kế giao diện cho app

− Lập trình app front_end và back_end

− Lập trình tác vụ đóng mở của bằng màn hình , trên app và nhận diện khuôn mặt

− Chạy thử nghiệm sản phẩm và đánh giá

− Viết báo cáo

Trang 6

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

TRƯỜNG ĐẠI HỌC SPKT TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN

CỘNG HÓA XÃ HỘI CHỦ NGHĨA

VIỆT NAM ĐỘC LẬP – TỰ DO – HẠNH PHÚC

o0o

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ và tên sinh viên: Huỳnh Tuấn Kiệt MSSV: 20151500 Ngành: Công nghệ kỹ thuật Điều khiển và Tự động hóa Lớp: 201512B Hệ đào tạo: Đại học chính quy Khóa: 2020 Giảng viên hướng dẫn: TS Nguyễn Văn Thái Tên đề tài: Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt 1 Về nội dung đề tài và khối lượng thực hiện

2 Ưu điểm

3 Khuyết điểm

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm: Bằng chữ:

TP Hồ Chí Minh, ngày tháng năm 2024

Giáo viên hướng dẫn

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

Trang 7

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

TRƯỜNG ĐẠI HỌC SPKT TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN

CỘNG HÓA XÃ HỘI CHỦ NGHĨA

VIỆT NAM ĐỘC LẬP – TỰ DO – HẠNH PHÚC

o0o

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ và tên sinh viên: Huỳnh Tuấn Kiệt MSSV: 20151500 Ngành: Công nghệ kỹ thuật Điều khiển và Tự động hóa Lớp: 201512B Hệ đào tạo: Đại học chính quy Khóa: 2020 Giáo viên phản biện: Tên đề tài: Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt 1 Về nội dung đề tài và khối lượng thực hiện

2 Ưu điểm

3 Khuyết điểm

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm: Bằng chữ:

TP Hồ Chí Minh, ngày tháng năm 2024

Giáo viên phản biện

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

Trang 8

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

TRƯỜNG ĐẠI HỌC SPKT TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN

CỘNG HÓA XÃ HỘI CHỦ NGHĨA

VIỆT NAM ĐỘC LẬP – TỰ DO – HẠNH PHÚC

o0o

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP

Ngành: Công nghệ kỹ thuật Điều khiển và Tự động hóa Lớp: 201512B

Tên đề tài: Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí

tuệ nhân tạo (AI) để nhận diện khuôn mặt

Trang 9

15/4 – 21/4 viết code cho màn hình

Trang 10

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC viii

DANH SÁCH HÌNH ẢNH xi

DANH MỤC CÁC TỪ VIẾT TẮT xiv

CHƯƠNG 1 TỔNG QUAN 1

1.1 ĐẶT VẤN ĐỀ 1

1.2 MỤC TIÊU 1

1.3 PHƯƠNG PHÁP NGHIÊN CỨU 1

1.4 NỘI DUNG NGHIÊN CỨU 1

1.5 GIỚI HẠN ĐỀ TÀI: 2

1.6 BỐ CỤC BÁO CÁO 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 4

2.1 GIỚI THIỆU VỀ IOT (INTERNET OF THING) 4

2.1.1 Tổng quan về IoT 4

2.1.2 Các thành phần của IoT 5

2.1.3 Ứng dụng của IoT 5

2.1.4 Thách thức của IoT 6

2.2 GIỚI THIỆU CÁC CÔNG CỤ THIẾT KẾ APP 7

2.2.1 React Native 7

2.2.2 Expo 8

2.2.3 Node.js 10

2.2.4 Express 11

2.3 GIỚI THIỆU VỀ XỬ LÝ ẢNH 13

2.3.1 Tổng quan 13

Trang 11

2.3.2 Ứng dụng 13

2.4 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO AI 15

2.5 NGÔN NGỮ LẬP TRÌNH PYTHON 16

2.5.1 Giới thiệu về python 16

2.5.2 Giới thiệu về Threading (Đa luồng) trong Python 17

2.5.3 Giới thiệu về thư viện OpenCV 19

2.5.4 Giới thiệu về thư viện face-recognition 20

2.6 GIỚI THIỆU VỀ PORT FORWARDING 21

2.7 NHỮNG PHẦN MỀM VÀ WEB ĐƯỢC SỬ DỤNG TRONG ĐỀ TÀI 21

2.7.1 Visual Studio Code (VS Code) 21

2.7.2 Arduino IDE 22

2.7.3 KiCAD 23

2.7.4 balenaEtcher 24

2.7.5 SD Card Formatter 25

2.7.6 XAMPP 26

2.7.7 DWIN DGUS 27

2.7.8 SOLIDWORKS 27

2.7.9 FIGMA 28

CHƯƠNG 3 THIẾT KẾ HỆ THỐNG 29

3.1 YÊU CẦU HỆ THỐNG 29

3.2 THIẾT KẾ PHẦN CỨNG 30

3.2.1 LỰA CHỌN THIẾT BỊ 30

3.2.2 SƠ ĐỒ NGUYÊN LÝ BOARD MẠCH 37

3.2.3 LAYOUT PCB 42

3.2.4 HỘP CHỨA CHO BOARD VÀ MÀN HÌNH 43

3.3 THIẾT KẾ PHẦN MỀM 45

Trang 12

3.3.1 THIẾT KẾ VÀ LẬP TRÌNH MOBILE APP 45

3.3.2 LẬP TRÌNH GIAO DIỆN CHO MÀN HÌNH DWIN 54

3.3.3 LẬP TRÌNH CHO ESP32 56

3.3.4 CÀI ĐẶT HỆ ĐIỀU HÀNH CHO JETSON NANO 63

3.3.5 LẬP TRÌNH TRÊN JETSON NANO 65

CHƯƠNG 4 KẾT QUẢ 71

4.1 KẾT QUẢ PHẦN CỨNG 71

4.2 KẾT QUẢ PHẦN MỀM 73

4.2.1 Mobile App 73

4.2.2 Màn hình DWIN 74

4.2.3 Jetson nano 75

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

5.1 KẾT LUẬN 77

5.2 HƯỚNG PHÁT TRIỂN 77

TÀI LIỆU THAM KHẢO 79

Trang 13

DANH SÁCH HÌNH ẢNH

Hình 2.1 Internet of thing 4

Hình 2.2 React Native 7

Hình 2.3 Expo 9

Hình 2.4 Node.js 11

Hình 2.5 CRUD 12

Hình 2.6 Các bước trong xử lý ảnh 14

Hình 2.7 Ngôn ngữ lập trình Python 16

Hình 2.8 Sử dụng đơn luồng 18

Hình 2.9 Sử dụng đa lường 18

Hình 2.10 Thư viện OpenCV 19

Hình 2.11 VS Code 22

Hình 2.12 Arduino IDE 23

Hình 2.13 KiCAD 24

Hình 2.14 balenaEtcher 25

Hình 2.15 SD Card Formatter 26

Hình 2.16 XAMPP 27

Hình 2.17 DWIN DGUS 27

Hình 2.18 SOLIDWORKS 28

Hình 2.19 Figma 28

Hình 3.1 Sơ đồ hoạt động của hệ thống 29

Hình 3.2 ESP32 ESP-WROOM-32E 30

Hình 3.3 Sơ đồ khối chức năng của ESP32 31

Hình 3.4 Sơ đồ chân của ESP32 32

Hình 3.5 Màn hình DWIN 32

Hình 3.6 Cấu tạo màn hình DWIN 4.3 inch 33

Hình 3.7 Cảm biến tiệm cận LJ12A3-4-Z/BX 34

Hình 3.8 Camera Xiaomi Xiaovv- XVV-6320S 35

Hình 3.9 Jetson nano 36

Hình 3.10 Cấu tạo ổ khóa 37

Hình 3.10 Cấu tạo bộ phận khóa 38

Hình 3.10 Sơ đồ nguyên lý nguồn 220VAC thành 5VDC 38

Trang 14

Hình 3.11 Sơ đồ nguyên lý nguồn Pin thành 5VDC 39

Hình 3.12 Sơ đồ nguyên lý nguồn 5VDC thành 3.3VDC 39

Hình 3.13 Sơ đồ nguyên lý mạch ESP32 40

Hình 3.14 Sơ đồ nguyên lý các chân nạp cho ESP 41

Hình 3.15 Sơ đồ nguyên lý các chân terminal 41

Hình 3.16 Lớp Top của board mạch 42

Hình 3.17 Lớp Bottom của board mạch 42

Hình 3.18 Các đường mạch của board 43

Hình 3.19 Hộp chưa màn hình và board 43

Hình 3.20 Bản vẽ 2D của hộp mặt trước và sau 44

Hình 3.21 Bản vẽ 2D của hộp các mặt xung quanh 44

Hình 3.22 Giao diện được thiết kế trước bằng figma 45

Hình 3.23 Thông báo đã tạo thành công dự án Expo 46

Hình 3.24 Các file sau khi khởi tạo 46

Hình 3.25 Bắt đầu dự án Expo 51

Hình 3.26 App Expo Go trên thiết bị android 51

Hình 3.27 Chạy MySQL bằng XAMPP 53

Hình 3.28 Cơ sở dữ liệu MySQL trên XAMPP 54

Hình 3.29 Khởi tạo dự án mới bằng DWIN DGUS 55

Hình 3.30 Màn hình sau khi thiết bằng DWIN DGUS 56

Hình 3.31 Lưu đồ lấy trạng thái nút nhấn từ url1 57

Hình 3.32 Lưu đồ lấy mật khẩu từ url2 58

Hình 3.33 Lưu đồ chương trình HTTP Task 59

Hình 3.34 Lưu đồ đọc giá trị từ màn DWIN gửi qua 60

Hình 3.35 Lưu đồ chương trình mở cửa 61

Hình 3.36 Lưu đồ chương trình chính 62

Hình 3.37 File hệ điều hành cho Jetson nano 63

Hình 3.38 Định dạng thẻ nhớ bằng SD Card Formatter 64

Hình 3.39 Flash hệ điều hành qua thẻ nhớ bằng balenaEtcher 64

Hình 3.40 Jetson nano sau khi cài đặt hệ điều hành 65

Hình 3.41 Xử lý ảnh đầu vào 66

Hình 3.42 Lưu đồ xây dựng mô hình nhận diện khuôn mặt 66

Trang 15

Hình 3.43 Ảnh fake và ảnh real 67

Hình 3.44 Lưu đồ xây dựng mô hình nhận điện ảnh thật, giả 68

Hình 3.45 Lưu đồ luồng gửi ảnh lên server 70

Hình 3.46 Lưu đồ luồng nhận diện khuôn mặt 70

Hình 4.1 Board sau khi hàn xong 71

Hình 4.2 Mô hình hộp mica chứa board và màn hỉnh 71

Hình 4.3 Mặt trước và sau của khóa 72

Hình 4.4 Mô hình khóa 73

Hình 4.5 Giao diện của mobile app 73

Hình 4.6 Dữ liệu trên database khi đăng ký 74

Hình 4.7 Dữ liệu trên database khi điền form hỗ trợ 74

Hình 4.8 Màn hình DWIN sau khi nạp chương trình 74

Hình 4.9 Màn hình DWIN sau khi nhập mật khẩu 75

Hình 4.10 Kết quả nhận diện ảnh thật giả 75

Hình 4.11 Kết quả nhận diện khuôn mặt 76

Hình 4.12 Kết quả nhận diện khuôn mặt trên Jetson nano 76

Trang 16

DANH MỤC CÁC TỪ VIẾT TẮT

IoT : Internet of Things

SDK: Software Development Kit

WiFi: Wireless Fidelity

UART: Universal Asynchronous Receiver Transmitter

OTA: Over-the-Air

ORM: Object-Relational Mapping

CRUD: Create Read Update Delete

AI: Artificial Intelligent

IDE: Integrated Development Environment

TCP: Transmission Control Protocol

UDP: User Datagram Protocol

GIL: Global Interpreter Lock

CCS: Cascading Style Sheets

API: Application Programming Interface

HTML: Hyper Text Markup Language

Trang 17

CHƯƠNG 1 TỔNG QUAN

1.1 ĐẶT VẤN ĐỀ

Trong thời đại công nghệ 4.0, các ứng dụng IoT (Internet of Things) và trí tuệ nhân tạo (AI) đang trở thành những yếu tố then chốt trong việc cải tiến và nâng cao chất lượng cuộc sống Một trong những ứng dụng nổi bật là hệ thống khóa thông minh (SmartKey), tích hợp công nghệ xử lý ảnh và nhận diện khuôn mặt Đề tài

"Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt" đặt mục tiêu tạo ra một hệ thống khóa cửa tiên tiến, hiện đại, phù hợp với xu hướng phát triển của xã hội

An ninh và bảo mật: Với tình trạng tội phạm và các vụ đột nhập ngày càng gia tăng, nhu cầu về các giải pháp an ninh tiên tiến và hiệu quả trở nên cấp bách Hệ thống SmartKey với khả năng nhận diện khuôn mặt cung cấp một lớp bảo vệ bổ sung, giúp tăng cường an ninh cho nhà ở, văn phòng và các khu vực cần bảo vệ Tiện lợi và tự động hóa: Sử dụng khóa thông minh giúp người dùng tiết kiệm thời gian và công sức so với các phương pháp truyền thống như sử dụng chìa khóa vật lý Việc tích hợp công nghệ IoT cho phép quản lý và giám sát từ xa thông qua các thiết bị di động

1.2 MỤC TIÊU

Nghiên cứu, thiết kế, thi công được một hệ thống khóa cửa mở bằng nhận diện khuôn mặt, mật khẩu trên màn hình và mở bằng mobile app trên thiết bị di dộng

1.3 PHƯƠNG PHÁP NGHIÊN CỨU

Đề tài sử dụng kết hợp những phương pháp nghiên cứu:

− Phương pháp nghiên cứu lý thuyết

− Phương pháp thực nghiệm

1.4 NỘI DUNG NGHIÊN CỨU

− Tìm hiểu về công nghệ IoT

− Tìm hiểu về nhận diện khuôn mặt, xử lý ảnh và thực hiện nhận diện khuôn mặt trên Jetson nano

Trang 18

− Nghiên cứu cách tạo một mobile app bằng React Native và Expo

− Nghiên cứu cách tạo một server và giao tiếp giữa client và server

− Nghiên cứu cách giao tiếp giữa những thiết bị với nhau

− Nghiên cứu cách quản lý cơ sở dữ liệu

− Lập trình hệ thống

− Thiết kế hệ thống

− Kiểm tra, sửa chữa và hoàn thiện toàn bộ hệ thống

− Viết bài báo cáo

1.5 GIỚI HẠN ĐỀ TÀI:

- Giới hạn về tính chính xác của xử lý ảnh

- Độ trễ của camera khi quan sát trên ứng dụng

- Chưa triển khai chức năng gửi mã xác nhận qua email

- Chưa tính toán lượng năng lượng các thiết bị sử dụng

- Chưa có tính năng đặt wifi ban đầu cho esp32 trên app

- Dùng những thiết bị sẵn có nên phạm vi ứng dụng chưa cao

1.6 BỐ CỤC BÁO CÁO

Chương 1: Tổng quan

Phần này sẽ giới thiệu tổng quan về để tài sẽ được thực hiện, lý do chọn đề tài,mục tiêu nghiên cứu, nội dung nghiên cứu và các giới hạn của đề tài

Chương 2: Cơ sở lý thuyết

Phần này sẽ nêu ra những lý thuyết về kiến thức liên quan đến đê tài thực hiện Lý thuyết cơ bản sẽ bao gồm các khái niệm và định nghĩa liên quan tới đề tài Việc nắm vững các lý thuyết này sẽ giúp ta có cái nhìn tổng quan về những kiến thức sẽ được sử dụng vào trong để Mô tả sơ bộ về các phần mềm được sử dụng trong đề tài

Chương 3: Thiết kế hệ thống

Phần này sẽ nêu ra các quá trình thiết kế nên một hệ thống để đáp ứng được những mục tiêu của đề tài Bao gồm lựa chọn thiết bị phù hợp với đề tài, sơ đồ nguyên lý mạch phần cứng Về phần mềm thì thiết kế app giao diện người dùng, các lưu đồ giải thuật trong phần mềm

Chương 4: Kết quả

Trang 19

Phần này sẽ trình bày những đề tài đã hoàn thành được Nhìn nhận kết quả có đúng với mục tiêu đã đề ra của đề tài không

Chương 5: Kết luận và hướng phát triển

Trình bày những kết luận về hệ thống, những gì mà hệ thống đã đạt được , những hạn chế và đề xuất những ý tưởng để phát triển sản phẩm trong tương lai

Trang 20

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1 GIỚI THIỆU VỀ IOT (INTERNET OF THING)

2.1.1 Tổng quan về IoT

Internet of Things (IoT) là một khái niệm đang càng ngày trở nên phổ biến trong thời đại công nghệ hiện nay IoT đề cập đến một hệ thống mạng rộng lớn trong đó những thiết bị thông minh được giao tiếp với nhau qua internet, cho phép thu thập, chia sẻ và phân tích dữ liệu với mục tiêu tối ưu hóa các hoạt động hàng ngày và nâng cao chất lượng cuộc sống Các thiết bị này bao gồm từ những vật dụng quen thuộc như điện thoại thông minh, tivi, và đồng hồ thông minh, đến các

hệ thống phức tạp hơn như cảm biến công nghiệp, xe tự lái, thiết bị y tế, và thậm chí

cả các thiết bị trong nông nghiệp như hệ thống tưới tiêu tự động

IoT mang lại khả năng tạo ra một môi trường kết nối liền mạch, nơi thông tin được trao đổi một cách tự động và hiệu quả Môi trường kết nối liền mạch do IoT tạo ra còn cho phép sự giám sát và quản lý từ xa, giúp tối ưu hóa quy trình và tiết kiệm nguồn lực Điều này đặc biệt quan trọng trong các lĩnh vực như y tế, nơi mà các thiết bị IoT có thể theo dõi tình trạng sức khỏe của bệnh nhân từ xa và cung cấp thông tin kịp thời cho bác sĩ, hay trong công nghiệp, nơi các máy móc được giám sát liên tục để dự báo và ngăn ngừa sự cố

Hình 2.1 Internet of thing

(Nguồn: https://www.freepik.com/free-photos-vectors/iot-devices)

Trang 21

2.1.2 Các thành phần của IoT

− Thiết bị thông minh (Smart Devices): là các thiết bị có khả năng thu thập

dữ liệu và giao tiếp thông tin qua mạng internet Ví dụ như điện thoại thông minh, máy tính bảng, thiết bị y tế, đồng hồ thông minh, cảm biến, actuator, thiết bị gia đình thông minh như máy giặt, tủ lạnh, đèn chiếu sáng, vv

− Mạng kết nối (Network Connectivity):IoT sử dụng các công nghệ kết nối

mạng như Wi-Fi, Bluetooth, Zigbee, LoRa, LTE, hay cả mạng dây như Ethernet để các thiết bị có thể giao tiếp với nhau và với hệ thống điều khiển

từ xa

− Phần mềm và nền tảng (Software and Platforms):Đây là các phần mềm

và nền tảng dùng để quản lý và điều khiển các thiết bị IoT, thu thập và phân tích dữ liệu Các nền tảng này cung cấp các công cụ để phát triển ứng dụng IoT, quản lý thiết bị, bảo mật và quản lý dữ liệu, ví dụ như AWS IoT, Google Cloud IoT, Azure IoT, hay các nền tảng mã nguồn mở như Arduino, Raspberry Pi

− Dữ liệu (Data):IoT sản sinh ra một lượng lớn dữ liệu từ các thiết bị thu thập

thông tin về môi trường xung quanh và các hoạt động Dữ liệu này được sử dụng để cung cấp thông tin hữu ích cho việc ra quyết định, cải thiện hiệu quả

và tối ưu hoá các quy trình

− Người dùng và ứng dụng (Users and Applications):Các người dùng cuối

và các ứng dụng sử dụng dữ liệu và các tính năng của IoT để cải thiện cuộc sống hàng ngày và công việc Ví dụ như hệ thống nhà thông minh, chăm sóc sức khỏe từ xa, quản lý thông minh, giao thông thông minh, nông nghiệp thông minh, vv

2.1.3 Ứng dụng của IoT

IoT được ứng dụng trong rất nhiều lĩnh vực:

− Nhà thông minh (Smart Home): Điều khiển thiết bị gia đình như đèn chiếu

sáng, thiết bị điện tử (TV, máy giặt, tủ lạnh) từ xa qua điện thoại thông minh.Giám sát và điều khiển nhiệt độ, độ ẩm, an ninh nhà cửa bằng hệ thống camera và cảm biến

Trang 22

− Y tế và chăm sóc sức khỏe (Healthcare):Thiết bị đeo thông minh (smart

wearable) để theo dõi sức khỏe như nhịp tim, hoạt động vận động, chất

lượng giấc ngủ Giám sát và điều khiển thiết bị y tế từ xa, bao gồm các thiết

bị y tế nâng cao như máy xạ trị và máy chụp cắt lớp

− Công nghiệp (Industrial): Giám sát các hệ thống sản xuất và quản lý chuỗi

cung ứng thông qua cảm biến và mạng IoT để tối ưu hóa quá trình sản xuất

và giảm thiểu sự cố Bảo trì dự đoán: Dự đoán sự cố trên các máy móc và

thiết bị công nghiệp trước khi chúng xảy ra để giảm thiểu thời gian dừng

− Bảo mật và quyền riêng tư: Dữ liệu từ các thiết bị IoT thường là nhạy cảm

và có thể bị tấn công, lộ thông tin cá nhân nếu không có biện pháp bảo mật phù hợp.Các thiết bị IoT thường có tính năng bảo mật yếu và có thể dễ dàng

bị xâm nhập, trở thành lỗ hổng để tấn công mạng lớn

− Quản lý và cập nhật phần mềm: Những thiết bị IoT cần phải cập nhật phần

mềm thường xuyên để bảo đảm tính bảo mật và hiệu suất, nhưng việc này thường gặp khó khăn do sự phân tán của các thiết bị và nhà sản xuất

− Xử lý và phân tích dữ liệu lớn: IoT sản sinh ra lượng dữ liệu lớn, việc phân

tích và xử lý dữ liệu trở thành thách thức, đặc biệt là trong thời gian thực và

để đưa ra các quyết định nhanh chóng

− Hạn chế về năng lượng và độ bền: Đa số các thiết bị IoT hoạt động liên tục

và có thể không dễ dàng tiếp cận nguồn năng lượng, do đó cần các giải pháp tiết kiệm năng lượng.Các thiết bị IoT thường được đặt trong môi trường khắc nghiệt hoặc khả năng hoạt động trong thời gian dài mà không cần bảo trì, điều này đòi hỏi các thiết kế chịu được và độ bền cao

Trang 23

2.2 GIỚI THIỆU CÁC CÔNG CỤ THIẾT KẾ APP

2.2.1 React Native

React Native là một framework phát triển ứng dụng di động được Facebook giới thiệu lần đầu tiên vào năm 2015 Framework này đã nhanh chóng trở thành một trong những công cụ phổ biến nhất để phát triển ứng dụng di động nhờ khả năng viết mã nguồn một lần và chạy trên cả iOS và Android React Native được xây dựng dựa trên React, một thư viện JavaScript nổi tiếng dùng để xây dựng giao diện người dùng

React Native xuất phát từ nhu cầu nội bộ của Facebook nhằm phát triển các ứng dụng di động với hiệu quả cao hơn Trước đó, đội ngũ phát triển tại Facebook phải duy trì hai mã nguồn riêng biệt cho iOS và Android, dẫn đến nhiều khó khăn trong việc quản lý và phát triển tính năng đồng nhất cho cả hai nền tảng Nhận thấy tiềm năng của React – một thư viện JavaScript do Facebook phát triển vào năm

2013 – trong việc xây dựng giao diện người dùng hiệu quả, nhóm phát triển đã bắt đầu nghiên cứu cách áp dụng các nguyên lý của React vào phát triển ứng dụng di động

Dự án React Native bắt đầu vào năm 2013 và được công bố lần đầu tại hội nghị React.js Conf vào năm 2015 Mục tiêu của React Native là cung cấp một công

cụ phát triển ứng dụng di động có thể chia sẻ phần lớn mã nguồn giữa iOS và Android, đồng thời đảm bảo hiệu suất gần như tương đương với ứng dụng gốc

Hình 2.2 React Native

(Nguồn: https://worldvectorlogo.com/logo/react-native-1)

Ưu điểm của React Native:

Trang 24

• Khả năng tái sử dụng mã nguồn: ưu điểm lớn nhất của React Native là việc có thể tái sử dụng mã nguồn giữa iOS và Android Những thành phần giao diện và logic ứng dụng có thể được viết một lần và sử dụng cho cả hai nền tảng, giúp tiết kiệm công sức và thời gian phát triển rất nhiều Thông thường, tỷ lệ mã nguồn tái sử dụng có thể đạt từ 70% đến 90%

• Phát triển nhanh chóng: React Native hỗ trợ tính năng Hot Reloading, cho phép lập trình viên thấy các thay đổi trong mã code mà không cần phải build lại nhiều lần Nên giúp quá trình phát triển và giúp phát hiện lỗi nhanh chóng hơn

• Cộng đồng đông đảo: React Native có một cộng đồng đông đảo và nhiệt tình, với nhiều thư viện và tài liệu hỗ trợ Điều này giúp các lập trình viên dễ dàng kiếm ra giải pháp cho những vấn dề khúc mắc

• Tiết kiệm chi phí: Việc chỉ cần một đội ngũ phát triển để viết mã cho cả hai nền tảng giúp giảm chi phí nhân lực và tăng hiệu quả làm việc

Nhược điểm của React Native

• Hiệu suất không tối ưu cho mọi trường hợp: Mặc dù React Native cung cấp hiệu suất tốt, nhưng đối với những yêu cầu xử lý đồ họa phức tạp hoặc tác vụ tính toán cao, hiệu suất của nó không thể so sánh với ứng dụng gốc được viết bằng ngôn ngữ như Swift hay Kotlin

• Hạn chế về tính năng gốc: Một số tính năng đặc trưng của từng nền tảng có thể không được hỗ trợ đầy đủ trong React Native, yêu cầu lập trình viên phải viết

mã gốc (native code) để bổ sung, điều này làm giảm tính đồng nhất của mã nguồn và tăng độ phức tạp

• Hỗ trợ không đồng đều: Một số thư viện và công cụ mới nhất trên iOS và Android có thể không được hỗ trợ kịp thời trong React Native [2]

2.2.2 Expo

Expo là một nền tảng mạnh mẽ và toàn diện dành cho phát triển ứng dụng di động đa nền tảng sử dụng React Native Được thiết kế nhằm tối ưu hóa quy trình phát triển, Expo cung cấp một bộ công cụ và dịch vụ phong phú giúp lập trình viên

dễ dàng xây dựng, triển khai và quản lý ứng dụng di động trên cả hệ điều hành iOS

và Android mà không cần phải có kiến thức sâu về từng nền tảng riêng lẻ Với Expo, các nhà phát triển có thể truy cập vào các API phong phú và tính năng như

Trang 25

camera, vị trí địa lý, và thông báo, đồng thời tận dụng môi trường phát triển tích hợp (IDE) tiện lợi và thư viện sẵn có Expo không chỉ giúp rút ngắn thời gian phát triển mà còn đảm bảo tính nhất quán và hiệu quả, giúp các dự án di động từ nhỏ đến lớn đều có thể đạt được chất lượng cao và trải nghiệm người dùng mượt mà [3]

Hình 2.3 Expo

(Nguồn : https://www.svgrepo.com/svg/353722/expo) Lợi ích của Expo

• Dễ sử dụng: Expo loại bỏ nhiều phức tạp trong quá trình thiết lập môi trường phát triển Bạn có thể bắt đầu ngay lập tức với một dự án mới mà không cần phải cài đặt và cấu hình nhiều công cụ và SDK khác nhau

• Hot Reloading: Tính năng hot reloading của Expo cho phép bạn xem ngay các thay đổi trong ứng dụng mà không cần phải build lại từ đầu, giúp tăng tốc độ phát triển và thử nghiệm

• Bộ thư viện đa dạng: Expo cung cấp nhiều API và thư viện có sẵn để truy cập các tính năng thiết bị như máy ảnh, vị trí, thông báo, và lưu trữ cục bộ, giúp lập trình viên dễ dàng tích hợp các tính năng phổ biến mà không cần viết mã gốc

• Expo Go: Ứng dụng Expo Go trên iOS và Android cho phép bạn chạy và thử nghiệm ứng dụng trực tiếp trên thiết bị di động mà không cần phải qua quá trình build và cài đặt phức tạp Chỉ cần quét mã QR và bạn có thể thấy ngay ứng dụng của mình hoạt động

• Quản lý tài nguyên dễ dàng: Expo cung cấp các công cụ để quản lý tài nguyên như hình ảnh, phông chữ, và âm thanh một cách hiệu quả, giúp đảm bảo rằng ứng dụng của bạn hoạt động mượt mà trên mọi thiết bị

Trang 26

• Dịch vụ triển khai và xây dựng: Với Expo, bạn có thể dễ dàng xây dựng và triển khai ứng dụng lên App Store và Google Play thông qua các dịch vụ build của Expo, mà không cần phải cấu hình môi trường build phức tạp

• Hỗ trợ OTA (Over-the-Air) Updates: Expo cho phép bạn gửi cập nhật đến người dùng mà không cần phải qua quy trình kiểm duyệt của App Store hoặc Google Play, giúp bạn nhanh chóng triển khai các bản sửa lỗi và tính năng mới

Hạn chế của Expo

• Hạn chế về Native Modules: Expo không hỗ trợ tất cả các mô-đun gốc của React Native Nếu cần sử dụng các thư viện gốc không được Expo hỗ trợ, ta phải "eject" dự án của mình ra khỏi Expo, điều này làm mất đi một số lợi ích của nền tảng này

• Kích thước ứng dụng lớn: Ứng dụng được xây dựng bằng Expo thường có kích thước lớn hơn so với các ứng dụng gốc tương đương do bao gồm nhiều mô-đun không cần thiết

• Hiệu suất: Mặc dù Expo tối ưu hóa nhiều khía cạnh, nhưng đôi khi hiệu suất của ứng dụng Expo có thể không đạt được như ứng dụng gốc, đặc biệt là trong các ứng dụng yêu cầu hiệu suất cao hoặc sử dụng nhiều tài nguyên

• Cập nhật chậm: Expo có thể cập nhật chậm hơn so với các bản phát hành của React Native Điều này có thể khiến bạn không thể sử dụng các tính năng hoặc cải tiến mới nhất ngay lập tức

2.2.3 Node.js

Node.js là một môi trường chạy JavaScript phía máy chủ, được xây dựng trên nền tảng V8 JavaScript engine của Google Được phát triển bởi Ryan Dahl vào năm 2009, Node.js đã nhanh chóng trở thành một công cụ mạnh mẽ và phổ biến trong việc phát triển các ứng dụng web, đặc biệt là các ứng dụng yêu cầu xử lý dữ liệu thời gian thực và có khả năng mở rộng cao

Node.js cho phép các lập trình viên sử dụng JavaScript để viết mã chạy trên máy chủ, thay vì chỉ trên trình duyệt như truyền thống Điều này mang lại nhiều lợi

Trang 27

ích, bao gồm khả năng sử dụng cùng một ngôn ngữ lập trình cho cả phía máy khách

và phía máy chủ, giúp đơn giản hóa quá trình phát triển và bảo trì ứng dụng

Một trong những đặc điểm nổi bật của Node.js là mô hình xử lý bất đồng bộ

và không chặn (asynchronous and non-blocking), giúp tối ưu hóa hiệu suất và khả năng xử lý đồng thời nhiều kết nối Điều này làm cho Node.js trở nên lý tưởng cho các ứng dụng thời gian thực như trò chuyện trực tuyến (chat), thông báo tức thời (push notifications), và các hệ thống IoT (Internet of Things)

Node.js đi kèm với npm (Node Package Manager), một hệ thống quản lý gói mạnh mẽ cho phép lập trình viên dễ dàng cài đặt, quản lý và chia sẻ các thư viện và công cụ JavaScript Với hàng triệu gói có sẵn trên npm, cộng đồng Node.js phát triển không ngừng và cung cấp vô số giải pháp sẵn có cho các vấn đề lập trình phổ biến

Nhờ vào tính hiệu quả, khả năng mở rộng, và cộng đồng hỗ trợ mạnh mẽ, Node.js đã trở thành lựa chọn hàng đầu cho nhiều công ty và dự án lớn như Netflix, LinkedIn, và Walmart, khẳng định vị thế của nó trong thế giới phát triển phần mềm hiện đại

Hình 2.4 Node.js

(Nguồn: https://en.m.wikipedia.org/wiki/File:Node.js_logo.svg)

2.2.4 Express

Express là một framework phổ biến và mạnh mẽ cho Node.js, thường được sử dụng

để xây dựng các ứng dụng web và API Nó giúp các nhà phát triển tối ưu hóa quy trình phát triển bằng cách cung cấp các công cụ và cấu trúc cần thiết để xử lý các yêu cầu HTTP một cách dễ dàng và hiệu quả

Một trong những khái niệm quan trọng khi làm việc với Express là các phương thức CRUD, viết tắt của Create (Tạo), Read (Đọc), Update (Cập nhật), và Delete (Xóa)

Trang 28

Các phương thức này tương ứng với các hành động cơ bản trong quản lý dữ liệu của ứng dụng

Hình 2.5 CRUD

(Nguồn:

https://bizflycloud.vn/tin-tuc/crud-la-gi-thuc-hanh-crud-20181130160033636.htm)

Chi tiết mỗi phương thức:

− Create (Tạo - POST): Phương thức này được sử dụng để tạo mới một tài

nguyên Ví dụ, khi người dùng điền vào một biểu mẫu đăng ký, dữ liệu từ biểu mẫu đó sẽ được gửi lên máy chủ thông qua phương thức POST để tạo một bản ghi mới Trong Express, ta có thể xử lý yêu cầu POST bằng cách định nghĩa một route và sử dụng các middleware để xử lý dữ liệu được gửi lên từ client

− Read (Đọc - GET): Phương thức này được sử dụng để lấy dữ liệu từ máy

chủ Ví dụ, khi người dùng truy cập vào một trang danh sách sản phẩm, ứng dụng sẽ sử dụng phương thức GET để gửi yêu cầu lấy danh sách sản phẩm từ máy chủ Trong Express, bạn có thể định nghĩa các route GET để phục vụ các yêu cầu đọc dữ liệu từ cơ sở dữ liệu hoặc từ bất kỳ nguồn dữ liệu nào khác

− Update (Cập nhật - PUT hoặc PATCH): Phương thức này được sử dụng

để cập nhật dữ liệu đã tồn tại Ví dụ, khi người dùng chỉnh sửa thông tin cá nhân của họ, dữ liệu sẽ được gửi lên máy chủ thông qua phương thức PUT hoặc PATCH để cập nhật thông tin tài nguyên đó Trên Express, bạn có thể

xử lý các yêu cầu PUT hoặc PATCH bằng cách định nghĩa route và sử dụng middleware để xử lý dữ liệu gửi lên từ client

Trang 29

− Delete (Xóa - DELETE): Phương thức này được sử dụng để xóa tài nguyên

khỏi máy chủ Ví dụ, khi người dùng yêu cầu xóa một bài đăng từ diễn đàn, yêu cầu sẽ được gửi lên máy chủ thông qua phương thức DELETE Trong Express, bạn có thể định nghĩa route DELETE để xử lý yêu cầu xóa tài nguyên

Mục tiêu cơ bản của xử lý ảnh là trích xuất thông tin hữu ích từ dữ liệu hình ảnh Điều này giúp các hệ thống tự động hoặc các ứng dụng phần mềm có thể nhận diện, phân tích và hiểu được các yếu tố trong môi trường xung quanh Xử lý ảnh bao gồm các công đoạn từ xử lý cơ bản như nâng cao chất lượng hình ảnh đến các công đoạn phức tạp hơn như nhận dạng và phân loại đối tượng, phân tích hành vi,

và tạo ra các mô hình nhận diện [4]

2.3.2 Ứng dụng

− Y tế: Xử lý ảnh hỗ trợ trong chẩn đoán bệnh, theo dõi tiến triển bệnh, phẫu

thuật robot và hình ảnh y tế chẩn đoán như MRI, CT

− An ninh và giám sát: Nhận dạng khuôn mặt, phân tích hành vi, giám sát

giao thông, nhận diện biển số xe

− Ô tô tự động và robot: Xử lý ảnh giúp xe tự động phân biệt vật thể, nhận

dạng biển báo giao thông, và dự đoán môi trường

− Công nghiệp và kiểm tra chất lượng: Kiểm tra chất lượng sản phẩm, phát

hiện lỗi sản xuất, và tự động hóa quy trình kiểm tra

− Quảng cáo và giải trí: Tạo hiệu ứng hình ảnh, chỉnh sửa ảnh, nhận diện

thương hiệu và phân tích hành vi người dùng

Trang 30

− Khoa học và nghiên cứu: Phân tích hình ảnh thiên văn, hình ảnh y sinh học,

và nghiên cứu môi trường

Dưới đây sẽ mô tả về các bước trong xử lý ảnh

Thu nhận ảnh Tiền xử lý Phân đoạn ảnh Biểu diễn và mô tả Nhận dạng và nội suy

Hình 2.6 Các bước trong xử lý ảnh

Thu Thập Ảnh: Đây là bước đầu tiên, nơi mà hình ảnh được thu thập từ các nguồn

như máy ảnh kỹ thuật số, camera giám sát, hoặc từ các tập tin hình ảnh đã có sẵn

Độ phân giải, ánh sáng và chất lượng của hình ảnh ban đầu rất quan trọng để đảm bảo hiệu quả của các bước xử lý tiếp theo

Tiền Xử Lý (Preprocessing): Giai đoạn này nhằm chuẩn bị hình ảnh cho các bước

xử lý phức tạp hơn Các kỹ thuật thường sử dụng trong tiền xử lý bao gồm:

• Làm sạch Nhiễu (Noise Reduction): Sử dụng các thuật toán lọc để giảm thiểu các nhiễu trong hình ảnh

• Điều Chỉnh Độ Sáng và Tương Phản: Điều chỉnh độ sáng và tương phản để làm nổi bật các chi tiết quan trọng trong ảnh

• Cân Bằng Màu Sắc: Điều chỉnh các kênh màu để làm cho hình ảnh có màu sắc tự nhiên hơn

• Phân Cắt (Cropping): Cắt bỏ các phần không cần thiết của hình ảnh để tập trung vào khu vực quan tâm

Phân Đoạn Ảnh (Image Segmentation): Đây là quá trình chia hình ảnh thành các

vùng hoặc đối tượng riêng biệt dựa trên các đặc tính như màu sắc, độ sáng, hoặc các đặc tính hình học Mục tiêu của phân đoạn là tách biệt các đối tượng hoặc khu vực quan trọng để dễ dàng phân tích và xử lý tiếp theo

Biểu Diễn và Mô Tả (Representation and Description): Sau khi phân đoạn, các

đối tượng trong hình ảnh cần được biểu diễn dưới dạng các đặc trưng số hoặc vector

để mô tả các đặc điểm của chúng Các kỹ thuật như Histogram of Oriented Gradients (HOG), Scale-Invariant Feature Transform (SIFT), và Convolutional Neural Networks (CNN) thường được sử dụng để trích xuất đặc trưng

Trang 31

Nhận Dạng và nội suy: Đây là giai đoạn quan trọng nhất, nơi các thuật toán học

máy và trí tuệ nhân tạo được sử dụng để nhận diện và phân loại các đối tượng hoặc

sự kiện trong hình ảnh Các phương pháp như học sâu (Deep Learning), mạng ron nhân tạo (Neural Networks), và học máy (Machine Learning) được áp dụng để phát triển các mô hình nhận dạng và phân tích

nơ-2.4 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO AI

Trí tuệ nhân tạo (AI - Artificial Intelligence) là một lĩnh vực của khoa học máy tính, tập trung vào việc tạo ra các hệ thống hoặc máy tính có khả năng thực hiện các nhiệm vụ mà, nếu do con người thực hiện, sẽ đòi hỏi trí thông minh Những nhiệm

vụ này bao gồm nhận thức, học hỏi, lập luận, giải quyết vấn đề, hiểu ngôn ngữ tự nhiên và thậm chí sáng tạo nghệ thuật

Các lĩnh vực chính của AI

• Học máy (Machine Learning - ML): Một nhánh của AI, tập trung vào việc

phát triển các thuật toán cho phép máy tính học từ dữ liệu và cải thiện hiệu suất theo thời gian mà không cần lập trình rõ ràng cho từng nhiệm vụ cụ thể Các phương pháp học máy phổ biến bao gồm học có giám sát (supervised learning), học không giám sát (unsupervised learning) và học tăng cường (reinforcement learning)

• Học sâu (Deep Learning): Một phân nhánh của học máy, sử dụng các mạng

nơ-ron nhân tạo với nhiều lớp (deep neural networks) để học từ dữ liệu Học sâu đã đạt được những thành tựu đáng kể trong các lĩnh vực như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên và chơi game

• Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP): Tập

trung vào việc giúp máy tính hiểu, diễn giải và đáp ứng lại ngôn ngữ con người một cách tự nhiên Các ứng dụng của NLP bao gồm dịch máy, phân tích cảm xúc và chatbots

• Thị giác máy tính (Computer Vision): Giúp máy tính "nhìn thấy" và hiểu

được hình ảnh và video Các ứng dụng bao gồm nhận diện khuôn mặt, phân loại hình ảnh và tự lái xe

Một số ứng dụng của AI trong đời sống và công nghiệp

Trang 32

• Y tế: AI được sử dụng để chẩn đoán bệnh, dự đoán kết quả điều trị và hỗ trợ

nghiên cứu y học

• Giao thông: Công nghệ tự lái xe, tối ưu hóa luồng giao thông và quản lý vận

tải thông minh

• Giáo dục: Cá nhân hóa trải nghiệm học tập, đánh giá và phản hồi tự động

• Tài chính: Dự đoán thị trường, phát hiện gian lận và quản lý tài sản tự động

• Giải trí: Đề xuất nội dung, tạo ra nội dung số và tương tác với người dùng

qua trò chơi và thực tế ảo

Python là một ngôn ngữ lập trình được yêu thích vì nhiều ưu điểm nổi bật:

− Dễ học và dễ đọc: Python có cú pháp đơn giản, gần gũi với ngôn ngữ tự

nhiên, giúp người mới bắt đầu nhanh chóng làm quen và viết mã một cách

Trang 33

hiệu quả Điều này giúp giảm thời gian học tập so với các ngôn ngữ khác và nâng cao năng suất làm việc

− Đa năng và linh hoạt: Python có thể được sử dụng trong nhiều mục đích

khác nhau, từ phát triển web (Web development), khoa học dữ liệu (Data science), máy học (Machine learning), đến tự động hóa (Automation) và tính toán khoa học (Scientific computing) Điều này làm cho Python trở thành một công cụ đa năng cho các lập trình viên và các nhà khoa học

− Thư viện và cộng đồng phong phú: Python có một cộng đồng lớn và nhiệt

tình, cùng với một số lượng lớn các thư viện và framework miễn phí, giúp cho việc phát triển phần mềm nhanh chóng và hiệu quả hơn Ví dụ như NumPy, Pandas trong khoa học dữ liệu, TensorFlow và PyTorch trong máy học, Django và Flask trong phát triển web

− Tương thích và di động cao: Python hoạt động trên hầu hết các nền tảng hệ

điều hành như Windows, macOS, Linux, giúp cho việc triển khai phần mềm

dễ dàng và thuận tiện Ngoài ra, Python cũng hỗ trợ tích hợp với nhiều ngôn ngữ lập trình khác và các công nghệ khác nhau

− Hỗ trợ công cụ phát triển mạnh mẽ: Python đi kèm với một loạt các công

cụ hỗ trợ phát triển, bao gồm các IDE (Integrated Development Environment) như PyCharm, VS Code, Jupyter Notebook, và các công cụ gỡ lỗi (debugging tools) tiện lợi như PDB, để giúp lập trình viên dễ dàng quản

lý mã nguồn và tối ưu hóa quá trình phát triển

2.5.2 Giới thiệu về Threading (Đa luồng) trong Python

Threading là một kỹ thuật lập trình cho phép thực hiện nhiều tác vụ đồng thời (concurrently) trong một ứng dụng, tận dụng khả năng đa luồng của CPU Trong Python, mô-đun threading cung cấp các công cụ để tạo và quản lý các luồng (threads)

Một luồng là đơn vị nhỏ nhất của một tiến trình (process) có thể được thực thi một cách độc lập Một tiến trình có thể chứa nhiều luồng và các luồng này có thể chạy song song

Python sử dụng GIL, một cơ chế khóa để đảm bảo rằng chỉ có một luồng thực thi Python bytecode tại một thời điểm Điều này có nghĩa là mặc dù có thể tạo

Trang 34

ra nhiều luồng, chúng không thực sự thực thi đồng thời trên các lõi CPU khác nhau trong Python tiêu chuẩn

• Đơn Giản: Lập trình tuần tự thường đơn giản hơn vì không cần phải lo lắng về quản lý đồng bộ hóa và tránh các tình trạng đua (race

conditions), giảm bớt độ phức tạp của mã nguồn

Trang 35

• Phức Tạp: Việc lập trình đa luồng đòi hỏi quản lý đồng bộ hóa và tránh các tình trạng đua (race conditions), điều này có thể làm tăng độ phức tạp của mã nguồn

2.5.3 Giới thiệu về thư viện OpenCV

Hình 2.10 Thư viện OpenCV

(Nguồn: https://en.wikipedia.org/wiki/File:OpenCV_Logo_with_text.png)

Thư viện OpenCV (Open Source Computer Vision Library) là một thư viện

mã nguồn mở phát triển cho xử lý hình ảnh và thị giác máy tính Được phát triển bởi Intel vào năm 1999, OpenCV nhanh chóng trở thành một trong những thư viện quan trọng nhất trong lĩnh vực xử lý ảnh và thị giác máy tính, với sự hỗ trợ rộng rãi

từ cộng đồng và sự cải tiến liên tục qua các phiên bản

Những Điểm Nổi Bật của OpenCV:

− Đa năng và mạnh mẽ: OpenCV cung cấp một bộ công cụ và thuật toán

phong phú để xử lý hình ảnh và video, từ các công việc đơn giản như xử lý màu sắc, cắt ghép ảnh đến các nhiệm vụ phức tạp như nhận dạng đối tượng, phân đoạn ảnh, và theo dõi chuyển động

Trang 36

− Hỗ trợ đa nền tảng: OpenCV hỗ trợ trên nhiều hệ điều hành như Windows,

Linux, macOS, Android và iOS, giúp cho việc phát triển ứng dụng dễ dàng

và linh hoạt trên các nền tảng khác nhau

− Cộng đồng và tài liệu phong phú: OpenCV có một cộng đồng rộng lớn và

năng động, với nhiều tài liệu, hướng dẫn và ví dụ minh họa trên Internet Giúp cho người sử dụng có thể tìm kiếm những giải pháp cho các vấn mọtto cách dễ dàng từ những nhà phát triển khác trên toàn thế giới

− Tích hợp với các ngôn ngữ lập trình: OpenCV không chỉ hỗ trợ C/C++, mà

còn cung cấp các giao diện lập trình cho Python, Java và MATLAB Điều này giúp cho người dùng có thể lựa chọn ngôn ngữ phù hợp nhất cho dự án của mình

− Hỗ trợ cho các mô hình học sâu (Deep Learning): OpenCV đã tích hợp các

tính năng của các mạng nơ-ron sâu (deep neural networks) như TensorFlow, PyTorch vào trong thư viện, giúp cho việc phát triển các ứng dụng thị giác máy tính và học sâu trở nên hiệu quả hơn [5]

2.5.4 Giới thiệu về thư viện face-recognition

Thư viện face-recognition là một công cụ mạnh mẽ trong lĩnh vực nhận diện khuôn mặt, được phát triển trên nền tảng Python và dựa trên dlib, một thư viện nổi tiếng về xử lý ảnh và máy học Thư viện này cung cấp các công cụ để nhận diện và phân tích khuôn mặt một cách hiệu quả, bao gồm các tính năng như nhận diện khuôn mặt, phát hiện các điểm mốc trên khuôn mặt (ví dụ như mắt, mũi, miệng), xác định đặc điểm khuôn mặt và so sánh khuôn mặt

Với face-recognition, người dùng có thể dễ dàng tích hợp các chức năng nhận diện khuôn mặt vào các ứng dụng của mình mà không cần phải có kiến thức sâu về

xử lý ảnh hay máy học Thư viện hỗ trợ nhiều tính năng mở rộng, cho phép đào tạo

mô hình nhận diện trên dữ liệu tùy chỉnh và tương thích với các công nghệ và nền tảng khác nhau Nhờ vậy giúp cho việc phát triển những ứng dụng nhận diện khuôn mặt trở nên đơn giản và hiệu quả hơn

Với sự phổ biến của face-recognition trong cộng đồng Python và sự dễ dàng

sử dụng, thư viện này đã trở thành một lựa chọn phổ biến cho các nhà phát triển ứng

Trang 37

dụng AI và xử lý ảnh, giúp họ nhanh chóng triển khai và phát triển các giải pháp nhận diện khuôn mặt tiên tiến

2.6 GIỚI THIỆU VỀ PORT FORWARDING

Port Forwarding là một kỹ thuật được sử dụng để định tuyến các gói dữ liệu mạng từ một thiết bị bên ngoài mạng vào một thiết bị nội bộ, cho phép các dịch vụ

và ứng dụng trong mạng nội bộ có thể được truy cập từ bên ngoài Điều này được thực hiện bằng cách chuyển tiếp các yêu cầu kết nối đến một cổng của thiết bị mạng này đến một cổng khác trên thiết bị mạng khác Ví dụ, bạn có thể chuyển tiếp các yêu cầu đến cổng 80 (HTTP) của router đến cổng 8080 của một máy chủ web nội

bộ Port Forwarding giúp quản lý và điều hướng kết nối từ bên ngoài vào các thiết

bị và dịch vụ trong mạng nội bộ, cho phép kiểm soát và định tuyến các yêu cầu kết nối theo cách mong muốn

Port Forwarding có thể được cấu hình để chuyển tiếp kết nối TCP

(Transmission Control Protocol), UDP (User Datagram Protocol), hoặc cả hai, hỗ trợ nhiều loại ứng dụng và dịch vụ như web serve, game server, và các dịch vụ khác Mặc dù cung cấp khả năng truy cập từ xa, nếu không được cấu hình đúng cách, nó có thể tạo ra các lỗ hổng bảo mật Do đó, cần phải thực hiện các biện pháp bảo mật như giới hạn địa chỉ IP nguồn, sử dụng tường lửa (firewall), và cập nhật firmware của router thường xuyên Port Forwarding thường được thực hiện thông qua giao diện quản lý của router, đòi hỏi người dùng hoặc quản trị viên có quyền truy cập và biết cách cấu hình các thông số liên quan [6]

2.7 NHỮNG PHẦN MỀM VÀ WEB ĐƯỢC SỬ DỤNG TRONG ĐỀ TÀI 2.7.1 Visual Studio Code (VS Code)

Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn mở và miễn phí do Microsoft phát triển, ra mắt lần đầu vào tháng 4 năm 2015 Với sự kết hợp giữa tính đơn giản của một trình soạn thảo văn bản và tính năng mạnh mẽ của một môi trường phát triển tích hợp (IDE), VS Code đã nhanh chóng trở thành công cụ phổ biến trong cộng đồng lập trình viên Một trong những ưu điểm nổi bật của VS Code là khả năng hỗ trợ đa nền tảng, hoạt động trơn tru trên Windows, macOS và Linux, giúp lập trình viên dễ dàng làm việc trên nhiều hệ điều hành khác nhau

Trang 38

VS Code được trang bị nhiều tính năng tiên tiến như hỗ trợ gỡ lỗi (debugging), điều hướng mã nguồn, tích hợp Git, cùng với một hệ thống tiện ích mở rộng phong phú Các tiện ích mở rộng này cho phép người dùng tùy chỉnh và mở rộng chức năng của VS Code để phù hợp với nhiều ngôn ngữ lập trình và khung làm việc (framework) khác nhau Ngoài ra, VS Code cũng có tích hợp IntelliSense, một công cụ cung cấp gợi ý mã, hoàn thành tự động và kiểm tra lỗi cú pháp trong quá trình viết mã, giúp nâng cao hiệu suất làm việc và giảm thiểu lỗi lập trình

Giao diện của VS Code được thiết kế hiện đại và thân thiện với người dùng, với khả năng tùy chỉnh cao, từ màu sắc, giao diện người dùng, đến các phím tắt, giúp lập trình viên có thể cá nhân hóa môi trường làm việc của mình VS Code còn

hỗ trợ làm việc theo nhóm hiệu quả nhờ vào các tính năng như Live Share, cho phép nhiều lập trình viên cùng làm việc trên một mã nguồn trong thời gian thực, tăng cường sự hợp tác và giao tiếp trong các dự án phát triển phần mềm

Với sự kết hợp giữa tính linh hoạt, hiệu suất và khả năng mở rộng, Visual Studio Code đã trở thành một công cụ không thể thiếu trong bộ công cụ của nhiều lập trình viên trên toàn thế giới, từ những người mới bắt đầu học lập trình đến các chuyên gia công nghệ thông tin

Trang 39

Arduino IDE có một giao diện người dùng đơn giản và dễ sử dụng, với trình soạn thảo mã nguồn, bảng điều khiển và các công cụ cần thiết để biên dịch và tải mã lên bo mạch Người dùng có thể viết mã bằng ngôn ngữ lập trình dựa trên Wiring, một phiên bản đơn giản hóa của C++ được tối ưu hóa cho việc lập trình vi điều khiển Sau khi mã được viết và biên dịch, người dùng có thể tải mã trực tiếp lên bo mạch Arduino thông qua cổng USB

Một trong những ưu điểm nổi bật của Arduino IDE là thư viện phong phú và cộng đồng người dùng rộng lớn Thư viện Arduino cung cấp nhiều đoạn mã mẫu và các thư viện có sẵn để hỗ trợ các cảm biến, động cơ, màn hình và nhiều thiết bị khác, giúp việc lập trình trở nên dễ dàng và hiệu quả hơn Cộng đồng người dùng Arduino trên toàn thế giới liên tục chia sẻ các dự án, hướng dẫn và hỗ trợ kỹ thuật, tạo điều kiện thuận lợi cho việc học tập và phát triển các ứng dụng sáng tạo

Arduino IDE cũng hỗ trợ nhiều loại bo mạch khác nhau, không chỉ giới hạn

ở các bo mạch Arduino chính hãng mà còn mở rộng ra các bo mạch tương thích khác Điều này mang lại sự linh hoạt và đa dạng trong lựa chọn phần cứng cho các

dự án Với tính dễ sử dụng, tính linh hoạt và sự hỗ trợ từ cộng đồng, Arduino IDE

đã trở thành một công cụ quan trọng trong lĩnh vực giáo dục, nghiên cứu và phát triển các ứng dụng nhúng, giúp hiện thực hóa những ý tưởng sáng tạo một cách nhanh chóng và hiệu quả

Hình 2.12 Arduino IDE

(Nguồn: https://commons.wikimedia.org/wiki/File:Arduino_IDE_logo.svg)

2.7.3 KiCAD

KiCAD là một phần mềm để hỗ trợ việc tạo ra các mạch điện tử, từ thiết kế

sơ đồ nguyên lý đến thiết kế bảng mạch in (PCB) Một trong những điểm của KiCAD là khả năng hỗ trợ toàn diện cho quá trình thiết kế mạch điện tử Phần mềm

Trang 40

này cung cấp một bộ công cụ đầy đủ bao gồm Eeschema (trình tạo sơ đồ nguyên lý), Pcbnew (trình thiết kế PCB), và nhiều công cụ hỗ trợ khác như quản lý thư viện linh kiện, tạo và chỉnh sửa footprints, cũng như mô phỏng mạch điện Eeschema cho phép người dùng dễ dàng vẽ sơ đồ nguyên lý với một giao diện trực quan, trong khi Pcbnew cung cấp các tính năng mạnh mẽ để thiết kế và chỉnh sửa các PCB với

độ chính xác cao, hỗ trợ nhiều lớp và các công cụ kiểm tra lỗi

KiCAD nổi tiếng với tính linh hoạt và khả năng tùy chỉnh cao, cho phép người dùng mở rộng và cá nhân hóa phần mềm theo nhu cầu cụ thể của họ Các thư viện linh kiện và footprints có thể được tải về, tạo mới hoặc chỉnh sửa để phù hợp với các yêu cầu đặc thù của dự án KiCAD cũng hỗ trợ nhiều định dạng xuất, bao gồm Gerber, giúp việc sản xuất PCB trở nên dễ dàng và thuận tiện hơn

Một yếu tố quan trọng khác là cộng đồng người dùng và nhà phát triển rộng lớn của KiCAD, luôn đóng góp vào việc cải tiến và mở rộng phần mềm Sự hỗ trợ

từ cộng đồng này giúp KiCAD không ngừng được cập nhật với các tính năng mới

và cải tiến, đồng thời cung cấp nhiều tài liệu hướng dẫn và diễn đàn thảo luận để hỗ trợ người dùng

Với sự kết hợp giữa tính năng mạnh mẽ, tính linh hoạt và cộng đồng hỗ trợ nhiệt tình, KiCAD đã trở thành một công cụ thiết yếu cho các kỹ sư điện tử, từ những người mới bắt đầu đến các chuyên gia, trong việc thiết kế và phát triển các mạch điện tử chất lượng cao

Hình 2.13 KiCAD

(Nguồn: https://en.m.wikipedia.org/wiki/File:KiCad-Logo.svg)

2.7.4 balenaEtcher

BalenaEtcher là một phần mềm mã miễn phí do Balena phát triển, được thiết

kế để tạo USB boot hoặc thẻ nhớ SD từ các tập tin ảnh như ISO hoặc IMG Với giao diện dễ sử dụng, BalenaEtcher cho phép thực hiện quá trình ghi chỉ qua ba

Ngày đăng: 19/12/2024, 14:31

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

TÀI LIỆU LIÊN QUAN