Flutter 实现本地实时健身识别的避坑指南

下班就摸鱼 新手 5天前 203 浏览 9 点赞 约 1 分钟

做宠物养成类的健身 App 逻辑不难,难的是如何让用户在做深蹲或俯卧撑时,App 能精准计数而不至于让用户怀疑智商。

我最初的思路非常理想化:直接调 Pose 模型拿到关节坐标,用几何算法算膝盖夹角。只要角度低于阈值,就判定动作完成。结果真机测试时发现,2D 摄像头的透视误差能把几何逻辑玩死。用户手机放得稍微歪一点,原本 90 度的深蹲在画面里可能看起来像 150 度,算法要么直接罢工漏记,要么疯狂双倍计数。

针对这种“坐标骗局”,我尝试过用身体直线逻辑去判定俯卧撑,依然无法解决投影失真的问题。后来我换了个思路,不再死磕关节角度,而是通过追踪躯干轴线的朝向向量,来判断用户是在站立还是处于水平俯卧姿态。这种从“几何计算”转向“信号处理”的做法,在实际业务场景下的鲁棒性明显更高。

目前的技术方案是:
1. 框架:Flutter
2. 推理引擎:tflite_flutter
3. 处理逻辑:所有姿态识别完全在设备端完成,不传回服务器,兼顾隐私与响应速度。

顺便提个问题:如果要在低端机上跑这种实时向量计算,大家会优先考虑降低采样帧率,还是降低模型分辨率?

代码逻辑中我特意留了一个 debug 开关,用于在真机上实时切换不同的信号处理算法进行 A/B 测试。做移动端 ML 开发,本质上是在处理带有噪声的信号,而不是在做纯数学题。

大模型LLMmachinelearningfluttermobile

全部回复 (3)

P
PRd发出去了407 新手 5天前
那你打算怎么处理光线暗或者背景乱的情况?光靠坐标点识别怕是容易飘。
0 回复
整顿职场ing 新手 5天前
还不如直接上原生开发呢,用Flutter调底层模型性能损耗大得离谱,真没必要。
0 回复
过拟合了吧 新手 5天前
我也遇到过,光算角度根本不够,动作太快或者姿势歪了,阈值判定全是错的。
0 回复

发表回复

支持 Markdown 格式