树莓派+MediaPipe实现健身房动作损伤检测:边缘AI实战指南
2026/8/19 1:31:06 网站建设 项目流程

1. 项目缘起:为什么要在树莓派上做健身房损伤检测?

如果你经常去健身房,或者自己就是健身教练,肯定见过不少让人揪心的场景:有人深蹲时膝盖内扣,有人卧推时弓腰借力,还有人硬拉时背部明显弯曲。这些错误的动作模式,短期看可能只是“姿势不标准”,但日积月累,就是导致肌肉拉伤、关节磨损甚至更严重运动损伤的直接元凶。

传统的解决方案是什么?要么靠教练火眼金睛,一对一盯着,人力成本高,还容易疲劳漏判;要么靠会员自己对着镜子练,但很多细微的、自己感觉不到的代偿动作,镜子根本反映不出来。更别提那些在无人指导的家庭健身房或者户外健身区锻炼的人了,完全是在“盲人摸象”,受伤风险极高。

所以,当“AI视觉”和“边缘计算”这两个词越来越热的时候,我就在想,能不能用最便宜、最普及的硬件——树莓派,加上一个普通的摄像头,搭建一个能自动识别危险健身动作的“电子教练”?它不需要替代真人教练,而是作为一个7x24小时在线的“安全员”,在危险动作发生的第一时间发出预警,把损伤扼杀在摇篮里。

这个想法就是“Gym Injury Detection with Raspberry Pi AI Camera”项目的核心。它不是一个复杂的科研项目,而是一个极具实用价值的工程实践:利用树莓派强大的社区生态和AI推理能力,在设备端(边缘侧)实时分析人体姿态,判断其是否符合安全规范,并及时给出反馈。整个过程不依赖云端,保护隐私,响应迅速,成本低廉,非常适合健身房、学校、社区活动中心甚至家庭使用。

接下来,我就把自己从零搭建这套系统的完整过程、踩过的坑、以及优化心得,毫无保留地分享出来。你会发现,用树莓派玩转AI,远没有想象中那么难。

2. 核心方案选型:为什么是MediaPipe + TensorFlow Lite?

决定做这个项目后,第一个拦路虎就是技术选型。人体姿态估计(Human Pose Estimation)是计算机视觉的经典问题,方案多如牛毛。有OpenPose这样的老牌劲旅,有AlphaPose这类精度更高的后起之秀,还有各种基于Transformer的SOTA模型。但为什么我最终选择了Google的MediaPipe,并且用TensorFlow Lite(TFLite)在树莓派上部署?

这里面的决策逻辑,是任何边缘AI项目都必须考虑清楚的,我把它拆解为四个核心维度:精度、速度、易用性和资源消耗。

2.1 精度与速度的权衡:MediaPipe的“甜点区”

对于健身房动作检测,我们不需要医学级的人体骨骼精度(比如精确到每一节指骨)。我们关心的是几个大关节(肩、肘、腕、髋、膝、踝)和躯干(脊柱)的相对位置关系。MediaPipe Pose提供的33个3D关节点(从鼻尖到脚踝)完全够用,其精度在常规光照和视角下已经非常可靠。

更重要的是速度。OpenPose虽然精度高,但模型复杂,即使在树莓派4B上,一帧图像的处理时间也可能超过1秒,这完全无法满足“实时”预警的需求。MediaPipe Pose则不同,它提供了从“轻量”到“高精度”多个模型。其中,pose_landmarker_lite.task这个轻量模型,在树莓派4B上配合CPU推理,完全能达到接近10 FPS(每秒帧数)的处理速度。这个帧率对于检测相对缓慢的健身动作来说,已经足够做出及时判断。

注意:这里的“实时”是一个相对概念。对于高速运动的球类,可能需要30FPS以上;但对于深蹲、卧推这类动作,一个动作周期往往在2-4秒,10FPS意味着我们能在这个周期内捕捉20-40个姿态样本,足以分析其运动轨迹是否异常。

2.2 易用性:从原型到产品的最短路径

MediaPipe另一个巨大优势是它的“交钥匙”解决方案。它不仅仅是一个模型,而是一整套从图像输入、模型推理到后处理(如坐标转换、平滑滤波)的管道(Pipeline)。使用MediaPipe的Python API,你只需要几行代码就能获取到稳定、平滑的人体关节点坐标,无需自己处理复杂的图像预处理、非极大值抑制(NMS)等底层细节。

