一、为什么准确率不够用
做了几轮CV模型评测之后,我发现:加权准确率达标了,其实心里知道数字背后还有坑。
因为原因是样本不平衡的。
例如测试集里某个动作权重接近30%,模型只要把这个动作识别好,加权总分就能看起来很漂亮。其他动作识别差?加权之后影响不大。
还有极端情况:模型把所有输入都识别成权重最高的那个动作,加权准确率可能还有25%+,但其他动作完全识别不了。
这就是只看准确率会被骗的原因。
二、CV模型评测指标体系
2.1 准确率(Accuracy)
最基础的指标,但要结合权重看。单个动作准确率 + 加权总分,两个都要有。加权总分给领导看,单个动作准确率自己心里有数,知道哪里有坑。
2.2 召回率(Recall)
准确率回答:模型认对的里面,有多少是真的对的。
召回率回答:用户真实做了这个动作,模型认出来了吗?
对健身动作识别来说,用户做了某个动作没被认出来,计数就错了,直接影响用户体验。召回率才是用户视角的指标。
重点盯高权重动作的召回率。权重30%的动作,召回率60%,用户做10次只被认出6次,这个问题比十几个低权重动作识别差都严重。
2.3 混淆矩阵
知道某个动作识别差还不够,还要知道认错成什么了。
认错成相似动作,跟认错成完全不同类的动作,优化方向完全不一样。前者是动作太像需要细分特征,后者是模型根本没学到这类动作的核心特征。
混淆矩阵一张图把这些全说清楚。
2.4 P99延迟
性能报告里,均值掩盖痛苦,P99揭示真相。
平均推理时间900ms看起来还行,但P99可能是2000ms,最慢的那1%用户体验直接崩。均值和P99都要记。
三、置信区间和版本对比
3.1 CV模型的确定性
CV模型跟LLM不一样,同一条视频跑10次结果一样,不存在随机性。所以"重复跑多次"在CV这里意义不大。
CV评测里置信区间的真实含义是:测试集覆盖度够不够。每个动作只有3条视频,样本量偏少,结论的置信度有限。
3.2 实战踩的坑
同一个测试集,模拟器跑68%,Mac跑88%,差了20个点。原因是模拟器ONNX Runtime跟真机推理路径不一样。
教训:跑批环境不对齐,结论没有可比性。算法自测80%,测试自测70%,不是谁错了,是环境不一样。
另一个坑:连续跑批机器过热降频,后面几批结果比前面差。要分批跑,中间散热,控制无关变量。
3.3 版本对比怎么判断
新版本比旧版本提升了3%,是真的提升还是测试集波动?
简单判断方法:如果两个版本的结果区间有大量重叠,这个提升可能只是随机波动。如果几乎不重叠,才是实打实的提升。
不要只看均值,要看波动范围。
四、相关性不等于因果性 - 拨开迷雾找真凶
这是从执行层测试跃升到架构层测试关键的一步。
4.1 混淆变量(Confounding Variable)
两个指标一起变动,直觉会说"A导致了B"。
但统计思维会问:有没有第三个变量同时影响了A和B?
经典例子:穿鞋睡觉的人头痛概率更高。直觉说穿鞋导致头痛,真相是前一晚喝多了,既导致穿鞋睡觉,也导致头痛。穿鞋只是混淆变量。
4.2 真实踩过的混淆变量
案例一:跑批环境差异
同一个测试集,A环境跑出68%,B环境跑出88%,差了整整20个点。
直觉结论:模型效果差。
**真实原因:**两个环境的底层推理路径不一样,环境才是混淆变量,不是模型本身的问题。
如果直接拿A环境的结果去说模型差,是南辕北辙。
案例二:热降频
连续跑批,后面几批结果比前面明显差。
直觉结论:这批动作识别差。
**真实原因:**机器长时间运行过热,CPU/GPU自动降频,推理性能下降。温度才是混淆变量,不是动作本身的问题。
4.3 对照实验:锁死其他变量
排除混淆变量的方法只有一个:**控制变量,只改你想测的那一个。**
实际操作:
1.对比不同运行环境时,锁死数据集、模型版本、测试时间,只换环境
2.对比新旧版本模型时,锁死测试集、运行环境、测试时间,只换模型
3.跑批时分批进行,中间散热,锁死温度这个无关变量
一个容易犯的错误: 同时改了Prompt又升级了RAG索引,效果好了不知道是谁的功劳,效果差了不知道谁在背锅。每次只动一个变量。
4.4 辛普森悖论:总分可能欺骗你
高权重动作跑了很多次,低权重动作只跑了几次,汇总之后总分好看,但低频动作的问题被完全掩盖了。
加权总分是平均数,平均数会掩盖局部问题。
混淆矩阵和分动作召回率才能把局部问题挖出来。总分给领导看,分动作数据自己留着。
五、Agent评测指标体系
Agent跟CV本质不同:CV是确定性模型,Agent是概率性系统,同一个输入不同时候结果可能不一样。
核心指标方向:
任务完成率: 端到端流程跑通了吗
工具调用准确率: 调用了正确的工具吗
链路稳定性: 多步骤中哪一步容易断
**混淆变量排查:**Agent慢了,是模型问题、网络问题还是任务复杂度不一样
六、总结
CV评测核心:指标选对,环境对齐,样本够用。
Agent评测核心:链路可观测,结果可复现,波动可量化。
两类模型最大的差异:CV出了问题能定位到哪一层,Agent出了问题有时候只知道结果不对,不知道哪步开始歪的。
一句话:数字会说谎,但数字背后的变量不会。