053 TensorFlow Lite Micro的Magic Wand项目:手势识别
上周调试一个客户定制的智能穿戴方案,对方要求在Cortex-M4上跑手势识别,功耗不能超过5mA。我翻出Magic Wand的代码,心想这玩意儿在Arduino上跑得挺欢,移植过去应该不难。结果一跑起来,推理结果全是“Wing”手势——我明明在画圈。后来发现是加速度计的数据方向没对齐,模型训练时用的是右手坐标系,我的板子用的是左手。这种坑,文档里不会写,只有焊过板子的人才知道。
项目骨架:别被“魔法”两个字骗了
Magic Wand项目本质上是TFLM官方提供的一个端到端手势识别示例,基于加速度计数据识别三种手势:Wing(翅膀)、Ring(画圈)、Slope(斜坡)。模型是一个1D卷积网络,输入是3轴加速度的时序窗口,输出是三个类别的概率。
代码结构其实很清晰,但初次接触容易迷失在文件堆里。核心文件就这几个:
magic_wand_model_data.cc:模型二进制数据,用xxd转出来的C数组recognize_gesture.cc:推理引擎封装,包含预处理和后处理magic_wand.cc:主循环,采集数据、跑推理、输出结果
别被“魔法”两个字骗了,这玩意儿没有黑科技,就是标准的TFLM推理流程。真正需要花时间的是数据对齐和预处理。