用第一性原理和最优错误率重新理解工业视觉项目

摘要:做这行十年,我见过最贵的错误不是算法选错了,是在一开始就用错了框架思考问题。这篇文章聊聊我怎么把第一性原理和吴恩达的最优错误率概念,用到工业视觉项目判断上。


在这里插入图片描述

关于作者

我接触视觉整整10年

机器视觉、烟草、煤矿等行业都有深度开发经验。从硬件选型、算法开发、模型训练,到上位机开发及部署,都在一线磨过。

之前是多家公司人工智能团队的技术负责人。现在自己创业了,还在继续做视觉落地这件事。


说在前面

写这篇文章之前,我拒了一个项目。

甲方发来一份技术方案书,开头写的是「本项目采用深度学习+边缘计算+数字孪生技术架构,实现对产线质量的实时监控与智能预警」。

预算多少呢?20万。

这套方案听起来很厉害,但用第一性原理拆一遍,全是问题。

今天聊的是怎么用两个框架重新思考工业视觉项目:一个叫第一性原理五步法,一个叫最优错误率。


01 先说最优错误率是什么

吴恩达在《Machine Learning Yearning》第22节里提到了一个概念,叫最优错误率(也叫贝叶斯错误率)。

什么意思?

假设你在做语音识别,有14%的音频片段背景噪声太大,即使人类也听不清在说什么。那这14%就是最优错误率——最好的系统也不可能低于这个数字,因为物理上就没法解决。

反过来,如果你做的是猫咪图片识别,人类几乎不会认错,那最优错误率接近0%。

这两个场景下,同样是「训练错误率15%」,意义完全不同:

  • 语音识别场景:15%离最优错误率14%只差1%,算法已经很强了,问题在方差(泛化能力差)
  • 猫咪识别场景:15%离0%差了15%,问题在偏差(模型根本没学到东西)

这个概念看起来是机器学习的内容,但它对工业视觉项目判断有直接的指导意义。

因为工业视觉里,很多场景的最优错误率不是0%。

在这里插入图片描述


02 工业视觉里的最优错误率

做工业视觉这行久了,你会慢慢意识到一件事:不是所有缺陷都能被视觉系统检测出来。

有些缺陷物理上就是看不见的。

举几个例子:

钢卷表面缺陷。有些细微的划痕,深度只有几个微米,在普通光照下几乎不反光,只有在特定角度才能看到。这种缺陷,即使是最有经验的质检工人,用放大镜也未必能发现。最优错误率可能高达5%甚至更高。

食品包装上的轻微压痕。包装袋是塑料的,轻微压痕会导致表面轻微变形,但颜色不变、形状几乎不变。这种缺陷,相机很难捕捉到,人眼要对着特定光线才能看到。最优错误率可能也在3%-5%。

针织品的跳线缺陷。布料上的跳线,在平面图像里看起来和正常区域差异极小,只有摸上去才能感觉到手感不同。这种缺陷的最优错误率可能超过10%。

也就是说,当你接手一个工业视觉项目时,第一个要问的问题不是「用什么模型」,而是「这个任务的最优错误率大概是多少」。

如果你不知道,你就不可能知道这个项目能做到什么程度。


03 第一性原理五步法

有了最优错误率的概念打底,再来说第一性原理五步法。这套框架最早是马斯克提的,最近被说得很滥,但我这几年用下来,觉得它对工业视觉项目判断确实有用。
在这里插入图片描述

五步是:质疑、删除、简化、加速、自动化

下面分别说,在工业视觉项目里怎么用。


第一步:质疑

质疑的意思是,先不进入方案设计模式,而是问:这个需求本身成立吗?

我遇到过一个客户,说要做「钢材表面缺陷检测」,要用深度学习。理由是「我们产线质量要求很高,传统算法效果不好」。

我问了他一个问题:你们现在的漏检率大概是多少?

他说,大概3%。

我再问:这3%里面,有多少是视觉可以检测出来的?

他答不上来。

后来我去现场看了一下,发现这3%的漏检里,有一半以上是「表面轻微色差」,这种人眼对着特定光线才能看到,放到相机里几乎看不出差异。还有一部分是「手感缺陷」,摸上去不对但视觉上没变化。

算下来,真正能被视觉系统稳定检出的缺陷,大概是1%。另外2%是这个系统根本解决不了的,因为物理上就不可见。

这就是最优错误率的威力。知道最优错误率是多少,你才能知道这个项目有没有做头。

如果客户要求漏检率<1%,但你的调研结论是最优错误率3%,这个项目从一开始就接不了。不是说做不出来,而是物理上就做不到,任何算法都救不了。

