1. 课程导论
各位同学,欢迎来到这门课。
我先问大家一个问题:一条产线每分钟产出 200 个零件,人工目检能看住几个?
答案是——撑死 60 个,还得换人。疲劳、漏检、标准不统一,这些都是人工检测的硬伤。所以,缺陷检测这件事,必须交给机器。
1.1 为什么需要缺陷检测?
说白了,缺陷检测就是给产品做「体检」。你想想看,一个手机屏幕上有 0.1mm 的划痕,消费者可能直接退货。一个轴承表面有微裂纹,装到设备里可能引发安全事故。
我在 2016 年跟过一个项目,给某电子厂做 PCB 板检测。当时人工抽检的漏检率接近 8%,客户一个月要退回来好几批货。后来上了自动光学检测(AOI),漏检率直接压到 0.5% 以下。这就是缺陷检测的价值——保质量、降成本、提效率。
- 质量管控:零缺陷生产要求,尤其是汽车、医疗、半导体行业
- 成本控制:早期发现缺陷,避免后续装配、出货后的巨额返工
- 效率提升:机器 7×24 小时不间断,速度是人工的 5-10 倍
- 数据可追溯:每张图像、每个缺陷都有记录,便于复盘和工艺改进
1.2 传统方法怎么做?
传统方法,我习惯叫它「规则驱动」。工程师先观察缺陷长什么样,然后写一堆 if-else 规则去抓它。
举个例子,检测一个金属表面的划痕:
// 传统方法伪代码
1. 图像灰度化
2. 高斯滤波去噪
3. 固定阈值二值化(比如灰度 > 200 算缺陷)
4. 形态学开运算去除小噪点
5. 连通域分析,面积 > 50 像素的标记为缺陷
你看,每一步都是人定的。阈值 200 怎么来的?试出来的。光照一变,阈值就得调。我曾经在一个项目中,因为车间换了批 LED 灯,整个检测程序重调了两周。这就是传统方法的痛点——泛化能力差,维护成本高。
| 传统方法优势 | 传统方法劣势 |
|---|---|
| 可解释性强,每步逻辑清晰 | 对光照、角度变化敏感 |
| 计算量小,普通工控机就能跑 | 缺陷种类多时规则爆炸 |
| 不需要大量标注数据 | 纹理复杂场景几乎失效 |
| 调试工具成熟(Halcon、OpenCV) | 维护需要工程师持续介入 |
1.3 深度学习怎么做的?
深度学习走的是另一条路——数据驱动。你给它看一万张有缺陷的图片和一万张好的图片,它自己学出「缺陷长什么样」。
还是那个划痕检测的例子,换成深度学习:
// 深度学习流程
1. 收集 20000 张标注好的图像(含划痕、脏污、正常等类别)
2. 设计或选择一个分类/分割网络(如 ResNet、U-Net)
3. 训练,让网络自己学习特征
4. 部署,输入新图像,直接输出缺陷位置和类别
你发现没有?工程师不再写规则了,而是准备数据、调网络结构、调超参数。 我刚开始转深度学习时,总觉得这玩意儿像个黑盒,心里没底。直到有一次,一个传统方法搞不定的「磨砂面划痕」项目,用 U-Net 分割网络三天就搞定了。嗯,从那以后,我对深度学习的看法彻底变了。
| 深度学习优势 | 深度学习劣势 |
|---|---|
| 泛化能力强,适应复杂纹理 | 需要大量标注数据 |
| 端到端,无需手工设计特征 | 计算量大,需要 GPU |
| 同一套架构可迁移到不同缺陷 | 可解释性差,调试困难 |
| 持续迭代,数据越多效果越好 | 小样本场景容易过拟合 |
1.4 本质区别:规则 vs 特征
我把两者的本质区别总结成一句话:传统方法是在「定义缺陷」,深度学习是在「学习缺陷」。
传统方法:工程师说「灰度大于 200 且面积大于 50 像素的就是缺陷」。这是人定义的规则。
深度学习:网络说「我看了两万张图,发现这些像素组合在一起的时候大概率是缺陷」。这是数据驱动的特征。
1.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以看到缺陷检测的驱动力、两种技术路线,以及它们各自的适用场景。
1.6 避坑指南
- 盲目上深度学习:一个简单的划痕检测,传统方法 2 天搞定,非要用深度学习,结果标注花了两周,训练又花了一周。杀鸡用牛刀。
- 忽视数据质量:标注不准确,模型学到的全是错误特征。我见过一个项目,标注员把灰尘标成了缺陷,模型上线后误检率高达 30%。
- 忽略光照一致性:传统方法对光照敏感,深度学习其实也敏感。训练时光照均匀,部署时光照一变,效果直接崩盘。
好了,这一章就到这里。记住一句话:没有最好的方法,只有最合适的方法。 后面的章节,我会带你深入每一种技术的细节,咱们一步步来。