这对于快速验证想法、构建原型至关重要。我可以把精力集中在“如何根据这些坐标点定义危险动作”这个业务逻辑上,而不是陷在模型训练和部署的泥潭里。

2.3 资源消耗:树莓派的生存之道

树莓派4B虽然有4GB内存,但它的算力(尤其是浮点运算能力)和功耗限制,决定了它不能运行庞大的模型。TensorFlow Lite正是为这种资源受限的嵌入式设备和移动设备设计的推理框架。

MediaPipe官方就提供了TFLite格式的模型文件(.tflite)。TFLite会对模型进行优化,包括量化(将32位浮点数转换为8位整数),这能大幅减少模型体积和内存占用,并提升推理速度,而精度损失在可接受范围内。一个量化后的MediaPipe Pose Lite模型,大小可能只有几MB,在树莓派上运行毫无压力。

2.4 最终决策链

因此,我的选型逻辑链非常清晰:

  1. 需求驱动:需要实时(>5FPS)、低成本的人体姿态估计。
  2. 平台约束:硬件是树莓派4B,算力和内存有限。
  3. 方案筛选:在满足1和2的前提下,寻找精度可接受、生态成熟、易于部署的方案。
  4. 锁定MediaPipe:它提供了轻量级模型、完整的Pipeline和TFLite支持,完美匹配需求。
  5. 部署框架:自然选择与MediaPipe和树莓派生态结合最紧密的TensorFlow Lite作为运行时。

这个决策过程,其实适用于任何边缘AI项目:先明确场景和硬件边界,再在边界内寻找最优解,而不是盲目追求最先进的模型。

3. 硬件与软件环境搭建:一步一坑的实战记录

确定了技术方案,接下来就是动手搭建环境。这部分看似是“体力活”,但很多坑都埋在这里,一步走错,后面就可能全盘报错。

3.1 硬件清单与连接

我的核心硬件非常简单:

  • 树莓派4B (4GB RAM):主力计算单元。2GB版本可能会在运行其他服务时内存紧张,4GB是更稳妥的选择。
  • 官方Raspberry Pi Camera Module 2 (800万像素):为什么选官方摄像头?因为它通过CSI接口直接连接树莓派,带宽高、延迟极低,并且有成熟的picamera2库驱动,稳定性远超普通的USB摄像头。对于需要实时处理的视觉项目,这是关键。
  • 一张至少16GB的MicroSD卡:建议使用A1/V30规格的高速卡,系统响应和读写会快很多。
  • 电源:必须使用官方推荐的5V/3A电源,供电不足会导致树莓派降频,严重影响AI推理速度。
  • 散热片或风扇:树莓派4B运行AI负载时发热严重,主动散热能保证其持续以高性能运行。

连接时,确保摄像头排线金色触点朝向网口方向,轻轻按下CSI接口的卡扣并插入排线,再锁紧卡扣。这个步骤要小心,排线很脆弱。

3.2 操作系统与基础配置

我使用的是Raspberry Pi OS (64-bit) Lite版本。为什么不选带桌面GUI的版本?因为我们的项目最终要作为一个无头服务器(Headless)运行,GUI会白白占用几百MB内存和CPU资源。通过SSH远程操作就足够了。

系统烧录好后,首要任务是换源和更新。编辑/etc/apt/sources.list/etc/apt/sources.list.d/raspi.list,将官方源替换为国内镜像源(如清华源、中科大源),这能让你后续的软件安装速度提升十倍不止。

然后执行:

sudo apt update && sudo apt full-upgrade -y sudo raspi-config

raspi-config中,需要完成几个关键设置:

  1. 启用摄像头Interface Options->Legacy Camera(或Camera,取决于OS版本),选择启用。这里有个大坑:新版的libcamera是趋势,但MediaPipe等库对它的兼容性可能不如老的picamera驱动稳定。为了减少麻烦,我暂时选择了启用Legacy Camera支持。
  2. 扩展文件系统Advanced Options->Expand Filesystem,确保SD卡所有空间都被利用。
  3. 内存分配Performance Options->GPU Memory,如果你不需要桌面环境,可以将GPU内存设置为最低(如16MB),把更多内存留给系统。
  4. 启用SSH:方便远程开发。

3.3 Python虚拟环境与核心库安装

