THÀNH PHỐ HỒ CHÍ MINHBỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT ĐỒ ÁN TỐT NGHIỆP NGÀNH HỆ THỐNG NHÚNG VÀ IOT XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ TRONG NHÀ BẰNG NHẬN DIỆ
TỔNG QUAN
GIỚI THIỆU
Trong thời đại công nghệ phát triển nhanh chóng, trí tuệ nhân tạo đã phát triển vượt bậc, làm thay đổi nhiều khía cạnh trong đời sống và sinh hoạt của con người, từ đó tương tác giữa con người và máy tính đã trở thành một lĩnh vực nghiên cứu đầy tiềm năng Một trong những ứng dụng nổi bật của sự tiến bộ này là khái niệm "nhà thông minh" Nhà thông minh không chỉ đơn thuần là tự động hóa các thiết bị điện tử mà còn tích hợp các hệ thống nhận diện và điều khiển tiên tiến như giọng nói, cử chỉ và thậm chí là biểu cảm khuôn mặt, mang lại những trải nghiệm hoàn toàn mới cho người dùng
Nhà thông minh, hay "smart home", là một hệ thống các thiết bị kết nối với nhau qua internet, cho phép người dùng điều khiển và giám sát từ xa thông qua điện thoại di động hoặc máy tính bảng Hệ thống này bao gồm các thiết bị như đèn chiếu sáng, điều hòa nhiệt độ, hệ thống an ninh, thiết bị nhà bếp, và nhiều thiết bị khác Những tiện ích mà nhà thông minh mang lại không chỉ dừng ở việc tối ưu hóa năng lượng và tiết kiệm chi phí, mà còn góp phần nâng cao chất lượng cuộc sống, đem đến sự thoải mái và tiện nghi cho người sử dụng
Một trong những phương pháp điều khiển các thiết bị trong nhà thông minh đang nhận được sự quan tâm lớn từ cộng đồng nghiên cứu và người dùng cuối là điều khiển bằng cử chỉ tay So với các phương pháp truyền thống như nút bấm hoặc điều khiển từ xa, việc điều khiển bằng cử chỉ tay mang lại sự trực quan và tự nhiên hơn, đồng thời tạo ra trải nghiệm người dùng thân thiện hơn Đặc biệt, đối với người cao tuổi hoặc người khuyết tật, phương pháp này cung cấp một cách tương tác dễ dàng và tiện lợi hơn, giúp họ thực hiện các thao tác mà không cần tiếp xúc vật lý với thiết bị Hiện nay, các hệ thống điều khiển bằng cử chỉ tay đã đạt được những thành tựu đáng kể Tuy nhiên, vẫn còn nhiều thách thức cần được vượt qua để đảm bảo tính chính xác và đáng tin cậy của hệ thống Một trong số đó là khả năng nhận diện và phân loại chính xác các cử chỉ tay khác nhau trong môi trường đa dạng và điều kiện ánh sáng thay đổi Ví dụ, một cử chỉ tay như "xin chào" có thể có nhiều ý nghĩa khác nhau tùy thuộc vào ngữ cảnh và mục đích sử dụng Điều này đòi hỏi sự nhất quán và đáng tin cậy trong việc nhận diện cử chỉ tay Hơn nữa, việc để rút trích đặc trưng và giải mã cử chỉ tay đòi hỏi sự chính xác và tốc độ cao để đảm bảo phản hồi thời gian thực của hệ thống điều khiển thiết bị
Ngoài ra, để tích hợp nhận diện cử chỉ tay vào các thiết bị điện tử, ta phải đối mặt với yêu cầu về hiệu suất tính toán cao và tương thích với các nền tảng phần cứng khác nhau Điều này đặt ra nhu cầu tối ưu hóa và cải tiến các thuật toán, cũng như khả năng tích hợp và triển khai hệ thống trên các nền tảng nhúng và di động Hiệu suất tính toán là một yếu tố quan trọng, đặc biệt khi cần xử lí ảnh gốc với độ phân giải cao và tốc độ khung hình nhanh để đáp ứng yêu cầu phản hồi thời gian thực
Ngoài ra, việc nhận diện cử chỉ tay cũng có thể ứng dụng trong các giao diện người- máy tiện ích Thay vì sử dụng bàn phím và chuột, người dùng có thể tương tác với máy tính hoặc thiết bị di động bằng cách sử dụng cử chỉ tay Việc này đem đến trải nghiệm tương tác tự nhiên và thoải mái hơn, giúp giảm bớt sự phụ thuộc vào các công cụ truyền thống và tăng cường sự linh hoạt trong việc tương tác với thiết bị trong nhà Để giải quyết những vấn đề này, việc áp dụng các mô hình học sâu tiên tiến như YOLO (You Only Look Once) đang được xem là một hướng đi đầy tiềm năng YOLO là một trong những mô hình nổi tiếng nhất trong việc nhận diện đối tượng, với khả năng xử lý nhanh chóng và độ chính xác cao Phiên bản mới nhất, YOLO v8, hứa hẹn mang lại độ chính xác cao và tốc độ xử lý nhanh hơn so với các phiên bản trước đó, giúp nâng cao hiệu suất của hệ thống nhận diện cử chỉ tay
Tổng quan, đề tài "Xây dựng hệ thống điều khiển thiết bị trong nhà bằng nhận diện cử chỉ tay sử dụng mô hình YOLO v8" đang được quan tâm và nghiên cứu rộng rãi trong lĩnh vực trí tuệ nhân tạo Sự phát triển của các hệ thống nhận diện cử chỉ tay chính xác, nhất quán và phản hồi thời gian thực sẽ mang lại nhiều lợi ích và ứng dụng đa dạng trong cuộc sống hàng ngày, từ nhà thông minh đến giao diện người-máy tiện ích và trải nghiệm tương tác giữa con người và thiết bị trong nhà.
MỤC TIÊU ĐỀ TÀI
Đối với đề tài tôi đã đề ra một số mục tiêu chính:
Thứ nhất: Thu thập và xử lí một tập dữ liệu chứa các hình ảnh và nhãn cử chỉ tay đầy đủ và đa dạng Tập dữ liệu này sẽ được sử dụng để huấn luyện mô hình nhận diện cử chỉ tay
Thứ hai: Huấn luyện một mô hình nhận diện cử chỉ tay sử dụng tập dữ liệu tự tạo thông qua việc áp dụng các thuật toán nhận diện đối tượng Mô hình này sẽ được điều chỉnh và tối ưu để đạt được hiệu suất và độ chính xác trong việc nhận diện các cử chỉ
Thứ ba: Xây dựng giao diện người dùng tương tác trực quan và dễ sử dụng để tương tác với thiết bị Giao diện này sẽ sử dụng kết quả nhận diện cử chỉ tay từ mô hình đã huấn luyện để điều khiển và thao tác trên thiết bị
Thứ tư: Đánh giá hiệu suất hệ thống nhận diện cử chỉ tay và tối ưu hóa các yếu tố liên quan gồm việc đánh giá độ chính xác, tốc độ phản hồi, và khả năng hoạt động trong các điều kiện ánh sáng và môi trường khác nhau đáp ứng yêu cầu thực tế.
TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
Trong phần tình hình nghiên cứu tôi muốn trình bày về các công trình đã được nghiên cứu có thể hỗ trợ cho việc xây dựng và phát triển đề tài từ đó đưa ra được phương án thực hiện tốt, tối ưu nhất cho đề tài Góp phần cho việc có thể hoàn thành hoàn chỉnh cũng như chỉnh chu nhất cho toàn bộ hệ thống
1.3.1 Tình hình nghiên cứu ngoài nước
Trên thế giới, cũng có nhiều nghiên cứu quan trọng về ứng dụng thị giác máy tính nhận diện cử chỉ tay để điều khiển thiết bị Một ví dụ là nghiên cứu của Okan Kopuklu et al (2019) với tựa đề "Real-time Hand Gesture Detection and Classification Using Convolutional Neural Networks" Trong nghiên cứu này, tác giả đã đề xuất một phương pháp sử dụng mạng nơ-ron tích chập (CNN) để nhận diện và phân loại cử chỉ tay Kết quả thực nghiệm cho thấy phương pháp đề xuất đạt độ chính xác cao và thời gian phản hồi nhanh, thích hợp cho ứng dụng thời gian thực [1]
Ngoài ra, còn có nghiên cứu của Raj Patel et al (2018) với đề tài "Hand Gesture Recognition Based on an Attention Model Using Convolutional Neural Networks"
Trong nghiên cứu này, tác giả đã đề xuất một phương pháp sử dụng mạng nơ-ron tích chập kết hợp với mô hình chú ý (attention model) để nhận diện và phân loại cử chỉ tay Kết quả thực nghiệm cho thấy phương pháp đề xuất cải thiện đáng kể độ chính xác so với các phương pháp truyền thống khác [2]
1.3.2 Tình hình nghiên cứu trong nước
Trong nghiên cứu trong nước, đã có nhiều nỗ lực để phát triển và ứng dụng thị giác máy tính nhận diện cử chỉ tay trong việc điều khiển thiết bị Trong số đó, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh có đề 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ỉ” do 2 sinh viên Nguyễn Thắng Phong và Nguyễn Hải Hưng thực hiện vào năm 2022 Mô hình nhận diện cử chỉ có độ chính xác cao Điều khiển thiết bị theo đúng yêu cầu của hệ thống: bằng cử chỉ, bằng giao diện, bằng nút nhấn phần cứng Bên cạnh đó, đề tài còn một số thiếu sót như tập dữ liệu còn hạn chế với các cử chỉ tay chưa được cá nhân hóa, mô hình huấn luyện chưa được rõ ràng cụ thể [3]
Từ những nghiên cứu trong và ngoài nước, có thể thấy rằng ứng dụng thị giác máy tính nhận diện cử chỉ tay để điều khiển thiết bị đã nhận được sự quan tâm nghiên cứu sâu rộng Đồng thời, các nghiên cứu tiên tiến cũng tập trung vào việc kết hợp các kỹ thuật mới như mô hình chú ý để nâng cao độ chính xác và thời gian phản hồi của hệ thống
Tuy nhiên, tình hình nghiên cứu trong lĩnh vực này vẫn còn một số thách thức cần được vượt qua Một trong số đó là độ phức tạp của việc nhận diện và phân loại các cử chỉ tay trong các tình huống thực tế, bao gồm sự biến đổi về ánh sáng, góc nhìn và nhiễu Đồng thời, việc xây dựng một tập dữ liệu đủ lớn và đa dạng để huấn luyện các mô hình cũng là một thách thức quan trọng Mặc dù vậy, với sự phát triển của công nghệ và sự quan tâm của cộng đồng nghiên cứu, có hy vọng rằng trong tương lai, ứng dụng thị giác máy tính nhận diện cử chỉ tay sẽ trở nên ngày càng phổ biến và tiện ích trong việc điều khiển các thiết bị.
PHƯƠNG PHÁP NGHIÊN CỨU
Để đạt được mục tiêu của đề tài, tôi sử dụng các phương pháp thu thập số liệu, thực nghiệm và phân tích tổng kết kinh nghiệm
Phương pháp thu thập số liệu:
- Sử dụng phương pháp quan sát: Tiến hành quan sát trực tiếp các tình huống trong việc điều khiển thiết bị bằng cử chỉ tay Ghi lại các thông tin liên quan như cử chỉ tay, hành động điều khiển, và kết quả
- Tiến hành cuộc phỏng vấn: Tổ chức cuộc phỏng vấn với người dùng hoặc các chuyên gia trong lĩnh vực để hiểu thêm về trải nghiệm và ý kiến của họ về việc sử dụng cử chỉ tay để điều khiển thiết bị
- Thiết kế và triển khai hệ thống: Thiết kế và triển khai hệ thống thị giác máy tính nhận diện cử chỉ tay dựa trên các thuật toán và mô hình phù hợp Triển khai hệ thống trên nền tảng phần cứng và phần mềm thích hợp
- Tiến hành thử nghiệm: Thực hiện các bài kiểm tra và thử nghiệm hệ thống trên thực tế, thực hiện các cử chỉ tay để điều khiển thiết bị và ghi lại kết quả, bao gồm độ chính xác, thời gian phản hồi và sự thuận tiện
Phương pháp phân tích tổng kết kinh nghiệm:
- Đánh giá hiệu quả: Đánh giá hiệu quả của hệ thống trong việc nhận diện và điều khiển bằng các cử chỉ tay bằng cách so sánh kết quả thực nghiệm với mục tiêu và tiêu chuẩn đã đề ra, bao gồm độ chính xác, độ tin cậy và tốc độ xử lý của hệ thống
- Phân tích dữ liệu: Phân tích các dữ liệu thu thập được từ quá trình thử nghiệm và phân tích, xem xét xu hướng, mẫu dữ liệu và biểu đồ để hiểu rõ hơn về hiệu suất và khả năng của hệ thống
- Tổng kết kinh nghiệm: Dựa trên kết quả phân tích, tổng kết kinh nghiệm và rút ra những kết luận về việc sử dụng hệ thống nhận diện cử chỉ tay trong việc điều khiển thiết bị Đề xuất các cải tiến và khuyến nghị để nâng cao hiệu suất và tính ứng dụng của hệ thống
Trên cơ sở này, tôi có thể thực hiện nghiên cứu và phát triển đề tài “Xây dựng hệ thống điều khiển thiết bị trong nhà bằng nhận diện cử chỉ tay sử dụng mô hình YOLO v8” một cách toàn diện và có căn cứ dữ liệu đáng tin cậy.
BỐ CỤC CỦA ĐỀ TÀI
Giới thiệu khái quát và tổng quan về tình hình nghiên cứu cũng như các phương pháp nghiên cứu của đề tài.
CƠ SỞ LÝ THUYẾT
NHẬN DIỆN ĐỐI TƯỢNG
Nhận diện đối tượng là một kỹ thuật tiên tiến trong lĩnh vực thị giác máy tính Nó đóng vai trò như đôi mắt thông minh cho máy tính, giúp chúng có khả năng phát hiện và phân loại các vật thể trong hình ảnh hoặc video
Hình 2.1 Nhận diện đối tượng
Các thuật toán nhận diện đối tượng chủ yếu được chia thành 2 nhóm chính:
- Các mô hình RCNN (Region-Based Convolutional Neural Networks): Đây là các mô hình sử dụng mạng nơ-ron tích chập (Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể
- Các mô hình YOLO (You Only Look Once): Đây là các mô hình được thiết kế để có thể nhận dạng các đối tượng theo thời gian thực (real-time) YOLO kết hợp các lớp tích chập (convolutional layers) để trích xuất các đặc trưng của ảnh và các lớp kết nối đầy đủ (full-connected layers) để dự đoán xác suất và tọa độ của các đối tượng.
TÌM HIỂU VỀ MÔ HÌNH YOLO
YOLO (You Only Look Once) là một trong các mô hình mạng nơ-ron tích chập (CNN) được thiết kế để nhận diện đối tượng trong thời gian thực So với các phương pháp nhận hiện đối tượng trước đây, YOLO nổi bật bởi tốc độ xử lý nhanh chóng và độ chính xác cao, biến nó thành lựa chọn lý tưởng cho nhiều ứng dụng trong thực tế Phần cốt lõi của YOLO là base network, bao gồm chủ yếu các lớp tích chập
(convolutional layers) và các lớp kết nối đầy đủ (fully connected layers) Nhiệm vụ của base network là trích xuất các đặc trưng (feature) từ ảnh đầu vào Sau phần base network là các Extra Layers, được áp dụng lên feature map để thực hiện việc phát hiện và định vị các đối tượng trong ảnh [4]
Hình 2.2 Sơ đồ kiến trúc mạng YOLO
2.2.1 Dựa trên ô lưới (grid cell)
Cách tiếp cận độc đáo của YOLO bắt đầu bằng việc chia ảnh đầu vào thành một lưới S×S, với S là một siêu tham số được chọn trước Mỗi ô trong lưới này 'sở hữu' một tập hợp các bounding box tiềm năng và dự đoán xác suất các lớp đối tượng cho từng bounding box
Nguyên lý hoạt động cụ thể như sau: Mỗi ô lưới chỉ dự đoán một đối tượng Nếu tâm của một đối tượng nằm trong ô lưới, thì ô đó sẽ chịu trách nhiệm dự đoán đối tượng đó Quá trình này được lặp lại trên toàn bộ lưới để phát hiện và định vị các đối tượng trong ảnh
Thuật toán YOLO (You Only Look Once) có xu hướng dự báo ra nhiều bounding box trên một bức ảnh Do đó đối với những vùng trong ảnh có các cell (ô vuông) nằm gần nhau, khả năng các bounding box bị chồng chéo (overlap) là rất cao Để giải quyết vấn đề này, YOLO sử dụng kỹ thuật non-max suppression Phương pháp này giúp giảm đáng kể số lượng bounding box được sinh ra Cụ thể, non-max suppression sẽ loại bỏ các bounding box dự báo có độ chồng chéo cao, chỉ giữ lại những bounding box quan trọng nhất [4]
Quá trình non-max suppression bao gồm các bước như: sắp xếp các bounding box theo điểm số từ cao đến thấp, sau đó loại bỏ các bounding box có độ chồng chéo vượt quá một ngưỡng cho trước so với bounding box đang xét Việc áp dụng non-max suppression giúp YOLO tập trung vào những vùng quan trọng nhất trong ảnh, từ đó cải thiện hiệu suất và độ chính xác của việc phát hiện đối tượng
2.2.3 Các chỉ số đánh giá
Có một số chỉ số thường được sử dụng để đánh giá hiệu suất của các mô hình phát hiện đối tượng:
Mean Average Precision (mAP): Độ chính xác của một mô hình được định nghĩa là số lượng true positives chia cho tổng số true positives và false positives Chỉ số mAP tính đến cả độ chính xác và độ thu hồi của mô hình, được tính bằng giá trị trung bình của average precision cho mỗi class Một giá trị mAP cao hơn chỉ ra hiệu suất tốt hơn của mô hình
Average Precision (AP): Đây là một đo lường độ chính xác của mô hình ở các mức độ thu hồi khác nhau Độ chính xác được định nghĩa là số lượng true positives chia cho tổng số true positives và false positives Độ thu hồi được định nghĩa là số lượng true positives chia cho tổng số true positives và false negatives AP được tính bằng diện tích dưới đường cong precision-recall Một giá trị AP cao hơn chỉ ra hiệu suất tốt hơn của mô hình
Intersection over Union (IoU): IoU là một đo lường sự chồng chéo giữa vùng bounding box dự đoán và vùng bounding box ground-truth Nó được tính bằng cách lấy diện tích giao của hai vùng và chia cho diện tích của vùng kết hợp Một giá trị IoU cao hơn chỉ ra sự tương ứng tốt hơn giữa vùng bounding box dự đoán và ground- truth Ngoài ra còn có một số chỉ số khác đánh giá độ chính xác, như True Positive Rate (TPR), False Positive Rate (FPR), F1-score, và Log Average Miss Rate (MR) Ngoài những chỉ số này, các mô hình phát hiện đối tượng cũng có thể được đánh giá dựa trên hiệu quả tính toán của chúng [5]
Trong YOLO, hàm mất mát (loss function) đóng vai trò rất quan trọng trong quá trình huấn luyện mô hình Mục tiêu của hàm lỗi là tối ưu hóa khả năng dự đoán chính xác vị trí, kích thước và lớp của các đối tượng trong hình ảnh bằng cách tối ưu hóa đồng thời ba yếu tố chính: dự đoán chính xác lớp đối tượng (classification), dự đoán chính xác tọa độ của bounding box (localization), và dự đoán chính xác độ tin cậy của bounding box (confidence) [5]
Classification loss là một hàm lỗi được sử dụng để đánh giá độ chính xác của việc dự đoán loại nhãn (class) của một đối tượng Nó chỉ tính toán trên những ô vuông
1 𝑖 𝑜𝑏𝑗 : Hàm indicator có giá trị 0,1 nhằm xác định xem cell i có chứa vật thể hay không Bằng 1 nếu chứa vật thể và 0 nếu không chứa
𝑝 𝑖 (𝑐): Xác suất thực tế của lớp c trong grid cell i
𝑝̂ 𝑖 (𝑐): Xác suất dự đoán của lớp c trong grid cell i
Localization loss là một hàm lỗi dùng để đánh giá độ chính xác của việc dự đoán vị trí (tọa độ, kích thước) của boundary box (hộp giới hạn) của đối tượng, so với vị trí thực tế (ground truth) từ dữ liệu huấn luyện [5]
𝑐𝑜𝑜𝑟𝑑 : Hệ số điều chỉnh, thường được đặt giá trị cao hơn để nhấn mạnh tầm quan trọng của localization loss
1 𝑖,𝑗 𝑜𝑏𝑗 : Cho biết bounding box thứ j của cell i có chứa đối tượng
𝑥 𝑖 𝑦 𝑖 , 𝑤 𝑖 , ℎ,: Tọa độ trung tâm và kích thước thực tế của bounding box
𝑥̂ 𝑖 , 𝑦̂ 𝑖 , 𝑤̂ 𝑖 , ℎ̂ 𝑖 : Tọa độ trung tâm và kích thước dự đoán của bounding box
Confidence loss là một hàm lỗi dùng để đánh giá độ chính xác của việc dự đoán xem liệu một boundary box (hộp giới hạn) có chứa đối tượng hay không, so với nhãn thực tế (ground truth) tại ô vuông đó [5]
𝑛𝑜𝑜𝑏𝑗 : Hệ số điều chỉnh quan trọng được sử dụng để kiểm soát trọng số của phần lỗi liên quan đến các bounding box không chứa đối tượng (no-object)
1 𝑖,𝑗 𝑛𝑜𝑜𝑏𝑗 : Cho biết bounding box thứ j của cell i không chứa đối tượng
𝐶 𝑖 : Độ tin cậy thực tế (1 nếu có đối tượng, 0 nếu không có)
𝐶̂ 𝑖 : Độ tin cậy dự đoán.
TỔNG QUAN VỀ MÔ HÌNH YOLO V8
YOLO v8 là phiên bản mới nhất của thuật toán YOLO, được phát triển bởi Ultralytics, một công ty do Joseph Redmon, người sáng lập ra YOLO, thành lập YOLO v8 được ra mắt vào năm 2023 và mang lại một số cải tiến so với các phiên bản YOLO trước đó
Hình 2.5 Hiệu suất của YOLO v8 so với phiên bản trước
2.3.1 Kiến trúc mô hình YOLO v8
Hình 2.6 Kiến trúc mô hình YOLO v8
YOLOv8 có nhiều phiên bản đa dạng với trọng số và tốc độ tính toán xử lí khác nhau được đánh giá trên tập dữ liệu COCO cho thấy tùy thuộc vào bài toán đặt ra có thể lựa chọn mô hình phù hợp để huấn luyện
Hình 2 7 Các phiên bản của YOLOv8 được đánh giá theo COCO
YOLOv8 có nhiều tính năng đáng chú ý Dưới đây là một số tính năng chính của YOLOv8:
Tăng tốc độ: YOLOv8 đạt tốc độ suy luận nhanh hơn so với các mô hình phát hiện đối tượng khác trong khi vẫn duy trì độ chính xác cao
Nhiều cơ sở: YOLOv8 hỗ trợ các cơ sở khác nhau, chẳng hạn như EfficientNet, ResNet và CSPDarknet, cho phép người dùng lựa chọn mô hình tốt nhất cho trường hợp cụ thể của họ Đào tạo thích ứng: YOLOv8 sử dụng đào tạo thích ứng để tối ưu hóa tốc độ học và cân bằng hàm mất mát trong quá trình đào tạo, dẫn đến hiệu suất mô hình tốt hơn Tăng cường dữ liệu nâng cao: YOLOv8 sử dụng các kỹ thuật tăng cường dữ liệu nâng cao như MixUp và CutMix để cải thiện tính bền vững và khái quát hóa của mô hình
Kiến trúc có thể tùy chỉnh: Kiến trúc của YOLOv8 rất có thể tùy chỉnh, cho phép người dùng dễ dàng sửa đổi cấu trúc và thông số của mô hình để phù hợp với nhu cầu của họ
Mô hình được xây dựng trước: YOLOv8 cung cấp các mô hình được xây dựng trước để sử dụng dễ dàng và chuyển giao học tập trên các tập dữ liệu khác nhau.
PHẦN MỀM THIẾT KẾ GIAO DIỆN QT5
dùng ngày càng kỳ vọng vào những trải nghiệm người dùng tuyệt vời, trực quan và dễ sử dụng Chính vì vậy, các công cụ và phần mềm hỗ trợ thiết kế GUI đóng vai trò then chốt trong quy trình phát triển phần mềm hiện đại
Một trong những công cụ thiết kế GUI phổ biến và mạnh mẽ nhất hiện nay chính là Qt5 - một bộ thư viện đa nền tảng, mã nguồn mở Cung cấp một khuôn khổ hoàn chỉnh để xây dựng các ứng dụng GUI với hỗ trợ đa ngôn ngữ, đa nền tảng (Windows, macOS, Linux, Android, iOS, v.v.) và đa thiết bị (desktop, mobile, embedded)
Do quá trình thực hiện tham khảo mô hình nhận diện cử chỉ tay được thực hiện bằng ngôn ngữ Python, tôi đã quyết định sử dụng thư viện Qt dùng ngôn ngữ Python, còn được gọi là PyQt5 Việc thiết kế giao diện bằng ngôn ngữ Python được cho là đơn giản và dễ nắm bắt, phù hợp với yêu cầu của đề tài
THIẾT KẾ VÀ THI CÔNG
YÊU CẦU HỆ THỐNG
Hệ thống bao gồm máy tính có webcam để thu hình ảnh từ môi trường xung quanh, một mô hình máy học đã được huấn luyện trước đó để xử lý dữ liệu hình ảnh và một mạch giao tiếp để điều khiển thiết bị, được kết nối với máy tính qua cổng USB Đây là một hệ thống điều khiển thiết bị thông minh và tiện lợi, sử dụng công nghệ máy học và xử lý ảnh để đáp ứng các tương tác bằng cử chỉ tay đơn giản của người dùng
Hệ thống được thiết kế để đáp ứng những yêu cầu sau:
● Độ chính xác cao: Hệ thống cần đạt độ chính xác tối đa trong việc nhận diện và phân loại các cử chỉ tay khác nhau, đảm bảo điều khiển thiết bị một cách chính xác và tin cậy
● Phản hồi nhanh chóng: Hệ thống phải đáp ứng các lệnh điều khiển một cách tức thời với thời gian phản hồi nhanh chóng, để người dùng có trải nghiệm sử dụng trực quan và tự nhiên
● Giao diện thân thiện: Giao diện người dùng cần được thiết kế đơn giản, direct và dễ sử dụng, giúp người dùng nhanh chóng làm quen và vận hành hệ thống một cách hiệu quả.
ĐẶC TẢ HỆ THỐNG
3.2.1 Chức năng của hệ thống
Dựa vào những yêu cầu hệ thống thì tôi đã thiết kế và xây dựng hệ thống gồm những chức năng như sau:
● Chức năng nhận diện và phân loại cử chỉ tay: Sử dụng công nghệ học máy tiên tiến để phát hiện và nhận dạng chính xác các cử chỉ tay khác nhau Đảm bảo độ chính xác cao trong việc phân loại các cử chỉ tay Có thể mở rộng danh sách các cử chỉ tay được nhận diện trong tương lai
● Chức năng điều khiển phản hồi nhanh: Xử lý các lệnh điều khiển từ bộ nhận diện cử chỉ tay trong thời gian ngắn Cung cấp phản hồi trực quan và tự nhiên cho người dùng Hỗ trợ kết nối và điều khiển nhiều thiết bị khác nhau
● Giao diện người dùng thân thiện: Thiết kế giao diện đơn giản, trực quan và dễ sử dụng Giúp người dùng nhanh chóng làm quen và vận hành hiệu quả hệ thống Cung cấp các hướng dẫn và phản hồi rõ ràng để người dùng dễ dàng thao tác
Với những chức năng này, hệ thống sẽ đáp ứng được các yêu cầu về độ chính xác, phản hồi nhanh, giao diện thân thiện và khả năng mở rộng đã đề ra
3.2.2 Mô hình tổng quát của hệ thống
Dựa trên những yêu cầu hệ thống thì tôi đã thiết kế được mô hình tổng thể của toàn bộ hệ thống như sau:
Hình 3.1 Mô hình tổng quát của hệ thống
● Nhiệm vụ chính là thu thập dữ liệu về các cử chỉ tay
● Dữ liệu thu thập sẽ được cung cấp dữ liệu đầu vào cho quá trình huấn luyện mô hình nhận dạng cử chỉ tay trong User
● Thu hình ảnh từ môi trường thực tế với thời gian thực
● Chịu trách nhiệm về giao diện người dùng và nhận dị bàn tay trong thời gian thực
● Nó sử dụng dữ liệu từ Data để huấn luyện mô hình nhận dạng cử chỉ tay
● Khi người dùng thực hiện các cử chỉ tay, User sẽ nhận dạng và chuyển thông tin về các cử chỉ đó sang Board
● Board nhận lệnh điều khiển từ các cử chỉ tay được nhận dạng bởi User
● Nó xử lý các lệnh điều khiển và chuyển chúng sang Device để thực hiện các hành động tương ứng
● Là thành phần cuối cùng trong chuỗi xử lý, nhận lệnh điều khiển từ Board và thực hiện các hành động tương ứng trên các thiết bị thông qua mô-đun rơ-le
3.2.3 Sơ đồ khối và nguyên lí hoạt động
Sơ đồ khối của hệ thống
Hình 3.2 Sơ đồ khối của hệ thống
Khối thu thập hình ảnh: Thu thập dữ liệu ảnh về cử chỉ tay, tiến hành tiền xử lí dữ liệu sau đó đưa dữ liệu về khối xử lí trung tâm
Khối xử lí trung tâm: Sử dụng dữ liệu thu thập được từ khối thu thập hình ảnh nhằm huấn luyện mô hình để nhận diện cử chỉ tay, máy tính nhận diện cử chỉ thời gian thực, đưa lệnh cho khối hiển thị và khối điều khiển
Khối nguồn: Cấp nguồn cho khối xử lí trung tâm
Khối hiển thị: Giao diện giúp dễ dàng sử dụng tính năng điều khiển của hệ thống Khối điều khiển: Thực thi lệnh nhận được từ khối xử lí trung tâm và thực thi hành động tương ứng
Nguyên lý hoạt động của hệ thống
Bước 1: Thu thập dữ liệu ảnh
- Khối thu thập hình ảnh sẽ tiến hành thu thập dữ liệu ảnh về các cử chỉ tay khác nhau
- Các ảnh được chụp từ nhiều góc độ, điều kiện ánh sáng và nền khác nhau để tạo ra một tập dữ liệu đa dạng
- Dữ liệu ảnh được lưu trữ và tổ chức một cách có hệ thống để sử dụng cho quá trình huấn luyện mô hình
Bước 2: Tiền xử lý dữ liệu ảnh
- Khối thu thập hình ảnh tiến hành các kỹ thuật tiền xử lý trên dữ liệu ảnh như cắt ảnh, chuẩn hóa kích thước, điều chỉnh độ sáng/tương phản
- Mục đích của tiền xử lý là để chuẩn bị dữ liệu ảnh sao cho phù hợp và hiệu quả hơn cho quá trình huấn luyện mô hình
- Dữ liệu ảnh đã được tiền xử lý sẽ được chuyển sang khối xử lý trung tâm
Bước 3: Huấn luyện mô hình nhận diện cử chỉ tay
- Khối xử lý trung tâm sẽ sử dụng dữ liệu ảnh đã được thu thập và tiền xử lý để v8 làm nền tảng
- Quá trình huấn luyện sẽ lặp đi lặp lại để nâng cao độ chính xác của mô hình
Mô hình nhận diện cử chỉ tay được lưu lại để sử dụng cho các lần nhận diện tiếp theo
Bước 4: Nhận diện cử chỉ tay thời gian thực
- Khi người dùng thực hiện các cử chỉ tay, khối xử lý trung tâm sẽ sử dụng mô hình đã được huấn luyện để thực hiện nhận diện cử chỉ tay từ dữ liệu ảnh đầu vào
- Quá trình nhận diện này diễn ra theo thời gian thực, cho phép hệ thống phản hồi ngay lập tức với các cử chỉ tay của người dùng
- Kết quả nhận diện cử chỉ tay sẽ được chuyển sang khối điều khiển để thực hiện các hành động tương ứng
Bước 5: Điều khiển thiết bị
- Sau khi nhận diện được cử chỉ tay, khối xử lý trung tâm sẽ gửi lệnh tương ứng đến khối điều khiển
- Khối điều khiển sẽ tiếp nhận lệnh và thực hiện các hành động điều khiển thiết bị phù hợp, ví dụ như bật tắt thiết bị 1, thiết bị 2,
- Kết quả của các hành động điều khiển sẽ được hiển thị trên khối hiển thị, giúp người dùng dễ dàng quan sát và tương tác với hệ thống
Qua 5 bước này, hệ thống sẽ sử dụng mô hình thị giác máy tính để nhận diện cử chỉ tay của người dùng và điều khiển các thiết bị tương ứng một cách tự động và thời gian thực.
THIẾT KẾ PHẦN CỨNG
Xuất phát từ yêu cầu và đặc tả của hệ thống, tôi đã thiết kế phần cứng khối điều khiển nhằm đáp ứng đầy đủ các chức năng cần thiết
Arduino Uno R3 là một trong những mẫu bo mạch vi điều khiển phổ biến nhất trong gia đình Arduino Nó được thiết kế dựa trên chip ATmega328P của
Microchip, một vi xử lý 8 bit với 32KB bộ nhớ flash, 2KB RAM và 1KB
EEPROM Arduino Uno R3 là một nền tảng mạnh mẽ, linh hoạt và dễ sử dụng, được sử dụng rộng rãi trong các lĩnh vực như giáo dục, nghiên cứu, sáng tạo và phát triển sản phẩm
Hình 3.3 Arduino UNO R3 trong thực tế Bảng 3.1 Thông số kỹ thuật của Arduino UNO R3
Chip điều khiển ATmega328P Điện áp hoạt động 5V Điện áp đầu vào(khuyên dùng)
7-12V Điện áp đầu vào (giới hạn) 6-20V
Số chân Digital 14 (of which 6 provide PWM output)
Dòng điện DC trên mỗi chân
Dòng điện DC trên chân
Flash Memory 32 KB (ATmega328P) of which 0.5 KB used by bootloader
Với thiết kế nhỏ gọn, tích hợp sẵn opto-coupler và transistor cách ly, mô-đun rơ- le này mang lại sự đơn giản và an toàn khi sử dụng để kiểm soát các thiết bị gia dụng hoạt động ở dòng điện AC hoặc DC cao [5]
Hình 3.4 Mô-đun rơ-le điều khiển có 4 kênh
Hình 3.5 Sơ đồ nguyên lí của mô-đun rơ-le 4 kênh
Thông số kỹ thuật của mô-đun rơ-le
- Điện áp điều khiển: 5V DC
- Đầu ra đóng ngắt: AC 250V - 10A hoặc DC 30V - 10A
- Có đèn báo đóng ngắt trên mỗi rơ-le
3.3.3 Sơ đồ nguyên lý kết nối Arduino R3 và mô-đun rơ-le 4 kênh
Hình 3.6 Sơ đồ nguyên lí kết nối Arduino R3 và mô-đun rơ-le 4 kênh
THIẾT KẾ PHẦN MỀM
3.4.1 Thiết kế mô hình nhận diện cử chỉ tay
Căn cứ vào yêu cầu hệ thống nhận diện cử chỉ tay để điều khiển thiết bị trong nhà, tôi thiết kế chi tiết phần mềm các khối của mô hình sao cho có thể đáp ứng đầy đủ các chức năng như nhận diện cử chỉ tay, điều khiển thiết bị theo cử chỉ tương ứng và hiển thị giao diện trực quan
Giải thích: Đầu tiên là thu thập và xử lí tập dữ liệu để tạo cử chỉ điều khiển Sau đó lựa chọn mô hình phù hợp với hệ thống để thực hiện điều chỉnh và huấn luyện mô hình Tiếp theo là khởi tạo các lệnh điều khiển với cử chỉ tay tương ứng Sau khi khởi tạo lệnh điều khiển, tiến hành cập nhật trạng thái thiết bị đến giao diện hiển thị
Lưu đồ thu thập và xử lí tập dữ liệu
Hình 3 8 Lưu đồ thu thập và xử lí tập dữ liệu
Quá trình thu thập dữ liệu ảnh chụp các cử chỉ tay là một bước quan trọng trong việc xây dựng một hệ thống nhận diện cử chỉ tay hiệu quả Ngoài việc xác định các cử chỉ tay cần nhận diện và thu thập ảnh cho từng cử chỉ, cần lưu ý một số khía cạnh khác để đảm bảo chất lượng và tính đa dạng của tập dữ liệu
Khi thu thập dữ liệu ảnh chụp các cử chỉ tay, cần lưu ý đến các điều kiện môi trường như nguồn sáng, góc chụp và khoảng cách để tạo ra một tập dữ liệu đa dạng về độ phân giải, độ tương phản và góc nhìn
Với mục tiêu đề ra là điều khiển 4 thiết bị, với các chức năng cụ thể là bật/tắt lần lượt thiết bị 1, thiết bị 2, thiết bị 3, thiết bị 4, và chức năng bật/tắt toàn bộ các thiết bị, tôi đưa ra quyết định khởi tạo tương ứng với 10 lớp dữ liệu cử chỉ tay đặc trưng và tin cậy
Ngoài ra, việc đảm bảo sự cân bằng giữa các lớp cử chỉ tay cũng rất quan trọng, nhằm tránh tình trạng mô hình học tập tốt hơn các cử chỉ có nhiều dữ liệu, dẫn đến phân loại kém chính xác đối với các cử chỉ ít dữ liệu hơn
Hình 3.9 Các cử chỉ tay tương ứng với 4 kênh điều khiển
Sau khi thu thập dữ liệu, tôi đã sử dụng công cụ trực tuyến miễn phí MakeSense (makesense.ai) để gán nhãn cho dữ liệu hình ảnh của mình Công cụ này cho phép tôi dễ dàng và nhanh chóng gán nhãn cho các hình ảnh cử chỉ tay
Tôi đã gán nhãn cho dữ liệu hình ảnh thu thập được, phân loại 10 trạng thái: bật tất cả thiết bị (on_all), tắt tất cả thiết bị (off_all), bật/tắt các thiết bị riêng từ thiết bị
1 đến thiết bị 4 (on1, off1, , on4, off4)
Hình 3.10 Hình ảnh gán nhãn "on2" trên công cụ MakeSense
Với gốc tọa độ được thiết lập ở góc trái trên của dữ liệu ảnh, ta thu được một hệ tọa độ Oxy trên ảnh, sau đó ta dán nhãn từ điểm chọn đầu tiên của dữ liệu cử chỉ tay mong muốn trên ảnh thu được thông số là xmin , ymin và điểm chọn chọn cuối cử chỉ tay sao cho khung chọn được bao quanh cử chỉ cần nhận diện thu được xmax , ymax của điểm
Sau khi gán nhãn, ta có thể tải xuống dữ liệu đã được chuẩn bị dưới nhiều định dạng khác nhau để sử dụng với phù hợp với mô hình Mỗi tệp ảnh sẽ có tệp nhãn tương ứng, chứa thông tin về vị trí và lớp của các đối tượng trong ảnh Định dạng này sẽ cho phép dễ dàng gửi dữ liệu vào mô hình để tiến hành huấn luyện và đánh giá Ở quá trình tăng cường ảnh tôi có sử dụng và điều chỉnh 4 phiên bản với công cụ trực tuyến Roboflow đã thiết lập:
Hình 3.11 Các phiên bản tăng cường dữ liệu ã Độ xoay từ -10⁰ đến 10⁰ ã Độ sỏng -25% đến 25% ã Độ mờ ~ 2 pixel ã Nhiễu ~ 0.1% pixel
Bằng cách thay đổi một số thuộc tính của hình ảnh như độ sáng, tạo nhiễu, xoay, độ mờ, chúng ta có thể tạo ra nhiều phiên bản khác nhau từ một hình ảnh gốc Điều này giúp tăng cường dữ liệu huấn luyện, giảm nguy cơ “học vẹt” và cải thiện hiệu suất của mô hình Khi một mô hình được huấn luyện trên một loạt các biến thể của dữ liệu huấn luyện, nó có khả năng học được các đặc trưng tổng quát hơn về đối tượng trong hình ảnh Đăc biệt khi triển khai mô hình vào môi trường thực tế, dữ liệu đầu vào có thể chứa các biến thể mà mô hình chưa từng gặp phải trong quá trình huấn luyện
Sau khi đã tiền xử lí cho toàn bộ tệp hình ảnh, tôi tiến hành phân chia tập dataset nhãn được sử dụng trong mô hình nhận diện
Phân chia tập dataset: Tôi phân chia tập dataset thành các tập train và valid theo tỷ lệ 70-30: ã Đảm bảo đủ dữ liệu cho quỏ trỡnh huấn luyện: Sử dụng 70% dữ liệu để huấn luyện giúp mô hình học được nhiều hơn từ dữ liệu ã Đảm bảo độ chớnh xỏc của mụ hỡnh: Sử dụng 30% dữ liệu để kiểm tra giỳp đỏnh giá độ chính xác và hiệu suất của mô hình trên dữ liệu mà nó chưa từng thấy
Hình 3.12 Phân chia tập dữ liệu
Lựa chọn và quá trình huấn luyện mô hình
Với mục tiêu đặt ra cho mô hình hệ thống từ ban đầu với tập dữ liệu tự thu thập và tiền xử lí, lựa chọn mô hình YOLO v8n là phiên bản có trọng số nhỏ nhất là huấn luyện phù hợp với yêu cầu thời gian thực và tích hợp vào mô hình hệ thống
Sau khi lựa chọn, quá trình huấn luyện sẽ được thực hiện trên công cụ trực tuyến nền tảng Kaggle Công cụ này cho phép lấy tệp dữ liệu đã xử lí và phân chia từ công cụ Roboflow và huấn luyện với 2 GPUs T4 với tốc độ huấn luyện tương đối cao Người dùng được cấp một hạn mức 30 giờ/tuần để sử dụng GPU Ngoài ra, Kaggle cũng hỗ trợ TPU (Tensor Processing Unit), một sản phẩm của Google giúp tăng tốc độ làm việc của các mô hình machine learning TPUs được hỗ trợ trong TensorFlow 2.1 và cung cấp một hạn mức 30 giờ/tuần, với tối đa 3 giờ trong một lần chạy Điều này giúp người dùng tận dụng hiệu suất tính toán cao để huấn luyện và triển khai các mô hình ML một cách hiệu quả trên Kaggle
Epochs là một lần lặp hoàn chỉnh thông qua toàn bộ tập dữ liệu trong quá trình huấn luyện Trong mỗi epoch, mô hình được đưa qua toàn bộ tập dữ liệu và cập nhật các trọng số của nó dựa trên các lỗi mà nó gặp phải trong quá trình dự đoán đầu ra chính xác Mục tiêu của việc huấn luyện qua nhiều epochs là cải thiện độ chính xác của mô hình bằng cách điều chỉnh trọng số của nó trên toàn bộ tập dữ liệu nhiều lần Đối với trường hợp này, tôi lựa chọn số epochs là 10 để đảm bảo rằng mô hình có đủ thời gian để học từ dữ liệu huấn luyện và cải thiện hiệu suất của nó
Hình 3 13 Lưu đồ lựa chọn và huấn luyện mô hình
Hình 3.14 Kiến trúc mô hình YOLOv8n theo thư viện ultralytics
KẾT QUẢ VÀ ĐÁNH GIÁ HỆ THỐNG
KẾT QUẢ PHẦN CỨNG
Phần hộp được thiết kế 2D bằng phần mềm SolidWorks Hộp được thiết kế với 3 mặt chính: mặt thứ nhất có ô trống để cấp nguồn và thông tin lệnh điều khiển, mặt thứ hai sẽ có ô trống để điều khiển thiết bị bên ngoài thông qua các kênh điều khiển của mô-đun rơ-le, mặt còn lại dùng để cố định phần cứng và giữ cho hộp được chắc chắn
Hình 4.1 Tổng quan mô hình hoàn thiện và cổng đầu ra điều khiển
Hình 4.2 Kết nối giữa máy tính và mô hình
Hình 4.3 Phần cứng bên trong mô hình
KẾT QUẢ MÔ HÌNH
Hình 4.5 Đồ thị PR-Curve
Kết quả đánh giá mô hình có hiệu suất tốt khi mà các chỉ số hàm mất mát như box_loss, cls_los, dfl_loss đều giảm đáng kể trong quá trình huấn luyện và kiểm tra, chứng tỏ mô hình học và tối ưu một cách hiệu quả Bên cạnh đó cả chỉ số đo lường hiệu suất như
Presicion, Recall, mAP cũng tăng lên cho thấy khả năng phát hiện đối tượng của mô hình liên tục được cải thiện Có thể thấy mô hình có độ tin cậy cao và hiệu quả trong việc nhận diện cử chỉ tay.
KẾT QUẢ GIAO DIỆN
Kết quả giao diện người dùng rất trực quan và dễ sử dụng cho hệ thống Nó bao gồm các tính năng quan trọng như hiển thị thông tin hệ thống, cung cấp khung webcam, các nút bật/tắt nhanh và trạng thái thiết bị, cùng với các nút bấm trực quan để người dùng tương tác dễ dàng Với thiết kế này, người dùng sẽ có một giao diện sinh động và dễ hiểu để quản lý và vận hành hệ thống một cách hiệu quả
Hình 4.8 Giao diện khi nhận dạng được và các thiết bị được bật
Hình 4.9 Giao diện khi nhận dạng được và các thiết bị được tắt