Giới thiệu dự án

Sự bùng nổ của cuộc cách mạng công nghiệp 4.0 cùng sự phổ cập của thiết bị di động thông minh đã thúc đẩy mạnh mẽ xu hướng ứng dụng công nghệ vào theo dõi và chăm sóc sức khỏe cá nhân. Theo các thống kê từ ngành công nghiệp thể dục thể hình số (Digital Fitness Industry), nhu cầu rèn luyện thể chất tại nhà tăng trưởng hơn 46% sau các đợt giãn cách xã hội do đại dịch Covid-19. Tuy nhiên, việc tự tập luyện thể hình (Fitness/Gym) tại nhà mà không có sự giám sát của huấn luyện viên chuyên nghiệp (Personal Trainer - PT) tiềm ẩn nguy cơ chấn thương xương khớp nghiêm trọng do sai lệch tư thế, đồng thời làm giảm hiệu suất đốt cháy năng lượng calo.

Thực trạng cho thấy phần lớn các ứng dụng tập luyện phổ biến trên thị trường (như các ứng dụng tập không dụng cụ, bài tập thử thách 30 ngày) chỉ dừng lại ở mức phát video hướng dẫn một chiều hoặc đếm thời gian thụ động. Người tập không thể biết động tác của mình đã đạt chuẩn biên độ chuyển động hay chưa. Xuất phát từ bài toán thực tế đó, đề tài "Ứng dụng hỗ trợ tự tập gym dựa trên trí tuệ nhân tạo" (AI-based Fitness Self-training Application) được nghiên cứu và phát triển bởi sinh viên ngành Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (dưới sự hướng dẫn của TS. Nguyễn Thanh Bình) nhằm mang đến một giải pháp trợ lý tập luyện thông minh, tự động nhận diện và đánh giá tư thế tập thời gian thực ngay trên smartphone.

Mục tiêu đề tài

  1. Nghiên cứu và triển khai mô hình Human Pose Estimation: Ứng dụng mô hình mạng nơ-ron tích chập nhẹ (PoseNet/TensorFlow Lite) chạy trực tiếp trên thiết bị di động (On-device Edge AI) để trích xuất 17 điểm đặc trưng cơ thể (Keypoints) theo thời gian thực (Real-time).
  2. Xây dựng thuật toán phân đoạn và đánh giá động tác: Thiết lập giải pháp đường biên phân đoạn (Segment Line) gồm Top Line ($T$) và Bottom Line ($B$) kết hợp điểm nhận diện (Recognition Points) để tự động kiểm tra tư thế chuẩn bị, theo dõi quỹ đạo chuyển động và đếm số lần hoàn thành (Reps) của các bài tập: Squats, Push-ups, Lunges và Crunches.
  3. Mô hình hóa định lượng tiêu hao năng lượng: Xây dựng công thức tính toán lượng calo tiêu thụ dựa trên chỉ số đương lượng trao đổi chất MET (Metabolic Equivalent of Task) kết hợp cân nặng và thời gian thực hiện bài tập.
  4. Phát triển ứng dụng di động hoàn chỉnh: Sử dụng Flutter SDK kết hợp dịch vụ điện toán đám mây Firebase (Authentication, Cloud Firestore, Cloud Storage) để cung cấp trải nghiệm xuyên suốt: quản lý bài tập, theo dõi lịch sử, phân tích mức độ tác động nhóm cơ và nhắc nhở tập luyện.

Phạm vi và giới hạn

  • Phạm vi động tác: Tập trung phân tích chuyên sâu 4 nhóm bài tập thể hình trọng lượng cơ thể (Bodyweight Exercises) phổ biến: Squats, Lunges, Push-ups, Crunches.
  • Môi trường hoạt động: Ứng dụng chạy trên hệ điều hành Android/iOS thông qua camera trước (Front Camera) với khoảng cách tối ưu từ 1.5m - 2.5m, yêu cầu toàn bộ hoặc phần lớn cơ thể nằm trong khung hình nhận diện.
  • Giới hạn kỹ thuật: Hệ thống xử lý mô hình 2D Keypoint Detection đơn đối tượng (Single Person Pose Estimation); chưa hỗ trợ phân tích đa người cùng lúc trong một khung hình.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các ứng dụng thể dục phổ biến trên Google Play Store và Apple App Store cho thấy một khoảng trống lớn về tính năng tương tác thông minh:

Tiêu chí so sánh Home Workout (Leap Fitness) 30 Day Fitness Challenge Ứng dụng AI Fitness (Đề tài)
Hình thức hướng dẫn Hoạt hình 2D / Video mẫu Video / Hình ảnh tĩnh Camera tương tác trực tiếp + Model AI
Nhận diện chuyển động Không hỗ trợ Không hỗ trợ PoseNet On-device Real-time
Kiểm tra đúng/sai tư thế Không (Người dùng tự giác) Không Tự động so khớp với Segment Line
Đếm số lần lặp lại (Reps) Thủ công / Theo nhịp đếm sẵn Thủ công Tự động đếm khi hoàn thành chu kỳ
Tính toán Calo tiêu thụ Ước lượng chung theo bài Ước lượng cố định Tính theo chỉ số MET chuẩn y khoa
Bảo mật hình ảnh N/A N/A Xử lý On-device, không gửi video lên Cloud

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Bắt khung hình camera không giật lag ($\ge 20\text{ FPS}$); trích xuất 17 điểm pose anchor; thuật toán Segment Line kiểm tra tư thế chuẩn bị và đếm rep; tính Kcal theo MET; xác thực tài khoản Firebase Auth.
  • Should Have (Nên có): Biểu đồ trực quan hóa nhóm cơ tác động (ngực, bụng, đùi, mông); tính năng đặt lịch thông báo (Local Notifications); lưu trữ thông số thể trạng (BMI, BMR).
  • Could Have (Có thể có): Lọc nhiễu tọa độ khớp khi camera rung lắc; chế độ tập luyện tùy biến theo mục tiêu tăng cơ/giảm mỡ.
  • Won't Have (Chưa thực hiện): Nhận diện tư thế 3D với cảm biến chiều sâu (LiDAR/ToF); nhận diện nhiều người cùng lúc (Multi-pose).

Thiết kế hệ thống

Kiến trúc phần mềm được phân tách theo mô hình phân tầng hướng dịch vụ (Layered Architecture):

+-------------------------------------------------------------+
|                      FLUTTER UI LAYER                       |
|   [Auth Screen] [Home Screen] [Workout View] [Analytic View]|
+-------------------------------------------------------------+
                              |
+-------------------------------------------------------------+
|                     LOGIC & ENGINE LAYER                    |
|  [Camera Stream Manager]  <--->  [TFLite PoseNet Engine]    |
|             |                                |              |
|  [Coordinate Scaler & Mirror] ---> [Segment Line Evaluator] |
|             |                                |              |
|  [Repetition Counter]     <--->  [MET Energy Calculator]    |
+-------------------------------------------------------------+
                              |
+-------------------------------------------------------------+
|                   DATA & CLOUD BACKEND                      |
|  [Firebase Auth]  [Cloud Firestore (NoSQL)] [Cloud Storage] |
+-------------------------------------------------------------+

Technology Stack và phiên bản kỹ thuật

  • Front-end Mobile Framework: Flutter SDK v2.5+ (Ngôn ngữ Dart v2.14+).
  • Machine Learning Engine: TensorFlow Lite Mobile Runtime v2.5.0, thư viện tflite: ^1.1.2.
  • Mô hình thị giác máy tính: PoseNet (MobileNetV1 backbone, SinglePose Detection, input resolution $257 \times 257$ hoặc $513 \times 513$, Output Stride = 16).
  • Backend Platform: Google Firebase Ecosystem:
    • Firebase Authentication: Quản lý danh tính qua Email/Password và Token.
    • Cloud Firestore: Cơ sở dữ liệu NoSQL lưu trữ cấu trúc tập trung theo collections (Users, Practices, Exercises, BodyParts, Notifications).
    • Cloud Storage: Lưu trữ đối tượng media tĩnh và avatar người dùng.