质疑的标准问法:这个任务的最优错误率大概是多少?客户要求的精度,物理上能达到吗?


第二步:删除

进入方案设计阶段之后,第一件事不是想「我要加什么」,而是问「我要删什么」。

很多工业视觉项目之所以烂尾,不是做得太少,是做得太多。

我之前在煤矿上接过一个活,甲方一口气列了20多种算法的需求:皮带撕裂检测、大块煤识别、人员越线、设备温度、煤流量估算、粉尘浓度……什么都想往里塞。

问题是,周期给得很短,人手也不够。但甲方态度很坚决:「这些我们都要。」

结果就是,20多种算法全部硬着头皮上了。开发过程焦头烂额,每个算法都是赶工出来的,基本没时间做充分调试和现场验证。

最后上线之后呢?真正持续在用的,只有3个。

剩下那17个,要么是现场工况根本跑不通,要么是准确率太低客户自己关掉了,要么就是当初为了凑需求硬编的场景,实际根本没这个业务流程。

回头看,如果一开始就狠下心砍到3-5个核心算法,集中精力把这几个做到位,交付质量和客户满意度都会好很多。但当时没人敢说「这个不要做」,因为甲方要了。

这个经历给我一个很深的教训:客户说什么就要做什么,不是负责,是害人。你有责任帮客户做减法,因为你是专业的,你知道哪些是真正能落地的。

删除的标准问法:不做这件事会怎样?核心痛点只有一个,什么是必须解决的那个?


第三步:简化

删完了之后,剩下的部分能不能更简单?

我接过一个项目,客户要做产品外观检测,提的需求是识别十几种缺陷类型:划痕、凹坑、色差、气泡、毛刺、缺角……每种都要单独分类。

十几种缺陷,每种类别都要单独标注数据、单独调参数,工作量翻了好几倍。

我没急着动手,先问了一个问题:这些不同缺陷,处理方式有区别吗?

客户愣了一下,说:没有,不管什么缺陷,发现就直接剔除。

那问题就简单了:既然处理方式一样,为什么要分类?直接做合格/不合格二分类就行了。

模型从多分类变成二分类之后,数据需求量大幅减少,每种类别不用再凑几百张样本,整体标注量可能降到了原来的三分之一。模型更简单、训练更快、推理也更稳定,准确率反而比多分类更高——因为模型不用纠结「这个到底是划痕还是凹坑」,只需要判断「这个合不合格」。

这里的关键是,你以为的问题是「怎么把十几种缺陷都识别出来」,真正的问题是「怎么把不合格品挑出来」。这两个问题差很远。

很多项目一上来就想做精细分类,但回到业务本质一看,根本不需要。简化不是偷懒,是去掉那些看起来很专业但实际没必要的部分。

简化的标准问法:有没有另一种方式,可以用更简单的东西达到同样的效果?


第四步:加速

方案确定了,能不能让实施过程更快?

很多项目在实施阶段拖得很长,原因是需求一直在变。今天客户加个功能,明天改个流程,后天说界面要调整。

加速的核心不是催客户,而是把实施拆成可以独立验证的模块

我做项目的习惯是,先问客户:你最想看到的效果是什么?客户说,缺陷能检出来就行。

好,那就先做这个。做完了让客户看,确认了,再做下一步。

这样做的好处是什么?客户每一步都能看到进展,有问题也能及时发现,不会做到最后才发现方向错了。

而且客户每确认一步,信任就多一分,后面的配合度就更高。整个项目反而更快。

加速的标准问法:这个项目能不能拆成几个阶段,每个阶段都能独立验证和交付?


第五步:自动化

最后一步是自动化。不是产线无人化,而是开发和运维流程的自动化

工业视觉项目上线之后,最头疼的不是交付那一刻,而是后续的维护。产线要换新品、换规格,每次换品都要重新采集数据、标注、训练、部署。这套流程每跑一次都要算法工程师介入,客户等不起,你也忙不过来。

我之前做烟草外观检测,SKU几百个,经常有新品上市。每次客户说「来,这个新烟要加上」,就得走一遍完整流程:现场拍照→标注→训练→验证→部署到工控机。一个新品从采集到上线,最快也要两三天。SKU一多,光适配新品就能把人耗死。

后来我们做了一件事:把新品适配的流程自动化了。

系统自动采集新品的图像样本,自动完成预标注,人工只需要快速校对一下,然后自动触发微调训练,新模型验证通过后自动替换上线。整个过程从原来的两三天,压缩到几个小时,而且大部分时间机器在跑,人不盯着也行。

