总述:为什么我要重新讲清这套曲面 Pattern 缺陷检测系统
Overview: Why I Want to Reconstruct This Curved-Surface Pattern Inspection System
English Abstract
This article explains why I decided to systematically rewrite and preserve a curved-surface pattern inspection system that had once formed a complete industrial technical loop, but was later described in fragmented and distorted ways. The point of this series is not emotional retrospection, but to reconstruct the system as a coherent technical object: its problem definition, structural logic, engineering abstraction, and reproducible design philosophy.
这些年我做过不少算法项目,但真正让我一直想重新写清楚的,并不多,这套曲面 Pattern 缺陷检测系统算是其中之一。
一方面,它曾在真实工业场景中形成过完整而有效的技术闭环;另一方面,它后续在某些并非出自我本人、也未充分反映真实技术贡献的成果呈现与知识产权文本中,却被以一种失真、凌乱、甚至难以复现的方式重新表述了。与其让一个本来具有明确问题主线、方法结构和工程逻辑的系统继续以错误文本流传下去,不如由我自己把它重新讲清楚。
写下这一组文章,不是为了争论谁说了什么,也不是为了做情绪化的追责,而是希望把这套算法系统以一种更规范、更有灵魂、也更能帮助后续研发者理解与复现的方式保留下来。
一、这不是一套普通的“字符检测算法”
如果只看表面描述,很多人会把它理解成一个“镭雕字符缺陷检测”项目,甚至进一步把它理解为某种 OCR、模板匹配,或者缺陷分类问题。
但在我看来,这样的理解过于表层。
为了让这个问题先落到一个更直观的层面,不妨先看几类真实产线中的代表性缺陷。下面这张图并不是算法示意图,而是现场检测中实际会遇到的局部异常:包括镭断、多镭和色异常。它们看上去都只是局部结构上的小偏差,但真正困难的地方恰恰在于:系统必须先区分这些偏差究竟来自正常成像波动、曲面形变与工艺扰动,还是已经构成了需要输出的真实缺陷。

