一个反复出现的落差

试点时识别很顺,门店开业两周,店长开始反映「老是认错」。供应商远程一看,模型没变,参数没动,版本也没更新。

常见的解释是环境差异:灯不一样、摄像头角度不一样、商品摆放不一样。这些都对,但还有一个更靠前的原因——测试用的那批照片,和现场的画面是同一个来源。

同一批商品、同一个货架、同一盏灯、同一个角度拍出来的照片,划一半训练一半测试,指标当然好看。模型在这种数据上很容易学到一些和商品本身无关的东西:货架的底色、包装在某张价签旁边的位置、甚至拍摄时的那片反光。

它答对了,但没在看商品。

这件事是可以测出来的

arXiv 上有一篇医学视觉问答的研究,标题叫 When Evidence Vanishes: Distilling Visual-Evidence Dependency in Medical Vision-Language Models(编号 2610.23469)。它指出:小而快的视觉模型完全可以答对临床问题,靠的却是问题措辞或者学到的先验,而不是图像。

论文给的判据很朴素:把图像里那块证据遮掉,正确答案的支持度应该下降。 不下降,说明模型靠的是别的东西。作者把这个性质叫「视觉证据依赖」,并用「遮住目标」与「随机遮挡」的对照来量化两者的差距——训练之后,模型对目标被遮的反应明显变强了。

医学影像离零售很远,但这个测法可以原样搬到店里。核心只有一句:把该看的东西拿掉,看它是不是还答得一样顺。

门店能自己做的四个测试

不需要算法知识,需要的是肯花半天时间。

一、遮挡测试。 把商品的一部分挡住——用纸板、用手、或者只露出包装一角。识别率应该明显下降。如果遮挡之后照样认得出,多半是在看背景或者货架位置。

二、换台测试。 同一批商品拿到另一家门店、另一台设备上过一遍。跨门店掉得厉害,说明模型绑在了拍摄环境上,而不是商品本身。

三、换背景测试。 把商品从原货架拿下来,放在一张白纸或者空桌上识别。这一招最狠:背景一换,靠环境线索的模型立刻现原形。

四、混放测试。 把外形相近、颜色相近的商品放在一起,看它会不会串。混放是门店的日常状态,单人单独摆放反而是例外。

四个测试都不用改模型、不用改设备,做完心里就有数了。

该问供应商的几个问题

买之前问清楚测试数据是怎么来的,比多要一个百分数有用:

  • 测试集和训练集是同一批门店拍的吗?有没有跨门店、跨城市的样本?
  • 测试照片里有没有遮挡、混放、堆叠、逆光这些真实情况?
  • 换包装、上新之后,模型多久能跟上?靠什么触发更新?
  • 如果在我店里测出来跟你们演示的数字差很远,怎么处理?

如果对方只能给出一个总体准确率,说不出测试数据的分层方式,那这个数字参考价值有限。

日常运维里也要防这件事

模型不是上线就完事。门店的陈列会变:换季、促销、堆头、联名包装、货架改造。每一次变化,都是一次「证据位置移动」。

务实的做法是:

  • 重大陈列调整之后,用二十个商品做一次小样本复测。 不用全量,能看出有没有系统性偏差就够。
  • 把出错的画面留下来。 只截商品区域,不要整店画面。有现场帧,后面所有讨论才有依据。
  • 看错误集中在哪。 集中在小部分商品,是商品侧问题;分散且随机,才考虑模型本身。
  • 别用平均数字验收。 按品类、按时段、按错误类型拆开看。总体高,可能来自大量有条码商品的顺带命中。

一句话

识别率高,只说明模型在这批照片上答对了;不说明它在看你摆的那件商品。验收时多加一步「把证据拿掉再问一遍」,比多要一个百分数更能看出这套东西在门店能不能站住。