绝对不建议在系统Python环境下直接安装项目依赖,版本冲突会让你痛不欲生。使用venv创建独立的虚拟环境是Python项目的最佳实践。

python3 -m venv ~/gym_ai_venv source ~/gym_ai_venv/bin/activate

激活虚拟环境后,提示符前会出现(gym_ai_venv)字样。

接下来安装核心库,这里顺序很重要:

  1. 首先安装OpenCV:MediaPipe依赖它。树莓派上从源码编译OpenCV极其耗时,我们直接用预编译的轮子。
    pip install opencv-python-headless
    headless版本,因为它不包含GUI相关的库(如GTK),体积更小,更适合服务器环境。
  2. 安装MediaPipe:这是主角。注意,MediaPipe对NumPy版本有要求,直接安装可能会自动解决依赖。
    pip install mediapipe
    如果安装缓慢或出错,可以使用-i参数指定国内PyPI镜像。
  3. 安装TensorFlow Lite运行时:MediaPipe在树莓派上默认使用TFLite推理。我们需要安装TFLite的Python接口。
    pip install tflite-runtime
    这比安装完整的TensorFlow包要轻量得多。
  4. 安装Picamera2:用于驱动CSI摄像头。
    sudo apt install -y python3-picamera2 pip install picamera2
  5. 其他工具库:如numpy,pandas(用于记录数据)等。

安装完成后,写一个简单的测试脚本,分别测试摄像头能否打开、MediaPipe能否导入并初始化一个姿态检测器。确保每一步都成功,再进入下一步开发。

4. 核心代码实现:从图像流到风险判断

环境搭好,就进入了最核心的编码环节。我们的程序流程可以概括为:捕获图像 -> MediaPipe推理获取关节点 -> 根据业务规则计算风险指标 -> 判断并预警

4.1 图像捕获与MediaPipe初始化

首先,初始化摄像头和MediaPipe Pose检测器。

import cv2 import mediapipe as mp from picamera2 import Picamera2 import numpy as np # 初始化MediaPipe Pose mp_pose = mp.solutions.pose mp_drawing = mp.solutions.drawing_utils pose = mp_pose.Pose( static_image_mode=False, # 视频流模式 model_complexity=1, # 模型复杂度:0(轻量),1(标准),2(高精度) smooth_landmarks=True, # 平滑关节点,减少抖动 enable_segmentation=False, # 不需要人体分割 min_detection_confidence=0.5, # 检测置信度阈值 min_tracking_confidence=0.5 # 跟踪置信度阈值 ) # 初始化Picamera2 picam2 = Picamera2() # 配置预览分辨率,平衡画质和速度 config = picam2.create_preview_configuration(main={"size": (640, 480)}) picam2.configure(config) picam2.start()

这里有几个参数需要根据场景调整:

  • model_complexity=1:在树莓派4B上,复杂度1(标准模型)在速度和精度间取得了很好的平衡。如果追求更高帧率,可以尝试设为0。
  • smooth_landmarks=True:对于视频流,开启平滑能有效过滤掉单帧的噪声,让关节点运动轨迹更稳定,这对后续的动作分析至关重要。
  • min_detection_confidence:置信度低于此值,则认为未检测到人体。健身房场景通常比较干净,0.5足够。如果环境复杂(多人、遮挡),可以适当调高。

4.2 关节点数据解析与归一化

MediaPipe返回的关节点坐标是归一化的图像坐标(x, y, z),范围在[0, 1]之间,原点在图像左上角。我们需要将其转换为像素坐标,并提取我们感兴趣的关节点。

def get_keypoints(landmarks, image_shape): """将MediaPipe的landmarks转换为像素坐标字典""" h, w, _ = image_shape keypoints = {} # 定义我们需要的关节点索引(MediaPipe Pose的33个点) # 例如:左肩(11), 左肘(13), 左腕(15), 左髋(23), 左膝(25), 左踝(27) # 右半身同理(12,14,16,24,26,28) # 鼻子(0), 左右眼睛、耳朵等 indices_of_interest = [0, 11, 12, 13, 14, 15, 16, 23, 24, 25, 26, 27, 28] for idx in indices_of_interest: lm = landmarks.landmark[idx] # 将归一化坐标转换为像素坐标 cx, cy = int(lm.x * w), int(lm.y * h) # z值表示深度,近似值,可用于判断前后关系 keypoints[idx] = (cx, cy, lm.z) return keypoints