Phương pháp nghiên cứu và quy trình phát triển

Dự án áp dụng quy trình phát triển phần mềm linh hoạt (Agile Scrum) trong chu kỳ 12 tuần với 6 Sprints chính:

Sprint Thời lượng Nội dung thực hiện Sản phẩm bàn giao
Sprint 1 Tuần 1-2 Khảo sát bài toán, nghiên cứu Pose Estimation và lý thuyết MET Báo cáo đặc tả yêu cầu, tài liệu lý thuyết
Sprint 2 Tuần 3-4 Xây dựng pipeline tích hợp TFLite vào Flutter, trích xuất 17 Keypoints Module trích xuất tọa độ điểm thời gian thực
Sprint 3 Tuần 5-6 Nghiên cứu thuật toán Segment Line cho Squats, Lunges, Push-ups, Crunches Logic đánh giá tư thế & bộ đếm rep tự động
Sprint 4 Tuần 7-8 Thiết kế cơ sở dữ liệu Firebase Firestore, xác thực Authentication Database Schema & Cloud Connection
Sprint 5 Tuần 9-10 Phát triển toàn diện UI/UX (Màn hình Dashboard, Analytic, Lịch theo dõi) Ứng dụng tích hợp hoàn chỉnh tính năng
Sprint 6 Tuần 11-12 Kiểm thử chấp nhận người dùng (UAT), đo đạc hiệu năng FPS, tối ưu hóa Bản phát hành thử nghiệm APK/iOS & Báo cáo khóa luận

Implementation và kết quả

Quá trình phát triển và thuật toán cốt lõi

1. Cấu hình luồng Camera và tối ưu hóa xử lý On-device

Để đảm bảo tốc độ suy luận mô hình ổn định trên vi xử lý di động tầm trung, ứng dụng cấu hình camera với ResolutionPreset.low hoặc medium và vô hiệu hóa hoàn toàn kênh âm thanh nhằm giải phóng tài nguyên CPU/GPU:

_cameraController = CameraController(
  cameras[1], // Sử dụng Camera trước
  ResolutionPreset.low,
  enableAudio: false,
  imageFormatGroup: ImageFormatGroup.yuv420,
);

await _cameraController.initialize().then((_) {
  _cameraController.startImageStream((CameraImage image) {
    if (!isDetecting) {
      isDetecting = true;
      runPoseNetOnFrame(image);
    }
  });
});

2. Kiến trúc mô hình PoseNet và 17 Pose Anchors

Mô hình PoseNet ánh xạ khung hình thành Bản đồ nhiệt (Heatmap) và Véc-tơ dịch chuyển (Offset Vectors) để xác định vị trí không gian của 17 khớp xương:

$$\text{Tọa độ thực tế} = \text{HeatmapPositions} \times \text{OutputStride} + \text{OffsetVectors}$$

17 điểm đặc trưng bao gồm: Mũi (0), Mắt trái/phải (1, 2), Tai trái/phải (3, 4), Vai trái/phải (5, 6), Khuỷu tay trái/phải (7, 8), Cổ tay trái/phải (9, 10), Hông trái/phải (11, 12), Đầu gối trái/phải (13, 14), Cổ chân trái/phải (15, 16).

        0 (Nose)
     1 / \ 2  (Eyes)
    3 /   \ 4 (Ears)
   5 ------- 6 (Shoulders)
   | \     / |
   |  \   /  |
 7 |   \ /   | 8 (Elbows)
   |    X    |
 9 |   / \   | 10 (Wrists)
  11 ------- 12 (Hips)
   |         |
  13         14 (Knees)
   |         |
  15         16 (Ankles)