这里的关键是,自动化不是让产线没人,而是让维护流程不依赖人。 项目交付不是终点,后面还有漫长的维护期,如果每个新品适配都要你亲力亲为,项目越多你越累,最后自己把自己拖垮。

把重复性的流程自动化,你才有精力去接新项目、解决新问题。

自动化的标准问法:这个项目上线之后,有哪些维护动作是反复在做的?能不能把这些动作变成自动运行的流程?


04 五步法串起来看

把这五步放在一起,它们的顺序是什么?

是:质疑→删除→简化→加速→自动化。

但实际操作中,这五步不是走一遍就完了的,是一个循环。

比如那个烟草外观检测的项目,做完之后发现,虽然检测准确率达标了,但每次新品上市都要重新走适配流程,算法工程师忙不过来。这件事能不能自动化?

于是我们做了一个新品自动适配模块,从采集到微调到上线,整个过程压缩到了几个小时。

这一步做完,又发现新的简化空间,然后又回到简化那一步。

五步法是一个循环,不是直线。


05 回到开头那个项目

现在回头看那个「深度学习+边缘计算+数字孪生」的20万项目。

用五步法拆一遍:

质疑:这个任务的最优错误率大概是多少?客户真正的问题是质检工人眼睛累,还是真的要做数字化转型?这个系统交付之后谁来运维?

删除:数字孪生是必要的吗?边缘计算是必要的吗?如果工位只有两三个,一台普通工控机就够了,为什么要上边缘计算?

简化:能不能先用最简单的方案解决核心问题?比如装一台相机加一套检测算法,先跑起来看效果,确认了再扩展?

加速:能不能先做一个工位,两周之内让客户看到实际效果,确认了再继续?

自动化:这套系统最终要达到什么状态?是完全无人值守,还是只需要减少工人的重复劳动?

五个问题问下来,这个项目该怎么定义就清楚了。

不是不能做「深度学习+边缘计算+数字孪生」,但不是现在。不是这个预算、这个阶段该做的事。

真正的问题不是能不能做,而是现在该不该做。


06 最优错误率改变了我什么

说了这么多,我想说一个真实的感受。

在知道最优错误率这个概念之前,我对项目的判断更多靠经验:「这个应该能做」「那个估计难」。这种判断当然有用,但不够硬。

后来我学会在每个项目启动前,先问自己:这个任务的最优错误率大概是多少?

这个问题能帮我做三件事:

第一,知道这个项目有没有做头。 如果客户要求漏检率<0.1%,但最优错误率调研出来是1%,这个项目从一开始就接不了。知道这个,就不用浪费时间。

第二,知道该往哪个方向努力。 如果训练错误率已经接近最优错误率了,问题在泛化,该加数据或者简化模型;如果训练错误率还离最优错误率很远,问题在偏差,该换思路或者加特征。

第三,知道什么时候该停。 项目做到一定程度,发现无论怎么调算法,错误率就是降不下去——这不是算法的问题,是任务本身的最优错误率就在那里。知道这个,就能及时收手,不用一直往里砸时间。

这三个判断,帮我少接了好几个一定会烂尾的项目。


07 写在最后

这篇文章跟之前的踩坑实录不太一样。之前聊的更多是具体的技术问题,这篇聊的是思考框架。

但我觉得这个框架比任何一个具体技术都重要。

技术选错了,换一个就行。但框架错了,你会一直在错的方向上努力,越努力越亏。

第一性原理五步法帮我做减法,最优错误率帮我判断上限。两者结合起来,就是一个工业视觉项目的完整思考路径:

  • 先用最优错误率判断这个项目能不能做、做到什么程度
  • 再用五步法判断应该做什么、不做什么、怎么做更快

做工业视觉这行,最值钱的不是你会多少算法,而是你知道拿到一个问题,先想什么、后想什么。


很多做机器视觉的工程师是传统行业转过来的,Halcon、VisionPro用得溜,但一提到深度学习就有点虚——训练集、验证集、过拟合这些概念能说上来,但真正用到项目里判断该往哪个方向调,心里没底。

吴恩达的 Machine Learning Yearning 就是解决这个问题的。它不讲数学公式,专讲「模型到底能不能做好」「做不好该怪谁」这些工程判断。GitHub上搜"Machine Learning Yearning 中文"就能找到完整版,自己下载就行。

懒得搜的也可以关注我,找我要,省事。

不管你是做传统视觉还是深度学习,这份文档都能帮你建立对模型能力的合理预期,少踩「无限追求精度」的坑。


📎 相关专栏

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