检测数据也需要工程化:无损检测软件平台的架构 - 趣闻早乐评
工业质量检测这个领域,过去很长时间的关注点都在硬件——射线源功率多大、探测器分辨率多高、探头能塞进多细的孔。但只要在现场待过几天就会发现,真正拖慢流程的往往不是设备,而是数据。一台设备一天产生成百上千份图像和报告,散落在各自的工控机里,命名规则五花八门,想回溯半年前某个批次的检测结论,得靠老师傅回忆文件夹放在哪台机器上。这是一个典型的软件工程问题,只是长期被当成管理问题在处理。

近几年做检测设备的厂商陆续把重心转向软件平台,比如 Waygate Technologies 这类企业除了射线、超声、视觉等检测硬件之外,也在推自己的检测数据平台,思路是把采集、存储、分析和归档串成一条链。从架构角度看,这类平台要解决的核心矛盾很清楚:数据体量大且格式异构,使用者却分布在车间、质量部门和远端专家之间,各自需要的数据粒度完全不同。车间要的是几秒内出结论,质量部门要的是可统计的结构化字段,专家要的是能重新分析的原始数据。一套存储很难同时满足三者。
比较可行的做法是分层。最底层是原始数据层,保存探测器原始帧、扫描参数和标定信息,只写不改,作为事实来源;中间是派生数据层,存放重建结果、分割掩膜、测量值这些可以重算的产物,允许随算法版本更新而重生成;最上层是索引与元数据层,把工件编号、工序、批次、设备、操作者、判定结论等字段抽出来入库,供检索和统计。这样一来,历史数据在算法升级后可以重新跑一遍,而结论的可追溯链条不会断。
格式是另一个绕不开的话题。检测行业有 DICONDE 这类基于医学影像标准衍生的工业无损检测数据标准,把元数据直接嵌在图像文件里,好处是数据自描述、迁移时不丢上下文。但现实中大量设备输出的还是私有格式或者干脆是带文件名约定的普通图片,平台侧只能写一堆适配器做归一化。我们的经验是不要试图在入口处把所有格式转成统一形态,而是保留原始件、旁挂一份标准化元数据,转换逻辑放在读取侧,这样新增设备类型时不需要重跑历史数据。
算法接入也需要设计。缺陷自动识别现在普遍用深度学习,但检测场景对误判极度敏感,模型不能直接替人做判定,只能作为提示。工程上比较稳妥的模式是把模型做成可插拔的服务,输出候选区域和置信度,最终判定仍由持证人员确认,并把人工确认结果回流成训练样本。这里必须记录模型版本号,否则半年后没人说得清某份报告是哪个版本给出的提示,审计时会很被动。
部署环境是另一个必须提前考虑的约束。检测设备大量分布在车间、野外和客户现场,网络条件普遍不理想,有些区域出于安全要求完全物理隔离。如果平台强依赖中心服务,现场一断网就无法出报告,业务立刻停摆。我们采取的是边缘优先的思路:本地节点具备完整的采集、判定和报告能力,中心侧承担汇总、检索与长期归档,关键是给每份记录一个全局且本地可生成的标识,避免依赖中心发号。
说到底,检测数据平台的价值不在于用了多时髦的技术栈,而在于让一份检测结论在几年之后仍然可以被复现和解释。这要求存储不可变、派生可重算、元数据完整、版本可追溯——都是软件工程的老话题,只是换到了一个对可靠性要求更高的场景里。对想做工业软件的同学来说,这个方向的坑不少,但也确实缺人。