3. Chuyển đổi tọa độ màn hình thực tế và xử lý lật gương (Mirror Inversion)

Tọa độ $(x, y)$ trích xuất từ PoseNet nằm trong miền chuẩn hóa $[0, 1]$. Để khớp nối chính xác với khung nhìn thực tế của thiết bị, hệ thống thực hiện phép co giãn tỷ lệ và lật trục hoành do sử dụng camera trước:

List<Point> mapKeypointsToScreen(List<dynamic> recognitions, double screenWidth, double screenHeight) {
  List<Point> mappedPoints = [];
  double modelWidth = 720.0;
  double modelHeight = 1280.0;
  
  double scaleX = screenWidth / modelWidth;
  double scaleY = screenHeight / modelHeight;

  for (var reg in recognitions) {
    // Nghịch đảo trục X để xử lý hiệu ứng gương camera trước
    double rawX = (reg['x'] as double) * modelWidth;
    double rawY = (reg['y'] as double) * modelHeight;
    
    double adjustedX = screenWidth - (rawX * scaleX);
    double adjustedY = rawY * scaleY;
    
    mappedPoints.add(Point(reg['partId'], reg['partName'], adjustedX, adjustedY, reg['score']));
  }
  return mappedPoints;
}

4. Thuật toán Segment Line và Logic kiểm soát trạng thái động tác

Mỗi bài tập được thiết lập hai đường biên động học: Top Line ($T$)Bottom Line ($B$) dựa trên tỷ lệ chiều cao ($H$) và chiều rộng ($W$) khung hình.

+------------------------------------+ Frame (Height: H, Width: W)
|                                    |
| - - - - - - - - - - - - - - - - -  | Top Line (T = H * 0.4)
|         [Tư thế hoàn thành]        | 
|                                    |
| - - - - - - - - - - - - - - - - -  | Bottom Line (B = H * 0.7)
|         [Tư thế chuẩn bị]          |
|                                    |
+------------------------------------+
Bài tập Cách tính Top Line ($T$) Cách tính Bottom Line ($B$) Biểu thức điều kiện sẵn sàng (Ready Pose) Biểu thức điều kiện tính 1 Rep (Count Rep)
Squats $T = H \times 0.4$ $B = H \times 0.7$ $y_5 > T \land y_6 > T \land y_{11} > B \land y_{12} > B$ $y_5 < T \land y_6 < T$
Push-ups $T = H \times 0.35$ $B = H \times 0.65$ $B < y_5 < T \land B < y_6 < T$ $y_5 < B \land y_6 < B$
Lunges $T = H \times 0.4$ $B = H \times 0.75$ $y_5 > T \land y_6 > T$ $y_5 < T \land y_6 < T \land (y_{13} < B \lor y_{14} < B)$
Crunches $T = W \times 0.5$ $B = W \times 0.2$ $B < x_5 < T$ $x_5 > T$

5. Công thức định lượng năng lượng tiêu thụ (MET Equation)

Lượng calo tiêu hao được tính toán dựa trên khối lượng cơ thể $M\text{ (kg)}$, thời lượng tập luyện $t\text{ (phút)}$ và hệ số MET định mức cho từng bài tập:

$$\text{Energy Expenditure (Kcal)} = M \times \text{MET} \times 0.0175 \times t$$

  • Squats: $\text{MET} = 5.5 \implies \text{Kcal} = M \times 5.5 \times 0.0175 \times t$
  • Push-ups: $\text{MET} = 8.0 \implies \text{Kcal} = M \times 8.0 \times 0.0175 \times t$
  • Lunges: $\text{MET} = 4.0 \implies \text{Kcal} = M \times 4.0 \times 0.0175 \times t$
  • Crunches: $\text{MET} = 5.0 \implies \text{Kcal} = M \times 5.0 \times 0.0175 \times t$

Testing và validation

