4、识别阶段:缺陷类型分类(外观、尺寸、功能性)、特征提取与模型选择(CNN、目标检测、分割)

识别阶段是AI质检流程中的核心认知环节,其任务是将采集到的图像或信号数据转化为可操作的缺陷语义信息。这一阶段直接决定了后续剔除动作的准确性与及时性。在实际工业场景中,缺陷并非单一形态,而是呈现出外观、尺寸、功能性三大类别的复杂交织。因此,识别阶段的首要工作并非直接套用深度学习模型,而是建立一套科学的缺陷分类体系,并据此选择匹配的特征提取与模型架构。本章将系统阐述缺陷类型的划分逻辑、特征提取的工程方法以及模型选择的决策路径,帮助读者构建从数据到决策的完整认知链路。

AI质检识别阶段:缺陷分类 → 特征提取 → 模型选择 缺陷类型分类 外观缺陷:划痕/脏污/压伤 尺寸缺陷:公差超差/形变 功能性缺陷:装配/电气/密封 (按检测维度与风险等级划分) 特征提取策略 传统特征:LBP/HOG/几何量测 深度特征:CNN自动层级提取 融合特征:多尺度+多模态 (依据缺陷类别选择特征维度) 模型架构选型 CNN分类:有无/类别判定 目标检测:位置+类别 分割:像素级轮廓 (按输出粒度需求决策) 模型选择决策路径(按缺陷粒度与业务需求) 仅需“有无/类别” → 图像分类CNN (ResNet/EfficientNet) 需“位置+类别” → 目标检测 (YOLO/Faster R-CNN) 需“像素级轮廓/面积” → 语义/实例分割 (U-Net/Mask R-CNN) 注:实际产线常采用“级联策略”——先分类粗筛,再检测定位,最后分割精量

4.1 缺陷类型分类:从物理表象到业务语义

缺陷分类并非简单的标签命名,而是连接物理世界与业务决策的桥梁。在AI质检项目中,分类体系的合理性直接决定了标注成本、模型复杂度以及后续剔除策略的有效性。工业现场常见的缺陷可归纳为三大类:外观缺陷(如划痕、脏污、压伤、色差)、尺寸缺陷(如公差超差、形位偏差、装配间隙异常)、功能性缺陷(如电气短路、密封失效、功能缺失)。这三类缺陷在成像方式、特征表达、检测难度和业务影响上存在显著差异。

缺陷类别典型实例成像特征检测维度业务风险等级
外观缺陷划痕、脏污、涂层不均局部灰度/纹理异常表面质量、美学中(影响客户感知)
尺寸缺陷孔径超差、平面度不足边缘轮廓、几何量测装配精度、公差高(影响装配功能)
功能性缺陷短路、漏气、卡滞多模态信号(电/声/力)性能指标、安全极高(安全合规)

在实际项目中,缺陷分类应遵循“业务导向、粒度适中”原则。例如,在锂电池外观检测中,“划痕”可细分为“极片划痕”和“隔膜划痕”,因为两者对电池安全的影响截然不同;但若将“划痕”按长度再细分为10个等级,则会显著增加标注难度和模型过拟合风险。建议在项目启动阶段,由工艺工程师、质检主管和算法工程师共同制定《缺陷分类定义书》,明确每类缺陷的物理定义、图像表现、判定标准和风险等级。

经验提醒:缺陷分类的粒度应与剔除动作挂钩。如果某类缺陷一旦检出就必须整机报废,则无需细分;如果不同缺陷对应不同的返修路径(如打磨、补漆、重焊),则必须细分至可操作层级。

4.2 特征提取:从手工设计到深度自动学习

特征提取是识别阶段的“感知引擎”。传统机器视觉依赖工程师手工设计特征(如LBP纹理特征、HOG梯度直方图、几何量测参数),这些特征在光照稳定、背景单一的半结构化场景中表现良好,但面对复杂纹理、反光、遮挡等工业现场常见干扰时,鲁棒性明显不足。深度学习时代的特征提取则通过CNN(卷积神经网络)自动完成从像素到语义的层级映射:浅层卷积核提取边缘、角点,中层提取纹理、局部形状,深层提取部件级语义。

选择特征提取策略时,需考虑以下关键因素:

  • 缺陷的尺度特性:微小缺陷(如针孔、麻点)需要高分辨率输入和浅层特征;大尺度缺陷(如变形、缺料)则依赖深层语义特征。
  • 成像模态:可见光图像适合纹理/颜色特征;红外图像适合温度分布特征;X射线图像适合内部结构特征。
  • 实时性约束:传统特征计算量小但精度有限;深度特征精度高但需GPU加速。产线节拍(如≤2秒/件)决定了特征提取的算力预算。

在工程实践中,混合特征策略往往效果最佳。例如,在PCB板缺陷检测中,先用传统图像处理快速定位焊点区域(ROI提取),再对ROI区域使用轻量级CNN提取深度特征,最后结合焊点面积、圆度等几何特征进行综合判定。这种“传统+深度”的融合方式既保证了速度,又提升了精度。

