先弄清一件事:位宽不是唯一变量

把模型的数字从高精度压成低位整数,专业说法叫量化。行业里常听到「4 位」「8 位」这类说法,好像位宽越低越激进、越低越容易出问题。

实际情况是:同样是 4 位,有的模型压完几乎看不出差别,有的模型压到 8 位就开始认错货。差别来自数据本身——具体说,是激活值里有没有少数特别大的数。这类数会把量化可用范围的很大一块占掉,剩下的正常数值只能挤在很粗的格子里。

所以判断一个模型能不能压,看的不是它有多大,而是它的输入数据里有多少「刺」。

门店正是「刺」特别多的地方

商品识别模型的输入是收银台的画面。门店现场的特点,恰好和实验室样本相反:

  • 联名、促销、换装商品:包装几个月一换,模型和量化参数都是围着老包装调的。
  • 现制与联营档口:卤味、面包、熟食,厂家图片和实物差得很远,颜色、形状、反光都不一样。
  • 反光包装:真空覆膜、礼盒覆膜,画面里会出现一片高亮。
  • 堆叠与遮挡:果蔬堆在秤盘上、手入镜、商品互相压着。
  • 季节性商品:月饼、粽子、地方特产,一年只出现一两个月。

这些样本在厂商准备的样本集里通常很少,甚至一件都没有。压缩模型时,量化参数是围着高频类别转的,长尾品类没人替它兜着。结果就是:平均识别率看着还行,出错的却集中在几个卖得不多、毛利不低的品上。

验收时怎么专门「找刺」

压缩模型的验收,思路和普通评测不一样——不是测平均,是故意挑最不像样的样本:

  1. 用自己的货测。 用门店自己的商品、自己的收银台、自己的灯光,不用演示机、不用厂商样本。
  2. 挑店里最不像样品的那件。 压扁的面包、带划痕的水果、拆过一半的整箱、贴着促销标签的旧包装。
  3. 按品类分层统计。 常见品类(饮料、乳品)和长尾品类(现制、散称、季节品)分开算,不要平均。
  4. 看最差的那一档。 平均值会被大量容易样本拉高,决定门店体验的是最难的几个品类在难场景下的表现。
  5. 区分错误的代价。 认错成同价位的另一款菜,和认错成差几十块的肉,损失不在一个量级,别混在一起统计。

选型和采购时该问的一句

与其问「你们压到几位」,不如问:压缩和校准用的数据,覆盖了哪些品类和场景?

位宽是厂商在工程上的取舍,门店很难判断;覆盖范围是能不能在你这儿用的前提,门店一问就清楚。如果对方的样本里只有标准摆放、常见货品,就要预期新品类和新场景上线后还得再折腾一轮。

一句提醒

压缩是工程取巧,不是免费午餐。门店不需要懂旋转矩阵这类数学工具,只要坚持一件事:验收时用离群的那批货,而不是最好认的那批货。