GIỚI THIỆU
GIỚI THIỆU
Sự phát triển công nghiệp và hiện đại hóa đã mang lại nhiều thành tựu lớn, chủ yếu phục vụ cho con người Các hoạt động của con người ngày càng được máy móc thay thế, đặc biệt là trong việc sử dụng thiết bị điện như đèn, quạt, tủ lạnh, và tivi, cho thấy sự liên quan mật thiết giữa con người và điện Công nghệ thông tin đóng vai trò quan trọng trong việc kết nối con người với các thiết bị điện trong gia đình Nhóm nghiên cứu đã thiết kế hệ thống điều khiển thiết bị điện bằng nhận diện cử chỉ, khác với các phương pháp điều khiển từ xa thông qua điện thoại Hệ thống này cho phép người dùng bật/tắt thiết bị điện trong nhà chỉ bằng cách đưa tay trước thiết bị ghi hình Ngoài ra, người dùng còn có thể điều khiển trực tiếp thông qua giao diện hoặc sử dụng nút nhấn tương tác, mang lại sự tiện lợi và linh hoạt trong việc sử dụng thiết bị điện.
Khi hoàn thành đề tài, nhóm sẽ phát triển một giao diện người dùng thân thiện để điều khiển thiết bị, cùng với một hệ thống điều khiển thiết bị điện hiệu quả.
MỤC TIÊU ĐỀ TÀI
Hệ thống thiết kế cho phép điều khiển thiết bị điện bằng cử chỉ, đồng thời hỗ trợ điều khiển qua phím phần cứng hoặc giao diện trực tiếp Người dùng có thể tùy chỉnh bộ cử chỉ để điều khiển độc lập cho từng thiết bị, với các tùy chỉnh và thông tin điều khiển được hiển thị trên màn hình của Raspberry Pi 4.
- Nghiên cứu mô hình nhận diện cử chỉ
- Nghiên cứu viết giao diện điều khiển thiết bị tương tác với người dùng.
GIỚI HẠN ĐỀ TÀI
Đề tài “THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ ĐIỆN BẰNG
NHẬN DIỆN CỬ CHỈ” có giới hạn:
- Thiết kế hệ thống thiết bị điều khiển mô phỏng
- Điều khiển bật/tắt các thiết bị điện
- Sử dụng Raspberry Pi 4 và ESP32 làm 2 khối chính trong quá trình điều khiển
- Thiết kế chương trình sử dụng ESP32 và Raspberry Pi 4 trong việc gửi và nhận dữ liệu
- Vì thiết kế chỉ thực hiện trong môi trường có mạng nên khi lỗi mạng xảy ra thì toàn hệ thống thiết kế sẽ không thực thi được.
PHƯƠNG PHÁP NGHIÊN CỨU
Đề tài có các nội dung chính như sau:
- Tìm hiểu mô hình mạng nhận diện cử chỉ tay
- Nghiên cứu thư viện Qt5 và thiết kế giao diện điều khiển
- Thiết kế, thi công các thiết bị mô phỏng và hệ thống điều khiển h
- Viết chương trình cho Raspberry Pi 4, ESP32 giao tiếp với nhau
- Lắp ráp hệ thống kiểm tra chức năng điều khiển và thử nghiệm
- Đánh giá kết quả thực hiện
- Viết báo cáo luận văn
- Báo cáo đề tài tốt nghiệp.
ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Nội dung bài viết này tập trung vào việc tìm hiểu và tham khảo mô hình học sâu (Deep Learning) trong việc nhận diện cử chỉ của con người Phạm vi nghiên cứu bao gồm việc khám phá một số lý thuyết cơ bản liên quan đến lĩnh vực này cũng như tham khảo các mô hình đã có sẵn để áp dụng vào thực tiễn.
Tìm hiểu Qt5 Python để phát triển giao diện người dùng tương tác là một chủ đề quan trọng Bài viết này sẽ khám phá thiết kế giao diện với các chức năng cơ bản, nhằm nâng cao trải nghiệm người dùng trong các ứng dụng.
- Nội dung 3: tìm hiểu về Raspberry Pi 4 Hiệu năng, công suất, khả năng tương thích với mô hình sử dụng ngôn ngữ Python
- Nội dung 4: tìm hiểu về vi điều khiển ESP32 và ngôn ngữ dùng để lập trình cho vi điều khiển này ngôn ngữ lập trình C
- Nội dung 5: tìm hiểu về giao thức TCP/IP Giao thức này dùng để kết nối giữa khối điều khiển và khối xử lý (ESP32 và Raspberry Pi 4).
BỐ CỤC QUYỂN BÁO CÁO
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 h
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 h
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU MÔ HÌNH NHẬN DIỆN CỬ CHỈ
Nhóm thực hiện nghiên cứu và ứng dụng mô hình nhận diện cử chỉ tay nhằm điều khiển bật tắt các thiết bị điện Mô hình này được phát triển dựa trên thư viện MediaPipe và thư viện Keras, giúp nâng cao khả năng nhận diện chính xác các cử chỉ tay.
2.1.1 Thư viện mê-đi-a-pai (MediaPipe)
MediaPipe là một thư viện do Google phát triển, chuyên nghiên cứu và phát triển các giải pháp máy học đa nền tảng Thư viện này có nhiều ưu điểm, bao gồm khả năng triển khai trên các thiết bị di động, máy tính, đám mây, web và 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 cung cấp hỗ trợ cho hầu hết các lĩnh vực trong Thị giác máy tính, bao gồm các giải pháp như Nhận diện khuôn mặt, Lưới mặt, Nhận diện bàn tay, Ước tính tư thế người và Phát hiện đối tượng Nhóm thực hiện đề tài này tập trung vào giải pháp Nhận diện bàn tay.
Giải pháp nhận diện các điểm mốc tọa độ trên bàn tay giúp mô hình xác định vị trí lòng bàn tay trong khung hình thu thập hình ảnh Từ lòng bàn tay này, hệ thống sẽ vẽ ra 21 điểm mốc với tọa độ tương ứng, hỗ trợ quá trình nhận diện chính xác hơn.
Hình 2-1 hiển thị 21 điểm mốc bàn tay của con người được nhận diện bởi thư viện mê-đi-a-pai Mỗi điểm mốc cung cấp giá trị tọa độ x, y, z, tương ứng với chiều dài, chiều rộng và chiều sâu trên khung hình do máy ảnh ghi lại Mỗi cử chỉ sẽ tạo ra một bộ tọa độ khác nhau, điều này rất phù hợp cho việc huấn luyện 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ế.
Trong quá trình tìm hiểu và tham khảo mô hình nhận diện cử chỉ tay, các thành viên trong nhóm đã sử dụng thư viện Mê-đi-a-pai, như thể hiện trong hình 2-2.
Hình 2-1 21 điểm mốc bàn tay từ mê-đi-a-pai [1] h
2.1.2 Thư viện Kê-rát (Keras)
Kê-rát là một thư viện hỗ trợ huấn luyện mô hình học sâu, nổi bật với khả năng xây dựng mô hình đơn giản và dễ hiểu Thư viện này cho phép người dùng, ngay cả khi không có kiến thức sâu về Mạng Nơ-ron, vẫn có thể tạo ra các mô hình hoàn chỉnh Nhóm nghiên cứu đã chọn Kê-rát để thực hiện nhận diện cử chỉ vì tính dễ tiếp cận của nó, phù hợp với các thành viên không chuyên về trí tuệ nhân tạo.
Hình 2-3 Thư viện Kê-rát [2]
2.1.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 hai thư viện chính để huấn luyện mô hình nhận diện cử chỉ Thư viện Mê-đi-a-pai hỗ trợ tìm kiếm các bàn tay trong khung hình và cung cấp dữ liệu mốc bàn tay Từ những dữ liệu này, nhóm đã tạo ra một tập dữ liệu lớn chứa các cử chỉ mong muốn Sau đó, nhóm sử dụng thư viện Kê-rát để huấn luyện và phát triển một mô hình hoàn chỉnh có khả năng nhận diện cử chỉ.
Quy trình huấn luyện mô hình với thư viện Kê-rát là một quy trình chung áp dụng cho hầu hết các mô hình Bài viết này sẽ trình bày chi tiết các bước cụ thể trong quá trình này.
Hình 2-4 Quy trình huấn luyện mô hình của thư viện Kê-rát [2]
2.1.3.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ó
Bài viết mô tả về dữ liệu hình ảnh bàn tay được thu thập từ camera, bao gồm 2 tọa độ cho chiều rộng và chiều cao Dữ liệu này có 42 cột thể hiện tọa độ của 21 điểm mốc bàn tay và 1 cột cho nhãn mô hình nhận diện cử chỉ, tổng cộng là 43 cột cho mỗi mẫu dữ liệu Bộ dữ liệu sẽ được tải lên Pycharm và chia thành tập huấn luyện (75%) và tập kiểm tra (25%) để huấn luyện 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
Nhóm nghiên cứu đã tham khảo kiến trúc mạng mô hình nhận diện cử chỉ tay Mediapipe của Nikita Kiselov, được chia sẻ trên GitHub, để xây dựng mô hình cho đề tài của mình.
Mô hình được xây dựng với 4 lớp: lớp đầu tiên có 42 nơ-ron tương ứng với 2 thông số tọa độ của 21 điểm mốc bàn tay; lớp thứ hai là lớp ẩn gồm 20 nơ-ron; lớp thứ ba cũng là lớp ẩn với 10 nơ-ron; và lớp cuối cùng là lớp ngõ ra với 16 ngõ ra, cho phép người dùng điều chỉnh để kiểm soát thiết bị mong muốn Ở lớp ngõ ra, hàm trung bình mũ (softmax) được sử dụng để tính xác suất của vector, thường áp dụng trong các bài toán phân loại đa lớp Hàm Softmax trong đề tài này phân chia 16 ngõ ra thành xác suất tổng bằng 1, với giá trị ngõ ra nằm trong khoảng (0,1].
Hình 2-5 Hàm trung bình mũ (Softmax) [3]
Quá trình biên dịch mô hình bao gồm việc lựa chọn các thông số cho quá trình huấn luyện Hàm thất thoát (Loss) được sử dụng là phân loại chéo thưa thớt (sparse categorical crossentropy), trong khi hàm tối ưu hóa (optimizer) sử dụng thông số 'adam' Để đánh giá mô hình, các chỉ số (metrics) cũng được áp dụng trong quá trình này.
Quá trình huấn luyện mô hình với thư viện Kê-rát rất đơn giản, chỉ cần sử dụng hàm fit để tạo mô hình huấn luyện Mô hình này được xây dựng dựa trên gần 70.000 dữ liệu.
THƯ VIỆN THIẾT KẾ GIAO DIỆN: QT
Qt là thư viện đa nền tảng chuyên dụng cho việc phát triển giao diện đồ họa người dùng, chủ yếu thông qua các cửa sổ Được viết bằng ngôn ngữ C++, Qt hiện nay còn hỗ trợ nhiều ngôn ngữ lập trình khác như Java và Python Do quá trình thực hiện mô hình nhận diện cử chỉ tay sử dụng ngôn ngữ Python, nhóm đã quyết định áp dụng thư viện Qt trong dự án của mình.
Qt sử dụng ngôn ngữ Python, thường được biết đến với tên gọi PyQt5, để thiết kế giao diện Việc áp dụng Python trong quá trình thực hiện đề tài thiết kế mang lại sự đơn giản và dễ nắm bắt cho người dùng.
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
Thư viện Qt cung cấp hỗ trợ QtNetwork, cho phép gọi các hàm để thiết lập máy chủ, từ đó tạo kết nối với máy khách trong hệ thống.
MÔ HÌNH MẠNG TCP/IP
Trong thời đại hiện đại hóa hiện nay, việc sử dụng mạng internet trong các ngôi nhà đã trở nên phổ biến, giúp tương tác giữa các thiết bị điều khiển dễ dàng hơn Với những ngôi nhà nhiều tầng, việc thiết lập hệ thống kết nối UART có dây sẽ rất phức tạp Do đó, việc áp dụng mạng để tương tác giữa khối xử lý nhận diện cử chỉ và điều khiển thiết bị từ xa là một giải pháp hiệu quả.
12 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
Tầng giao vận (Transport): chịu trách nhiệm cung cấp kết nối dữ liệu vững chắc và đáng tin cậy giữa ứng dụng hoặc thiết bị gốc
Tầng mạng (Network): chịu trách nhiệm gửi các gói mạng và kiểm soát chuyển động của các thiết bị trên trên một mạng để đảm bảo chúng đến đích
Tầng vật lý (Physical): chịu trách nhiệm truyền dữ liệu giữa hai thiết bị trong cùng một mạng h
THIẾT KẾ HỆ THỐNG
GIỚI THIỆU
Hệ thống điều khiển thiết bị bằng cử chỉ được thiết kế với mô hình nhận diện cử chỉ tay, từ đó phát triển phần cứng để điều khiển thiết bị Thiết kế bao gồm hai khối chính: khối đầu tiên sử dụng Raspberry Pi 4 để khởi chạy mô hình nhận diện, trong khi khối thứ hai là vi điều khiển ESP32, thực hiện điều khiển thiết bị qua rơ-le Vi điều khiển ESP32 cũng hỗ trợ kết nối Wifi, giúp mở rộng hệ thống dễ dàng hơn so với kết nối UART có dây truyền thống.
Một số chức năng chính:
- Có thể điều khiển thiết bị bằng cử chỉ tay
- Có thể điều khiển các thiết bị của người dùng bằng cách sử dụng giao diện một cách trực tiếp trên màn hình hiển thị giao diện
- Có thể trực tiếp dùng nút nhấn phần cứng để điều khiển các thiết bị
- Có thể vô hiệu hóa chế độ điều khiển thiết bị bằng cử chỉ thông qua nút nhấn phần cứng.
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG PHẦN CỨNG
3.2.1 Chức năng của phần cứng
Hệ thống nhận diện cử chỉ được thiết kế để điều khiển thiết bị điện trong nhà, yêu cầu phần cứng có khả năng điều khiển các thiết bị này Phần cứng cần có hiệu năng đủ mạnh để thu thập hình ảnh và xử lý mô hình nhận diện cử chỉ, từ đó thực hiện việc điều khiển thiết bị bằng các cử chỉ.
14 ra phần cứng của hệ thống còn có thể thực hiện việc bật tắt chủ động thông qua nút nhấn
3.2.2 Thiết kế sơ đồ khối hệ thống
Phần này nhóm thực hiện thiết kế sơ đồ khối phần cứng cho toàn hệ thống và đi vào chi tiết việc thiết kế từng khối
Hình 3-1 Sơ đồ chi tiết các khối phần cứng của toàn hệ thống
Hình 3-2 Sơ đồ nguyên lý phần cứng toàn hệ thống
Khái quát về nhiệm vụ của 2 khối chính: h
Khối xử lý (máy chủ) có vai trò quan trọng trong việc thu thập dữ liệu từ khối thu thập hình ảnh Nó áp dụng mô hình nhận diện cử chỉ để xử lý dữ liệu hình ảnh và gửi dữ liệu điều khiển đến các khối xử lý tiếp theo.
(máy khách) thông qua giao thức TCP/IP
Khối xử lý (máy khách) nhận dữ liệu từ khối điều khiển (máy chủ) qua giao thức TCP/IP Dựa vào dữ liệu này, khối thực hiện phân tích và điều khiển các thiết bị thông qua khối ngõ ra công suất.
Các khối còn lại của 2 khối chính sẽ được nói chi tiết ở phần thiết kế từng khối chính
3.2.2.1 Thiết kế khối xử lý (máy chủ)
Khối xử lý (máy chủ) thực hiện 2 nhiệm vụ chính trong hệ thống:
Nhận dữ liệu hình ảnh từ khối thu thập hình ảnh để nhận diện cử chỉ, sau đó gửi tín hiệu điều khiển tới khối điều khiển thông qua khối liên lạc.
Giao diện người dùng được thiết kế để hiển thị thông tin từ khối hiển thị, cho phép người dùng kiểm soát tình trạng thiết bị Người dùng có thể bật tắt thiết bị trực tiếp trên giao diện và tùy chỉnh các cử chỉ để điều khiển thiết bị Dữ liệu điều khiển sẽ được gửi đến khối xử lý (máy khách) để thực hiện các chức năng mong muốn.
Nhóm thiết kế các khối để hỗ trợ cho 2 nhiệm vụ trên của khối xử lý: h
Hình 3-3 Sơ đồ khối của khối xử lý (máy chủ) và các khối liên quan
Khối nguồn cung cấp điện áp DC 5V với dòng điện 3A cho khối xử lý (máy chủ), đảm bảo hoạt động ổn định và thực hiện các nhiệm vụ cần thiết.
Khối thu thập hình ảnh bao gồm camera ngoại vi hoạt động liên tục, nhận diện hình ảnh cử chỉ từ người dùng Sau đó, nó gửi dữ liệu này đến khối xử lý để phân tích và nhận diện, từ đó truyền tín hiệu điều khiển qua giao thức TCP/IP tới khối xử lý (khách).
Khối hiển thị và điều khiển phần mềm là một giao diện màn hình với hai chức năng chính: đầu tiên, nó cho phép người dùng điều khiển thiết bị bật/tắt trực tiếp trên giao diện; thứ hai, nó cung cấp khả năng tùy chỉnh cử chỉ điều khiển cho từng thiết bị riêng biệt.
Chi tiết thông số kỹ thuật từng khối:
- Khối thu thập hình ảnh: nhóm sử dụng Webcam Logitech C270 HD để làm khối thu thập hình ảnh Nhờ có độ phân giải cao 720p/30fps giúp cho việc h
Việc thu thập hình ảnh rõ nét với 30fps (30 khung hình trên giây) không chỉ nâng cao khả năng nhận diện mà còn đảm bảo việc đọc hình ảnh liên tục, giảm thiểu tình trạng mất khung hình.
Khối hiển thị và điều khiển bao gồm màn hình Waveshare 7-inch HDMI Capacitive Touch Screen LCD với độ phân giải 1024x600, giúp người sử dụng dễ dàng quan sát giao diện điều khiển Màn hình tích hợp cảm ứng cho phép thao tác trực tiếp, loại bỏ sự cần thiết của chuột và bàn phím ngoại vi, mang lại trải nghiệm sử dụng thuận tiện hơn Ngoài ra, màn hình còn tương thích tốt với hệ điều hành Raspbian thông qua kết nối HDMI và hỗ trợ cảm ứng.
Hình 3-5 màn hình 7-inch HDMI [5] h
Trong nghiên cứu về ứng dụng mô hình nhận diện cử chỉ tay, nhóm đã sử dụng Raspberry Pi 4 Model B làm thiết bị xử lý chính.
Máy tính nhúng sử dụng bộ xử lý Cortex A72 với CPU 1.5 GHz và RAM 4GB giúp nâng cao tốc độ và độ chính xác trong việc nhận diện Hỗ trợ Wifi chuẩn 2.4GHz tương thích với vi điều khiển ESP32, đảm bảo truyền nhận dữ liệu ổn định Raspberry Pi 4 cung cấp 4 cổng USB cho các kết nối ngoại vi như chuột, bàn phím và thiết bị ghi hình, cùng với 2 cổng xuất màn hình Micro HDMI cho độ phân giải cao Để tối ưu hóa tốc độ đọc ghi và xử lý dữ liệu, nhóm đã sử dụng ổ cứng SSD để lưu trữ hệ điều hành Raspbian và các dữ liệu liên quan.
Trong hệ thống nhóm sử dụng những cổng giao tiếp của Raspberry
Hình 3-7 Sơ đồ nguyên lý các kết nối của khối máy chủ
- Cổng USB: Kit Raspberry Pi 4 Model B có 4 cổng USB (Universal Serial
Bài viết đề cập đến việc sử dụng một thiết bị với 2 cổng USB 2.0 và 2 cổng USB 3.0 Nhóm đã kết nối một cổng USB 2.0 với màn hình để người dùng điều khiển giao diện, trong khi một cổng USB 3.0 được sử dụng để kết nối với ổ cứng ngoài.
(Intel SSD Pro 1 500 series 180GB) để cấp hệ điều hành Raspbian cho Kit
Raspberry là thiết bị lưu trữ toàn bộ dữ liệu của hệ thống, trong khi cổng USB 3.0 còn lại được sử dụng để đọc dữ liệu từ khối thu thập dữ liệu, cụ thể là camera C270 HD.
- Cổng HDMI: Kit Raspberry Pi 4 Model B có 2 cổng HDMI (High- h
Definition Multimedia Interface), nhóm chỉ sử dụng một cổng để xuất ra màn hình để hiển thị giao diện điều khiển trực tiếp từ người dùng
3.2.2.2 Thiết kế chi tiết khối xử lý (máy khách)
Khối xử lý (máy khách) nhận dữ liệu điều khiển từ khối xử lý trung tâm (máy chủ) qua socket và thực hiện bật tắt thiết bị theo yêu cầu Ngoài ra, khối xử lý (máy khách) còn cho phép điều khiển trực tiếp thông qua nút nhấn, đồng thời gửi tín hiệu điều khiển trở lại khối xử lý trung tâm qua socket.
Nhóm thực hiện sử dụng ESP32 làm khối xử lý (máy khách)
Hình 3-8 Hình Sơ đồ chân ESP32 DEVKIT V1 – DOIT [6]
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG PHẦN MỀM
Trong hệ thống đề tài này, việc điều khiển thiết bị chủ yếu phụ thuộc vào hoạt động của phần mềm, bao gồm nhận diện cử chỉ và điều khiển qua giao diện điều khiển.
Hình 3-13 Sơ đồ quy trình hoạt động và điều khiển chung của toàn hệ thống
Khi khởi động hệ thống, ba chương trình con sẽ được khởi chạy đồng thời: nhận diện cử chỉ, giao diện và máy khách Mỗi chương trình con sẽ được trình bày chi tiết trong từng phần thiết kế của chương này Hệ thống cung cấp ba phương thức điều khiển thiết bị chính: điều khiển bằng nhận diện cử chỉ, điều khiển qua nút nhấn trên giao diện, và điều khiển trực tiếp bằng nút nhấn phần cứng của máy khách.
Cơ sở dữ liệu điều khiển trong lưu đồ hoạt động toàn hệ thống được lưu trữ dưới định dạng CSV, tương tự như Excel Nhóm thực hiện sử dụng tập dữ liệu này làm cơ sở dữ liệu cho các chương trình con, cho phép chúng tham chiếu và thay đổi giá trị điều khiển khi có tín hiệu Đồng thời, dữ liệu cũng được gửi đến máy khách để thực hiện điều khiển thiết bị.
Dựa trên lưu đồ, các thiết bị được điều khiển bởi máy khách, cụ thể là vi điều khiển ESP32, nhận tín hiệu điều khiển trực tiếp từ giao diện Bài viết sẽ trình bày thiết kế chi tiết cho phần mềm của hệ thống.
3.3.1 Thiết kế nhận diện cử chỉ cho hệ thống
Mô hình nhận diện cử chỉ bàn tay của con người được phát triển bằng ngôn ngữ Python và chạy trên Raspberry Pi 4 Hiện tại, Google, một gã khổng lồ trong lĩnh vực công nghệ, đang xây dựng một hệ sinh thái các thư viện hỗ trợ nhận diện cơ thể, khuôn mặt và dáng đi Nhóm thực hiện đã ứng dụng thư viện nhận diện cử chỉ bàn tay trong dự án của mình.
Mô hình phải đáp ứng các yêu cầu sau:
- Nhận diện nhanh chóng và chính xác, tránh tình trạng trùng lặp các cử chỉ
- Các cử chỉ phù hợp, dễ nhớ và dễ thực hiện h
Hình 3-14 Lưu đồ chương trình nhận diện cử chỉ
Sau khi hệ thống khởi động, hàm nhận diện cử chỉ tay được khởi chạy đầu tiên để điều khiển thiết bị Hàm này thực hiện việc nhận diện cử chỉ tay và từ đó thay đổi cơ sở dữ liệu điều khiển Ngay khi hàm nhận diện được chạy, nó sẽ đọc tín hiệu cho phép nhận diện trong cơ sở dữ liệu điều khiển Tín hiệu này được máy khách gửi đến máy chủ, và máy chủ ghi lên cơ sở dữ liệu, chỉ khi nào máy khách cho phép.
Khi nhận diện bằng cử chỉ, dữ liệu trên cơ sở dữ liệu sẽ được cập nhật và hàm nhận diện sẽ cho phép thực hiện việc nhận diện cử chỉ để điều khiển thiết bị Sau khi được cấp quyền, camera sẽ mở để thu thập hình ảnh nhận diện ngay lập tức Thư viện MediaPipe sẽ hỗ trợ nhận diện bàn tay trong khung hình, cung cấp các điểm mốc trên bàn tay Các điểm này sẽ được chuẩn hóa về dạng chuẩn (-1,1) để phục vụ cho việc huấn luyện mô hình nhận diện cử chỉ tay bằng thư viện Keras.
Hình 3-15 Các bước chuẩn hóa dữ liệu
Để bắt đầu, dữ liệu đầu vào được định dạng dưới dạng mảng 2 chiều, trong đó x và y đại diện cho chiều dài và chiều rộng của 21 điểm mốc trên bàn tay Dữ liệu này sau đó sẽ được nhân với chiều rộng và chiều cao của khung hình ảnh để tiến hành các bước tiếp theo.
Để tạo ra bộ dữ liệu mốc bàn tay, bước đầu tiên là xác định tọa độ các điểm mốc trên khung hình 1280x720 Sau đó, ta thực hiện phép trừ tọa độ của điểm mốc ID: 0 (cổ tay) cho các điểm mốc còn lại, nhằm thiết lập cổ tay làm điểm chuẩn cho dữ liệu bàn tay.
- Bước 3: Chuyển mảng 2 chiều thành 1 chiều để dễ trong việc lưu trữ và huấn luyện dữ liệu sau này
- Bước 4: Chuẩn hóa dữ liệu về (-1,1)
Khi kiểm tra phím nhấn từ bàn phím, nếu có phím nhấn nào được kích hoạt, cử chỉ hiện tại trên khung hình camera sẽ được chụp lại dưới dạng 21 bộ điểm mốc đã được chuẩn hóa và lưu trữ trong định dạng CSV để phục vụ cho mô hình huấn luyện Keras Sau đó, cử chỉ này sẽ được nhận diện thông qua một mô hình đã được huấn luyện trước Nhóm thực hiện sẽ trình bày chi tiết về quá trình huấn luyện mô hình sau khi giải thích hoạt động của lưu đồ hàm nhận diện Nếu cử chỉ được nhận diện có chức năng điều khiển thiết bị, dữ liệu điều khiển sẽ được cập nhật vào cơ sở dữ liệu điều khiển.
Quy trình huấn luyện mô hình nhận diện cử chỉ sử dụng thư viện Kê-rát, bao gồm các bước cơ bản để xây dựng và tối ưu hóa mô hình Các bước này bao gồm chuẩn bị dữ liệu, xây dựng kiến trúc mô hình, huấn luyện mô hình với dữ liệu đã chuẩn bị và cuối cùng là đánh giá hiệu suất của mô hình Việc áp dụng quy trình này giúp cải thiện độ chính xác và khả năng nhận diện cử chỉ trong hệ thống.
Hình 3-16 Quy trình huấn luyện mô hình của thư viện Kê-rát [2]
Dữ liệu được thu thập thông qua việc nhấn nút trên bàn phím, từ đó nhóm nghiên cứu tiến hành trích xuất các cử chỉ Sau đó, họ thực hiện huấn luyện và đánh giá mô hình dựa trên dữ liệu đã được xử lý.
Mô hình mạng nơ-ron trong quá trình huấn luyện mô hình nhận diện được tham khảo từ đề tài nhận diện cử chỉ tay Mediapipe của Nikita Kiselov, được chia sẻ trên GitHub.
Mô hình được xây dựng với 4 lớp: lớp đầu tiên gồm 42 nơ-ron đại diện cho 2 tọa độ của 21 điểm mốc trên bàn tay; lớp thứ hai là lớp ẩn với 20 nơ-ron; lớp thứ ba cũng là một lớp ẩn với 10 nơ-ron; và lớp ngõ ra có 16 cử chỉ, cho phép người dùng tùy chỉnh để điều khiển thiết bị Lớp ngõ ra sử dụng hàm Softmax để tính xác suất cho vector, chia 16 ngõ ra thành xác suất tổng là 1, với giá trị ngõ ra nằm trong khoảng (0,1].
Hình 3-17 Ma trận lỗi (confusion matrix) [3]
Ma trận lỗi cho mô hình nhận diện cử chỉ mà nhóm đã thực hiện huấn luyện
Có tất cả 16 cử chỉ h
Hình 3-18 Báo cáo phân loại [3]
Hình 3-19 Bộ 8 cử chỉ dùng để điều khiển thiết bị (mã từ 1 đến 8) h
Hình 3-20 Bộ 8 cử chỉ dùng để điều khiển thiết bị (mã từ 9 đến 16)
Bộ cử chỉ điều khiển thiết bị bao gồm 16 cử chỉ tương ứng với 16 ngõ ra của mô hình nhận diện mà nhóm nghiên cứu Những cử chỉ này được lựa chọn dựa trên các tiêu chí như tính đơn giản, dễ thực hiện và tỷ lệ trùng lặp giữa các cử chỉ thấp.
KẾT QUẢ
KẾT QUẢ THỰC HIỆN MÔ HÌNH
Kết quả mô hình nhận diện cử chỉ
Hình 4-1 Mô hình nhận diện cử chỉ chạy trên phần cứng laptop
Phần cứng của laptop rất mạnh mẽ, hỗ trợ tốt cho các mô hình nhận diện Nhờ đó, laptop có thể đạt tốc độ hoạt động nhanh với khoảng 28 đến 32 khung hình mỗi giây.
Hình 4-2 Mô hình nhận diện cử chỉ chạy trên phần cứng Raspberry Pi 4
Mô hình nhận diện cử chỉ trên phần cứng Raspberry Pi 4 gặp phải sự giảm sút đáng kể về hiệu suất, cụ thể là số khung hình trên giây giảm gần 3 lần so với khi chạy trên laptop Trên Raspberry Pi 4, số khung hình trên giây dao động chỉ từ 8 đến một mức thấp hơn, ảnh hưởng đến khả năng xử lý và phản hồi của hệ thống.
Số khung hình trên dây đạt 12 là lý tưởng cho mô hình học sâu trên máy tính nhúng Raspberry Mặc dù tốc độ không nhanh bằng phần cứng laptop, nhưng với 8 đến 12 khung hình mỗi giây, hệ thống vẫn đủ khả năng nhận diện và điều khiển thiết bị hiệu quả.
Hệ thống phần cứng đã hoàn thiện thiết kế với hai hộp mica: một hộp chứa mạch thiết bị và khối điều khiển máy khách, trong khi hộp còn lại là khối điều khiển máy chủ, bao gồm màn hình hiển thị giao diện tương tác và thiết bị ghi hình để nhận diện hình ảnh.
Hình 4-3 Phần cứng khối điều khiển máy khách mặt trên
Nhóm thực hiện hàn mạch trên tấm PCB và hoàn thành thiết kế mạch cho khối điều khiển phần cứng Sau đó, nhóm tiến hành cắt hộp Mica để lắp ráp thành hệ khối phần cứng hoàn chỉnh.
Hình 4-4 Khối điều khiển máy khách khi được lắp vào hộp Mica h
Hình 4-5 Khối điều khiển máy chủ khi được lắp vào hộp Mica
Hình 4-6 Hệ thống hoàn thiệt khối điều khiển máy chủ và máy khách h
Hệ thống điều khiển cho phép bật thiết bị 2 và 4, trong khi tắt thiết bị 1 và 3 Đèn thứ 2 và thứ 4 trên khối điều khiển máy khách sáng, đồng bộ với thiết bị 2 và 4 trên giao diện đang hoạt động.
Hình 4-8 Hệ thống điều khiển tắt 4 thiết bị
Tất cả đèn trên khối điều khiển được tắt và trên giao diện hiển thị các thiết bị cũng được tắt h
Hình 4-9 Hệ thông điều khiển bật 4 thiết bị
Tất cả 4 thiết bị điều khiển được bật và trên giao diện cũng đang hiển thị 4 thiết bị đó được bật
Bảng tỉ lệ điều khiển thiết bị trong điều kiện ánh sáng môi trường và khoảng cách từ người điều khiển tới thiết bị ghi nhận hình ảnh
Bảng 4-1 Tỉ lệ nhận diện theo điều kiện ánh sáng và khoảng cách
Mô hình nhận diện có khả năng hoạt động hiệu quả trong khoảng cách từ 1m đến 3m với đủ ánh sáng, nhưng tỉ lệ nhận diện thành công sẽ giảm đáng kể trong môi trường thiếu sáng Khi khoảng cách vượt quá 4m, thiết bị thu hình ảnh không đủ độ phân giải để nhận diện bàn tay của người dùng, đánh dấu giới hạn hiện tại của mô hình trong nghiên cứu này.
Bảng tỉ lệ nhận diện của các cử chỉ trong điều kiện đầy đủ ánh sáng
Khoảng cách điều khiển Đủ ánh sáng (6 giờ đến
Thiếu ánh sáng (16 giờ đến 5 giờ)
Bảng 4-2 Tỉ lệ nhận diện cho từng cử chỉ điều khiển trong điều kiện lý tưởng
Cử chỉ Đủ ánh sáng và khoảng cách 3m
Trong điều kiện ánh sáng đầy đủ, tỷ lệ nhận diện và điều khiển thiết bị đạt độ chính xác cao Tuy nhiên, một số cử chỉ vẫn có độ chính xác bị trùng lặp với các cử chỉ khác Khi ở khoảng cách từ 2m đến 3m, mô hình nhận diện cử chỉ trở nên nhạy cảm, dẫn đến khả năng người dùng nhầm lẫn giữa các cử chỉ.
ĐÁNH GIÁ MÔ HÌNH
Hệ thống phần cứng được thiết kế hoàn chỉnh, không chỉ đáp ứng tiêu chí thẩm mỹ mà còn đảm bảo hiệu suất điều khiển tối ưu Các hoạt động trong hệ thống được thực hiện một cách mượt mà, mang lại trải nghiệm người dùng tốt nhất.
48 điều khiển bằng nút nhấn và điều khiển bằng giao diện người dùng trên màn hình cảm ứng đáp ứng được an toàn thiết bị điện
Phần mềm này được thiết kế thân thiện với người dùng, phù hợp cho mọi đối tượng Tương tác giữa máy khách và máy chủ diễn ra nhanh chóng và chính xác, giúp tín hiệu điều khiển được trả về với tốc độ trễ rất thấp.
Mô hình nhận diện cử chỉ gặp hạn chế khi người dùng thực hiện các cử chỉ không nằm trong bộ 16 cử chỉ đã được huấn luyện Trong trường hợp này, cử chỉ không quen thuộc sẽ được nhận diện trùng với cử chỉ gần giống nhất trong bộ 16 cử chỉ đã được xác định.
4.2.3 Đánh giá hoạt động tổng quan
Mô hình nhận diện hoạt động hiệu quả trong điều kiện lý tưởng, với tốc độ phản hồi và độ chính xác cao Tuy nhiên, trong môi trường ánh sáng hạn chế hoặc khi khoảng cách cử chỉ quá xa khung hình, độ nhận diện của mô hình giảm đáng kể.