工厂产线上的质检工位常年坐着一位老师傅靠肉眼和经验从传送带上挑出瑕疵品。如今很多工厂想把这道工序换成摄像头加算法但试过传统机器视觉方案的人都知道这活儿远比想象中难——光照一变、产品换型、缺陷形态稍有不同阈值分割和特征工程就全线崩溃。深度学习进入工业视觉之后局面确实变了但也不是模型扔上去就完事。我手上的几个项目从早期基于CNN的粗糙分类到后来用目标检测和分割网络做精确定位中间踩过的坑基本能凑成一本手册。这篇综述就是把2022年前后工业缺陷检测里深度学习这条线的主流思路、关键工作流、评测基准和真实项目中的坑系统性地拉一遍方便做算法和做产线的朋友对照着选型。1. 工业视觉为什么绕不开缺陷检测这道坎1.1 缺陷检测的难点比通用目标检测更变态的场景很多人以为工业缺陷检测就是把目标检测模型跑一遍这么简单真上手就知道完全不是一回事。通用目标检测面对的是自然图像里的大物体比如人、车、猫、狗形态清晰、尺寸相对大、语义明确。而工业缺陷呢划痕、凹坑、气泡、脏污、毛刺、裂纹很多缺陷就是几十个像素宽、对比度极低、和纹理背景缠在一起的东西。一块金属拉丝表面上有一条细划痕人眼都要凑近了看半天算法要在整幅图像里把它揪出来难度完全不在一个量级。再加上工业场景的苛刻要求产线节拍可能只有几百毫秒到几秒缺陷类别多为长尾分布真正有缺陷的样本在整条产线上可能只占百分之几甚至千分之几。更麻烦的是同一类缺陷在不同材质、不同光照、不同角度下的表现差异极大模型在实验室里跑得漂亮到了现场换个光照就可能误检频发。这就是为什么工业缺陷检测在2022年前后成为了深度学习应用研究的重灾区论文数量一年比一年多但真正能稳定落地的方案依然稀缺。1.2 传统视觉方案的天花板在深度学习之前工业缺陷检测长期依靠传统图像处理手段。例如用高斯滤波加形态学操作提取异常区域再配合阈值分割和面积过滤来判断是否有缺陷复杂一点的会增加纹理特征统计比如灰度共生矩阵、局部二值模式甚至手工设计各种频域特征。这类方案的共同特点是特征需要人来设计而且高度依赖于固定的成像条件和产品型号。一套调好的传统视觉方案在特定的光照、固定的产品表面、稳定的传送速度下确实能打。但问题在于现代产线频繁换型、来料批次不稳定任何条件波动都可能导致原先精心调出来的阈值全部失效。轻则误检率飙升需要人工二次筛检重则整条检测线停摆返工。我在实际项目里见过不少上了传统视觉方案的工厂最后退化到机器拍一下、人再看一眼的状态自动化只省了拍照的力气并没有真正取代人眼判断。1.3 深度学习带来的范式转变深度学习出现后缺陷检测的逻辑从人设计特征转变成了模型从数据中学习特征。卷积神经网络CNN天然适合图像类任务它的局部感受野能捕捉纹理细节多层结构又能从低级边缘特征逐层组合出高级语义特征。一个训练好的CNN不仅能回答有没有缺陷还能从特征图里定位缺陷、分割缺陷区域甚至预测缺陷类型。这一转变的直接收益是传统方案里最耗时费力的特征工程环节被省掉了取而代之的是数据标注和模型训练。2022年前后工业缺陷检测领域的深度学习研究大致已经分成了两条清晰的路线一条是把通用的图像分类、目标检测、语义分割模型改造成适合缺陷数据的形式比如调整锚框尺寸、修改分类头、设计针对小目标的检测策略另一条是专门为异常检测设计的新范式比如只学习正常样本的单类分类模型、自编码器重构模型、知识蒸馏异常检测模型。这两条路线各有各的适用面下面分章节细说。2. 三类主流技术路线分类、目标检测与分割怎么选2.1 图像级分类最轻量的粗筛方案图像级分类的输入是一整张图输出是类别标签比如OK或NG缺陷。这种方案通常用ResNet、EfficientNet、ConvNeXt这类标准分类网络把全连接层换成二分类头或者多分类头训练时对整张图做标签标注——而不用标缺陷位置。它最典型的应用场景是粗筛通道比如产线上先用分类模型快速把明显有缺陷的产品图像踢出去再交由更精细的检测或者人工复核。分类方案的优点是成本最低、速度最快、工程上最容易跑通一张224x224的图在普通GPU上推理只要几毫秒。但它的天花板也很明显无法告诉产线系统缺陷在图像的哪个位置更无法测量缺陷尺寸。对于只做有无缺陷判断且缺陷特征相对明显的场景分类方案足够但一旦需要定位缺陷进行工艺反馈单靠分类就不够了。我在接触过的钢表面缺陷检测案例里很多早期方案都是先上分类再升级检测这样做的好处是先用最小成本验证了深度学习在这个场景下是否可行。2.2 目标检测缺陷定位的主力方案目标检测是2022年工业缺陷检测里最主流的技术路线因为工业生产不仅想知道有没有问题更想知道问题在哪里、是什么问题。目标检测的输出是缺陷的包围框bounding box和类别标签能够满足大多数产线对缺陷定位和类型统计的需求。以Faster R-CNN为代表的两阶段检测器在2022年依然在工业场景中有大量使用它的训练稳定性和精度都有保障尤其适合小目标缺陷和密集缺陷的场景。代价就是推理速度较慢在某些高速产线上可能撑不住节拍。单阶段检测器YOLO系列这边2022年发布的YOLOv7是当时速度与精度的平衡典范在NEU-DET这类钢铁表面缺陷数据集上配合合适的训练策略可以跑到很不错的mAP同时保持很高的FPS。我的经验是如果项目首先评估产线节拍YOLO系列绝对是优先试跑的对象如果对定位精度极其敏感比如要在后续做缺陷面积统计两阶段和分割方案更可靠。2022年前后工业缺陷检测领域针对检测器做了一系列优化主要集中在几个方向调整锚框尺寸以适配小缺陷、引入注意力模块增强低对比度缺陷的特征响应、在损失函数中加入针对小目标的权重。这些改动本质上是把通用检测器工业化的过程。2.3 像素级分割精度上限更高的重武器目标检测给的是框而分割方案直接给到像素级区域。U-Net及其变体是工业缺陷分割中使用最广泛的骨干结构它的对称编码器-解码器设计配合跳跃连接很好地保留了细小缺陷的边缘细节。Mask R-CNN则在检测基础上增加了掩膜分支在需要同时做检测和精确区域的场景中很常见。分割方案在需求上对应的是必须精确知道缺陷面积、形态、边缘的场景。比如锂电池隔膜涂布缺陷分析、PCB线路检测、精密金属零件表面质量评价这些场合缺陷的大小和形状直接影响产品是否报废用框就不够精细了。分割的代价是标注成本最高——画像素级掩膜比画框贵得多不过2022年前后SAM这类分割大模型的预训练权重已经可以拿来做标注提效或者用弱监督手段从框标注生成伪掩膜一定程度上缓解了痛点。2.4 选型逻辑从产线需求倒推模型说到底技术路线从来不是越复杂越好而是取决于产线到底要什么。我把三类方案的适用面列成一个对照表方便你快速判断方向。技术路线输出信息优势短板典型场景图像级分类整图标签标注成本最低、速度最快、流程简单无定位能力、无法统计缺陷数量粗筛通道、快速换型首检目标检测缺陷框类别定位分类兼顾、工程生态成熟、中等速度对形态细节不敏感、不适合精确面积统计金属表面、纺织布匹、在线质检像素级分割缺陷区域类别信息量最大、可精确度量形态、精度上限高标注成本昂贵、模型较重、推理开销大工艺分析、精密器件、缺陷溯源选择之前先在产线上明确几个问题缺陷要不要定位要不要统计数量要不要测面积产线允许的分级流程里哪一步该用哪种方案把这些问题的答案写清楚再选模型比纠结于哪个网络结构更fancy要实际得多。另外我强烈建议方案先行的时候在同一个数据集上把分类和检测都跑一遍基线用实际指标来辅助决策。2022年综述里大量的对比实验已经证明工业缺陷场景里通用模型针对性调优往往比新论文新结构直接用更管用。3. 从论文到产线数据、训练、部署的关键工作流3.1 数据的命门缺陷样本稀少怎么办工业缺陷检测项目最大的瓶颈不是模型是数据。一条产线上真实缺陷率可能只有千分之几要收集几百个缺陷样本往往要等好几周更残酷的是很多企业连过去的不良品图像都没有系统留存。面对数据稀少的困境2022年前后主流的应对思路有几条我分别说一下实际效果。第一是数据增强。常规的翻转、旋转、裁剪、颜色扰动对大多数场景有效但针对缺陷检测还需要更贴近工业物理过程的增强方式比如模拟不同光照方向、叠加噪声和模糊、随机改变缺陷对比度。我在钢表面划痕检测项目里曾经把对比度增强和随机光照模拟加进训练管线线上误检率明显下降这本质上是让模型看到了更多同一缺陷在不同环境下的样子。第二是合成数据。用渲染引擎或者计算机图形学手段批量生成带缺陷的虚拟图像再用神经网络辅助生成掩膜、甚至直接通过缺陷迁移技术把真实缺陷贴到干净图像上。这项技术2022年在学术界已经有了比较成熟的流程比如用CycleGAN做缺陷风格迁移或者用泊松图像编辑把缺陷区域融合到不同背景中。不过在实际工程中合成数据和真实数据之间始终存在域差距最稳的做法是合成数据预训练真实数据微调。第三是迁移学习和小样本学习。哪怕数据量再少用ImageNet预训练的权重做初始化几乎总是优于从头训练。如果要更进一步可以尝试基于度量学习的小样本方案用支撑集和查询集来学习缺陷特征的相似性这在极端少样本场景比如每个类别只有十来个样本有不错的表现。但坦白说小样本方案工程落地比普通微调复杂我在实际项目中很少把它当作首选。3.2 标注策略与质量控制标注质量直接决定模型上限。很多项目在数据上失败不是样本不够多而是标注乱——框画大了、漏标了、类别标错了再怎么训练都是噪声输入。在工业缺陷检测里标注还要考虑具体缺陷的物理定义比如一条划痕延伸到什么程度该算缺陷这种标注边界的决策是算法团队和工艺团队需要共同确认的事情。我的建议是检测方案优先用框标注明确标注规范包括框需贴合缺陷、允许的最小框尺寸、缺陷重叠时的处理规则分割方案如果要精确面积那就必须使用多边形精细标注不能拿粗糙的矩形蒙混。另外标注完成之后一定要做一致性抽检由标注组长对照规范复核一部分数据确保不同标注者的标准一致。2022年前的不少论文里其实已经在强调数据标注规范直接影响实验结论只是很多工程团队从上到下都低估了这件事。3.3 训练细节预训练、Loss设计与不平衡问题工业缺陷检测的训练阶段有几个让人头疼的共性问题类别不平衡、正负样本极端不平衡、缺陷与背景特征极其相似。对于类别不平衡常用的办法是类别加权采样、过采样小类别、或者在Loss中给稀有类别更高的权重。对于正负样本不平衡尤其是在缺陷检测这种干净背景占绝大多数的场景Focal Loss在目标检测训练里几乎是标配它通过对容易分类的负样本压低权重把模型的注意力引导到少量困难缺陷上。对于低对比度缺陷可以在训练时启用更激进的对比度增强或者在网络结构中加入注意力机制让模型更关注纹理差异区域。我的训练经验中还有一个小细节非常关键合理的初始化。工业缺陷数据往往与自然图像差异很大但ImageNet预训练权重依然能提供通用的低阶特征提取能力比如边缘、纹理、颜色响应。从头训练不仅需要更多数据收敛速度也会慢很多。所以除非你的数据规模和领域特殊性都特别强否则老老实实加载预训练权重是性价比最高的选择。3.4 部署推理从PyTorch到产线可用的性能优化模型在服务器上跑出好指标只是第一步产线部署才是很多项目的鬼门关。工业现场一般只有普通的工控机甚至嵌入式设备业务上又要保证足够高的帧率。2022年前的部署经验到今天依然有效核心链路是PyTorch训练完成 - 导出ONNX - 转为TensorRTNVIDIA GPU平台 - 推理引擎加载 前/后处理流水线。每道转换都可能有精度损失我的建议是转换前后分别在同等测试集上跑一遍指标确认精度下降控制在可接受范围。若推理速度仍不够可以做模型量化。INT8量化能大幅提升推理速度但对缺陷检测这种需要精细纹理信息的任务有可感知的精度风险必须用真实产线数据做校准集来缓解。另一个被低估的优化点是预处理陷阱如果没有把缩放、归一化、通道顺序这些细节在推理代码里同步实现再好的模型也会翻车。知识蒸馏作为部署侧的辅助手段也值得提一句用一个精度更高的教师模型蒸馏出一个小型学生模型可以在推理速度和精度之间换取更优平衡点。2022年前后不少工业论文用的是这个思路工程上也可以借鉴。4. 公开数据集与评价指标守住对比实验的基准4.1 常用数据集盘点做研究或者做预研离不开公开数据集。工业缺陷检测领域2022年时常用的公开数据集包括NEU-DET热轧钢板表面缺陷包含划痕、氧化皮、裂纹等6类、DAGM 2007合成纹理缺陷常用于弱监督与异常检测、KolektorSDD电子产品外壳表面缺陷、Severstal Steel带钢表面缺陷的Kaggle比赛数据集、PCB Defect Dataset印刷电路板缺陷等。每个数据集都有自己的脾气。NEU-DET数据集规模中等、缺陷类型多样是入门对比的首选Severstal Steel数据量更大但类型分布极不均匀KolektorSDD样本量小、分辨率高特别考验模型的少样本适应能力。我建议做方案预研时先在自己最接近的目标场景选一个公开数据集做初始化对比而不是一上来就追求所有的数据集都涨点。4.2 评价指标的选取逻辑工业缺陷检测的评价指标关键词基本集中在Precision、Recall、F1-score、mAP和IoU上。很多人会犯一个错误只看mAP就认为模型可靠。mAP是目标检测里衡量平均精度的综合指标但它把所有类别和置信度阈值下的表现混在一个数字里反映不出漏检率和误检率这两个工业现场最关心的问题。在工业场景里我建议把指标拆得更细分别看每个缺陷类别的召回率和精确率再看综合F1-score。如果产线对漏检零容忍那么目标是保证Recall接近100%的前提下尽量提高Precision此时阈值可以调低宁可多几个误检让后端复核如果误检会导致产线停机或者成本太高则反过来优先保证Precision。分割任务一般用IoU或Dice系数衡量区域重合度缺陷形态精确度要求高的项目还必须额外看边界精度。指标关注点适用场景Precision精确率检测出的缺陷里真实缺陷的比例误检代价高的场景Recall召回率真实缺陷里被检测出的比例漏检零容忍的质检场景F1-score精确率与召回率的调和平均指标平衡对比mAP多类别多置信度下的综合精度研究对比、模型选型IoU/Dice预测区域与真实区域的重合度分割精度评估4.3 对比实验的公平性问题写综述的时候我特别注意了一个现象不同论文在同一个数据集上的结果经常不具备直接可比性原因在于训练集划分、图像预处理、输入分辨率、锚框设置、后处理阈值都可能不同。有的论文用9:1划分有的用5:5交叉验证有的在推理时做了多尺度测试增强有的没有。这些细节的差异足以让mAP上下浮动好几个点。所以在公开数据集上做对比实验务必在方法说明里写清楚所有实验设置最好直接沿用原论文的标准划分并注明来源。工程里如果只是看看哪种方案好那就固定数据划分、固定数据增强、固定训练轮数只改网络结构这样得到的结论才有参考价值。2022年后的工业检测综述类文章也越来越强调可复现性问题这是整个领域都在努力补齐的短板。5. 真实项目里的几个深坑与应对思路5.1 误检比漏检更麻烦通用目标检测项目里偶尔误检一个目标可能无伤大雅但在工业产线上误检意味着把好产品当成坏产品轻则增加人工复检量重则停线、产生客户投诉。我接过的一个案例里模型在正常工件表面的划痕误检率到了5%每天产线产生几十个误报警操作员开始几乎每两分钟就要去处理一次告警最后整个检测系统被人工旁路掉——这是项目最尴尬的结局。应对误检的思路分两层第一层是在模型层面提高阈值、增加难负样本挖掘把像缺陷但其实是正常纹理的样本持续补充进训练集第二层是设计业务流程比如加入二次确认机制用另一台不同角度的相机或者另一个模型复核第一轮的输出以减少最终误判。只靠调阈值是治标不治本因为阈值调高了漏检必然增加必须靠数据和流程把两个指标同时稳住。5.2 低对比度小缺陷的漏检低对比度的细小划痕和微小气泡是工业缺陷检测里漏检率最高的重灾区。根源在于信息量太少在整幅512x512的图像里一个可能只有5x5像素大小的缺陷区域其灰度差异可能只比背景暗了几个像素卷积神经网络在多次下采样后极容易把这个区域的特征稀释掉。解决思路一是特征金字塔路线用高分辨率特征图保留下采样前的细节信息这在YOLO和U-Net架构里都已经有了关键在于选对特征层进行缺陷预测。二是输入分辨率路线直接把输入图切割成多个滑动窗口分别检测用计算量换对小目标的灵敏度。三是注意力路线通过空间注意力机制增强缺陷区域的响应这在2022年后的不少论文里都有效果验证。我个人的建议是先别急着上复杂模块把切分图高分辨率训练试一遍往往就能解决大部分小缺陷漏检问题。5.3 域偏移实验室与产线的鸿沟很多团队在研发环境和实验机上测试效果很好结果模型部署到产线相机上之后效果明显变差这就是典型的域偏移。原因包括相机型号不同导致颜色响应差异、现场环境光的波动、产品批次变化导致表面状态差别、相机安装角度轻微偏移等等。应对域偏移的第一个策略简单粗暴收集现场真实数据哪怕只有几百张在部署前做微调。第二个策略是在训练阶段加入大量模拟环境扰动的增强把模型在域上的敏感性打掉。第三个策略是使用频域特征或光照不变特征减少模型对绝对灰度和颜色的依赖。2022年前后的研究发现工业缺陷检测里域偏移导致性能下降的幅度往往比想象中更大所以从实验室到产线必须重新验证指标应该成为项目管理的铁律。5.4 过拟合与泛化的平衡工业缺陷数据集普遍不大训练一个大规模检测器很容易过拟合训练集上指标完美验证集上一塌糊涂。判断过拟合有个常见信号——训练集AP值极高、验证集AP显著下跌两者差距超过几个点基本可以确定模型在背题而不是学习缺陷本质。解决过拟合的有效手段包括减小模型容量换用更小的Backbone、增加强数据增强、早停Early Stopping、更大的权重衰减、以及用交叉验证代替单次数据划分。2022年综述里的很多实验也验证了一个结论在数据量有限的情况下小模型更强增强常常胜过大模型普通增强一味追求大参数量的SOTA结构在工业小数据场景中是性价比很低的策略。6. 2022年以后的演进方向异常检测、大模型与轻量化6.1 自监督与无监督异常检测的崛起工业缺陷检测最独特的奢侈是正常样本取之不尽用之不竭。这就催生了一类特殊的方法论——只用正常样本训练检测时输出与正常模式的偏离程度。2022年前后这类无监督/自监督异常检测的研究热度已经相当高代表思路包括只用正常样本训练自编码器或变分自编码器用重构误差判定异常区域或者用知识蒸馏的方式训练一个学生网络去拟合正常样本特征测试时利用教师-学生特征差异来定位缺陷。所谓只学正常、检测异常思路的工程价值很大因为工厂里收集正常样本极容易而标注缺陷永远是稀缺的。但它的局限也不小对偏离正常模式但并非真实缺陷的环境变化比如光照、灰尘、成像噪声过于敏感容易误报。2022年时这个方向还在从实验室走向产线的过程中我认为它在2023-2024投机地成熟了很多值得持续关注但选型时还是要根据具体场景验证。6.2 大模型与通用视觉模型带来的想象空间2022年视觉领域的大模型趋势也在工业缺陷检测里引发了大量想象。ViT、Swin Transformer这类Transformer结构被搬到缺陷检测中做Backbone利用了自注意力的全局建模能力来捕捉长程纹理依赖。研究上确实有方案在公开数据集上获得了比CNN更高的精度代价是计算量明显上升部署难度增加。我更关注的是预训练大模型对缺陷特征表达带来的提升。让模型先在超大规模自然图像上学习通用视觉特征再用工业小数据微调这种预训练微调的范式已经得到了工业检测社区的一致认可。2022年底到2023年初各种更强大的分割模型的推出让工业界也可以把通用预训练缺陷微调玩到极致。但也要泼一盆冷水大模型的部署成本、推理延迟、硬件门槛在工厂里常常不可接受实际落地时往往仍需通过蒸馏、量化、剪枝等手段减配。6.3 轻量化与端侧部署让检测更普及工业现场大量设备是ARM边缘盒子或低功率GPU这就决定了轻量化模型方向永远是热点。2022年前后MobileNet系列、ShuffleNet、EfficientNet-Lite等轻量骨干网络搭配检测头后在嵌入式设备上已经能达到产线可用的帧率。知识蒸馏从教师网络向学生网络传递暗知识同样是提升小模型效果的重要手段。从我个人的实操体会来说轻量化模型的调试难度不低于大模型它的网络容量有限想让它在小目标缺陷上不出错必须在数据增强、损失函数、教师网络这几个方面同时下功夫。但一旦调通边缘侧的响应速度带来的产线体验提升是显著且持久的这比在服务器上挂着高性能模型更有实际竞争力。6.4 从检测到闭环工艺反馈与质量追溯缺陷检测的终点不该只是报警而应该联动到生产改进。2022年后工业界越来越意识到缺陷的位置、类别、面积、分布规律这些信息本身就是工艺参数优化的依据。一个划痕如果在流转方向上呈现规律性周期性出现往往是辊轴或者导向轮的问题某个区域反复出现气泡可能是注塑压力或模具温度不合适。让缺陷检测系统输出结构化数据喂给MES和SPC系统才真正把AI检测的价值放大到全产线。我自己的做法是在每个缺陷检测项目启动时就和工艺团队约定好输出字段的最小集缺陷类别、坐标、面积、图像存档、时间戳、产线编号。这套数据跑起来之后质量追溯和工艺复盘才不是空谈。最后想说的是深度学习给工业缺陷检测带来的最大价值不只是替代人眼而是让缺陷这件事情第一次变成了可以被量化、被分析、被反馈的数据资产。而这些东西恰恰是一篇综述里最难写、也最值得去写实的部分。