图 1:真实产线样本中的三类代表性局部缺陷示意,包括镭断、多镭与色异常。为避免暴露客户与业务信息,图中仅保留与缺陷相关的局部区域。
这套系统真正面对的问题,并不是“字符识别”本身,而是:
如何在光滑曲面上的结构化 Pattern 存在形变、成像扰动、工艺波动和产品差异的条件下,建立一套可归一化、可比较、可配置、可扩展的缺陷检测系统。
这和普通平面字符检测不是一个难度层级的问题。
平面上的字符检测,很多时候只需要解决成像质量、局部噪声、对位偏差等问题;而曲面上的 Pattern 检测,首先就要面对一个更根本的事实:对象的几何形态本身会参与成像与检测。
也就是说,图像中的局部差异——哪怕已经表现成镭断、多镭或色异常这样的可见现象——也并不天然等于“缺陷”。
它可能来自:
- 曲面带来的几何形变;
- 不同产品或不同国别图档带来的结构差异;
- 光照、焦距、姿态、夹具、上下料过程带来的成像扰动;
- 工艺侧带胶、填充不均、边缘毛刺等复杂因素;
- 以及节拍、参数配置、模板迁移所带来的工程约束。
所以,这个问题如果处理得太浅,很容易退化成“规则越写越多,阈值越调越碎”的局面。
而一旦走到那一步,系统基本就失去生命力了。
二、我为什么一直觉得这件事值得单独写出来
原因很简单:这套系统真正有价值的地方,并不只在于它“做成了”,而在于它体现了一种我始终非常看重的算法路线。
我一直更认同一种结构化的思路:
面对复杂工业问题时,首先不是去堆砌模块,也不是急着引入流行名词,而是先抓住问题本身的结构,把对象抽象对,把归一化机制搭对,把可比较的中间表示建立起来,然后再围绕它生长出模板、参数、判别逻辑和工程系统。
这套曲面 Pattern 缺陷检测系统,正是这种思路在工业场景中的一次集中体现。
它不是某个孤立算子的成功,不是某种训练技巧的偶然有效,也不是单条产线调通后的经验堆叠。它真正的价值在于:
- 它抓住了问题本体;
- 它建立了稳定的技术主线;
- 它形成了可配置、可迁移、可实施的系统能力;
- 它在真实产线环境中得到了验证。
而这些东西,恰恰最容易在后续转述中被写丢。
三、为什么我要用“规范重述”这个说法
这组文章虽然分篇展开,但在我心里,它们其实都在做同一件事:
把这套曲面 Pattern 缺陷检测系统,重新讲回来。
所以我后来才越来越觉得,“规范重述”这个说法是合适的。
这里的“规范”,并不是为了显得书面,也不是为了把事情说得更正式一点,而是因为我慢慢意识到:一个真正做成过的工业算法系统,如果后来没有被用合适的结构重新讲清楚,它就很容易在后续转述里被讲窄、讲散、讲偏。
有的表述会把它说成一个表层问题,仿佛它不过是在“检测字符缺陷”;
有的表述会把模块摊开来写,什么都有一点,但真正的主线反而不见了;
还有的表述会把枝节当主干,把真正有价值的部分讲没,最后留下来的东西甚至已经不值得参考。
从技术角度看,这其实是很可惜的。
因为算法系统和成品代码不一样。
代码会迭代,工程会下线,人员会变动,但只要问题主线、方法结构和系统逻辑还被准确保留下来,这个系统就没有真的死。
反过来,如果留下来的叙述本身就是错的,那么哪怕表面上还剩一堆名词、流程图和模块说明,也未必真的把那个系统留下来了。
所以我写这一组文章,并不是为了把过去重复一遍,也不是为了做情绪化的追溯,而是想做一件更具体的事:
把一套后来被讲偏了的工业算法系统,重新建立为一个可以被理解、被传递、也值得被后来者参考的技术对象。
四、这套系统真正难的地方到底在哪里
这类问题之所以难,并不是因为缺陷种类多,也不只是因为现场环境复杂,而是因为几个层面的困难会同时成立。
1. 几何层面的困难
Pattern 位于曲面上,成像中天然会带入几何变形。
这意味着检测前必须先解决某种意义上的结构归一化问题,否则后面的差异比较很容易把正常形变误判成缺陷。
2. 表示层面的困难
工业检测里最忌讳的一件事,就是直接在原始图像上硬判。
因为原始图像同时混杂了产品结构、成像扰动、工艺波动和偶然噪声。
如果没有一个足够稳定的中间表示,后面的阈值、模板和规则都会越来越脆。
3. 系统层面的困难
一个算法能不能在单次实验里跑通,和它能不能在多产品、多图档、多国别、多产线条件下持续工作,是两回事。
真正的系统一定要回答:
- 模板怎么建立?
- 参数怎么继承?
- 新产品怎么导入?
- 谁来维护?
- 如何让一线工程师接得住?
- 如何在节拍要求下保持稳定?
4. 工艺耦合层面的困难
很多所谓“缺陷”,其实并不是纯粹的视觉问题,而是工艺状态通过图像投影出来的结果。
带胶、填充不均、边缘不完整、色差异常,这些都可能让检测边界变得非常微妙。
如果算法设计者不了解工艺约束,就很容易把问题做偏。
也正因为如此,我始终认为,这类项目真正难的不是“有没有一个分类器”,而是:
能不能把几何、表示、工艺、参数化和工程实施这些层面,统一到同一套方法主线里。
五、它为什么不是“再加一点深度学习”就能讲清楚的系统
过去这些年,工业视觉里很容易出现一种叙述惯性:
仿佛一个项目只要加上了深度学习模块,就显得更先进,也更容易被人理解。
但对这套系统来说,至少在我自己的设计视角里,深度学习从来不是主干。
真正的主干始终是:
- 对检测对象的结构化理解;
- 对曲面形变的归一化处理;
- 对模板与参数体系的建立;
- 对局部异常与正常波动之间边界的刻画;
- 对整套系统可实施性的组织。
如果这些东西不成立,那么后面即使再挂上分类器、分割器或者神经网络,也只是在一个没有骨架的体系上继续加零件。
而如果这些东西已经成立,那么深度学习最多也只是某些边界场景下的补充工具,而不是这个系统真正的灵魂所在。
我并不反对深度学习。
我反对的是:用一个附属模块去替代问题本体的叙述。
六、为什么这件事在今天仍然值得写
从时间上说,这已经不是一个刚结束的新项目。
但越往后,我越觉得它值得写下来,而且应该认真写。
原因并不只是“它当年做得不错”,而是它背后包含的几件事,在今天仍然很有代表性:
- 工业界仍然大量存在“把复杂问题说浅”的倾向;
- 很多项目能跑,却没有形成真正可传承的技术表述;
- 很多系统明明有结构,却在汇报和交接中被写成了模块拼装;
- 很多研发者做了真正难的事情,却没有给自己留下足够准确的技术记录。
把这些文章一篇篇写下来,其实也是在反过来提醒我自己:
真正做过、做成过的系统,不应该只以零散记忆、项目摘要或失真文本的形式存在。
它值得被重新组织成一个更清楚的技术对象。
七、这一系列文章准备写什么
这不是一篇讲完所有细节的文章。
这一篇只是总述,主要回答一个问题:
为什么我要重新讲清这套曲面 Pattern 缺陷检测系统。
后面的文章,我会继续围绕下面几个方面展开:
1. 这到底是一个什么问题
为什么它不是普通字符检测,也不是简单模板匹配。
2. 这套系统真正的技术主线是什么
从曲面形变、结构归一化到参数化模板机制,哪些是主干,哪些只是附属。
3. 为什么工业项目难的不是“做出算法”,而是“做成系统”
包括模板创建、参数管理、实施交付、节拍与稳定性这些常被忽视的部分。
4. 这类系统里最容易被误解的几个点
例如深度学习的位置、归一化的重要性、可复现性的问题,以及为什么一些表述看起来很热闹,却失去了真正的灵魂。
如果这些内容最后能对后来做相关工作的研发者有一点帮助,那我写这个系列就有意义。
八、这一篇的结尾:把系统重新还给问题本身
我想用一句很简单的话,作为这篇总述的结尾:
一套真正有价值的工业算法系统,不应该只留下“做过”的痕迹,更应该留下“为什么这样做、它真正依赖什么结构、它为何能够成立”的清晰表达。
这套曲面 Pattern 缺陷检测系统,对我来说正是这样一个对象。
它不该被草率地理解成一个字符检测项目,
也不该被错误地表述成几个模块和若干名词的拼接,
更不该在失真的叙述中失去自己原本的技术灵魂。
所以我决定重新讲它。
这,就是这个系列的起点。