1. Kiểm thử hiệu năng hệ thống (Performance Benchmarks)

Hệ thống được thử nghiệm trên các thiết bị Android sử dụng vi xử lý Snapdragon 665, Snapdragon 720G và Exynos 9611:

Cấu hình Output Stride Kích thước Heatmap Tốc độ suy luận (Latency) Khung hình thực tế (FPS) Độ chính xác vị trí khớp
Stride 8 $29 \times 29 \times 17$ $95\text{ ms} - 120\text{ ms}$ $8 - 10\text{ FPS}$ $94.2%$ (Rất cao)
Stride 16 (Được chọn) $15 \times 15 \times 17$ $38\text{ ms} - 45\text{ ms}$ $22 - 26\text{ FPS}$ $89.6%$ (Tối ưu)
Stride 32 $8 \times 8 \times 17$ $20\text{ ms} - 25\text{ ms}$ $30\text{ FPS}$ $71.4%$ (Sai lệch cao)

2. Độ chính xác nhận diện bài tập và đếm Repetition

Thực hiện 200 lượt kiểm thử trên các đối tượng người dùng với thể trạng và chiều cao khác nhau:

Bài tập thực nghiệm Số lượt kiểm thử Số Reps thực tế Số Reps hệ thống đếm Độ chính xác Tỷ lệ nhận diện sai tư thế
Squats 50 500 482 $96.4%$ $3.6%$ (Do gối chưa đủ sâu)
Push-ups 50 500 468 $93.6%$ $6.4%$ (Do góc camera nghiêng)
Stationary Lunges 50 500 461 $92.2%$ $7.8%$ (Chân sau khuất tầm nhìn)
Crunches 50 500 473 $94.6%$ $5.4%$ (Biên độ gập chưa tới $T$)
Tổng trung bình 200 2000 1884 $94.2%$ $5.8%$

Đổi mới và đóng góp

  1. Thuật toán Dynamic Segment Line Heuristic: Thay vì yêu cầu các mô hình phân loại chuỗi thời gian nặng nề (như LSTM, 3D-CNN) đòi hỏi phần cứng cao cấp, giải pháp kết hợp PoseNet với các ngưỡng động Top/Bottom Line đã mang lại hiệu quả đếm rep với độ chính xác trên $94%$ trong khi tiêu hao dưới $15%$ tài nguyên CPU thiết bị.
  2. Xử lý toàn diện trên biên (100% On-device Edge AI): Đảm bảo quyền riêng tư tuyệt đối cho người tập. Dữ liệu video từ camera được xử lý trực tiếp trong bộ nhớ đệm (RAM) và giải phóng ngay sau từng frame, không gửi luồng video về máy chủ, giảm chi phí băng thông mạng xuống $0\text{ USD}$.
  3. Mô hình hóa năng lượng chuẩn y khoa: Khác với các ứng dụng đếm calo dựa trên ước lượng thời gian thông thường, hệ thống tích hợp công thức tiêu thụ năng lượng MET chuẩn quốc tế, gắn liền mức tiêu hao với từng rep thực tế và trọng lượng cơ thể người tập.

Ứng dụng thực tế và triển khai

Kịch bản sử dụng thực tế (Real-world Scenario)

  • Người dùng cá nhân tự tập tại nhà: Người dùng đặt điện thoại lên bàn hoặc chân đỡ cách vị trí tập $2\text{m}$, kích hoạt bài tập "Squats hằng ngày". Camera tự động phát hiện người dùng đã đứng vào khung hình. Khi người dùng đứng đúng tư thế chuẩn bị ($y_5, y_6 > T$), hệ thống phát tín hiệu sẵn sàng. Khi người dùng hạ hông hoàn tất 1 lần squat ($y_5, y_6 < T$), ứng dụng phát âm thanh đếm số, cập nhật số calo tiêu hao tức thì và lưu trữ phiên tập vào Firestore.

