ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

工业视觉踩坑实录(十五):用第一性原理和最优错误率重新理解工业视觉项目

工业视觉踩坑实录(十五):用第一性原理和最优错误率重新理解工业视觉项目 用第一性原理和最优错误率重新理解工业视觉项目摘要做这行十年我见过最贵的错误不是算法选错了是在一开始就用错了框架思考问题。这篇文章聊聊我怎么把第一性原理和吴恩达的最优错误率概念用到工业视觉项目判断上。关于作者我接触视觉整整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 中文就能找到完整版自己下载就行。懒得搜的也可以关注我找我要省事。不管你是做传统视觉还是深度学习这份文档都能帮你建立对模型能力的合理预期少踩「无限追求精度」的坑。 相关专栏工业视觉踩坑实录
返回列表