4.3 定义健身动作的风险规则(以深蹲为例)

这是项目的业务核心。我们需要将运动医学和健身教练的经验,转化为可计算的几何规则。这里以最常见的“深蹲时膝盖内扣”为例。

膝盖内扣,专业术语叫“膝外翻”(Knee Valgus)。在2D图像中,我们可以通过比较膝盖关节点脚踝关节点的连线,与髋关节-脚踝连线的相对位置来判断。

def check_knee_valgus(keypoints, side='left'): """检测膝盖内扣(膝外翻) side: 'left' 或 'right' 返回:风险等级 (0:正常,1:警告,2:危险) 和 内扣角度(近似) """ if side == 'left': hip_idx, knee_idx, ankle_idx = 23, 25, 27 else: hip_idx, knee_idx, ankle_idx = 24, 26, 28 # 确保所有需要的关节点都被检测到 if not all(idx in keypoints for idx in [hip_idx, knee_idx, ankle_idx]): return 0, 0.0 hip = keypoints[hip_idx][:2] # (x, y) knee = keypoints[knee_idx][:2] ankle = keypoints[ankle_idx][:2] # 计算向量 # 大腿向量:从髋到膝 thigh_vec = np.array(knee) - np.array(hip) # 小腿向量:从膝到踝 shin_vec = np.array(ankle) - np.array(knee) # 计算膝盖角度(大腿和小腿的夹角) # 这里我们更关心膝盖在水平方向上的投影 # 一个简单的判断:膝盖的x坐标是否明显在脚踝和髋关节的x坐标连线之内? # 更精确的做法:计算Q角(Quadriceps Angle)的近似值 # 在2D图像上,我们可以计算“膝-踝”连线与垂直线的夹角 # 计算踝关节到膝关节的向量 ankle_to_knee_vec = np.array(knee) - np.array(ankle) # 计算该向量与垂直向下向量(0, 1)的夹角 vertical_vec = np.array([0, 1]) # 使用点积公式计算夹角(弧度) dot_product = np.dot(ankle_to_knee_vec, vertical_vec) norm_ak = np.linalg.norm(ankle_to_knee_vec) norm_v = np.linalg.norm(vertical_vec) # 防止除零 if norm_ak == 0: return 0, 0.0 cos_theta = dot_product / (norm_ak * norm_v) # 由于是锐角,直接使用arccos angle_rad = np.arccos(np.clip(cos_theta, -1.0, 1.0)) angle_deg = np.degrees(angle_rad) # 判断逻辑:如果膝盖过度向内偏移,踝-膝连线与垂直线的夹角会增大 # 经验阈值:当这个角度大于15度时,认为存在明显内扣风险 risk = 0 if angle_deg > 20: risk = 2 # 危险 elif angle_deg > 15: risk = 1 # 警告 return risk, angle_deg

同理,我们可以定义其他危险动作的规则:

  • 背部弯曲(硬拉/深蹲):计算脊柱(例如肩部中点到髋部中点)与垂直线的夹角。
  • 肘部过度外展(卧推):计算上臂(肩到肘)与躯干(肩到对侧髋)的夹角,判断是否过于打开。
  • 骨盆前倾/后倾:比较髋关节与肩关节的相对前后位置(需要借助landmark的z值深度信息,但2D下精度有限)。

4.4 主循环与预警反馈

将以上所有模块串联起来,形成实时检测循环。

try: while True: # 从摄像头获取一帧图像 frame = picam2.capture_array() # Picamera2默认捕获的是RGB格式,但OpenCV需要BGR frame_rgb = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) # 为了提升性能,可以将图像缩小后再处理,但会损失精度 # frame_rgb = cv2.resize(frame_rgb, (320, 240)) # MediaPipe处理需要RGB图像 frame_rgb_for_mp = cv2.cvtColor(frame_rgb, cv2.COLOR_BGR2RGB) results = pose.process(frame_rgb_for_mp) risk_detected = False warning_text = "" if results.pose_landmarks: # 绘制关节点和连接线(可选,可视化用,会消耗CPU) mp_drawing.draw_landmarks( frame_rgb, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) # 获取关节点坐标 kps = get_keypoints(results.pose_landmarks, frame_rgb.shape) # 执行各项风险检查 left_knee_risk, left_angle = check_knee_valgus(kps, 'left') right_knee_risk, right_angle = check_knee_valgus(kps, 'right') # 综合判断 if left_knee_risk == 2 or right_knee_risk == 2: risk_detected = True warning_text = "危险:膝盖内扣!" # 可以触发更强烈的警告,如声音 elif left_knee_risk == 1 or right_knee_risk == 1: warning_text = "注意:膝盖略有内扣" # 可以在这里添加其他动作的风险检查... # 在图像上叠加警告文字 if warning_text: cv2.putText(frame_rgb, warning_text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) # 显示结果(如果是在有桌面的环境下调试) cv2.imshow('Gym Injury Detection', frame_rgb) if cv2.waitKey(1) & 0xFF == ord('q'): break finally: # 释放资源 pose.close() picam2.stop() cv2.destroyAllWindows()

