99POS
全部 73 场景方案 7 方案白皮书 3 防损 1 计价实践 1 品类方案 1 品牌与机型 3 收银选型 16 收银指南 3 算力平台 18 外设与扫码 2 运维与验收 18
首页/ 运维与验收/ 透明袋、白包装、货架阴影:最先认错的是边界

透明袋、白包装、货架阴影:最先认错的是边界

2026-10-29 运维与验收 约 738 字

出错的总那么几样

门店上线识别之后,运维群里反复出现的描述往往很具体:

  • 透明袋装的凉菜、卤味,袋面一反光就认成别的品类;
  • 白底白字的酸奶杯,挨着浅色层板放,框直接跑到隔壁;
  • 散装称重台上几个同样的面包叠着放,只数出一个;
  • 深色货架最底层,包装颜色和背景接近,干脆漏掉。

这些商品的共同点不是品牌、不是价格,而是跟背景的对比度低。人眼看得出,是因为人会顺着轮廓找;模型在低比特量化之后,最容易丢的恰恰是轮廓。

为什么压掉的先是边界

量化做的事是把连续的数值压到少数几个格点上。平坦区域(大片同色的包装正面、背景墙面)数值密集且差别小,压完几乎看不出变化。边界是前景和背景的过渡带,数值跨度大、像素又少,一旦格点变粗,就出现台阶,轮廓被磨圆或者断开。

更关键的是量化的优化目标。常规后训练量化按整层的平均重建误差来调参:几千个数值里,边界像素只占很小一部分,误差再大也被平均掉。对分类任务这无所谓,类别由整片区域的统计特征决定;对检测任务就是致命的,框的位置完全由边界决定。

框错了,后面全错。两盒豆腐的框糊成一个,分类器只看到一个「豆腐」,数量就少一件;称重台上少一件,是直接的钱。

arXiv 上有一篇 AxisQ(编号 2610.36844)专门处理这类低对比度目标的量化。它的做法有两条值得记住:一是位宽分配的方向随网络深度变——浅层按通道分、深层按局部频段分,因为不同深度上「哪些数值更值钱」不一样;二是重建误差按边界加权,让补偿优先落在轮廓附近。论文在伪装目标检测的基准上做到 2 位权重与激活(W2A2),CAMO 数据集上加权 F 度量相对最强基线,CFRN 提升 12.7%,CamoFormer-P 提升 33.3%。

选型时该问的四个问题

供应商说「我们做了量化优化」时,这句话本身没有信息量。可以拆成四问:

  1. 量化粒度是什么? 整网一个尺度、逐层一个尺度、还是逐通道?粒度越细,边界处越有余量。
  2. 平均位宽和最小位宽分别是多少? 「平均 4 位」可能意味着大部分层 4 位、个别层反而更低。
  3. 校准和重建用的什么图? 通用数据集和自家货架的照片分布差很远。用不含透明袋、不含暗角的图做校准,等于没为这些场景优化。
  4. 能不能给分位宽的边界类指标? 不要一个总准确率,要 8 位、4 位、2 位三档下「框位置偏差」和「漏检率」的变化。

门店侧怎么验收

建一个低对比度样本集。 两三百张就够,专挑透明袋、白底包装、浅色层板、暗角货架、叠放的散装商品。这些图从自家门店的真实画面里截,不要用商品官方图。

分开看漏检和错类。 漏检往往就是框没出来或者被合并,错类是框对了但标签错了。前者说明边界问题,后者说明分类头问题,处理方式完全不同。混在一个总准确率里看不出来。

一次只换一个变量。 换模型版本、换位宽、换阈值要分开做,同一天、同一批商品、同一光照条件下比。三个变量一起动,出了问题无法归因。

在营业高峰跑。 量化模型的算子如果在某些输入尺寸上回退到 CPU,延迟会抖。精度问题可以慢慢调,收银台前排队时的一次卡顿是当场的事故。

什么时候不必为这件事花钱

商品都有条码兜底、包装是高对比度的标准色块、位宽本来就在 8 位以上,这几类门店在边界上的损失有限,为它专门做量化改造不划算。

反过来,散装、生鲜、称重、无条码占比高的店型,识别错一件就是钱算错一次,边界是主要成本项,值得在选型阶段就把这条问清楚。

一句话

量化掉的精度不是均匀分布的,它集中落在轮廓上,而轮廓决定框和数量。验收时与其盯总准确率,不如拿一批透明袋和白包装的照片,看框还在不在。