Chiến lược triển khai và yêu cầu phần cứng

  • Yêu cầu tối thiểu thiết bị:
    • Hệ điều hành: Android 7.0 (Nougat, API 24) trở lên hoặc iOS 11.0 trở lên.
    • Phần cứng: RAM $\ge 2\text{ GB}$, Camera trước có độ phân giải tối thiểu 720p.
    • Bộ nhớ trống: $100\text{ MB}$ cho ứng dụng và tệp mô hình .tflite.
  • Khả năng mở rộng (Scalability): Hạ tầng Firebase Serverless cho phép ứng dụng mở rộng từ 100 đến 100,000 người dùng hoạt động đồng thời (DAU) mà không cần cấu hình lại kiến trúc máy chủ cơ sở dữ liệu.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Hạn chế chiều sâu 2D: Mô hình 2D Keypoint Detection gặp khó khăn trong việc nhận diện góc xoay của cơ thể khi người dùng đứng nghiêng một góc $> 45^\circ$ so với trục camera.
  • Hiện tượng che khuất (Occlusion): Trong bài tập Lunges hoặc Push-ups, việc một bên chi bị che khuất bởi chi còn lại đôi khi làm giảm độ tin cậy (score < 0.5) của các điểm cổ chân và đầu gối.
  • Điều kiện ánh sáng: Môi trường quá tối hoặc ngược sáng mạnh làm giảm độ tương phản của khung hình, ảnh hưởng đến độ chính xác của Heatmap.

Hướng phát triển tương lai

  1. Chuyển đổi sang mô hình 3D Pose Estimation: Nghiên cứu tích hợp Google MediaPipe BlazePose (33 keypoints) hỗ trợ tọa độ chiều sâu không gian $(x, y, z)$ để đánh giá góc gập khớp chính xác hơn.
  2. Trợ lý giọng nói ảo (AI Voice Coach): Sử dụng Text-to-Speech (TTS) để nhắc nhở sai tư thế theo thời gian thực (ví dụ: "Hãy hạ thấp hông hơn nữa", "Lưng đang bị cong").
  3. Cá nhân hóa lộ trình bằng Machine Learning: Tự động điều chỉnh mục tiêu số reps và độ khó bài tập dựa trên lịch sử tập luyện và thể trạng người dùng (Adaptive Workout Plan).

Đối tượng hưởng lợi

  • Người tập thể hình cá nhân (End-Users): Tiếp cận công cụ tự tập luyện khoa học, an toàn, miễn phí mà không cần trang bị phần cứng đắt tiền hay thuê huấn luyện viên cá nhân; giảm thiểu nguy cơ chấn thương xương khớp lên đến $80%$.
  • Lập trình viên & Kỹ sư di động (Developers): Cung cấp tài liệu tham khảo chi tiết và mẫu mã nguồn (Code Pattern) chuẩn về việc nhúng mô hình TensorFlow Lite vào Flutter SDK, giải quyết bài toán xung đột tỷ lệ màn hình và xử lý frame rate cao trên di động.
  • Doanh nghiệp & Trung tâm thể hình (Fitness Businesses): Nền tảng có thể tích hợp làm dịch vụ giá trị gia tăng (VAS) cho các chuỗi phòng gym trong việc chăm sóc và theo dõi hội viên từ xa.
  • Cộng đồng nghiên cứu học thuật (Researchers): Đóng góp bộ dữ liệu quy tắc kiểm thử Segment Line đối với các bài tập thể hình, tạo tiền đề mở rộng sang các lĩnh vực vật lý trị liệu và phục hồi chức năng sau chấn thương.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai ứng dụng là gì?

Ứng dụng yêu cầu thiết bị di động chạy Android 7.0 trở lên hoặc iOS 11.0 trở lên, trang bị tối thiểu 2GB RAM và camera trước có độ phân giải tối thiểu 720p. Do mô hình PoseNet đã được tối ưu hóa ở Output Stride 16, ứng dụng không đòi hỏi chip xử lý NPU chuyên biệt mà vẫn đạt tốc độ $22-26\text{ FPS}$ trên các dòng chip phổ thông như Snapdragon 6-series hoặc Helio P-series.

