「训练」和「部署」是两段工作。分清它们,才不会被卡住,也不会被话术骗。
一个负责任的导出应该给你一个压缩包,里面至少包含:
关键点:模型不该被锁死在训练它的工具里。 如果导出格式只有那个工具自己能读,那你训出来的东西就不真正属于你。
导出为通用格式之后,你用 Python 就能独立加载推理,不需要原工具在场。 典型流程是三步:加载模型 → 把新数据整理成和训练时同样的列 → 调用预测。 中间最容易出错的地方是第二步:列的顺序、类型、缺省值必须和训练时一致, 不然得到的结果会毫无意义却不报错。
所以导出包里那份「项目文件」很重要——它记录的就是这张表的原始形态。
这是最常被混为一谈的一步,说清楚:
| 阶段 | 产出 | 典型工具 |
|---|---|---|
| 训练 | 一个模型文件(可能在电脑上跑) | AutoGluon / scikit-learn 等 |
| 转换 | 嵌入式可用的格式 | ONNX / TFLite 等 |
| 部署 | 在 MCU / 板子上跑的推理代码 | TFLite Micro / CMSIS-NN 等 |
Kvaxir 只负责第一段(训练与导出)。 把模型烧进单片机、写 C 推理、处理内存与算力约束,是后面两段的工作—— 我们没有做,也不打算假装做了。如果你的目标就是"跑在 MCU 上", 请把训练工具和部署工具分开选,别指望一个工具全包。
还是那组实测数字:同一份数据,速度优先档导出约 3.4 MB, 均衡档约 75 MB。在电脑上两者都无所谓,但放到嵌入式场景里, 这就是「能塞进去」和「塞不进去」的区别。
所以选档位时不要只看准确率——先看目标设备有多少余量。 准确率只涨 2.3 个百分点、体积涨 22 倍这种账, 只有在部署那天才会真正算清楚。