DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Viết tắt Giải thích AI Artificial Intelligence Trí tuệ nhân tạo IoT Internet of Thing Internet vạn vật CPU Central Processing Unit Bộ xử lí trung tâm G
Trang 1BÁO CÁO KHÓA LUẬN TỐT NGHIỆP
Mã sinh viên : 312024161110
Trang 2LỜI CẢM ƠN
Em xin chân thành gửi lời cảm ơn đến các thầy cô trong Khoa Tin học, Trường Đại học Sư Phạm – Đại học Đà Nẵng đã truyền đạt những kiến thức quý báu trong những năm học vừa qua để em có kiến thức thực hiện đề tài khóa luận này
Em xin chân thành cảm ơn thầy giáo hướng dẫn Th.S Đoàn Duy Bình đã trực tiếp hướng dẫn, tận tình góp ý, giúp đỡ và tạo điều kiện thuận lợi nhất cho em trong suốt quá trình thực hiện đề tài này
Trong quá trình thực hiện chắc hẳn sẽ không tránh những thiếu sót Em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn để đề tài được hoàn thiện hơn
Một lần nữa em xin chân thành cảm ơn!
Trang 3DANH MỤC CÁC BẢNG
Bảng 0.1 Một số thiết bị kính thông minh trên thế giới 2
Bảng 1.1 Đánh giá một số mạng nơ-ron Object detection cơ sở [5] 17
Bảng 1.2 Đánh giá một số mạng nơ-ron Object detection [5] 17
Bảng 1.3 So sánh Arduino và Raspberry Pi 25
Bảng 2.1 Đặc tả tổng quát các tác nhân hệ thống 33
Bảng 2.2 Đặc tả bảng User 37
Bảng 2.3 Đặc tả bảng Glasses 38
Bảng 2.4 Đặc tả bảng SoftwareVersion 38
Bảng 2.5 Đặc tả bảng Group 39
Bảng 2.6 Đặc tả bảng GroupMember 39
Bảng 2.7 Đặc tả bảng GlassesLink 39
Bảng 2.8 Đặc tả ca sa sử dụng chức năng Nhận dạng đồ vật 44
Bảng 2.9 Đặc tả ca sử dụng chức năng Phân loại đồ vật nguy hiểm 45
Bảng 2.10 Đặc tả ca sử dụng chức năng Cảnh báo tự động vật nguy hiểm 46
Bảng 2.11 Đặc tả ca sử dụng chức năng Cảnh báo tự động chướng ngại vật 48 Bảng 2.12 Đặc tả ca sử dụng chức năng Phát âm thanh tên của tất cả vật thể 49 Bảng 2.13 Đặc tả ca sử dụng chức năng Tìm đồ vật bằng giọng nói 50
Bảng 2.14 Đặc tả ca sử dụng chức năng Gửi tín hiệu SOS 52
Bảng 2.15 Đặc tả ca sử dụng chức năng Liên kết với ứng dụng mobile 53
Bảng 2.16 Đặc tả ca sử dụng chức năng Gửi dữ liệu ảnh chụp và tọa độ GPS 55
Bảng 2.17 Đặc tả ca sử dụng chức năng kiểm tra và cập nhật phiên bản phần mềm mới 56
Bảng 2.18 Đặc tả ca sử dụng chức năng Đăng kí 58
Bảng 2.19 Đặc tả ca sử dụng chức năng Đăng nhập 58
Trang 4Bảng 2.21 Đặc tả ca sử dụng chức năng Chỉnh sửa thông tin cá nhân 60
Bảng 2.22 Đặc tả tác nhân con của tác nhân "Người thân" 62
Bảng 2.23 Đặc tả ca sử dụng chức năng Quản lí nhóm cho Quản trị viên 63
Bảng 2.24 Đặc tả ca sử dụng chức năng Quản lí nhóm cho Thành viên 63
Bảng 2.25 Đặc tả ca sử dụng chức năng Quản lí kính cho Quản trị viên 65
Bảng 2.26 Đặc tả ca sử dụng chức năng Quản lí kính cho Thành viên 66
Bảng 2.27 Đặc tả ca sử dụng chức năng Thiết lập ngôn ngữ ứng dụng 68
Bảng 2.28 Đặc tả ca sử dụng chức năng Nhận thông báo SOS 69
Bảng 3.1 Danh sách các vật huấn luyện thêm 75
Bảng 3.2 Đánh giá model huấn luyện trên tập dữ liệu Test 79
Bảng 3.3 Danh sách các vật sau khi điều chỉnh tập dữ liệu huấn luyện 82
Bảng 3.4 Phần cứng và giá thành sản phẩm 83
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1 AI và các lĩnh vực thuộc AI 7
Hình 1.2 Một nơ-ron đơn giản 9
Hình 1.3 Minh hoạ tính chất mong muốn của mạng nơ-ron 10
Hình 1.4 Đồ thị hàm bước nhảy 11
Hình 1.5 Đồ thị hàm sigmoid 12
Hình 1.6 Mạng nơ-ron cơ bản 13
Hình 1.7 Bộ lọc cạnh là các ma trận kích thước 3x3 của -1, 0 và 1 15
Hình 1.8 Ví dụ về bộ lọc cạnh (đứng phải, đứng trái, ngang dưới, ngang trên) với đầu vào là ảnh số viết tay 16
Hình 1.9 Bài toán Object detection 16
Hình 1.10 Kết quả dự đoán sau 21 lớp 19
Hình 1.11 Khác biệt giữa máy học truyền thống và học chuyển 21
Hình 1.12 Ứng dụng học chuyển (Transfer Learning) 22
Hình 1.13 Thiết bị Raspberry Pi 4 B 26
Hình 2.1 Minh họa quá trình liên kết Smart Glasses với Family App 32
Hình 2.2 Sơ đồ ca sử dụng tổng quát 34
Hình 2.3 Sơ đồ kiến trúc hệ thống tổng quát 35
Hình 2.4 Mô hình ER 36
Hình 2.5 Mô hình dữ liệu quan hệ 37
Hình 2.6 Cấu trúc ảnh và các thông tin về thời gian, tọa độ GPS được lưu trữ trên AWS S3 41
Hình 2.7 Topic và mô hình hoạt động của SNS, mỗi client là một subscriber 42
Hình 2.8 Mô hình phần cứng Kính thông minh 43 Hình 2.9 Sơ đồ ca sử dụng chức năng Nhận dạng tên đồ vật và Phân loại vật
Trang 6Hình 2.10 Sơ đồ tuần tự chức năng Nhận dạng và Phân loại đồ vật 45
Hình 2.11 Sơ đồ ca sử dụng chức năng Cảnh báo tự động vật nguy hiểm 46
Hình 2.12 Sơ đồ tuần tự chức năng Cảnh báo tự động vật nguy hiểm 47
Hình 2.13 Sơ đồ ca sử dụng chức năng Cảnh báo tự động chướng ngại vật 47
Hình 2.14 Sơ đồ tuần tự chức năng Cảnh báo tự động chướng ngại vật 48
Hình 2.15 Sơ đồ ca sử dụng chức năng Phát âm thanh tên tất cả vật thể 49
Hình 2.16 Sơ đồ tuần tự chức năng Phát âm thanh tên tất cả vật thể 50
Hình 2.17 Sơ đồ ca sử dụng chức năng Tìm đồ vật bằng giọng nói 50
Hình 2.18 Sơ đồ tuần tự chức năng Tìm đồ vật bằng giọng nói 51
Hình 2.19 Sơ đồ ca sử dụng chức năng gửi tín hiệu SOS 52
Hình 2.20 Sơ đồ ca sử dụng chức năng Liên kết với ứng dụng mobile 53
Hình 2.21 Sơ đồ tuần tự chức năng liên kết với ứng dụng mobile và chức năng Gửi tín hiệu SOS 54
Hình 2.22 Sơ đồ ca sử dụng chức năng gửi dữ liệu ảnh và tọa độ GPS 54
Hình 2.23 Sơ đồ tuần tự chức năng Gửi ảnh chụp và tọa độ SOS 55
Hình 2.24 Sơ đồ ca sử dụng chức năng kiểm tra và cập nhật phiên bản phần mềm mới 55
Hình 2.25 Sơ đồ tuần tự chức năng kiểm tra và cập nhật phần mềm 56
Hình 2.26 Sơ đồ ca sử dụng chức năng Đăng kí, Đăng nhập, Đăng xuất 57
Hình 2.27 Sơ đồ tuần tự chức năng Đăng kí, Đăng nhập 59
Hình 2.28 Sơ đồ tuần tự chức năng Đăng xuất 60
Hình 2.29 Sơ đồ ca sử dụng chức năng Chỉnh sửa thông tin cá nhân 60
Hình 2.30 Sơ đồ tuần tự chức năng Chỉnh sửa thông tin cá nhân 61
Hình 2.31 Sơ đồ ca sử dụng chức năng Quản lí nhóm 62
Hình 2.32 Sơ đồ tuần tự chức năng Quản lí nhóm của Quản trị viên 64
Hình 2.33 Sơ đồ tuần tự chức năng Quản lí nhóm của Thành viên 64
Hình 2.34 Sơ đồ ca sử dụng chức năng Quản lí kính thông minh 65
Trang 7Hình 2.35 Sơ đồ tuần tự chức năng Quản lí kính cho Quản trị viên 67
Hình 2.36 Sơ đồ tuần tự chức năng Quản lí kính cho Thành viên 67
Hình 2.37 Sơ đồ ca sử dụng chức năng Thiết lập ngôn ngữ ứng dụng 68
Hình 2.38 Sơ đồ tuần tự chức năng Thiết lập ngôn ngữ ứng dụng 69
Hình 2.39 Sơ đồ ca sử dụng chức năng Nhận thông báo SOS 69
Hình 2.40 Sơ đồ tuần tự chức năng Nhận thông báo SOS 70
Hình 2.41 Sơ đồ lớp hệ thống 71
Hình 3.1 Quy trình huấn luyện dữ liệu 72
Hình 3.2 Các phương pháp làm "giàu" tập dữ liệu huấn luyện 75
Hình 3.3 Gán nhãn thủ công cho từng hình ảnh 77
Hình 3.4 File XML sinh ra sau quá trình gán nhãn 77
Hình 3.5 Cấu trúc thư mục chuẩn bị 78
Hình 3.6 Biểu đồ thay đổi độ tổn thất trong quá trình huấn luyện 79
Hình 3.7 Kính thông minh sau lắp đặt 85
Hình 3.8 Các thành phần Kính thông minh sau lắp đặt 85
Hình 3.9 Chức năng nhận diện đồ vật trên kính 1 86
Hình 3.10 Chức năng nhận diện đồ vật trên kính 2 86
Hình 3.11 Chức năng nhận diện đồ vật trên kính 3 87
Hình 3.12 Chức năng nhận diện đồ vật trên kính 4 87
Hình 3.13 Giao diện đăng nhập và trang chủ 88
Hình 3.14 Giao diện Quản lí nhóm 89
Hình 3.15 Giao diện Quản lí kính 89
Hình 3.16 Giao diện nhận tín hiệu SOS và thiết lập ngôn ngữ 90
Trang 8DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Viết tắt Giải thích
AI Artificial Intelligence (Trí tuệ nhân tạo)
IoT Internet of Thing (Internet vạn vật)
CPU Central Processing Unit (Bộ xử lí trung tâm)
GPU Graphical Processing Unit (Bộ xử lí đồ họa)
API Application Programming Interface (Giao diện lập trình
ứng dụng) ANNS Artificial Neural Networks (Mạng nơ-ron nhân tạo)
CNN Convolutional Neural Network (Mạng nơ-ron tích chập) SSD Single Shot Multibox Detector (Tên gọi 1 mạng nơ-ron) RAM Random Access Memory (Bộ nhớ truy cập ngẫu nhiên)
IDE Integrated Development Environment (Môi trường tích
hợp phát triển ứng dụng)
UI User Interface (Giao diện người dùng)
AWS Amazon Web Service (Dịch vụ máy chủ)
S3 Simple Storage Service (Dịch vụ lưu trữ của AWS)
SNS Simple Notification Service (Dịch vụ quản lí tin nhắn của
AWS)
RDS Relational Database Service (Dịch vụ hệ quản trị cơ sở dữ
liệu quan hệ của AWS) CSDL Cơ sở dữ liệu
ER Entity–Relationship model (Mô hình thực thể-quan hệ) GPS Global Positioning System (Hệ thống định vị toàn cầu) SOS Tín hiệu cầu cứu
Trang 9MỤC LỤC
LỜI CẢM ƠN i
DANH MỤC CÁC BẢNG ii
DANH MỤC HÌNH VẼ iv
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT vii
MỤC LỤC viii
MỞ ĐẦU 1
1 Giới thiệu 1
2 Tính cấp thiết và mục tiêu của đề tài 2
3 Chức năng chính 3
4 Đối tượng và phạm vi nghiên cứu 4
5 Phương pháp thực hiện 4
6 Bố cục báo cáo khóa luận tốt nghiệp 6
CHƯƠNG 1 7
CƠ SỞ LÝ THUYẾT 7
1.1 Trí tuệ nhân tạo và máy học 7
1.1.1 Trí tuệ nhân tạo (AI) 7
1.1.2 Máy học (Machine Learning) 8
1.1.3 Mạng nơ-ron nhân tạo (Artificial Neural Networks - ANNs) 8
1.1.4 Mạng nơ-ron tích chập xử lí hình ảnh 14
1.1.5 Các mạng nơ-ron ứng dụng trong việc nhận dạng vật thể (object detection) 16
1.1.6 Mạng nơ-ron Single Shot MultiBox Detector MobileNet (SSD MobileNet) 18
Trang 101.1.8 Python và các thư viện hỗ trợ 22
1.2 Internet vạn vật (IoT) 24
1.2.1 Khái niệm 24
1.2.2 Các loại phần cứng đảm nhiệm vai trò điểu khiển 24
1.2.3 Chip Raspberry Pi và hệ điều hành Raspbian 26
1.3 Lập trình di động Android 27
1.4 Dịch vụ máy chủ 27
1.4.1 Giới thiệu về Amazon Web Service 27
1.4.2 Giới thiệu về Firebase 28
CHƯƠNG 2 29
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 29
2.1 Phân tích hệ thống 29
2.1.1 Mục tiêu và chức năng 29
2.1.2 Phân tích chức năng 30
2.1.3 Đặc tả tổng quát các tác nhân trong hệ thống 33
2.1.4 Sơ đồ ca sử dụng tổng quát 34
2.2 Thiết kế hệ thống phía máy chủ (Backend) 35
2.2.1 Sơ đồ kiến trúc hệ thống tổng quát 35
2.2.2 Cơ sở dữ liệu 36
2.2.3 Thành phần lưu dữ liệu ảnh 40
2.2.4 Thành phần gửi thông báo đến ứng dụng di động 41
2.3 Thiết kế Kính thông minh (Smart Glasses) 42
2.3.1 Thiết kế phần cứng 42
2.3.2 Thiết kế chức năng 43
2.4 Thiết kế ứng dụng di động cho người nhà (Family App) 57
Trang 112.4.1 Chức năng đăng kí, đăng nhập, đăng xuất 57
2.4.2 Chức năng Chỉnh sửa thông tin cá nhân 60
2.4.3 Chức năng Quản lí nhóm gia đình 61
2.4.4 Chức năng Quản lí các kính liên kết với nhóm gia đình 65
2.4.5 Chức năng Thiết lập ngôn ngữ sử dụng 68
2.4.6 Chức năng Nhận thông báo đẩy SOS 69
2.5 Sơ đồ lớp hệ thống 71
CHƯƠNG 3 72
TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 72
3.1 Môi trường module huấn luyện dữ liệu 72
3.1.1 Thuật toán huấn luyện 72
3.1.2 Môi trường huấn luyện 75
3.1.3 Đánh giá kết quả mô hình huấn luyện 79
3.2 Môi trường hoạt động và các chức năng trên Kính thông minh 83
3.2.1 Tối ưu model nhận diện 83
3.2.2 Lắp ráp phần cứng và triển khai phần mềm 83
3.3 Môi trường hoạt động và các chức năng trên ứng dụng di động cho người nhà 88
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 91
1 Kết luận 91
2 Hướng phát triển 92
TÀI LIỆU THAM KHẢO 93
Trang 12MỞ ĐẦU
1 Giới thiệu
Ngày nay, xã hội đã và đang bước vào công cuộc cách mạng khoa học -
kĩ thuật lần thứ 4 (cuộc cách mạng 4.0) Với sự rộ lên của Trí tuệ nhân tạo (AI), Internet vạn vật (IoT) và Giao dịch chuỗi khối (block-chain) Công nghệ được ứng dụng và thay đổi hầu hết cách thức làm việc của mọi ngành nghề Đặc biệt với sự phát triển mạnh mẽ của Trí tuệ nhận tạo, việc khiến công cụ trở nên
“thông minh” và hữu ích hơn không còn là một vấn đề khó
Trong cuộc sống của chúng ta, bên cạnh những người được sinh ra lành lặn thì vẫn còn tồn tại một bộ phận người mang trong mình những khiếm khuyết Họ luôn gặp rất nhiều vấn đề khó khăn trong cuộc sống, đặc biệt là những người khiếm thị Việc mất đi thị lực đã buộc họ sử dụng những cách khác nhau để khám phá thế giới xung quanh (nghe, sờ) và trong một số trường hợp, họ có thể bị tổn thương bởi những yếu tố nguy hiểm xung quanh bởi họ thường phản xạ chậm hoặc chạm vào những vật sắc nhọn, có nhiệt độ cao
Từ đó, đề tài “Xây dựng Sản phẩm Kính thông minh cho Người khiếm thị bằng Ứng dụng Trí tuệ nhân tạo và Internet vạn vật” đã mở ra
một hướng đi mới, đẩy mạnh việc ứng dụng sự phát triển công nghệ để phần nào cải thiện, bù đắp khả năng quan sát, nhận biết thế giới cho người khiếm thị
Sử dụng trí tuệ nhân tạo để mang đến cho người khiếm thị một “đôi mắt kĩ thuật số”
Trang 132 Tính cấp thiết và mục tiêu của đề tài
Hiện nay, trí tuệ nhân tạo (AI) và máy học machine learning vẫn còn là
1 lĩnh vực mới, chưa thực sự có nhiều sản phẩm có thể đưa vào ứng dụng thực
tiễn trong cuộc sống, đặc biệt là ở thị trường Việt Nam
Trên thế giới, cũng đã có nhiều sản phẩm kính thông minh hỗ trợ cho người mù tuy nhiên chúng chỉ hỗ trợ một số tính năng cơ bản như: dự báo khoảng cách trước mặt, đọc văn bản, kết nối internet để đọc tin tức Chưa thực
sự có 1 sản phẩm ứng dụng trí tuệ nhân tạo để nhận dạng đồ vật giúp người khiếm thị biết được thế giới xung quanh của họ và hỗ trợ họ tìm kiếm đồ vật nhanh hơn
Mặt khác, giá cả của các thiết bị tương đối cao:
Bảng 0.1 Một số thiết bị kính thông minh trên thế giới
STT Tên thiết bị Giá (USD) Tính năng
1 IrisVision 2950 Chụp ảnh, trợ lí ảo đọc tin tức online,
nhận dạng đọc văn bản
2 Acesight 4995 Chụp ảnh, giải trí ứng dụng thực tế
tăng cường (AR)
3 NuEyes Pro 5995 Chụp ảnh, điều khiển bằng giọng nói,
nhận dạng đọc văn bản, quét mã vạch
và mã QR
4 MyEye2 3500 Chụp ảnh, kết nối internet đọc tin tức,
nhận dạng đọc văn bản, nhận dạng khuôn mặt, nhận dạng thông tin sản phẩm nhờ đọc mã vạch
5 eSight 5950 Chụp ảnh, nhận dạng đọc văn bản
Từ đó, đề tài “Xây dựng sản phẩm Kính thông minh cho người khiếm thị
Trang 14- Xây dựng hệ thống IoT Kính thông minh, gồm 1 kính thông minh hỗ trợ
người khiếm thị trong việc nhận dạng, tìm kiếm đồ vật, cảnh báo nguy hiểm và 1 ứng dụng di động hỗ trợ người thân của người khiếm thị theo dõi, quan sát và có thể nhận các tín hiệu khẩn cấp khi người khiếm thị gặp tai nạn
- Sản phẩm kính thông minh sản xuất với giá thành hợp lí, phù hợp với thị
trường Việt Nam
3 Chức năng chính
*Kính thông minh:
- Nhận dạng vật thể xung quanh theo thời gian thực
- Phân loại vật thể nhận dạng và cảnh báo người khiếm thị khi có vật thể
nguy hiểm
- Cảnh báo người khiếm thị khi đến gần chướng ngại vật
- Đọc tên toàn bộ vật thể xung quanh khi người khiếm thị yêu cầu
- Hỗ trợ người khiếm thị tìm kiếm đồ vật bằng giọng nói
- Gửi tín hiệu khẩn cấp (SOS) đến ứng dụng cho người thân
*Ứng dụng cho người thân:
- Quản lí nhóm gia đình
- Liên kết và hủy liên kết kính
- Quan sát vị trí GPS và ảnh chụp từ kính thông minh đã liên kết
- Nhận các thông báo SOS từ kính thông minh
Trang 154 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
- Trí tuệ nhân tạo (máy học)
- Tìm hiểu về các loại thiết bị phần cứng và cách thức lập trình trên chúng
- Phân tích thiết kế và phát triển chức năng phần mềm ở kính thông minh,
ứng dụng di động, máy chủ, truyền nhận dữ liệu đa nền tảng
5 Phương pháp thực hiện
Quá trình nghiên cứu được thực hiện thông qua các phương pháp sau:
- Phương pháp điều tra, khảo sát thực tiễn để tìm hiểu về các sản phẩm
hiện có, các loại thiết bị phần cứng sẽ sử dụng
- Nghiên cứu các công nghệ phù hợp với quy mô đề tài, để áp dụng hiện
thực hóa đề tài
- Phương pháp thu thập, tổng hợp dữ liệu huấn luyện máy học bằng việc
ghi hình thực tế và đánh nhãn thủ công
Trang 16- Các phương pháp huấn luyện mô hình nhận diện thông qua dữ liệu thu
thập được, các phương pháp cải thiện độ chính xác và tăng tốc huấn luyện như fine-tuning, transfer-learning
- Tổng hợp kiến thức để xây dựng hệ thống Internet of Thing
- Phân tích, thiết kế và lập trình ứng dụng trên kính, ứng dụng mobile và
ứng dụng máy chủ
- Triển khai hệ thống trong thực tế
- Kiểm thử và đưa vào hoạt động
Trang 176 Bố cục báo cáo khóa luận tốt nghiệp
MỞ ĐẦU
Nêu lên vấn đề trong cuộc sống là động lực thúc đẩy nên đề tài, qua đó nêu lên mục đích, phương pháp thực hiện và công cụ giải quyết một cách tổng quát
Chương 1: CƠ SỞ LÝ THUYẾT
Chương này giới thiệu các lý thuyết quan trọng là nền tảng kiến thức và cơ sở
để xây dựng đề tài lần này
Chương 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Chương này xây dựng giải pháp và mô hình cho hệ thống từ tổng quát kiến trúc
hệ thống đến mô tả chi tiết chức năng trên 3 nền tảng: máy chủ, kính thông minh và ứng dụng di động cho người thân thông qua các mô hình kiến trúc hệ thống, mô hình ER, mô hình dữ liệu quan hệ, sơ đồ ca sử dụng, sơ đồ hoạt động,
sơ đồ tuần tự, sơ đồ lớp
Chương 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
Chương này giới thiệu môi trường cài đặt, thu thập dữ liệu, huấn luyện máy học, xây dựng phần mềm và lắp đặt hệ thống theo phân tích và thiết kế ở
Chương 2, đồng thời đánh giá kết quả đạt được
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết quả đạt được của đề tài, nêu ra thành công và thất bại của đồ án lần này và đặt ra các kế hoạch trong tương lai
TÀI LIỆU THAM KHẢO
Trang 18CHƯƠNG 1
CƠ SỞ LÝ THUYẾT 1.1 Trí tuệ nhân tạo và máy học
1.1.1 Trí tuệ nhân tạo (AI)
Trí tuệ nhân tạo hay trí thông minh nhân tạo (Artificial intelligence – viết tắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer science)
Là trí tuệ do người lập trình tạo nên với mục tiêu giúp máy tính có thể tự động hóa các hành vi thông minh như con người
Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình
là ở việc biết phân tích dữ liệu xung quanh, “suy nghĩ” và đưa ra giải pháp tối
ưu nhất so với việc đi theo một lối logic cố định
Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi, …
Hình 1.1 AI và các lĩnh vực thuộc AI
1 số lĩnh vực của trí tuệ nhân tạo có thể kể đến như:
- Điện toán nhận thức (Cognitive Computing)
- Thị giác máy tính (Computer Vision)
- Máy học (Machine Learning)
- Mạng nơ-ron nhân tạo (Nerural Networks)
Trang 19- Học sâu (Deep Learning)
- Xử lí ngôn ngữ tự nhiên (Natural Language Processing)
1.1.2 Máy học (Machine Learning)
Máy học (Machine Learning) là một bộ phận của trí tuệ nhân tạo, là quá trình học hỏi hình thành tư duy từ tập dữ liệu hoặc kinh nghiệm cho trước Khi ứng dụng Machine Learning, ta phải chuẩn bị tập dữ liệu huấn luyện Quá trình huấn luyện sẽ sinh ra 1 model mạng nơ ron - chính là lối tư duy hình thành từ tập huấn luyện Sau đó ứng dụng model sinh ra cho các công việc thực tế
Thông thường khi đã đưa vào ứng dụng, model mạng nơ ron Machine Learning không thể thay đổi sau khi đã huấn luyện
Deep Learning chính là 1 bộ phận nâng cao từ Machine Learning, cho phép máy xử lí và tự huấn luyện trực tiếp trong quá trình ứng dụng model
1.1.3 Mạng nơ-ron nhân tạo (Artificial Neural Networks - ANNs)
Mạng nơ-ron nhân tạo được phát triển lấy cảm hứng từ mạng lưới thần kinh sinh học, tức là bộ não, là bộ phận quan trọng nhất trong lĩnh vực trí tuệ nhân tạo, được ứng dụng để phát triển các bộ phận khác của trí tuệ nhân tạo
Mạng nơ-ron là cơ sở logic, là cơ chế đưa ra quyết định kết quả đầu ra
Có nhiều kiến trúc mạng nơ-ron được nghiên cứu và phát triển để phù hợp với từng lĩnh vực ứng dụng Sử dụng 1 kiến trúc mạng nơ-ron, từ tập dữ liệu huấn luyện, ta có thể sử dụng machine learning để huấn luyện sinh ra 1 model mạng nơ-ron
1.1.3.1 Giới thiệu mạng Perceptron
Nhắc tới mạng nơ-ron nhân tạo ta không thể không nhắc đến một thành
phần cơ bản của nó: một nơ-ron nhân tạo có tên là Perceptron Perceptron
được phát triển vào năm 1950 và 1960 bởi một nhà khoa học Frank Rosenblatt, được tạo cảm hứng bởi các nghiên cứu từ trước của Warren McCulloch và
Trang 20Một perceptron nhận một số dữ liệu vào dưới dạng nhị phân 𝑥1, 𝑥2,…
và cho ra một dữ liệu ra nhị phân duy nhất:
Hình 1.2 Một nơ-ron đơn giản
Trong ví dụ trên ta có thể thấy perceptron có 3 input là 𝑥1, 𝑥2, 𝑥3 RoseBlatt đã đưa ra một quy luật đơn giản để tính toán được dữ liệu ra Ông ấy gọi 𝑤1, 𝑤2,…
là các trọng số, các số thực biểu diễn độ quan trọng của từng dữ liêu vào đối
với dữ liệu ra Dữ liệu ra của nơ-ron, 0 hoặc 1, được quyết định bởi phép so sánh tổng các phép nhân 𝑤𝑗𝑥𝑗 lớn hơn hay nhỏ hơn một giá trị ngưỡng nào đó
Và như các trọng số, giá trị ngưỡng là một số thực đóng vai trò là tham số của nơ-ron Các nơ-ron hoạt động được biểu diễn dưới hạng hàm số toán học như sau:
1 Thời tiết hôm đó có tốt không?
2 Đường đi đến nơi dã ngoại có khó khăn hay không?
3 Có bạn bè đi cùng hay không?
Trang 21Ta có thể coi 𝑥1, 𝑥2, 𝑥3 là các biến được gán cho 3 yếu tố và output = 1 là đi và
0 là không đi Sau đó ta đặt các trọng 𝑤1= 0.05, 𝑤2 = 0.4 và 𝑤3 = 0.55 tương ứng với 𝑥1, 𝑥2, 𝑥3 và giá trị ngưỡng là 0.5 thì ta có thể thấy việc thời tiết có tốt hay không chỉ chiếm việc ra quyết định có đi dã ngoại hay không chỉ 5% và nếu như có bạn bè đi cùng thì hay 𝑥3 = 1 thì ta chắc chắn sẽ đi nhậu
Ở công thức nói trên, nếu ta viết lại các trọng số wj và các dữ liệu đầu vào 𝑥𝑗dưới dạng vector 𝑤 và 𝑥và tổng 𝑤𝑗𝑥𝑗 dưới dạng tích vô hướng, giá trị ngưỡng
ta chuyển vế, thay nó bằng độ thiên vị (bias) b với 𝑏 = − 𝑛𝑔ưỡ𝑛𝑔 Ta có thể viết lại công thức biểu diễn nơ-ron ban đầu như sau [4]:
𝑜𝑢𝑡𝑝𝑢𝑡 = {0 𝑛ế𝑢 𝑤 ∙ 𝑥 + 𝑏 ≤ 0
1 𝑛ế𝑢 𝑤 ∙ 𝑥 + 𝑏 > 0
1.1.3.2 Hàm sigmoid cho nơ-ron
Để một mạng perceptron có thể học được, mạng perceptron đó phải có được tính chất mà ta mong muốn sau: nếu có một sự thay đổi nhỏ ở trọng số và bias thì có sẽ có một sự thay đổi nhỏ tương ứng ở đầu ra
Hình 1.3 Minh hoạ tính chất mong muốn của mạng nơ-ron
Trang 22Ví dụ, khi mô hình mạng của chúng ta phân loại một chữ viết tay là “8” trong khi kết quả là “9” Ta có thể dựa vào tính chất mong muốn nêu trên, thay đổi dần dần trọng số và bias cho đến khi mô hình mạng đưa ra được kết quả tốt hơn, gần “9” hơn là “8”, khi đó mô hình mạng của chúng ta được gọi là đang học Tuy nhiên với mô hình mạng được cấu tạo từ các perceptron thì điều đó không thể xảy ra Đơn giản là vì perceptron là một step function, sự thay đổi nhỏ ở trọng số và bias có thể thay đổi đột ngột đầu ra của nó, như việc bật tắt công tắc đèn
Hình 1.4 Đồ thị hàm bước nhảy
Để vượt qua vấn đề này, người ta đề ra một loại nơ ron nhân tạo mới được gọi
là nơ-ron sigmoid Nơ ron sigmoid tương tự với perceptron cũng có các đầu vào là 𝑥1, 𝑥2,… Tuy nhiên đầu ra của chúng, được quyết định bởi một hàm sigmoid, nằm trong khoảng [0,1] và có công thức [4]:
𝜎(𝑧) ≡ 1
1 + 𝑒−𝑧
Trang 23Đồ thị của hàm sigmoid cũng thể hiện được tính chất mà chúng ta mong muốn
để có thể khiến cho mô hình mạng học được
Hình 1.5 Đồ thị hàm sigmoid
Như vậy đầu ra của một nơ-ron sigmoid sẽ có dạng [4]:
1
1 + exp (− ∑ 𝑤𝑗 𝑗𝑥𝑗 − 𝑏)Ngoài hàm sigmoid, còn có nhiều hàm khác có dạng đồ thị tương ứng như tanh, ReLU có thể thay thế Một cách tổng quát chúng được gọi là các hàm kích hoạt (activation function) và perceptron được biểu diễn qua hàm kích hoạt như sau:
𝑂 = 𝐹(𝑧) = 𝑓(𝑤 ∙ 𝑥 + 𝑏)
1.1.3.3 Kiến trúc chung của một mạng nơ-ron
Mạng nơ-ron là sự kết hợp giữa các tầng perceptron với nhau hay còn được gọi là perceptron đa tầng (multilayer perceptrons) mặc dù thực chất các nơ-ron là nơ-ron sigmoid
Trang 24Hình 1.6 Mạng nơ-ron cơ bản
Mạng nơ-ron sẽ có 3 tầng:
- Tầng vào (input layer):nằm ở bên trái nhất của mạng thể hiện cho các
đầu vào của mạng
- Tầng ra (output layer):nằm ở bên phải nhất của mạng thể hiện cho các
đầu ra
- Tầng ẩn (hidden layer):nằm ở giữa tầng ra và tầng vào
Mỗi mạng nơ-ron chỉ có 1 tầng ra và 1 tầng vào, tuy nhiên sẽ có thể có nhiều tầng ẩn Ở mỗi tầng, số lượng các nút mạng (nơ-ron) có thể khác nhau tuỳ thuộc vào bài toán và cách giải quyết Nhưng thường khi làm việc người ta để các tầng ẩn có số lượng nơ-ron bằng nhau Ngoài ra, các nơ-ron ở các tầng thường được liên kết đôi một với nhau tạo thành mạng kết nối đầy đủ (full-connected network) Khi đó ta có thể tính được kích cỡ của mạng dựa vào số tầng và số nơ-ron Ví dụ ở hình trên ta có:
- Ba tầng mạng
- 9 nút mạng
- (3 × 4 + 4 × 2) + (4 + 2) = 26 tham số
Trang 251.1.4 Mạng nơ-ron tích chập xử lí hình ảnh
1.1.4.1 Mạng nơ-ron tích chập xử lí hình ảnh
Theo như cách tính số lượng tham số trên của mạng nơ-ron truyền thống,
có thể dễ nhận thấy rằng chúng hoạt động không thực sự hiệu quả với dữ liệu đầu vào là hình ảnh Nếu coi mỗi điểm ảnh là một thuộc tính (feature), một ảnh RBG kích thước (64 × 64) có đến 12288 (= 64 × 64 × 3) thuộc tính Nếu kích thước ảnh tăng lên 300 x 300, chúng ta có khoảng 900 nghìn thuộc tính cho mỗi ánh đầu vào Nếu sử dụng mạng nơ-ron liên kết đầy đủ (fully connected neural network) truyền thống và giả sử lớp thứ 2 có 1000 nơ-ron, ma trận trọng
số sẽ có kích thước 1000 × 900000 tương đương với 90 triệu trọng số cần huấn luyện (learning) Điều này yêu cầu khối lượng tính toán cực lớn (expensive computational cost) và thường dẫn đến overfitting (overfitting là tình trạng mô hình rất khớp với tập huấn luyện nhưng không phù hợp với thực tế) do không đủ dữ liệu huấn luyện
Mạng nơ-ron tích chập (Convolutional neural network) viết tắt là CNN hay ConvNet, là mạng nơ-ron phổ biến nhất được dùng cho dữ liệu ảnh Bên cạnh các lớp liên kết đầy đủ của mạng nơ-ron truyền thống, CNN còn đi cùng với các lớp ẩn đặc biệt giúp phát hiện và trích xuất nhưng đặc trưng – hình mẫu (patterns) xuất hiện trong ảnh gọi là Lớp Tích chập (Convolutional Layers) Chính những lớp tích chập này làm CNN trở nên khác biệt so với mạng nơ-ron truyền thống và hoạt động cực kì hiệu quả trong bài toán phân tích hình ảnh
1.1.4.2 Lớp tích chập
Giống như các lớp ẩn khác, lớp tích chập lấy dữ liệu đầu vào, thực hiện các phép chuyển đổi để tạo ra dữ liệu đầu vào cho lớp kế tiếp (đầu ra của lớp này là đầu vào của lớp sau) Phép biến đổi được sử dụng là phép tính tích chập
Trang 26feature detector) cho phép phát hiện và trích xuất những đặc trưng khác nhau của ảnh [6]
Độ phức tạp và trừu tượng của đặc trưng được phát hiện bởi bộ lọc tỉ lệ thuận với độ sâu của lớp tích chập mà nó thuộc về Trong mạng CNN, những lớp tích chập đầu tiên sử dụng bộ lọc hình học (geometric filters) để phát hiện những đặc trưng đơn giản như cạnh ngang, dọc, chéo của bức ảnh Những lớp tích chập sau đó được dùng để phát hiện các đối tượng nhỏ, bán hoàn chỉnh như mắt, mũi tóc, v.v Những lớp tích chập sâu nhất dùng để phát hiện đối tượng hoàn chỉnh như: chó, mèo, chim, ô tô, v.v
F3: Phát hiện cạnh ngang dưới
F4: Phát hiện cạnh ngang trên
Trang 27Hình 1.8 Ví dụ về bộ lọc cạnh (đứng phải, đứng trái, ngang dưới, ngang trên)
với đầu vào là ảnh số viết tay
1.1.5 Các mạng nơ-ron ứng dụng trong việc nhận dạng vật thể (object detection)
Nhận dạng đồ vật là một trong những bài toán thuộc lĩnh vực Machine Learning được nghiên cứu nhiều năm trên thế giới
Yêu cầu của bài toán đặt ra là phân tích hình ảnh để tìm ra tọa độ của vật thể, đồng thời phân loại để tìm ra nhãn tên của vật thể
- Đầu vào: Hình ảnh
- Đầu ra: Tọa độ và nhãn tên của vật thể
Hình 1.9 Bài toán Object detection
Tập dữ liệu huấn luyện là tập hình ảnh, đi kèm tập dữ liệu chứa tên và tọa độ của các vật thể trong ảnh
Trang 28Các kiến trúc mạng nơ-ron cơ sở phổ biến có thể kể đến để giải quyết bài toán Object detection là: MobileNet, VGG, GoogleNet/Inception
Bảng 1.1 Đánh giá một số mạng nơ-ron Object detection cơ sở [5]
ImageNet
Số phép nhân – cộng (triệu)
Số tham số (triệu)
Bảng 1.2 Đánh giá một số mạng nơ-ron Object detection [5]
Số phép nhân – cộng (tỉ)
Số tham số (triệu)
Trang 29thường)
1.1.6 Mạng nơ-ron Single Shot MultiBox Detector MobileNet (SSD MobileNet)
SSD MobileNet là một mạng nơ-ron được thiết kế hướng đến thời gian
thực (real-time), được tạo ra nhằm hướng đến sự tối ưu về tốc độ, có thể triển
khai trên các thiết bị phần cứng có cấu hình thấp với độ chính xác chấp nhận
Bộ phát hiện vật thể SSD gồm 2 phần:
- Trích xuất các bản đồ đặc trưng (feature maps)
- Áp dụng các bộ lọc chập (covolution filters) để phát hiện vật thể
Ở đây, SSD sẽ sử dụng mạng cơ sở MobileNet để chiết xuất các bản đồ đặc trưng sau đó sử dụng các bộ lọc chập (covolution filters) để phát hiện và phân loại (classification) tên gọi vật thể
Trang 30Hình 1.10 Kết quả dự đoán sau 21 lớp
Mỗi dự đoán, SSD MobileNet sẽ đưa ra 21 khung giới hạn và 21 điểm
số tin cậy (confidence scores) cho mỗi khung giới hạn tương ứng với 21 lớp filter
Để đánh giá tổn thất, các dự đoán của SSD được phân loại thành positive (tích cực-đúng) hoặc negative (tiêu cực-sai) SSD chỉ sử dụng các dự đoán positive để tính tổn thất (loss) Nếu như khung giới hạn mặc định tương ứng có phần giao của hợp (IoU – Intersection of Union) lớn hơn 0,5 so với khung giới hạn thật (được định nghĩa bởi tập huấn luyện) thì đó được coi là positive, ngược lại là negative Một khi ta xác định được các cặp positive, ta sử dụng các khung giới hạn được dự đoán tương ứng (với khung giới hạn mặc định) để tính toán tổn thất
Trang 31Mục tiêu huấn luyện của SSD là tự điều chỉnh các lớp filters để đạt được
độ tổn thấp(loss) nhỏ nhất Với tập dữ liệu ảnh huấn luyện kích thước 300x300 thì SSD MobileNet khuyến nghị độ tổn thất xấp xỉ bằng 1 là chính xác
1.1.7 Học chuyển (transfer learning), hiệu chỉnh mạng nơ-ron
Con người vốn có một khả năng có thể chuyển dịch các tri thức giữa các công việc khác nhau Điều mà chúng ta thu được dưới dạng kiến thức khi đang thực hiện một công việc, có thể được sử dụng thể giải quyết một công việc khác Một số ví dụ cơ bản:
- Biết cách lái xe máy → Học cách lái xe ô tô
- Biết cách chơi đàn guitar → Học cách chơi đàn ukulele
- Biết toán và thống kê → Học máy học
Trong các trường hợp trên, con người không học mọi thứ bắt đầu từ trang giấy trắng Chúng ta chuyển dịch và nâng tầm các tri thức mà chúng ta đã học trong quá khứ
Học máy được thiết kế một cách truyền thống để hoạt động độc lập Các thuật toán này được huấn luyện để giải quyết một số công việc cụ thể Các mô hình phải được xây dựng lại từ đầu một khi các phân phối không gian thay đổi Học chuyển (transfer-learning) là ý tưởng vượt qua các mô hình học độc lập và lợi dụng các kiến thức có được thông qua một công việc này để giải quyết công việc khác liên quan
Học chuyển không phải là một khái niệm mới riêng biệt đối với học sâu
Có một sự khác biệt lớn giữa hướng tiếp cận truyền thống trong việc xây dựng
và huấn luyện một mô hình máy học, và sử dụng các phương pháp dựa trên cơ
sở là học chuyển
Trang 32Hình 1.11 Khác biệt giữa máy học truyền thống và học chuyển
Máy học truyền thống thường độc lập và hoàn toàn xảy ra dựa trên các công việc, tập dữ liệu riêng biệt Các mô hình được huấn luyện một cách độc lập dựa trên các công việc và tập dữ liệu ấy Các kiến thức không được giữ lại mặc dù có thể chuyển dịch giữa một mô hình này sang mô hình khác Trong học chuyển, chúng ta có thể lợi dụng các tri thức (đặc trưng, trọng số…) từ mô hình đã được huấn luyện từ trước sang việc huấn luyện các mô hình mới hơn
và thâm chí giải quyết thành công các vấn đề như không đủ lượng dữ liệu cho công việc mới
Mạng nơ-ron SSD MobileNet cũng đã ứng dụng học chuyển để phát triển, nó áp dụng các lớp định nghĩa bởi MobileNet để rút trích các bản đồ đặc
trưng để nhận biệt thế nào là thẳng, cong, sự khác biệt về màu sắc, tỉ lệ kích thước…
Giờ đây, ta lại sử dụng học chuyển trên nền mạng nơ-ron SSD MobileNet để định nghĩa ra những đặc trưng nào là của vật thể nào qua quá trình huấn luyện Machine Learning
Trong tương lai, chúng ta có thể tái sử dụng model đã train trước đó để huấn luyện chi tiết hóa hơn các vật thể, tiết kiệm được thời gian và dữ liệu huấn luyện
Trang 331.1.8 Python và các thư viện hỗ trợ
1.1.8.1 Python
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấu trúc của Python cho phép người sử dụng viết mã lệnh với số lần
gõ phím tối thiểu [7]
Python hỗ trợ cả lập trình hướng đối tượng và lập trình hướng cấu trúc, ngoài ra nhiều tính năng của nó còn hỗ trợ cả lập trình hướng chức năng và lập trình hướng (aspect-orientated programming) Python sử dụng kiểu gõ động và kết hợp đếm tham chiếu và trình thu gom rác để quản lí bộ nhớ Thiết kế của Python còn cung cấp một số hỗ trợ cho lập trình theo hướng chức năng theo phong cách truyền thống như ngôn ngữ Lisp Như vậy Python vừa thừa hưởng
Model nhận diện
chó
SSD MobileNet
Model nhận diện các loài chó Husky, Bull, Pug, Chihuahua…
Hình 1.12 Ứng dụng học chuyển (Transfer Learning)
Trang 34các đặc điểm của các ngôn ngữ truyền thống vừa có những đặc điểm của một ngôn ngữ bậc cao hiện đại
Mặc dù tốc độ của một ngôn ngữ thông dịch như Python luôn chậm hơn
C, C++ Tuy nhiên ta có thể sử dụng C để phát triển và tích hợp các hàm vào Python theo nhu cầu, qua đó tăng tốc độ xử lí của chương trình
Python là ngôn ngữ chủ đạo trong việc phát triển các sản phẩm ứng dụng A.I
và Machine Learning
1.1.8.2 Các thư viện hỗ trợ
TensorFlow: là một thư viện phần mềm mã nguồn mở cung cấp khả
năng xử lí tính toán số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu dành cho máy học trong nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ Nó hiện đang được sử dụng cho cả nghiên cứu lẫn sản xuất bởi 50 đội ngũ khác nhau trong hàng loạt các sản phẩm thương mại của Google, như nhận dạng giọng nói, Gmail, Google Photos, và tìm kiếm, nhiều trong số đó đã từng sử dụng chương trình tiền nhiệm DistBelief của nó TensorFlow nguyên thủy được phát triển bởi Google Brain cho mục đích nghiên cứu và sản xuất của Google và sau
đó được phát hành theo giấy phép mã nguồn mở Apache 2.0 vào ngày 9/11/2015 Hiện Tensorflow
Tensorflow Object Detection API: là một framework mã nguồn mở xây
dựng dựa trên thư viện Tensorflow, giúp việc xây dựng, huấn luyện và triển khai một mô hình phát hiện vật thể trở nên dễ dàng Được phát hành vào tháng
7 năm 2017, framework này cung cấp các cài đặt của các thuật toán, mô hình
hỗ trợ phát hiện vật thể có thể sử dụng ngay mà không cần trải qua quá trình cài đặt phần cứng phức tạp SSD, Faster R-CNN, Mask R-CNN với các mạng
cơ sở như là MobileNet, Inception, ResNet, … được huấn luyện trên các bộ dữ liệu nổi tiếng như COCO, Kitti, Open Images, iNaturalist và AVA Tổng cộng
Trang 35có 38 mô hình có thể lựa chọn để tiếp tục sử dụng phương pháp học chuyển, huấn luyện mô hình thực hiện các công việc nhận diện khác
OpenCV: một bộ thư viện mã nguồn mở cho thị giác máy tính và xử lí
hình ảnh Được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí cho cả học thuật và thương mại Nó có các interface C++, C, Python, Java và
hỗ trợ Windows, Linux, Mac OS, iOS và Android
Google Text-to-Speech, Google Speech Recognition: là thư viện cung
cấp tính năng chuyển văn bản thành giọng nói và thư viện nhận dạng chuyển giọng nói thành văn bản được phát triển và cung cấp bởi Google Với việc ứng dụng machine learning trên bộ dữ liệu khổng lồ hơn 120 ngôn ngữ, Google cung cấp cho người dùng khả năng làm việc với giọng nói con người (human voice) dễ dàng và miễn phí
1.2 Internet vạn vật (IoT)
1.2.1 Khái niệm
Internet of Things, hay IoT, Internet vạn vật là đề cập đến hàng tỉ thiết
bị vật lý trên khắp thế giới hiện được kết nối với internet, thu thập và chia sẻ
dữ liệu Nhờ bộ xử lý giá rẻ và mạng không dây, có thể biến mọi thứ, từ viên thuốc sang máy bay, thành một phần của IoT Điều này bổ sung sự “thông minh
kỹ thuật số” cho các thiết bị, cho phép chúng giao tiếp mà không cần có con người tham gia và hợp nhất thế giới kỹ thuật số và vật lý
1.2.2 Các loại phần cứng đảm nhiệm vai trò điểu khiển
Với các thiết bị hỗ trợ IoT có 2 loại phần cứng đảm nhiệm vài trò là bộ
xử lí phổ biến là Adruino và Raspberry Pi
Trang 36Bảng 1.3 So sánh Arduino và Raspberry Pi
Giá cả và kích thước của 2 thiết bị là gần giống nhau tuy nhiên về sức mạnh phần cứng Raspberry Pi là nổi bật hơn cả Với tốc độ xử lí nhanh hơn 40 lần, dung lượng ram gấp 128.000 lần Có thể xem Raspberry Pi là một máy tính mini có thể chạy 1 hệ điều hành độc lập, hỗ trợ đa ngôn ngữ lập trình so với Adruino chỉ được lập trình trên IDE của hãng dựa trên C/C++
• Với các dự án thiên về phần cứng và xử lí logic đơn giản, Arduino là sự lựa chọn tốt với hỗ trợ chi tiết và tính tương thích cao, ổn định nhờ Arduino IDE
• Với các dự án phức tạp, thiên về xử lí, Raspberry Pi là lựa chọn thích hợp hơn với khả năng tùy biến cao cùng cấu hình mạnh
Vì yêu cầu thực hiện chức năng machine learning, cùng các tác vụ gửi nhận tín hiệu song song, nên đề tài sẽ sử dụng Raspberry Pi làm board xử lí chính
Trang 371.2.3 Chip Raspberry Pi và hệ điều hành Raspbian
Hình 1.13 Thiết bị Raspberry Pi 4 B
- Raspberry Pi: được Eben Upton và các đồng nghiệp của ông tại Phòng
thí nghiệm máy tính của trường đại học Cambridge phát minh, với mục đích ban đầu là 1 máy tính giá rẻ, phù hợp cho sinh viên sử dụng học tập Nhờ lược bỏ đi các thành phần cần thiết của 1 máy tính cơ bản nên thay vào đó, Raspberry Pi có thêm các cổng I/O kết nối tới phần lớn các linh kiện phần cứng Sau này Raspberry Pi được đầu tư phát triển để trở thành một trong nhưng thiết bị xử lí IoT phổ biến [8]
- Raspbian: là hệ điều hành được phát triển riêng cho thiết bị Raspberry
Pi trên nền nhân Linux và Debian Hệ điều hành ngoài xử lí các tác vụ
cơ bản còn cung cấp các phương thức giao tiếp trên các chân I/O của thiết bị Raspberry Pi Các ứng dụng C/C++, Java, Python, NodeJS đều
có thể chạy được trên Raspbian
Trang 381.3 Lập trình di động Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Android, Inc với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Hiện nay Android là nền tảng di động phổ biến nhất với 86% thị phần các thiết
bị di động
Để lập trình Android, Google hỗ trợ IDE Android Studio cùng kho thư viện mã nguồn và asset UI để lập trình viên khai thác và sử dụng các tính năng trên thiết bị di động dễ dàng nhanh chóng Java và Kotlin là 2 ngôn ngữ phổ biến có thể sử dụng trong Android Studio
1.4 Dịch vụ máy chủ
1.4.1 Giới thiệu về Amazon Web Service
Amazon Web Services (AWS) là nền tảng đám mây toàn diện và được
sử dụng rộng rãi nhất, cung cấp trên 175 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên toàn thế giới Hàng triệu khách hàng—bao gồm các công ty khởi nghiệp tăng trưởng nhanh nhất, các tập đoàn lớn nhất cũng như các cơ quan hàng đầu của chính phủ—đều tin tưởng vào AWS để giảm chi phí, trở nên linh hoạt hơn và đổi mới nhanh hơn
Một số dịch vụ của AWS mà đề tài sử dụng:
- Simple Storage Service (S3): dịch vụ lưu trữ và chia sẻ file trực tuyến
- Relational Database Service (RDS): dịch vụ tạo lập hệ quản trị CSDL
trực tuyến
- Simple Notification Service (SNS): dịch vụ quản lí và gửi tin nhắn/ thông
báo
- Lambda: dịch vụ xử lí không máy chủ, cho phép tạo và chạy trực tuyến
các chương trình bằng ngôn ngữ NodeJS hoặc Python mà không cần
Trang 39đăng kí máy ảo riêng (VPS) hay máy chủ (Server), là nền tảng để xây dựng hệ thống Backend không máy chủ (Serverless)
1.4.2 Giới thiệu về Firebase
Firebase là một nền tảng để phát triển ứng dụng di động và trang web, bao gồm các API đơn giản và mạnh mẽ mà không cần backend hay server do Google cung cấp Các dịch vụ mà Firebase hỗ trợ có thể kể đến: CSDL thời gian thực (Real-time Database), Xác thực người dùng (Authentication) và quản
lí thông báo đẩy (Cloud Messaging)
Đề tài sử dụng Cloud Messaging để gửi các thông báo đẩy đến ứng dụng
di động Android
Trang 40CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 2.1 Phân tích hệ thống
2.1.1 Mục tiêu và chức năng
2.1.1.1 Mục tiêu
Mục tiêu xây dựng hệ thống Kính thông minh với 3 thành phần:
1) Kính thông minh (Smart Glasses): là sản phẩm hỗ trợ cho người khiếm
thị các chức năng nhận dạng vật thể, cảnh báo nguy hiểm và cung cấp khả năng liên kết tới người thân trong gia đình người khiếm thị, giúp người khiếm thị có thể thông báo các tín hiệu khẩn cấp SOS đến người thân
2) Ứng dụng di động cho người thân (Family App): là ứng dụng hỗ trợ
người thân trong gia đình của người khiếm thị quan sát, quản lí các kính thông minh, nhận dữ liệu về thời gian, địa điểm, hình ảnh và các tín hiệu khẩn cấp từ kính
3) Máy chủ: đảm nhiệm bộ phận giao tiếp trung gian, lưu trữ và truyền nhận
dữ liệu từ kính với ứng dụng di động
2.1.1.2 Chức năng
Các chức năng trên Smart Glasses và Family App:
a Kính thông minh (Smart Glasses):
1) Nhận dạng tên và phân loại vật thể nguy hiểm
2) Cảnh báo tự động về vật nguy hiểm / chướng ngại vật
3) Phát âm thanh tên của tất cả các vật thể
4) Tìm đồ vật bằng giọng nói và trả lời có đồ vật trước mặt hay không
5) Gửi tín hiệu cấp cứu SOS đến ứng dụng mobile
6) Gửi dữ liệu ảnh chụp được đến ứng dụng mobile
7) Lấy dữ liệu GPS từ vệ tinh và gửi đến ứng dụng mobile
8) Nhận yêu cầu, mã xác nhận liên kết với ứng dụng mobile