# 特征提取策略伪代码示例(工业质检场景)
def extract_features(image, defect_type):
    if defect_type == '外观':
        roi = preprocess_roi(image)          # 传统方法定位ROI
        deep_feat = cnn_backbone(roi)        # 深度特征 (ResNet-18)
        texture_feat = lbp_histogram(roi)    # 传统纹理特征
        return concat(deep_feat, texture_feat)
    elif defect_type == '尺寸':
        edges = canny_edge(image)            # 边缘提取
        dims = measure_dimensions(edges)     # 几何量测
        return dims  # 直接使用数值特征
    elif defect_type == '功能性':
        signal_feat = extract_signal_features(sensor_data)  # 时频域特征
        return signal_feat

4.3 模型选择:CNN分类、目标检测与分割的决策逻辑

模型选择的核心依据是输出粒度的需求。若业务只需判断“有无缺陷”或“缺陷类别”,图像分类CNN(如ResNet、EfficientNet)即可满足;若需定位缺陷在图像中的具体位置(如“第3个焊盘左侧有划痕”),则需目标检测模型(如YOLO、Faster R-CNN);若需精确测量缺陷面积、轮廓或进行形态学分析(如“划痕长度>5mm且宽度>0.3mm”),则必须采用分割模型(如U-Net、Mask R-CNN)。

模型类型输出形式典型算法适用场景算力需求
图像分类CNN类别标签+置信度ResNet-50, EfficientNet-B3整图有无缺陷、粗分类低-中
目标检测边界框+类别+置信度YOLOv8, Faster R-CNN多缺陷定位、计数中-高
语义/实例分割像素级掩码+类别U-Net++, Mask R-CNN精确面积/轮廓测量高

在产线部署中,常采用级联模型架构来平衡精度与速度。第一级使用轻量级分类模型(如MobileNet)快速过滤无缺陷样本(通常占80%以上);第二级对疑似缺陷区域使用目标检测模型定位;第三级对关键缺陷使用分割模型进行精确测量。这种级联策略可将单件检测时间从500ms降至150ms,同时保持99.5%以上的召回率。

实战案例:汽车零部件密封圈外观与尺寸联合检测
某汽车零部件供应商需对橡胶密封圈进行100%全检,检测项包括:外观(毛边、缺料、杂质)和尺寸(内径、外径、截面厚度)。产线节拍为3秒/件,原人工目检漏检率达8%。
方案设计:采用“传统视觉+深度学习”混合方案。首先使用高精度轮廓提取算法测量内径、外径等尺寸参数(精度±0.02mm);同时将图像裁剪为环形ROI,输入轻量级CNN(EfficientNet-Lite)进行外观缺陷分类。对于疑似毛边区域,再触发Mask R-CNN进行像素级分割,计算毛边面积和高度。
关键参数:输入分辨率1024×1024,ROI裁剪后512×512;分类模型推理时间45ms,分割模型推理时间120ms(仅对疑似区域触发)。
结果对比:漏检率从8%降至0.3%,误检率从12%降至1.5%,单件检测时间2.8秒,满足节拍要求。项目上线3个月后,客户投诉率下降67%。
复盘经验:①尺寸检测优先采用传统算法,稳定且可解释;②外观缺陷分类模型需持续收集难例样本进行增量训练;③级联触发机制有效控制了算力成本。

4.4 常见误区与总结复盘

在识别阶段的实施过程中,团队常陷入以下误区:

  • 误区一:盲目追求高精度模型。在缺陷样本不足1000张时,直接使用Mask R-CNN往往导致过拟合,而采用传统特征+简单分类器(如SVM)反而更稳定。
  • 误区二:忽视缺陷类别不平衡。某类缺陷占比仅0.5%时,模型会倾向于将全部样本预测为“无缺陷”。需采用Focal Loss、数据增强或重采样策略。
  • 误区三:特征提取与模型选择脱节。若已确定使用分割模型,却仍手工设计边缘特征,则浪费了深度模型的表征能力。
  • 误区四:未考虑光照/角度变化。工业现场的光照波动会导致特征分布漂移,需在训练阶段加入光照增强,或在部署时增加光度校正模块。

总结而言,识别阶段的成功关键在于“分类先行、特征匹配、模型适度”。分类体系决定了问题的边界,特征提取决定了信息的利用率,模型选择决定了输出粒度的可行性。建议团队在项目启动时,用一周时间完成缺陷样本采集与分类定义,再用两周时间进行特征与模型的快速原型验证(使用小规模数据集),最后才进入正式训练与调优阶段。这种“先窄后宽”的策略能有效降低项目风险,避免在错误的方向上投入大量算力。

风险提示:当缺陷类型超过20类且部分类别外观相似时,单一模型难以同时保证高精度与高召回。此时应拆分为多个二分类/少分类模型,或采用“粗分类+细分类”的层级模型结构,而非强行训练一个超大模型。