先说结论:仓库视觉 AI 模型上线掉准确率,大概率不是模型不行,是你根本没管住模型以外的东西——光照、相机、数据、版本发布。
我见过太多这种场面。供应商来做演示,笔记本上跑得漂亮,训练集 99% 的准确率,投屏给老板看,全场鼓掌。两个月后上线,现场掉到 90% 出头,操作工开始手动复检每一单,老板问钱去哪了,供应商说"你们现场条件变了"。你听着耳熟吗?
训练集上的数字是闭卷考试,现场是开卷还时不时停电。这两件事压根不是一回事。
掉准的根因,我一个个给你数。第一是光。仓库的光一直在变:月台门一开,阳光直射传送带;夜班的照明和白班不一样;到了秋天太阳角度变了,之前没问题的工位突然全是反光。有个公开报道的案例我印象很深:一个基于 Jetson Orin 的视觉检测系统,实验室里准确率 99.8%,量产上线后误检率直接冲到 15%~20%,查下来就是窗户透进来的阳光让金属件反光被误判成缺陷。仓库里纸箱、胶带、缠绕膜都是反光面,这个坑一个都躲不掉。
第二是相机自己在动。叉车路过蹭一下支架偏了几度,镜头上积了三个月的灰,传送带振动让画面轻微拖影。几度?听着不大,但对做定位和计数的模型来说,视角变了等于换了一个数据集。
第三是货在变。新 SKU 进仓、商家换了纸箱颜色、印刷新标识、缠绕膜从透明换成黑色——模型训练时从来没见过这些。第四更隐蔽:训练和推理的预处理对不上。训练时图片做了归一化,上线时工程师为了省几毫秒跳过了一步,这种训练-推理偏差不会报错,只会悄悄地让准度掉一截。第五个连很多算法团队自己都意识不到:标注口径在漂移。同一批质检员,年初和年中对"划痕算不算缺陷"的标准不一样,标签自己先变了,模型学的是个移动的靶子。
所以一句话:模型不是变差了,是世界变了。而大多数仓储视觉项目的运维,恰恰对"世界变了"毫无准备。
模型版本,要像管库位一样管
先讲个血淋淋的习惯问题。很多项目的模型管理就是个文件夹:model_final_v2_real_final.pth。哪个版本的数据训的?超参是啥?预处理改没改?没人说得清。出了问题想回滚?回哪去都不知道。
版本管理的核心只有一条:任何一个上线过的模型,都要能完整复现。版本号必须绑定三样东西——训练数据的版本、代码版本、超参数和随机种子。训练数据要做快照,存成不可变的一份,谁都不能事后改。少了任何一环,出事的时候你都说不清"到底是哪个环节变了",只能靠猜。
回滚机制是第二个保命项。视觉模型迭代的标配是"一键回滚":新版本上线出问题,十分钟内切回上一个稳定版本,不需要重新训练、不需要改代码。做不到这点,就别谈迭代。你看那些掉准的惨案,很多不是因为新版本差,而是因为新版本差了还退不回去,现场被迫拿坏模型顶着跑。
数据集快照怎么做?不用搞得多复杂:每次训练,把训练集的文件清单加哈希值存下来,采样比例、增强手段写进训练日志。以后有人问"这一版到底拿什么训的",三分钟能答上来,就算合格。答不上来的团队,模型出问题只能靠玄学排查。
然后是发布方式的选型分界,这块我给个明确结论。业内三种标准做法:影子模式、灰度发布、蓝绿部署。影子模式是让新模型和老模型同时跑生产流量,新模型的输出只记录不执行——零风险,专门用来验证"新模型在真实流量下表现如何"。灰度发布是先让新模型接一小部分真实流量,比如先接 5% 跑一周,没问题再按 20%、50%、100% 逐步放量,出了问题影响面可控。蓝绿部署是两套完整环境瞬间切换,适合换相机型号、大改预处理这种"非换不可"的场景。
我的判断:仓库视觉项目,标准路线就是影子跑两周,再灰度放量。别跳过影子直接灰度——灰度接的每一单都是真实业务,视觉质检错一单就是发错一单货;影子模式的错单只是日志里的一行字。顺序不能反。
影子跑的那两周也不是白跑,要看三个数:新老模型分歧率有多高、分歧集中在哪些货上、新模型在高置信度样本上是不是明显更稳。分歧率居高不下还执意灰度,等于闭眼上路。灰度阶段再看业务指标:复检人工时有没有降、错发率有没有动。技术指标好看、业务指标不动的升级,不叫升级,叫折腾。
报警太多,等于没报警
上线之后是第二个战场:监控。很多项目上线即巅峰的原因,是没人知道模型什么时候开始掉。运营团队发现不对劲的时候,模型已经烂了两个月。
监控要先看对指标。误检率和漏检率必须分开看,因为它们烧的是两种钱。误检烧的是人力:模型说有问题、实际没问题,每一单误检都要人停下来复检,误检率一高,操作工就开始无视系统,你的 AI 等于白装。漏检烧的是真金白银:有问题的货没被发现,发到客户手里就是退货和罚款。一个只看"总准确率"的仪表盘是自欺欺人——准 95% 的模型,误检和漏检各占 2.5%,和误检 4.5%、漏检 0.5%,是完全不同的两种生意。
另外还要区分四种不同的"坏":数据漂移(输入变了,比如光照、新包装)、预测漂移(模型的输出分布变了)、概念漂移(输入和答案的关系变了,比如质检标准收紧了)、纯粹的工程故障(特征管线挂了)。原因不同,治法完全不同。看到准度掉就"加数据重训",十有八九是治错了病——如果是相机歪了,你训一百遍也没用。
最后是报警疲劳,我单独拎出来说是因为这是最常见的死法。阈值设太松,模型烂了没人知道;设太紧,每天几十条报警,值班的人看都不看就批量已读。我的经验:报警只设两档。一档是"准度掉超过基线、必须今天处理",一档是"趋势在变差、本周看看"。超过两档的报警体系,基本等于没有报警体系。

结尾不讲大道理,给你一个明天就能动手的事。
从今天开始,让系统每天把生产图片存下来,随机抽 100 张,找个人工复检一遍,记下误检多少、漏检多少。坚持两周。你会得到这个项目最值钱的东西:模型在现场的真实准度曲线。有了这条曲线,上面说的所有东西——版本管理、灰度发布、报警阈值——才有地基。没有这条曲线,你调的每一个参数都是在猜。
视觉 AI 这行当,拼的从来不是谁的模型准一度,而是谁先知道自己什么时候不准了。







