Chương 1 GIỚI THIỆU: các vấn đề về đề tài sẽ được khái quát ở chương này. - Các mục tiêu mà nhóm thực hiện sẽ nghiên cứu để hoàn thành hệ thống. - Những giới hạn trong quá trình thực hiện đề tài. - Các phương pháp được nhóm thực hiện sử dụng để nghiên cứu đề tài.
- Phạm vi và đối tượng mà nhóm thực sẽ tiến hành nghiên cứu trong quá trình thực hiện đề tài. Chương 2 CƠ SỞ LÝ THUYẾT: trình bày về tình hình nghiên cứu, hướng nghiên cứu, các dịch vụ đang được sử dụng. 3 Chương 3 THIẾT KẾ HỆ THỐNG: thực hiện thiết kế sơ đồ khối cho toàn hệ thống, nói chi tiết về thiết kế các khối phần cứng và quá trình thực hiện phần mềm. Các hoạt động điều khiển từ phần mềm tới phần cứng.
Chương 4 KẾT QUẢ: triển khai mô hình hoàn chỉnh về phần cứng, tiến hành hoạt động khởi chạy cho toàn hệ thống (các hoạt động điều khiều từ phần mềm tới các thiết bị phần cứng). Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: đánh giá quá trình hoạt động của mô hình sau khi hoàn thiện có đúng với mục tiêu của đề tài đặt ra hay không, các mục ưu điểm nổi bật của hệ thống cũng như một số khuyết điểm, từ đó nêu ra hướng phát triển cho hệ thống. 4 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU MÔ HÌNH NHẬN DIỆN CỬ CHỈ Đề tài nhóm thực hiện tham khảo và sử dụng mô hình nhận diện cử chỉ tay để thực hiện việc nhận diện cử chỉ tay dùng để bật tắt các thiết bị điện. Mô hình sử dụng thư viện Mê-đi-a-pai (MediaPipe) và thư viện Kê-rát (keras).1 Thư viện mê-đi-a-pai (MediaPipe) Một thư viện do Google thực hiện nghiên cứu và phát triển.
MediaPipe là tập hợp của một loạt các giải pháp máy học (Machine Learning) đa nền tảng có một số ưu điểm: có thể triển khai trên di động, máy tính, đám mây, Web, thiết bị IoT, … mã nguồn mở và hoàn toàn miễn phí (người dùng có thể sử dụng và tùy chỉnh trực tiếp theo bài toán của mình). Google Mê-đi-a-pai hỗ trợ hầu như tất cả các lĩnh vực về Thị giác máy tính (Computer Vision). Một số giải pháp như: Nhận diện khuôn mặt (Face Dectection), Lưới mặt (Face Mesh), Nhận diện bàn tay (Hands Detection), Ước tính tư thế người (Human Pose Estimation), Phát hiện đối tượng (Object Detection), … và nhiều hơn thế nữa. Đề tài nhóm thực hiện sử dụng giải pháp Nhận diện bàn tay (Hands Detection) [1].
Nhận diện các điểm mốc tọa độ trên bàn tay: giải pháp này sẽ hỗ trợ mô hình nhận diện được lòng bàn tay đang xuất hiện trên khung hình đang thu thập hình ảnh, từ lòng bàn tay này giải pháp sẽ vẽ ra 21 điểm mốc trên lòng bàn tay có tọa độ tương ứng so với khung hình đang thu thập hình ảnh. 5 Hình 2-1 21 điểm mốc bàn tay từ mê-đi-a-pai. [1] Hình 2-1 cho biết 21 điểm mốc bàn tay của con người được thư viện mê-đi- a-pai nhận diện. Với mỗi điểm mốc sẽ có thư viện đọc về giá trị tọa độ x, y, z (x, y, z lần lượt là chiều dài, chiều rộng và chiều sâu) của điểm mốc ấy trên khung hình mà máy ảnh chụp hoặc quay được.
Với mỗi cử chỉ sẽ trả về một bộ tọa độ khác nhau nên rất thích hợp cho việc huấn luyện cho mạng học sâu. Hình 2-2 Điểm mốc bàn tay được sử dụng trong thiết kế. Hình 2-2 hình tay của thành viên trong nhóm khi sử dụng thư viện Mê-đi- a-pai trong quá trình tìm hiểu và tham khảo mô hình nhận diện cử chỉ tay.2 Thư viện Kê-rát (Keras) Kê-rát là một thư viện hỗ trợ cho việc huấn luyện mô hình học sâu (Deep Learning) [2]. Keras được biết đến là một thư viện hỗ trợ xây dựng mô hình đơn giản, dễ nắm bắt nhất so với các thư viện khác, không cần hiểu quá sâu về Mạng Nơ-ron ta cũng có thể thực hiện xây dựng một mô hình tương đối hoàn chỉnh.
Lý do nhóm tham khảo và chọn mô hình này để thực hiện việc nhận diện cử chỉ này cũng một phần do mô hình này sử dụng thư viện Kê-rát dễ tiếp cận cho nhóm vì thành viên của nhóm không chuyên về lĩnh vực Trí tuệ nhân tạo (AI). Hình 2-3 Thư viện Kê-rát.3 Huấn luyện mô hình nhận diện cử chỉ cho hệ thống Nhóm thực hiện sử dụng 2 thư viện chính để hỗ trợ cho việc huấn luyện mô hình: Mê-đi-a-pai hỗ trợ việc tìm kiếm các bàn tay trên khung hình và trả về các dữ liệu mốc bàn tay, từ dữ liệu mốc bàn tay đó nhóm lưu lại thành một tập dữ liệu lớn gồm các cử chỉ mà nhóm muốn mô hình nhận diện được từ đó sử dụng thư viện Kê-rát, sử dụng tập dữ liệu đó thực hiện việc huấn luyện tạo ra một mô hình hoàn chỉnh có thể nhận diện được cử chỉ. Quy trình để huấn luyện một mô hình sử dụng thư viện của Kê-rát, đây là một quy trình chung cho hầu hết các mô hình sử dụng thư viện Kê-rát để huấn luyện. Quá trình các bước cụ thể sẽ được trình bày sau đây.
7 Hình 2-4 Quy trình huấn luyện mô hình của thư viện Kê-rát.1 Tải tập dữ liệu Đầu tiên là quá trình tải tập dữ liệu đã được lưu trữ để huấn luyện mô hình. Bộ dữ liệu ở đây là tọa độ các điểm mốc bàn tay, với mỗi cử chỉ ta sẽ có một bộ gồm 21 điểm mốc tọa độ trên lòng bàn tay. Mỗi bộ trong 21 điểm mốc bàn tay đó sẽ có 2 tọa độ là tọa độ so với chiều rộng và tọa độ so với chiều cao trên khung hình mà camera thu được dữ liệu hình ảnh bàn tay. Ngoài 42 cột biểu thị cho tọa độ của 21 điểm mốc bàn tay thì ta còn có thêm 1 cột biểu thị cho nhãn của mô hình nhận diện cử chỉ.
Vậy ta có tổng 43 cột cho mỗi dữ liệu để huấn luyện mô hình. Bộ dữ liệu này sẽ được tải lên Pycharm và thực hiện việc chia thành tập huấn luyện và tập kiểm tra theo tỉ lệ 75% huấn luyện và 25% kiểm tra.2 Xây dựng mô hình Xây dựng mô hình là vẽ kiến trúc mạng để thực hiện việc huấn luyện mô hình. Mô hình trong đề tài của nhóm được tham khảo kiến trúc mạng mô hình một đề tài hand gesture recognition mediapipe của Nikita Kiselov được chia sẻ trên gitbub. Mô hình này được xây dựng gồm có 4 lớp: lớp đầu tiên có 42 nơ-ron lần lượt là 2 thông số tọa độ của 21 điểm mốc bàn tay trên khung hình phát hiện bày tay, lớp thứ 2 là lớp ẩn gồm 20 nơ-ron và lớp thứ 3 cũng là một lớp ẩn 10 nơ-ron, cuối cùng là lớp ngõ ra có 16 ngõ ra (vì hệ thống có tổng 16 cử chỉ và cho phép người dùng có thể tùy ý điều chỉnh để điều khiển thiết bị mong muốn).
Ở lớp ngõ ra mô hình sử dụng hàm trung bình mũ (softmax) để tính xác suất của vector, hàm này thường được dùng trong các bài toàn phân loại đa lớp. Trong đề tài này hàm Softmax chia 16 ngõ ra thành xác suất tổng là 1 và giá trị của ngõ ra từ (0,1]. Hình 2-5 Hàm trung bình mũ (Softmax).3 Biên dịch mô hình Quá trình biên dịch mô hình là quá trình thực hiện lựa chọn các thông số cho quá trình huấn luyện mô hình. Hàm thất thoát, mất mát (Loss) mô hình sử dụng thông số phân loại chéo thưa thớt (sparse categorical crossentropy), hàm tối ưu hóa (optimizer) sử dụng thông số ‘adam’, hàm đánh giá mô hình (metrics) sử dụng ‘accuracy’.4 Huấn luyện mô hình Quá trình huấn luyện mô hình khi sử dụng thư viện Kê-rát hết sức đơn giản, chỉ cần gọi hàm tạo mô hình huấn luyện (fit).
Mô hình có gần 70000 dữ liệu với 16 cử chỉ để huấn luyện nên nhóm thực hiện sử dụng số lượng mẫu mỗi lần cập nhật trọng số là 128 (Batch_size = 128). Vì dữ liệu quá nhiều nên nhóm phải chia 9 nhỏ dữ liệu thành nhiều phần nhỏ để cập nhật trọng số. Ngoài ra còn có thông số gọi lại (callbacks) để mỗi lần gặp lỗi ta có thể lưu lại mô hình để chạy cho lượt tiếp theo.5 Đánh giá mô hình Để đánh giá mô hình nhóm sử dụng ma trận lỗi (confusion matrix) để đo lượng, tính toán hiệu suất cho bài toán phân loại của mô hình. Một vài thông số để đánh giá mô hình: - Số đúng thực tế (condition positive: P) - Số sai thực tế (condition negative: N) - Số dự đoán đúng mà nó đúng (True positive: TP) - Số dự đoán sai mà nó đúng (True negative: TN) - Số dự đoán đúng mà nó sai (False positive: FP) - Số dự đoán sai mà nó sai (False negative: FN) Với các thuật ngữ này ta có: Bảng 2-1 Bảng các công thức đánh giá một mô hình.
[3] Công thức Tên Độ chính xác (Accuracy: Acc) Tỷ lệ dự đoán đúng mà nó đúng (True Positive Rate: TPR) Recall Precision F1 score 10 2.2 THƯ VIỆN THIẾT KẾ GIAO DIỆN: QT Qt là một thư viện đa nền tảng để tạo nên các giao diện đồ họa người dùng, chủ yếu với các cửa sổ. Qt được viết bằng C++ và được thiết kế để sử dụng C++. Tuy nhiên hiện nay chúng ta có thể sử dụng thư viện này với nhiều ngôn ngữ khác như Java hay Python, … vì xuyên suốt quá trình thực hiện tham khảo mô hình nhận diện cử chỉ tay là ngôn ngữ Python nên nhóm quyết định sử dụng thư viện Qt dùng ngôn ngữ Python hay còn được gọi với tên khác là PyQt5 [4] thiết kế giao diện với ngôn ngữ Python đơn giản dễ nắm bắt trong quá trình thực hiện đề tài thiết kế. Hình 2-6 Thư viện Qt.
[4] Hình 2-5 logo thư viện Qt mà nhóm dùng để thực hiện thiết kết giao diện. Ngoài ra thư viện Qt còn có hỗ trợ QtNetwork gọi các hàm làm máy chủ, nhóm sử dụng để làm máy chủ cho hệ thống từ đó liên kết với máy khách.3 MÔ HÌNH MẠNG TCP/IP Thời đại hiện đại hóa ngày nay, bất kỳ nhà nào cũng có mạng internet thế nên việc sử dụng mạng để tương tác giữa các thiết bị điều khiển là điều hết sức phổ biến. Trong một ngôi nhà có thể có nhiều tầng do đó nếu dùng kết nối UART có dây thì việc thiết lập cho hệ thống nếu nhiều tầng sẽ rất rườm ra. Việc sử dụng mạng để tương tác giữa khối xử lý nhận diện cử chỉ rồi điều khiển thiết bị từ xa 11 bằng mạng thì có thể giải quyết được hạn chế mà kết nối UART là dùng dây kết nối.
Tầng ứng dụng (Application): đề cập đến các chương trình cần TCP/IP để giúp các thiết bị giao tiếp với nhau.