在实际部署时,我们可能不需要图形界面。预警方式可以改为:

  1. 声音提示:通过树莓派的音频接口连接一个小喇叭,使用pygamesubprocess调用aplay播放警告音。
  2. 灯光提示:连接一个LED灯,危险时闪烁红光。
  3. 网络通知:通过HTTP请求或MQTT协议,将警告信息发送到健身房的管理系统或教练的平板上。

5. 性能优化与工程化部署:让系统真正可用

代码跑起来只是第一步,要让它在真实的健身房环境下稳定、可靠地运行,还需要大量的优化和工程化工作。

5.1 性能瓶颈分析与优化

在树莓派上运行AI模型,性能是首要问题。使用htopvcgencmd命令监控资源使用情况,我发现瓶颈主要在两方面:

  • CPU:MediaPipe推理和OpenCV的图像处理是CPU大户。
  • 温度:持续高负载下,CPU温度很快超过80°C,触发温控降频,导致帧率骤降。

优化措施:

  1. 降低处理分辨率:这是提升帧率最有效的方法。将摄像头捕获和模型处理的分辨率从640x480降到320x240,帧率几乎可以翻倍,而对关节点检测的精度影响在可接受范围内。可以在Picamera2配置和cv2.resize两步进行降采样。
  2. 调整MediaPipe模型:使用model_complexity=0(轻量模型)。实测在320x240分辨率下,轻量模型能达到15-20 FPS,而标准模型可能只有8-10 FPS。
  3. 跳帧处理(Frame Skipping):如果不是每个帧都必须分析,可以每2帧或每3帧处理一次。对于速度不快的健身动作,这能显著降低CPU负载,同时保证检测的连续性。
  4. 启用树莓派GPU(有限):MediaPipe在某些版本下支持OpenCL/Vulkan,可以利用树莓派的GPU进行部分计算。但配置相对复杂,且提升不一定明显。对于初学者,优先采用前三种软件优化更实际。
  5. 加强散热:这是硬件保障。一个好的带风扇的散热外壳,能将树莓派4B满载温度控制在60°C以下,避免降频。

5.2 误检与漏检处理

在真实场景中,人会移动、会被器械部分遮挡、光照会变化,这些都会导致模型检测失败或关节点抖动。

  • 多人场景:MediaPipe Pose默认检测图像中最显著的单人。在健身房,如果镜头里有多人,它可能会锁定错误的目标。一个简单的策略是,只分析画面中心区域(比如中央50%)检测到的人体。更复杂的方案需要用到多人姿态估计模型,但这在树莓派上负担太重。
  • 关节点丢失与平滑:当某个关节点置信度低时(如手被哑铃挡住),不要使用它的坐标。可以采用“历史平滑”策略,如果当前帧某个点丢失,则使用过去几帧该点的平均值或最后一次有效值来替代,避免计算规则时因数据缺失而报错。
  • 状态机机制:不要因为单帧检测到危险就报警,容易误报。引入一个简单的状态机。例如,连续5帧都检测到“膝盖内扣”风险等级为2,才触发最终警报;如果中间有一帧恢复正常,则重置计数器。这能有效过滤掉瞬间的检测误差。

5.3 系统服务化与自启动

