TỔNG QUAN
Giới thiệu
Vào 23/01/2020, Việt Nam xác nhận ca mắc COVID-19 đầu tiên tại TP Hồ Chí Minh [9] Kinh tế, xã hội ở nước ta bị tác động lớn bởi đại dịch, các hoạt động tụ tập đông người và tự do di chuyển bị hạn chế Trước tình hình đó, Việt Nam đã dẫn đầu trong việc kiểm soát dịch bệnh và giảm thiểu số ca tử vong trong năm 2020 xuống chỉ còn 35 ca, còn trên thế giới thì con số tử vong đã lên đến hàng triệu người Tuy nhiên, dịch bệnh đã chuyển biến xấu và trầm trọng hơn vào năm 2021 với số người mắc COVID-19 cùng với số người tử vong tăng vọt, không thể kiểm soát được Tính đến nay, Việt Nam đã xác nhận 10.723.673 ca nhiễm và 43.080 ca tử vong Nơi bị đại dịch tác động lớn nhất là Hà Nội với số ca nhiễm là 1.601.621 và số ca tử vong là 1.221 [9] Trước tình hình dịch bệnh diễn biến khó lường, ai cũng có thể nhiễm bệnh, việc tăng cường sức khoẻ, sức đề kháng là rất cần thiết nên việc luyện tập thể dục hằng ngày sẽ là lựa chọn tối ưu nhất và với việc lựa chọn tập thể dục tại nhà, thì sẽ xảy ra một số bất tiện như:không biết nên bắt đầu từ đâu, choáng ngợp với nhiều bài tập khác nhau, tập các động tác sao cho đúng, không có người hướng dẫn Trước những bất tiện đã đề cập ở trên, nhóm thực hiện đã quyết định thực hiện đề tài “Hệ thống trí tuệ nhân tạo hỗ trợ tập Gym và Yoga tại nhà” giúp người tập giải quyết những vấn đề đó.Nhóm thực hiện tập trung thiết kế hệ thống đánh giá và phân tích các động tác trong các bài tập Gym và Yoga để tối ưu sự hiệu quả trong các bài tập, tính toán lượng calo tiêu thụ cho người tập, hỗ trợ sắp xếp lịch trình tập luyện và thiết lập chế độ ăn, đồng thời cung cấp tính năng nhắn tin trao đổi với người hướng dẫn để giải đáp các vấn đề gặp phải.
Lý do chọn đề tài
Là sinh viên Ngành Công nghệ Kỹ thuật Máy tính trường Đại học Sư phạm
Kỹ thuật TP.HCM, đứng trước tình hình dịch bệnh diễn biến khó lường như hiện nay, với mong muốn đóng góp một phần nhỏ cho xã hội Nên nhóm đã tiến hành nghiên cứu và thực hiện đề tài “Hệ thống trí tuệ nhân tạo hỗ trợ tập Gym và Yoga tại nhà” Ứng dụng này sẽ hỗ trợ người tập tập luyện Gym và Yoga tại nhà, tránh việc phải di chuyển và tiếp xúc nhiều người.
Mục tiêu đề tài
Mục tiêu của đề tài này là thiết kế hệ thống hỗ trợ tập Gym và Yoga tại nhà đạt được các chức năng như: đánh giá độ chính xác của từng động tác, đếm số lần thực hiện động tác trong các bài tập Gym, đếm thời gian khi động tác được thực hiện đúng trong các bài tập Yoga, tính toán lượng calo tuỳ vào mục đích tăng cân hoặc giảm cân của người tập, xây dựng thời khoá biểu về tập luyện và chế độ dinh dưỡng, và trao đổi với người hướng dẫn thông qua nhắn tin.
Giới hạn đề tài
Nhóm tập trung thiết kế hệ thống phân tích động tác ở điều kiện một người tập và phải thấy rõ mặt và cơ thể của người tập Hệ thống tập trung vào các bài tập quan trọng của các nhóm cơ lớn trên cơ thể: tay, lưng, vai, bụng, … nên số lượng bài tập còn ít.
Phương pháp nghiên cứu
Nghiên cứu và xem xét các phương pháp “ước tính tư thế” trích xuất đặc trưng khung xương để đưa ra sự lựa chọn phù hợp cho hệ thống Tìm hiểu các đặc điểm và lợi ích của các bài tập từ các chuyên gia, từ đó sẽ là tiền đề để phân tích động tác Tìm hiểu các thuật toán hỗ trợ “ước tính tư thế” để lựa chọn thuật toán phù hợp cho hệ thống.
Đối tượng và phạm vi nghiên cứu
- Model phân tích chuyển động để ứng dụng trong việc phân tích tư thế của các động tác
- Nghiên cứu các động tác của Gym và Yoga.
- Nghiên cứu phát triển giao diện ứng dụng, dễ dàng thực thi.
- Nghiên cứu về lượng calo có trong thức ăn để ứng dụng trong việc thiết lập chế độ ăn uống phù hợp cho mục đích tập luyện.
1.6.2: Phạm vi nghiên cứu Đề tài được nghiên cứu dựa trên những kiến thức đạt được trong quá trình học ở trường, cộng với việc tham khảo các tài liệu có sẵn Hệ thống là một ứng dụng giúp người tập thực hiện các động tác thể dục một cách dễ dàng và chính xác Tập trung vào một số bài tập như: squat, hít đất, nâng tạ, và một số bài tập Yoga cơ bản Hỗ trợ người tập giao tiếp với người hướng dẫn thông qua nhắn tin, giúp người tập hạn chế đi lại.
Bố cục quyển báo cáo
Nội dung của bài báo cáo bao gồm các chương:
(Chương 1: Giới thiệu khái quát về đề tài nghiên cứu Mục tiêu, giới hạn và phạm vi của đề tài)
- Chương 2: Cơ sở lý thuyết
(Chương 2: Tìm hiểu cơ sở lý thuyết về model phân tích chuyển động, các phần mềm liên quan và lí thuyết về Vecto trong không gian, cũng như công thức tính calo)
- Chương 3: Thiết kế hệ thống
(Chương 3: Phân tích các động tác, sơ đồ khối, lựa chọn model nhận diện tư thế phù hợp, thiết kế ứng dụng và chức năng ứng dụng)
(Chương 4: Nêu các kết quả đạt được khi thực thi chương trình, sau đó phân tích các kết quả thực thi được, tiến hành khảo sát người dùng)
- Chương 5: Kết luận, hạn chế và hướng phát triển đề tài
(Chương 5: Tóm tắt những kết quả đạt được, những hạn chế của đề tài và nêu lên các hướng phát triển trong tương lai)
CƠ SỞ LÝ THUYẾT
Thư viện mã nguồn mở MediaPipe
MediaPipe [1] là một thư viện mã nguồn mở được nghiên cứu và phát triển bởi Google Nó cung cấp các giải pháp máy học đa nền tảng, hiện đang ở giai đoạn Alpha MediaPipe [1] được cung cấp miễn phí và hỗ trợ hoạt động trên nhiều nền tảng như: Window, Ubuntu, Mac, Google khẳng định rằng bộ công cụ này có thể chạy ổn định trên hầu hết các cấu hình phần cứng thông dụng. Chúng dễ dàng cài đặt và triển khai trên nhiều nền tảng khác nhau như Mobile (Android/iOS), Desktop/Cloud, Web và IOT devices Trên trang chủ MediaPipe, toàn bộ mã nguồn của dự án đều được công khai, người dùng có thể tải về sử dụng và tùy ý chỉnh sửa để phù hợp với dự án của bản thân Hiện nay MediaPipe đã có nhiều dự án cho các ứng dụng quan trọng trong thị giác máy tính như: phát hiện khuôn mặt, phân đoạn màu sắc, phát hiện đối tượng, mống mắt, tư thế, bàn tay,…Và đặc biệt trong thư viện MediaPipe [1], Model phân tích tư thế BlazePose [2] được nhóm thực hiện đề cập trong đề tài này.
BlazePose [2] bao gồm hai thành phần chính được mô tả ở hình 2.1.
- Pose Detector (máy phát hiện tư thế): có nhiệm vụ phát hiện ra vùng chứa đối tượng trên frame ảnh.
- Pose Tracker (máy theo dõi tư thế): có nhiệm vụ trích xuất ra các điểm keypoints quan trọng trong vùng chứa đối tượng từ ảnh, và khi đó sẽ dự đoán vị trí của đối tượng trong các frame ảnh tiếp theo.
Quy trình hoạt động của Pose Detector và Pose Tracker được trình bày chi tiết ở phần 2.1.3 và 2.1.4.
Hình 2.1 Sơ đồ theo dõi tư thế 2.1.3: Máy phát hiện tư thế - Pose Detector Để BlazePose [2] có hiệu suất nhận dạng cao, bao gồm các mô hình theo dõi và phát hiện tư thế, mỗi thành phần phải rất nhanh, chỉ sử dụng vài mili giây trên mỗi khung hình Để thực hiện điều này, tác giả quan sát thấy rằng tín hiệu mạnh nhất đối với trong việc nhận dạng là khuôn mặt của con người (do các đặc điểm trên khuôn mặt có độ tương phản cao và những thay đổi tương đối nhỏ về ngoại hình) Từ đó, Pose Detector (máy phát hiện tư thế) được lấy cảm hứng từ model BlazeFace [3] Khi model xác định thành công khuôn mặt, chúng sẽ dự đoán 2 điểm ảo để miêu tả trung tâm cơ thể được thể hiện ở hình 2.2 Sau đó sẽ xoay người theo phương thẳng đứng khi model Pose Detector detect thành công được mô tả ở hình 2.3.
Hình 2.2 Vùng ROI của Model BlazePose Hình 2.3 Vùng ROI của Model BlazePose khi xoay người theo phương thẳng đứng
2.1.4: Máy theo dõi tư thế - Pose Tracker
Việc theo dõi (tracking) các vị trí là phần quan trọng để theo dõi các chuyển động phục vụ cho việc phân loại các tư thế Nguyên tắc hoạt động để tối ưu thời gian cho model BlazePose là Pose Tracker (máy theo dõi tư thế) phải xác định được vị trí của người trong frame ảnh kế tiếp thì Pose Detector (máy phát hiện tư thế) sẽ không cần phải hoạt động lại, đồng thời kết quả dự đoán của Pose Tracker (máy theo dõi tư thế) sẽ luôn được sử dụng và chỉ phát hiện các điểm lại khi Pose Detector xác định sai.
Mạng Pose Tracking [2] được bao gồm hai phần chính là: Keypoints Detection (xác định vị trí các điểm trên cơ thể) và Part và Keypoints Regression Part (xác định vị trí các keypoints) Ở hình 2.4, phần Keypoints Detection Part là phần huấn luyện mạng bên trái và ở giữa, Keypoints Regression Part là ngõ ra của model và là phần mạng ở bên phải Đầu tiên, để huấn luyện Keypoints Detection Part sử dụng bản đồ nhiệt và bù đắp tổn thất (Heat maps + Offset maps) Tiếp theo, Keypoints Regression Part bắt đầu huấn luyện bằng cách chia sẻ các đặc điểm với Keypoints Detection Part Ngõ ra sẽ là 33 trọng điểm (keypoints) được mô tả như hình 2.5.
Hình 2.4 Quá trình huấn luyện của mạng Pose Tracking
Mô hình điểm mốc trong MediaPipe Pose [4] dự đoán vị trí của 33 cột mốc tư thế được thể hiện như hình 2.5 Ngõ ra là 33 điểm mốc tư thế với các mốc bao gồm các thông số x, y và z:
- Giá trị x, y: toạ độ các điểm mốc trên hình ảnh với x, y lần lượt tương ứng là chiều rộng và chiều cao.
- Thông số z: thể hiện độ sâu của mốc so với điểm mốc ở hông.
Hình 2.5 Các điểm landmark của Model BlazePose
2.1.6: Các thông số của Model Pose
Python là ngôn ngữ phổ biến nhất trong ML hiện nay, cho nên các nhà nghiên cứu của Google về MediaPipe cũng đã hỗ trợ Python API, dưới dạng thư viện là Mediapipe Chúng ta có thể sử dụng bằng cách import Mediapipe như một thư viện bình thường Model BlazePose [4] trong MediaPipe có một vài thông số quan trọng cần chú ý. static-image-mode (bool)
Nếu tham số truyền vào hàm static-image-mode là true thì mô hình xác định vị trí người sẽ chạy trên mọi frame ảnh mà không tracking nếu ảnh đầu vào là các hình ảnh không liên quan hoặc ảnh tĩnh.
Nếu tham số truyền vào hàm static-image-mode là false thì lúc này thuật toán sẽ mặc định đầu vào là luồng video Thuật toán theo dõi chỉ theo dõi lại vị trí của người mà không cần detect lại nếu thuật toán phát hiện xác định được vị trí của người tại một số keyframe Cho đến khi ngõ ra của model theo dõi ở dưới một ngưỡng nào đó thì việc xác định vị trí mới được thực hiện lại. smooth-landmarks (bool)
Khi static-image-mode ở trạng thái false thì smooth-landmarks mới được sử dụng: Tức là nó chỉ được sử dụng khi đầu vào là một luồng video và bắt đầu thực hiện theo dõi Ngược lại thì smooth-landmarks không sử dụng.
Nếu tham số truyền vào smooth-landmarks là true thì các điểm keypoint sẽ được lọc và làm giảm độ rung bởi thuật toán filter landmarks, giúp cho vị trí của các keypoint được ổn định trong từng frame ảnh Nếu tham số truyền vào smooth- landmarks là false thì thuật toán filter landmarks sẽ không được thực hiện. min-detection-confidence (float [0.0, 1.0])
Nếu ngõ ra của mô hình phát hiện lớn hơn hoặc bằng tham số này, thì được xem là phát hiện thành công các keypoints, và ngược lại Giá trị được thiết lập mặc định là 0.5. min-tracking-confidence (float [0.0, 1.0])
Nếu ngõ ra của mô hình theo dõi lớn hơn hoặc bằng tham số này, thì được xem là theo dõi thành công và ngược lại Giá trị được thiết lập mặc định là 0.5.
Góc giữa 2 vecto
Góc hợp giữa hai Vecto [5] trong không gian được định nghĩa tương tự như góc giữa hai Vecto trong mặt phẳng:
- Nếu tồn tại một Vecto bằng không, thì góc đó không xác định (góc bằng 0).
- Nếu 2 Vecto đều khác không, ta đưa về chung một góc để tính toán.
Gọi α là góc giữa hai vecto bất kì trong không gian Ta được các tính chất như sau:
- α = 0º: khi 2 vecto đó cùng chiều.
- α = 90º: khi 2 vecto đó vuông góc.
- α = 180º: khi 2 vecto đó ngược chiều.
2.2.3: Công thức tính góc giữa 2 vecto
Có rất nhiều phương pháp để tính góc giữa 2 vecto như công thức cos(α) (2.1) là tích vô hướng chia tích độ dài:
Tuy nhiên phương pháp tính góc cos(α) (2.1) chỉ thích hợp cho việc tính toán góc < 180º Còn muốn sử dụng góc 360º thì ta có thể dùng phương pháp tan (2.2). tan( ) =
Trong khi đó góc arctan được tính toán bằng radian trong phạm vi từ -π/2 đến π/
2 Theo công thức (2.2) sẽ xảy ra trường hợp chia cho 0, nếu cạnh kề (adjacent
= 0) Vì vậy, một hàm được gọi là atan2 [6] được ra đời cho phép xác định góc tại tham số x và y (tham số tọa độ thể hiện vị trí điểm) nhằm tránh trường hợp chia cho
0 và giá trị góc trả về là radian từ -π đến π Từ đó ta sẽ tính được các góc lớn hơn 180 độ Hình 2.6 là biểu diễn hình học cách tính góc của hàm atan2 trên các góc phần tư.
Hình 2.6 Hàm actan2 tính toán các góc phần tư
2.2.4: Ứng dụng Ở dự án này, nhóm thực hiện đã có được các toạ độ x, y, z từ Output của Model BlazePose Nhóm thực thiện sẽ tính toán góc độ từ các toạ độ đó Ví dụ, ở động tác cuộn tay trước ở hình 2.7, nhóm thực hiện đã tính toán được góc khuỷu tay cần phải nâng tạ lên là từ 310º đến 330º.
Hình 2.7 Tính toán góc trong động tác
2.3: PHẦN MỀM LẬP TRÌNH PYCHARM
Phần mềm lập trình Pycharm là sự lựa chọn của nhóm do sự tiện lợi của các công cụ hỗ trợ kèm theo.
PyCharm hỗ trợ các tính năng như: hoạt động trên nhiều nền tảng Windows, Linux và MacOS, hỗ trợ phát hiện lỗi một cách tự động giúp cho người lập trình dễ dàng chỉnh sửa, chức năng điều hướng mã giúp tiết kiệm thời gian soạn mã. Nhưng mà vẫn có một số ưu/nhược điểm khi sử dụng phần mềm lập trình này. Ưu điểm:
- Dễ dàng cài đặt Pycharm.
- PyCharm được tích hợp các tính năng của trình biên dịch như tự động hoàn thành và tô màu mã nguồn, báo lỗi
- Chỉ với cú nhấp chuột mã nguồn đã được mở.
- Tiết kiệm thời gian để phát triển dự án.
- Người sử dụng dễ dàng giải quyết vấn đề với tình năng đánh dấu lỗi.
- Tốc độ thực thi chương trình nhanh.
- Hỗ trợ nhiều phím tắt giúp người sử dụng thực thi dễ dàng với cú nhấp chuột.
- Tuỳ chỉnh dễ dàng với các biến toàn cục và biến cục bộ.
- Sử dụng PyCharm sẽ mất phí, đặc biệt với phiên bản nâng cao phí sẽ rất đắt, không phù hợp với những bạn sinh viên.
- Tính năng điều hướng mã sẽ sẽ khiến các lập trình viên mới quá phụ thuộc vào phần mềm.
- Xảy ra sự cố khi các công cụ như library, venv… bị thay đổi.
Phần mềm thiết kế giao diện ứng dụng
Có rất nhiều phần mềm thiết kế giao diện và đa dạng về ngôn ngữ như: Tkinter, Turtle, Kivy, … nhưng nổi bật hơn trên hết là QT Designer Phần mềm
QT Designer nổi bật với các ưu điểm là tương thích hỗ trợ giao diện trên windows, bố cục đơn giản, tùy biến dễ dàng và đặc biệt chuyển đổi python chỉ bằng 1 dòng lệnh Từ những đặc điểm nổi bật đó, nhóm thực hiện lựa chọn sử dụng công cụ QT Designer để viết giao diện cho hệ thống.
QT Designer hỗ trợ rất nhiều tính năng khác nhau như:
- Module GUI: Dùng để thiết kế ra các cửa sổ giao diện, tối ưu hóa trải nghiệm người dùng Đề tài của nhóm sẽ tập trung trên thành phần này.
- Module vẽ: Dùng để thiết kế hình dạng các cửa sổ ứng dụng(2D).
- Module mạng: Cung cấp các công cụ để thao tác với hệ thống Internet Có thể dùng để tạo ra ứng dụng như: nhắn tin, tải tệp, vv…
- Module SVG: Cho phép tạo ra các hình ảnh và vectơ minh họa.
- Module script: Qt cho phép quản lý nhiều loại ngôn ngữ khác.
- Module XML: Dùng để thao tác với các tệp tin được cấu trúc mạch lạc theo XML.
- Module SQL: Dùng để truy cập tới các cơ sở dữ liệu như MySQL, Oracle,
Tổng quan về GYM
2.5.1: Lịch sử ra đời của việc tập GYM
Khái niệm về gym được xuất hiện lần đầu tiên tại các nước Ba Tư vào khoảng 3000 năm trước Ban đầu, người dân chỉ tập gym để cải thiện sức khoẻ bằng những dụng cụ thô sơ, nhưng khi nền kinh tế phát triển các phòng tập gym bắt đầu thịnh hành nhằm phục vụ cho các thanh niên và vận động viên các nước
2.5.2: Lợi ích của việc tập GYM
Theo các chuyên gia, việc tập gym hằng ngày giúp con người sẽ giúp nâng cao sức khoẻ, giảm lo lắng, điều chỉnh tâm trạng và hạn chế các chứng bệnh trầm cảm Tập gym đem lại nhiều tác động có ích lên cơ, xương, huyết áp và tim mạch Nếu tập luyện đầy đủ các nhóm cơ trong cơ thể với tần suất 3 lần/tuần thì sẽ giảm được 15% rủi ro đau tim và 35% nguy cơ đột quỵ Các chuyên gia đã chỉ ra rằng, cơ thể sẽ trở nên béo phì và tích tụ mỡ, tác động lớn tới xương, tim mạch nếu cứ ngồi thụ động một chổ mà không vận động Do đó, cần tập luyện thể dục mỗi ngày để cơ thể đốt cháy được lượng calo thừa tích tụ trong cơ thể Cơ thể sẽ giảm cân hiệu quả nếu tập luyện với cường độ cao và đều đặn.
Với các bài tập nâng tạ, hít đất, gập bụng, … cộng với việc ăn uống đầy đủ,khoa học sẽ giúp phát triển cơ bắp và cải thiện độ săn chắc của các nhóm cơ nhờ khả năng hấp thụ các chất dinh dưỡng trong quá trình tập luyện và ăn uống.Thêm vào đó, việc tập thể dục đều đặn sẽ giúp khung xương trở nên cứng cáp,dẻo dai hơn, các khối cơ phát triển toàn diện và giảm thiểu các bệnh về xương khớp thúc đẩy quá trình phát triển chiều cao ở tuổi dậy thì.
Tổng quan về YOGA
2.6.1: Yoga là bộ môn thể thao như thế nào?
Yoga có nguồn gốc từ Ấn Độ từ khoảng 5000 năm trước, chúng là chuỗi các động tác tập luyện giúp tâm trí, cơ thể, suy nghĩ kết nối với nhau thông qua việc thiền định, kiểm soát hơi thở và tư thế thực hiện Bạn sẽ sở hữu một cơ thể dẻo dai nếu tập luyện yoga hằng ngày và sẽ là sự lựa chọn tối ưu để giúp bạn có một cuộc sống khoẻ mạnh, lạc quan, vui vẻ Mặc dù chỉ mới du nhập vào nước ta trong thời gian gần đây, nhưng yoga hiện đang nhận được rất nhiều sự quan tâm của người dân khi chúng mang lại rất nhiều lợi ích về tinh thần và sức khoẻ Nhiều nghiên cứu đã chỉ ra rằng, yoga thật sự có thể giúp kiểm soát suy nghĩ, cải thiện tâm trạng, giảm trầm cảm, cải thiện vóc dáng, làm chậm quá trình lão hoá và giúp ngủ ngon hơn. Ngoài ra, chúng còn giúp giảm đau và cải thiện tình trạng sức khoẻ.
2.6.2: Lợi ích của việc tập Yoga hằng ngày
Nhịp sống của chúng ta ngày một nhanh hơn khi xã hội ngày càng phát triển,điều này khiến hệ thần kinh, tâm trí và cơ thể bị kích động liên tục Yoga sẽ giúp làm giảm những kích động đó, đồng thời còn làm tăng sức bền, sự linh hoạt, dẻo dai và sự thăng bằng cho cơ thể Thêm vào đó, hệ tiêu hóa, tim mạch, hô hấp, tuần hoàn và xương khớp cũng được hưởng lợi từ hoạt động này Yoga đã và đang thực sự bùng nổ với nhiều lợi ích mà nó đem lại cho người tập như:
- Các khớp vận động tốt hơn
- Làm chậm quá trình lão hóa
- Tăng cường sức khỏe xương khớp
- Giúp giảm cân, cải thiện vóc dáng…
Ngoài những lợi ích bên ngoài cơ thể, tập luyện yoga hằng ngày còn giúp bạn giảm căng thẳng, tăng khả năng tập trung, cải thiện giấc ngủ từ các bài tập như thiền định, thở đều.
Tổng quan về calo
Calo hay được gọi là calories là đơn vị dùng để tính năng lượng có trong thực phẩm hằng ngày mà chúng ta cho vào cơ thể Lượng calories nạp vào cơ thể mỗi ngày và lượng calo đốt cháy thông qua tập luyện sẽ là yếu tố quyết định việc tăng hoặc giảm cân của bạn Nếu lượng calo nạp vào lớn hơn lượng calo đốt cháy thì bạn đang ở chế độ tăng cân và ngược lại Việc hiểu và tính toán được lượng calo hấp thụ sẽ là tiền đề giúp bạn tăng hoặc giảm trọng lượng cơ thể theo mong muốn của bản thân Sau đây là công thức tính lượng calo được đưa ra từ các chuyên gia, bạn có thể tham khảo và tuỳ chỉnh tuỳ vào nhu cầu của bản thân Dưới đây là công thức (2.3) tính lượng calo cần thiết cung cấp cho cơ thể mỗi ngày.
- TDDE là lượng calo cần thiết cung cấp cho cơ thể mỗi ngày.
- BMR là lượng calo nền phụ thuộc vào độ tuổi, giới tính, chiều cao, cân nặng.
Với T là tuổi, C là chiều cao (cm) và N là cân nặng (kg), R là chỉ số vận động.
- R = 1,375 đối với người vận động nhẹ (người tập luyện thể dục 1 – 3 lần/tuần).
- R = 1,55 đối với người vận động vừa (người tập luyện thể dục 3 – 5 lần/tuần).
- R = 1,725 đối với người vận động nặng (người vận động thường xuyên, tập luyện thể dục từ 6 – 7 lần/ tuần).
Socket
Socket là điểm cuối của kết nối hai chiều giữa hai chương trình chạy trên hệ thống mạng Socket cung cấp giao tiếp FIFO hai chiều qua mạng Một socket kết nối với mạng được khởi tạo ở điểm đầu của mỗi giao tiếp Mỗi socket đều có một địa chỉ Địa chỉ này bao gồm địa chỉ IP và port.
Trên thực tế, socket được sử dụng trong máy chủ của khách hàng Máy chủ tạo một socket, gắn nó vào địa chỉ port mạng và đợi khách hàng kết nối Khách hàng sẽ tạo một socket và sau đó kết nối đến socket của server Khi kết nối được thiết lập thì quá trình truyền dữ liệu được diễn ra Quá trình đó được thể hiện như hình 2.8.
Hình 2.8 Mô hình socket server-client
THIẾT KẾ HỆ THỐNG
Yêu cầu của hệ thống
Với ý tưởng phát triển một ứng dụng có khả năng đánh giá mức độ chính xác của động tác, đưa ra đề xuất tư thế đúng cho người tập thì hệ thống có một số yêu cầu sau:
- Hệ thống phát hiện được người và theo dõi các chuyển động của người tập.
- Hệ thống có thể đếm số lần thực hiện đúng các động tác: Squat, hít đất, nâng tạ, cuộn tay trước…
- Phân tích động tác vai và các bài tập yoga cơ bản.
- Trao đổi thông qua message.
- Sắp xếp lịch trình tập luyện.
- Tính toán lượng calo tuỳ vào nhu cầu của người tập.
3.1.2: Sơ đồ khối và chức năng từng khối
Sơ đồ khối có 6 khối chính được mô tả chi tiết ở hình 3.1:
- Khối tiếp nhận hình ảnh (Camera): có nhiệm vụ đọc hình ảnh trực tiếp từ camera.
- Khối nhận diện: có nhiệm vụ trích xuất đặc trưng khung xương
- Khối Server: quản lý và kiểm soát tất cả các máy kết nối tới server, xử lý toàn bộ dữ liệu được truy cập.
- Khối phân tích xử lý: phân tích động tác dựa trên khung xương đã trích xuất và đưa ra quyết định đúng hoặc sai.
- Khối ứng dụng tương tác: có giao diện với chức năng tương tác người tập.
- Khối lưu trữ: lưu trữ dữ liệu tập luyện và thông tin cá nhân của người tập.
3.1.3: Chức năng của hệ thống
Nhằm mang lại những cải thiện tốt nhất về sức khỏe cho người tập, hệ thống được phát triển trên các tính năng phổ biến như:
- Hệ thống có tính năng đếm số lần thực hiện đúng động tác.
- Đánh giá độ chính xác của động tác, gợi ý tư thế đúng cho người tập.
- Sắp xếp lịch trình luyện tập và chế độ ăn uống cho các bữa ăn.
- Tính toán lượng calo cần thiết, tuỳ vào mục đích của người tập.
- Trao đổi với người hướng dẫn thông qua message.
- Kết hợp các bài tập Yoga, giúp thư giãn, tạo sự dẻo dai cho cơ thể.
- Kết hợp các bài tập Gym, giúp tăng/giảm cân và tăng sức đề kháng cho cơ thể.
Khối tiếp nhận hình ảnh
Khối tiếp nhận hình ảnh là khối có chức năng đọc các giá trị điểm ảnh từ môi trường Khi các điểm ảnh trong các điều kiện ánh sáng khác nhau thì các giá trị thu được sẽ khác nhau Tùy thuộc vào chất lượng hình ảnh đọc từ camera thì khả năng hoạt động chính xác của hệ thống càng cao và ngược lại Trong quá trình hoạt động, các frame ảnh được đọc từ camera sẽ liên tục gửi đến khối phân tích xử lí để tính toán và hiển thị.
Trên thực tế, ứng dụng thường được sử dụng trong môi trường có ánh sáng tốt và không quá ràng buộc về chất lượng hình ảnh Cho nên nhóm thực hiện đã kiểm nghiệm và quyết định sử dụng camera trên laptop với độ phân giải 720px cho bài toán này.
Khối nhận diện
Khối nhận diện là khối có nhiện vụ phát hiện và nhận diện khung xương trên cơ thể phục vụ cho việc tính toán góc độ tại các vị trí trong điểm nhằm phân tích tư thế đúng hoặc sai Với sự phát triển của các model phát hiện tư thế thì OpenPose là model phổ biến nhất Việc xác định model phù hợp, tương thích với nhiều nền tảng và đạt độ chính xác cao là các vấn đề cần quan tâm khi lựa chọn model cho khối nhận diện này Cho nên nhóm thực hiện tiến hành so sánh 2 mô hình về phát hiện tư thế hiện nay đó là Open Pose và BlazePose để lựa chọn model phù hợp nhất với hệ thống.
3.3.1: So sánh về độ phân giải
Như hình 3.2, khi tăng độ phân giải ảnh đầu vào thì tốc độ xử lý của OpenPose sẽ bị ảnh hưởng Thêm vào đó khi tăng độ phân giải ảnh đầu vào thì cũng làm cho yêu cầu xử lý của CPU tăng cao Chính vì lý do này việc sử dụng Openpose với độ phân giải 1280x720 px là không thể với phần cứng của nhóm thực hiện.
Hình 3.2 FPS của OpenPose và BlazePose
3.3.2: So sánh OpenPose và BlazePose về tốc độ xử lý Để mang lại những trải nghiệm tốt nhất cho người dùng, nhóm thực hiện đã thực hiện các kiểm nghiệm về tốc độ xử lý và độ chính xác của các model Từ các kết quả thu được từ bảng 3.1, nhóm thực hiện đối chiếu với mục tiêu đặt ra và đưa ra quyết định về việc sử dụng model nào cho hệ thống.
Phương Thông số phần FPS Kết quả chạy thực tế pháp cứng CPU
OpenPose Win 10, Intel 1.2 (Video) core@ 2.00 Ghz, 0.4~0.9
BlazePose Win 10, Intel 30 (Video) core@ 2.0Ghz, 16~21
Bảng 3.1 So sánh tốc độ xử lý giữ OpenPose với BlazePose
Từ kết quả so sánh bảng 3.1, tốc độ xử lý BlazePose nhanh và vượt trội hơn OpenPose khi chạy thời gian thực Bên cạnh đó với yêu cầu của ứng dụng thì OpenPose không thể đáp ứng.
Như hình 3.3A, các điểm chính trên khung xương của BlazePose không phải lúc nào cũng khớp với khung xương trung tâm Điều này xảy ra là khi người di chuyển giữa các khung hình, môi trường có độ tương phản cao hoặc có nhiều đối tượng khác xuất hiện trong khung ảnh.
Kết quả việc ứng dụng OpenPose được thể hiện như hình 3.3B trong phát hiện các điểm trên cơ thể tương đối tốt nhưng chưa thật sự hài lòng bởi vì tốc độ xử lý trên OpenPose chậm hơn BlazePose Nó mất một thời gian rất dài để xử lý video và tiêu tốn nhiều năng lượng tính toán.
Hình 3.3A Kết quả trích xuất khung xương của BlazePose
Hình 3.3B Kết quả trích xuất khung xương của OpenPose
Kết luận: So về độ chính xác thì OpenPose chênh lệch so với BlazePose không đáng kể Tuy nhiên so về tốc độ xử lý và độ trễ thì BlazePose hoàn toàn chiếm ưu thế hơn Bên cạnh đó, xét về tính chất của dự án thì không đòi hỏi độ chính xác cao như các dự án trong y tế Chính vì thế, nhằm đáp ứng tốt trải nghiệm cho người dùng, nhóm thực hiện đã quyết định sử dụng mô hìnhBlazePose của MediaPipe để phát triển để tài.
Khối server
Khối server là khối trung gian xử lý và tiếp nhận các gói tin được gửi từ client. Chính vì vậy, khối server cần phải hoạt động và lắng nghe kết nối liên tục Mỗi lần người dùng kết nối, một luồng riêng sẽ được tạo ra cho người dùng đó Tại mỗi luồng, server sẽ lắng nghe và gửi đi thông báo tới những client trong đoạn chat.
3.4.1: Quá trình truyền/nhận gói tin
Bắt đầu quá trình kết nối socket, server sẽ khởi tạo địa chỉ IP và port kết nối bằng bind (IP, port) Sau khi khởi tạo socket, server sẽ liên tục lắng nghe kết nối từ client Khi client gửi yêu cầu kết nối tới server và được server chấp nhận thì quá trình bắt tay ba bước sẽ được diễn ra Client gửi gói tin được đóng gói theo giao thức nhận về lại client Sau khi client nhận gói tin từ server, client sẻ gửi lại gói tin kết thúc close () tới server Quá trình truyền/nhận kết thúc Tất cả quá trình này được mô tả chi tiết ở hình 3.4.
Hình 3.4 Quá trình truyền/nhận gói tin
3.4.2: Các bước cấu hình port-forwarding
Trong tính năng nhắn tin của ứng dụng, để quá trình gửi/nhận giữa hai người thì cần có server trung gian xử lý gói tin Tuy nhiên, do vấn đề chi phí nên server được đặt ở địa chỉ riêng tư ở trong mạng nội bộ Chính vì vậy việc giao tiếp giữa hai mạng là không thể Lúc này nhóm thực hiện sử dụng phương pháp cổng chuyển tiếp để giải quyết vấn đề.
Cổng chuyển tiếp thiết lập các dịch vụ công khai trên mạng nội bộ như web server, FTP server hoặc những ứng dụng internet khác…Khi người dùng gửi request tới mạng nội bộ thông qua internet, router sẽ gửi gói tin đó tới một máy tính cụ thể Quá trình truyền gói tin thông qua Internet được thể hiện ở hình 3.5.
Hình 3.5 Quá trình chuyển tiếp cổng
Quá trình cấu hình cổng chuyển tiếp bao gồm 3 bước:
- Bước 1: Truy cập Router với địa chỉ gateway của mạng Sau đó đăng nhập bằng account và user của router.
- Bước 2: Chọn cổng chuyển tiếp.
- Bước 3: Cấu hình router theo port của dịnh vụ và địa chỉ ip của server:
− Cổng dịch vụ: là port được sử dụng cho ứng dụng nằm trong khoảng 0-65353.
− Địa chỉ IP: Là địa chỉ IP local của server.
− Giao thức: Là gia thức được sử dụng cho dịch vụ, có thể là TCP hoặc UDP.
Lưu ý: Ngoài việc cấu hình port-forwarding thì các thiết bị truyền/nhận cần phải tắt tường lửa để nhận gói tin.
Tất cả các bước này được mô tả chi tiết lần lượt ở hình 3.6, 3.7 và 3.8.
Hình 3.7 Chọn cổng chuyển tiếp
Khối phân tích xử lý
Khối xử lý sẽ gồm những nhiệm vụ sau:
- Với mỗi frame ảnh được đọc từ camera, khối xử lý sẽ phải phân tích và kết nối các điểm trên cơ thể thành các vecto để tính toán các thông số góc tương ứng với từng bài tập.
- Với các thông số góc được tạo thành từ các điểm, khối xử lý sẽ so sánh với các góc chuẩn và đưa ra kết luận là tập đúng hay sai.
- Nhận và giải mã các gói tin dữ liệu từ khối server gửi đến.
- Tính toán lượng calo cần thiết dựa vào các số liệu có sẵn.
Tham khảo các động tác chuẩn từ chuyên gia Từ đó, nhóm thực hiện sẽ có các góc chuẩn cho từng động tác, là tiền đề quan trọng để so sánh các ảnh đầu vào Chi tiết việc phân tích góc trong các động tác được nhóm thực hiện giới thiệu ở phần tiếp theo.
Từ những động tác chuẩn từ huấn luyện viên cá nhân, nhóm thực hiện đã xác định được các góc chuẩn của từng động tác.
Hình 3.9 Phân tích góc đơn trong bài tập Squat hiện đã có được các toạ độ điểm trên cơ thể Từ những toạ độ đó, nhóm thực hiện liên kết và tính toán góc hợp bởi các điểm bằng phương pháp như đã nêu ở phần 2.2.
Nhóm thực hiện sẽ dựa vào đặc điểm của từng động tác mà có phương pháp tính toán góc độ khác nhau Trong trường hợp ở động tác Squat đã nêu ở trên, nhóm thực hiện sẽ tiến hành theo dõi người tập tại vị trí khuỷu chân Giá trị tại góc ở khuỷu chân sẽ thể hiện động tác đó đã chuẩn hay chưa Những số liệu từ bảng
3.2 và bảng 3.3 đều được căn cứ, đối chiếu, so sánh trong các video luyện tập từ các chuyên gia hướng dẫn từng động tác trên.
Tên bài tập Ngực trước Cuộn tay trước Hít đất Gập bụng
Góc tại vị Vai Khuỷu tay Khuỷu tay Hông trí (290,340) Trái: (30,120) Trái: (150,180) (290,340)
Bảng 3.2 Các góc trọng điểm của từng bài tập GYM
Tên bài tập Gập bụng Squat Tay sau Plank dưới
Góc tại vị Hông Khuỷu chân Khuỷu tay Khuỷu tay trí (190,240) (190,260) Trái: (80,130) (200,220)
Bảng 3.3 Các góc trọng điểm của từng bài tập GYM Bảng 3.2 và bảng 3.3 thể hiện các góc cần quan tâm trong các bài tập Cách đọc bảng 3.2 và bảng 3.3 rất đơn giản, ví dụ “động tác Squat” ta sẽ quan tâm góc ở vị trí khuỷu chân và nó sẽ có biên độ dao động từ 190 độ đến 260 độ Các động tác khác cũng đọc tương tự như vậy.
3.5.2.2: Động tác Yoga Đối với các động tác Yoga cần chính xác trong nhiều vị trí khác nhau Ta nên phân tích tổ hợp góc để xác định tư thế chuẩn.
Tên bài Tư thế con thuyền Plank tay thấp Động tác con rắn tập
Bảng 3.4 Các góc trọng điểm của từng bài tập Yoga
Tên bài Động tác chiến binh Động tác cái cây Động tác tam giác tập
Bảng 3.5 Các góc trọng điểm của từng bài tậpBảng 3.4 và bảng 3.5 thể hiện các góc cần quan tâm trong các bài tập Những số
25 tay(P) có biên độ dao động từ 185 độ đến 195 độ và vị trí tại hông(P) có biên độ dao động từ 250 độ đến 260 độ Các động tác khác cũng đọc tương tự như vậy.
Khối ứng dụng tương tác
Khối tương tác là một đối tượng không thể thiếu trong hầu hết các ứng dụng, nó giúp hiển thị và tương tác trực tiếp với người dùng Đơn giản hóa các chức năng của hệ thống thông qua các nút nhấn, checkbox, label…Ngoài ra với sự kết hợp hài hòa giữa màu sắc và bố cục của giao diện mang lại sự tiện nghi cho người dùng Hiện nay có nhiều thư viện hỗ trợ phát triển giao diện đồ họa trên python như tkinker, Kivy, Wxpython… Tuy nhiên Pyqt là lựa chọn của nhóm thực hiện trong đề tài này do PyQT có sẵn cho Unix / Linux, Windows, Mac OS… Nó kết hợp những gì tốt nhất của Python và Qt,S tùy thuộc vào người thiết kế sẽ lựa chọn viết code hay sử dụng Qt designer để tạo các hộp thoại.
Kéo thả các đối tượng từ thanh công cụ bên trái vào vùng thiết kế được mô tả ở hình 3.10 Đối với các thuộc tính về kích thước, màu sắc, hình ảnh, định dạng chữ… Người thiết kế có điều chỉnh trực tiếp thông qua bảng điều chỉnh thuộc tính trên giao diện Sau khi thiết kế xong, thực hiện lệnh “pyuic5 -x {your ui file.ui} - o {output py file.py}” để chuyển đổi file giao diện có dạng đuôi ui thành đuôi py Đối với file hình ảnh thì thực hiện lệnh “Pyrcc5 {your ui file.qrc} -o {output py file.py}”.
Hình 3.10 Giao diện thiết kế Pyqt5
Khối lưu trữ
Khối lưu trữ là khối dùng để lưu lại các dữ liệu liên quan đến người tập Việc lưu trữ này giúp cho người tập dễ dàng quản lí được quá trình tập luyện và ăn uống khi sử dụng ứng dụng Trong ứng dụng này, nhóm thực hiện sử dụng firebase để lưu trữ những thông tin về tài khoản/mật khẩu người tập Ngoài ra các thông tin về calo và cơ sở dữ liệu về món ăn sẽ được lưu vào file text và database trên máy tính.
Lưu đồ giải thuật
Sau khi đã xác định được các chức năng chính của đề tài, nhóm thực hiện đưa ra lưu đồ giải thuật của hệ thống được miêu tả như hình 3.11.
Hình 3.11 Lưu đồ giải thuật
Lưu đồ được miêu tả ở hình 3.11, bắt đầu từ việc lựa chọn chế độ tuỳ vào mục đích của người tập Khi người tập chọn chế độ tập luyện và bắt đầu sử dụng,hình ảnh sẽ được lấy trực tiếp từ camera, hệ thống sẽ bắt đầu trích xuất đặc trưng khung xương của người tập Sau đó, sẽ tiến hành xử lí và so sánh khung xương mới được trích xuất với bộ dữ liệu khung xương ban đầu để đưa ra quyết định tương ứng Nếu khung xương đó độ trùng khớp hơn 90%, thì hệ thống sẽ phân loại tư thế đó là đúng và tiến hành thực hiện các chức năng như đếm số rep cho các bài tập Gym và đếm thời gian cho các bài tập Yoga Nếu tư thế sai thì hệ thống sẽ đề xuất vị trí đúng để người tập dễ dàng điều chỉnh lại tư thế cho phù hợp với bài tập Khi người tập chọn chế độ thời khoá biểu, hệ thống sẽ hỗ trợ người tập thiết lập lịch trình tập luyện hoặc lịch trình ăn uống Với việc thiết lập lịch trình tập luyện, người tập có thể thiết lập ba bài tập trong một ngày và linh hoạt thời gian tập luyện cho 6 ngày trong tuần Còn với lịch trình ăn uống, người tập có thể thiết lập ba buổi ăn trong một ngày Thêm vào đó, hệ thống còn có thể tính toán lượng calo trong các món ăn, hỗ trợ người tập dễ dàng hơn trong việc lựa chọn các món ăn tương ứng với mục đích tăng/giảm cân Khi cần trợ giúp,người tập có thể nhắn tin trao đổi với người hướng dẫn.
KẾT QUẢ THỰC NGHIỆM
Kết quả hoạt động của hệ thống
Màn hình đăng nhập: Màn hình đăng nhập là giao diện hiển thị chức năng đăng nhập vô account của mỗi user Mỗi user sẽ được cấp một account để lưu trữ các thông tin cá nhân về giới tính, chiều cao, cân nặng…Giao diện đăng nhập được thể hiện ở hình 4.1.
Hình 4.1 Giao diện đăng nhập
Giao diện màn hình chính: Sau khi đăng nhập thành công, giao diện màn hình chính sẽ được hiển thị Tại màn hình chính, các nút nhấn để lựa chọn các chức năng tuỳ vào mục đích của người tập Ở giữa sẽ hiển thị lượng calo tiêu chuẩn của một người khi cập nhập thông tin vào mục thông tin cá nhân, và lượng calo tiêu chuẩn sẽ hiển thị ở mục “Standard” Dựa vào lượng calo tiêu chuẩn đó, người tập có thể thiết lập chế độ ăn uống phù hợp với mục đích tăng cân hoặc giảm cân Lượng calo tiêu thụ sẽ hiển thị ở mục “KCAL” Người tập có thể chọn các chế độ có sẵn tuỳ vào mục đích của người tập Giao diện chính được thể hiện như hình 4.2.
Hình 4.2 Giao diện màn hình chính
Chế độ thiết lập lịch trình tập luyện: chế độ này sẽ hỗ trợ người tập thiết lập lịch trình tập luyện của bản thân Nhằm mang lại sự thuận lợi và linh hoạt về thời gian của người tập thì hệ thống có khả năng chỉnh sửa và cập nhật các bài tập phù hợp với mục đích và thời gian của người tập Thời khóa biểu tập luyện bao gồm 6 ngày, mỗi ngày tập tương ứng với ba nhóm cơ Người tập có thể bấm chọn vào các danh mục hình ảnh để thay đổi các bài tập Sau khi chỉnh sửa, mọi dữ liệu về lịch tập sẽ được lưu lại vào cơ sở dữ liệu Chế độ thiết lập lịch trình tập luyện được mô tả chi tiết ở hình 4.3.
Hình 4.3 Giao diện lịch trình tập luyện
Chế độ thiết lập chế độ dinh dưỡng: chế độ này sẽ giúp người tập thiết lập lịch trình ăn uống của bản thân Người tập sẽ dựa vào lượng calo tiêu chuẩn của bản thân để thiết lập chế độ ăn uống phù hợp với mục đích tăng cân hoặc giảm cân Thời khoá biểu dinh dưỡng bao gồm 3 buổi: sáng, trưa và tối Người tập chỉ cần “click” vào món ăn đã được thiết lập sẵn, hệ thống sẽ tự tính toán lượng calo của từng món ăn đó Người tập có thể chỉnh sửa những món ăn đã chọn, mọi dữ liệu vể lịch trình ăn uống sẽ được lưu vào cơ sở dữ liệu Thiết lập chế độ dinh dưỡng được mô tả chi tiết ở hình 4.4 và hình 4.5.
Hình 4.4 Giao diện chế độ dinh dưỡng
Hình 4.5 Giao diện chọn món ăn
Thiết lập thông tin cá nhân: chế độ này cần người tập cung cấp thông tin của bản thân gồm: tên, tuổi, chiều cao và cân nặng Từ những thông tin mà người tập cung cấp, hệ thống sẽ tính toán ra lượng calo tiêu chuẩn của người tập theo công thức từ các chuyên gia Thiết lập thông tin cá nhân được mô tả chi tiết ở hình 4.6.
Hình 4.6 Giao diện thông tin cá nhân
Chế độ nhắn tin: chế độ này hỗ trợ người tập trao đổi với người hướng dẫn thông qua tin nhắn Giúp cho người tập giải quyết được các vấn đề gặp phải trong quá trình tập luyện Chế độ nhắn tin được mô tả chi tiết ở hình 4.7.
Hình 4.7 Giao diện nhắn tin
Chế độ tập GYM: chế độ này hỗ trợ người tập đếm số lần thực hiện động tác đúng trong các bài tập Ở chế độ tập Gym sẽ bao gồm các bài tập: cuộn tay trước, squats, gập bụng dưới, chống đẩy, tay sau, hít đất, gập bụng và ngực trước. Khung giao diện được mô tả chi tiết ở hình 4.8, bên trái sẽ có combobox để lựa chọn các bài tập mà mình mong muốn Ở giữa sẽ là hình ảnh được lấy trực tiếp khi tập và cũng là nơi để thể hiện vị trí quan tâm khi tập từng động tác, kế bên sẽ có thanh biên độ hiển thị phần trăm biên độ dao động của động tác Hệ thống có hình ảnh minh họa ở góc phải màn hình, hình này có chức năng hướng dẫn người tập thực hiện động tác và đặc biệt hệ thống có khung đếm số rep để hiển thị số rep đạt được của người tập Các bài tập ở chế độ đếm rep lần lượt được mô tả ở hình 4.9, hình 4.10, hình 4.11, hình 4.12, hình 4.13, hình 4.14 và hình 4.15.
Hình 4.8 Giao diện chế độ tập GYM
Hình 4.9 Đếm số Rep cho động tác cuộn tay trước
Hình 4.11 Đếm số Rep cho động tác hít đất
Hình 4.12 Đếm số Rep cho động tác gập bụng dưới
Hình 4.13 Đếm số Rep cho động tác gập bụng
Hình 4.14 Đếm số Rep cho động tác Squat
Hình 4.15 Đếm số Rep cho động tác ngực trước
Chế độ phân tích: đây là chế độ phân tích động tác đúng hoặc sai Ở chế độ này, hệ thống sẽ có thêm tính năng đề xuất vị trí góc tập đúng, và phân tích các góc tập sai cho bài tập vai “Dumbbell shoulder press” Hình 4.16 là phần đếm số rep cho động tác đúng trong bài tập vai Nếu người tập để vị trí sai khi tập thì hệ thống sẽ cảnh báo và khuyến nghị vị trí đúng cho người tập, được minh họa như hình 4.17 Từ đó người tập có thể nhìn ra vị trí sai và dễ dàng thay đổi góc độ đặt tay, giúp bài tập vai quả hơn và tránh chấn thương khi tập.
Hình 4.16 Phân tích và đếm rep động tác vai
Hình 4.17 Phân tích động tác vai sai
Chế độ tập YOGA: Ở chế độ Yoga người tập sẽ được trải nghiệm các bài tập Yoga cơ bản như là: “động tác chiến binh” hình 4.18, “động tác cái cây” hình 4.19, “bài tập tam giác” hình 4.20, “bài tập Plank tay cao” ở hình 4.21, “bài tập Plank tay thấp” ở hình 4.22, “động tác con thuyền” ở hình 4.23 và “bài tập con rắn” ở hình 4.24 Người tập có thể chọn các bài tập Yoga ở thanh chọn, và cài đặt thời gian cho các động tác Hệ thống sẽ đếm thời gian nếu người tập tập đúng động tác và sẽ reset về 0 nếu tập sai Các bài này sẽ giúp cơ thể có độ dẻo dai, thăng bằng tốt, thư giãn tâm trí, trao đổi chất hiệu quả.
Hình 4.18 Bài tập chiến binh
Hình 4.19 Bài tập cái cây
Hình 4.20 Bài tập tam giác
Hình 4.21 Bài tập Plank tay cao
Hình 4.22 Bài tập Plank tay thấp
Hình 4.23 Bài tập con thuyền
Hình 4.24 Bài tập con rắn
Đánh giá hệ thống
Để đánh giá tổng quan về ứng dụng, nhóm thực hiện đã thực hiện kiểm nghiệm các bài tập trên máy tính có cấu hình thông dụng và thực hiện khảo sát trải nghiệm của 20 người dùng về giao diện và chức năng Kết quả được thể hiện như bảng 4.1 và đồ thị trong hình 4.2 Quá trình này theo dõi độ tin cậy của ứng dụng trong quá trình nhận diện, đồng thời đánh giá tài nguyên được sử dụng cho việc tính toán và xử lý.
Các bài tập Số lần thực Số lần nhận Số lần nhận hiện diện dúng diện sai CPU
Bảng 4.1 Giá trị kiểm nghiệm của các động tác
Hình 4.25 Biểu đồ tỉ lệ chính xác của từng động tác
Chạy thực nghiệm ứng dụng trên chip intel core I7 2.0Ghz, hệ thống hoạt động ổn định với hiệu năng CPU ở mức độ 42-48% cho các động tác Dựa vào bảng 4.1 và hình 4.25, hệ thống vẫn còn xảy ra hiện tượng nhận diện sai do ảnh hưởng của các góc camera và điều kiện môi trường Với động tác Yoga, xảy ra hiện tượng nhận diện sai nguyên nhân là do độ dốc từ camera khi nhận diện,nhiều trường hợp khi hạ thân người xuống, camera không nhìn rõ mặt, nên xảy ra hiện tượng lỗi được thể hiện ở hình 4.26 Như đã đề cập ở trên, BlazePose đôi lúc detect nhầm các đồ vật như trong hình 4.27 Chính vì vậy, yếu tố background cũng là một phần ảnh hưởng tới độ chính xác của hệ thống.
Hình 4.27 Hệ thống nhận diện lỗi
- Hệ thống hoạt động tốt, đạt 90% độ chính xác trong điều kiện môi trường thuận lợi.
- FPS đạt 18 khung hình trên giây, giảm thiểu sự giật lag của hệ thống khi hoạt động trên nền tảng Windows.
- Tốc độ nhận diện nhanh.
- Hệ thống nhận dạng dễ bị nhiễu nếu có các vật cản xung quanh hoặc mặt bị che khuất.
- Thời gian khởi động hệ thống chỉ khoảng 2 giây.
- Các tin nhắn được truyền với tốc độ khoảng 200ms đến 500ms.
- Lịch trình tập luyện và chế độ ăn uống được thiết lập dễ dàng, đơn giản chỉ với “click” chuột.
- Lượng calo có trong thực phẩm được tính toán chính xác.
Khảo sát ý kiến người sử dụng ứng dụng
Nhóm thực hiện đã tiến hành thực hiện khảo sát 20 người trải ngiệm sử dụng ứng dụng, đối tượng sử dụng chủ yếu là sinh viên với mong muốn lấy ý kiến người dùng để hoàn thiện hệ thống Nội dung khảo sát tập trung vào sự cảm nhận về giao diện cũng như chức năng của hệ thống.
Hình 4.27 Khảo sát về giao diện và trải nghiệm hoạt động của ứng dụng
Hình 4.29 Cảm nhận chung về ứng dụng
Kết quả khảo sát từ hình 4.28 cho thấy ứng dụng đạt 90% độ hài lòng về giao diện của người sử dụng, và số ít (10%) được cho là giao diện còn đơn giản Về quá trình sử dụng hệ thống, 98% đánh giá rằng hệ thống hoạt động ổn định, độ chính xác cao, và cũng ghi nhận các trường hợp bị nhiễu dẫn đến nhận diện sai Nguyên nhân là do xuất hiện nhiều người cùng một lúc và một phần cũng do ánh sáng làm giảm độ chính xác khi nhận diện Nhìn chung, cảm nhận của người dùng về ứng dụng là rất tích cực từ những kết quả ghi nhận được ở hình 4.29 Có tới 95% đánh giá là ứng dụng dễ dàng sử dụng và đạt 100% về sự hữu ích của chúng Sau quá trình thực hiện khảo sát, nhóm thực hiện đã nhận được nhiều đóng góp ý kiến từ người trải nghiệm, là sơ sở để nhóm cải thiện hệ thống ngày một tốt hơn.