SMARTWATCH 学习手册有 C 基础 · 嵌入式从零开始
五 A / 原型学习与个性化 / 03

一次个人采集,怎样形成新原型

从 App 选择动作开始,沿开始、筛选、累加、结束或取消的顺序读代码。每个条件都对应一项数据质量或业务要求。

接续上一篇:长度、方向和点积:怎样比较两串特征

1 · 先确定用户想更新哪一类

App Session 选择活动,向手表发送开始命令与类别编号。proto_session_start 清空本次累加器、数量,记录目标类别并进入活动状态。类别编号必须与基础模型和原型表一致,不能只按界面文字位置猜测。

原型更新使用每次成功推理产生的新特征,一份 128 维特征是一个有效推理样本,不是一个原始加速度点。窗口之间可能高度重叠,也不等于采到了同样数量的独立动作。

2 · 为什么不是每份特征都收下

当前 proto_session_feed_if 的筛选顺序

if (!g_session_active) return;
if (har_class != (int)g_session_class) return;
if (har_conf < 0.7f) return;
proto_session_feed(embedding);

先看是否在采集,再看基础类别是否匹配目标,最后看基础置信度。被接纳的特征逐坐标累加,数量增加。这些默认条件用于减少过渡动作污染,但并不自动给出正确人工标签。

若基础模型经常把目标动作认错,最需要改善的样本可能被筛掉。采集记录要同时统计尝试数量、通过数量、拒绝原因与独立人工动作,不能只看最后通过了多少。

3 · 结束时究竟更新了什么

计数表示有效推理窗口,采集时长受填窗、推理频率与筛选比例影响。
计数表示有效推理窗口,采集时长受填窗、推理频率与筛选比例影响。 · 教学示意

当前门槛为 50。有效次数不足会丢弃本次累加,不更新原型。达到条件后求均值、归一化,再替换对应类别。不要沿用旧注释中的固定分钟数推算所有采集时长,实际推理间隔和拒绝比例会改变耗时。

4 · 版本与计数怎样解释

版本增加表示原型发生更新,不表示识别效果已经更好。数量反映曾接纳的推理样本,不能代替人员覆盖或独立样本量。UI 应把“正在记录”“有效样本足够”“版本已改变”区分开。

会话 abort 只取消本次收集,保留旧原型。重复开始、断开连接和无有效特征等路径应有明确结果。测试可模拟筛选条件,但最终佩戴效果需另外采集验证。

5 · 把采集记录留给后面的比较

保存基础模型版本、目标类别、人员、场次、更新前原型、通过比例和更新后原型。原型平均方法很短,真正需要解释的是输入从哪里来、是否受到系统性筛选。

动手观察

模拟 49 次、50 次、类别不匹配和置信度不足的会话,说明哪些情况更新。把一次长时间但低通过率记录与一次短时间高通过率记录比较,避免只用持续时间评价采集量。

资料与代码