我们肯定不希望每次重启树莓派都要手动SSH进去运行Python脚本。需要将其包装成一个系统服务。

  1. 创建服务文件sudo nano /etc/systemd/system/gym-ai.service

    [Unit] Description=Gym Injury Detection AI Service After=network.target [Service] Type=simple User=pi WorkingDirectory=/home/pi/gym_ai_project Environment="PATH=/home/pi/gym_ai_venv/bin" ExecStart=/home/pi/gym_ai_venv/bin/python /home/pi/gym_ai_project/main.py Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target

    这里的关键是Environment,它指定了服务运行时的PATH,确保能使用虚拟环境中的Python和库。

  2. 启用并启动服务

    sudo systemctl daemon-reload sudo systemctl enable gym-ai.service sudo systemctl start gym-ai.service
  3. 查看日志sudo journalctl -u gym-ai.service -f可以实时查看服务输出,便于调试。

5.4 电源与稳定性考量

健身房环境可能没有方便的电源插座。如果需要移动部署,可以考虑使用大容量的充电宝(支持PD协议,输出5V/3A)为树莓派供电。同时,在代码中增加异常捕获和日志记录,确保程序在遇到意外错误(如摄像头断开)时能自动恢复或安全退出,并由systemd自动重启。

6. 效果评估与未来扩展方向

部署完成后,我在自己的家庭健身房和一个小型健身工作室进行了测试。

6.1 实测效果

  • 准确性:对于“膝盖内扣”和“背部过度弯曲”这类有明显几何特征的危险动作,系统的识别准确率能达到85%以上。尤其是在侧方视角拍摄深蹲、硬拉时,效果很好。
  • 实时性:在320x240分辨率、轻量模型、跳一帧处理的配置下,平均帧率稳定在12-15 FPS,从动作发生到屏幕提示或声音警报的延迟在200-300毫秒以内,完全满足实时预警的需求。
  • 局限性
    • 视角依赖:摄像头必须放在侧面才能准确评估矢状面(侧面)的动作,如深蹲深度、背部弯曲。正面视角更适合评估冠状面(正面)的动作,如膝盖内扣。一个摄像头难以兼顾所有。
    • 动作定义:目前规则是基于简单几何关系,对于更复杂的动作模式异常(如发力不对称、关节活动度不足导致的代偿)难以量化。
    • 环境干扰:复杂背景、强烈反光、穿着宽松衣物有时会影响关节点检测的稳定性。

6.2 可能的扩展方向

这个项目是一个很好的起点,在此基础上可以深化很多:

  1. 多角度摄像头融合:使用两个或多个树莓派摄像头,从正面和侧面同时捕捉,构建更完整的3D姿态信息(尽管MediaPipe输出的是3D坐标,但单目摄像头的深度信息z值并不完全可靠)。
  2. 引入时序模型:当前是逐帧分析,属于静态姿态评估。可以引入LSTM或Transformer等时序模型,分析连续多帧的姿态序列,从而识别“动作模式”而不仅仅是“瞬间姿态”,比如识别“快速圆背硬拉”这种动态危险。
  3. 个性化基线学习:让系统先记录用户标准完成5次动作时的关节角度范围,作为其个人的“安全基线”,后续检测则基于个人基线进行偏差报警,更个性化。
  4. 与健身器械集成:通过传感器(如压力垫、速度杆)获取杠铃速度、受力分布等数据,与视觉信息融合,提供更全面的训练质量分析(如判断是否“粘滞点”借力)。
  5. 云端同步与数据分析:将脱敏后的动作数据和报警记录上传到云端,供教练进行长期分析,发现会员的薄弱环节和风险趋势。

6.3 给想复现者的最后建议

如果你想自己动手做一个,我的建议是:分步进行,快速迭代

  1. 第一阶段:先在电脑上(用USB摄像头)跑通MediaPipe Pose的Demo,理解数据格式。
  2. 第二阶段:在树莓派上搭建好环境,实现摄像头读取和姿态显示,确保基础流程通畅。
  3. 第三阶段:针对一个你最熟悉的动作(比如深蹲),实现一个最简单的风险规则(比如膝盖不超过脚尖),并完成报警反馈。
  4. 第四阶段:优化性能、处理异常、增加更多动作规则。

过程中遇到问题,多查查MediaPipe官方文档、树莓派论坛和GitHub上的相关Issue,大部分坑都已经有人踩过了。这个项目的价值不在于用了多高深的算法,而在于它将前沿的AI技术以极低的成本,落地到了一个非常具体的、有社会价值的场景中。看到自己做的系统成功提醒朋友深蹲时膝盖不要内扣的那一刻,所有的调试和折腾都值了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询