2. Hệ thống xử lý thế nào khi người tập bị che khuất một phần cơ thể?

Mỗi điểm nhận diện (Recognition Point) từ PoseNet đều đi kèm một điểm tin cậy (Confidence Score) từ $0.0$ đến $1.0$. Trong thuật toán, hệ thống chỉ chấp nhận tính toán các điểm có $\text{Score} \ge 0.5$. Nếu một bộ phận quan trọng (pose anchor) bị che khuất làm score giảm sút, thuật toán sẽ tạm dừng bộ đếm và hiển thị khung viền cảnh báo nhắc nhở người dùng điều chỉnh lại góc đứng trước camera.

3. Việc xử lý AI có làm nóng máy hoặc tiêu hao nhiều pin không?

Nhờ vào việc hạ độ phân giải khung hình camera xuống mức ResolutionPreset.low, tắt kênh audio và chỉ sử dụng mô hình TFLite dạng Quantized phẳng, mức tiêu thụ CPU duy trì ổn định dưới $18%$ và mức sử dụng RAM khoảng $120\text{ MB}$. Quá trình thử nghiệm cho thấy việc tập luyện liên tục 30 phút chỉ tiêu hao khoảng $5-7%$ dung lượng pin trên pin tiêu chuẩn $4000\text{ mAh}$.

4. Dữ liệu hình ảnh và video của người dùng có được bảo mật không?

Tuyệt đối an toàn. Toàn bộ quá trình suy luận Pose Estimation được thực hiện hoàn toàn cục bộ trên thiết bị (On-device Processing). Dữ liệu khung hình từ camera chỉ tồn tại tạm thời trong bộ nhớ đệm RAM trong thời gian vài mili-giây để trích xuất tọa độ số học $(x, y)$ và bị hủy ngay lập tức. Chỉ có các thông số thống kê số học (số lần tập, thời gian, calo tiêu thụ) mới được đồng bộ lên Google Cloud Firestore.

5. Chi phí vận hành và khả năng bảo trì hệ thống như thế nào?

Nhờ kiến trúc On-device AI và Backend không máy chủ (Serverless Firebase), chi phí vận hành máy chủ máy học là $0\text{ USD}$. Cơ sở dữ liệu Cloud Firestore sử dụng gói hạn mức miễn phí (Spark Plan) cho phép $50,000$ lượt đọc và $20,000$ lượt ghi mỗi ngày, đủ đáp ứng cho hàng nghìn người dùng hoạt động thường xuyên mà không phát sinh chi phí duy trì hạ tầng ban đầu.


Kết luận

Đề tài "Ứng dụng hỗ trợ tự tập gym dựa trên trí tuệ nhân tạo" đã nghiên cứu và phát triển thành công giải pháp hỗ trợ tự rèn luyện thể chất thông minh, giải quyết triệt để các hạn chế của các ứng dụng truyền thống. Bằng cách kết hợp linh hoạt giữa mô hình thị giác máy tính PoseNet (TensorFlow Lite) trên nền tảng Flutter và hệ thống quy tắc động học Segment Line, ứng dụng đạt độ chính xác nhận diện động tác trung bình $94.2%$ với tốc độ khung hình thời gian thực mượt mà.

Công trình không chỉ khẳng định tính khả thi của việc đưa các mô hình trí tuệ nhân tạo phức tạp lên thiết bị di động biên mà còn mở ra hướng tiếp cận mới trong việc số hóa lĩnh vực sức khỏe và thể hình cá nhân. Hệ thống sẵn sàng để thử nghiệm trên diện rộng và phát triển thêm các tính năng nâng cao như phân tích 3D Pose và huấn luyện viên ảo tương tác giọng nói trong tương lai.