在一家精密光学厂里,老师傅要把「挑出镜片划痕」的绝活传给新来的质检学徒。学徒第一天拿到一块看似完美的玻璃镜片,翻来覆去找不到瑕疵;师傅却打开专用光源,把镜片微微倾斜,一条头发丝般的划痕立刻显形。这个场景,正是工业视觉质检的缩影——让机器像那位老师傅一样,在千篇一律的产线零件上,快速、稳定地找出最细微的缺陷。 缺陷检测是工业视觉质检的入门必修课。它的目标不是抽象地「看懂图像」,而是回答一个极其具体的问题:眼前的工件上,缺陷在哪里?有多大?属于哪一类?要回答这个问题,数据采集、图像标注、目标检测、语义分割、模型迭代、产线集成六个环节缺一不可。这正好对应学徒的成长路径:先知道要找什么,再积累大量练习样本,在师傅标注的「错题本」帮助下,学会用粗框定位、细笔描边,最后通过反复测验、正式上岗。

岗位关联

掌握缺陷检测的完整方法论,是 AI 从业者进入工业视觉质检的第一道业务关卡。从数据到模型再到产线闭环,这套能力能直接迁移到几乎所有工业视觉项目中,是智能制造领域最有性价比的切入点。

目录
  1. 可视化演示
  2. 质检任务总览
  3. 样本采集策略
  4. 缺陷标注规范
  5. 目标检测定位
  6. 语义分割定位
  7. 模型迭代优化
  8. 产线集成部署
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示工业视觉质检缺陷检测:YOLO边界框检测(缺陷定位+置信度)、Mask R-CNN像素级分割(缺陷掩码)、边缘部署流水线(相机→TensorRT推理→产线控制延迟监控),切换模式查看。

本节配有交互动效(进入视口后自动加载,约 3KB)。

YOLO边界框检测 单阶段检测器实时定位缺陷位置 conf=IoU*cls_score 适合产线实时质检延迟<50ms

质检任务总览

学徒的第一课,是认识「什么是缺陷」。师傅在桌上摆出一排镜片,里面混着划痕片、霉点片、崩边片。学徒要先把它们分成「好」和「坏」两大类,再仔细辨认每种坏法:划痕是线状的,霉点是团状的,崩边缺了个角。这些形态各异的缺陷,就是视觉质检要面对的基本对象。

在工业场景中,缺陷类型通常包括表面划痕、污渍斑点、崩边碎裂、色差纹理异常等。传统人工目检最大的痛点在于:人眼易疲劳、个体判断标准不统一、检测速度跟不上产线节拍。而 AI 视觉的思路,是用工业相机稳定成像,再通过算法自动定位图像中的异常区域,让「老师傅的经验」变成可复用的软件能力。

衡量质检模型好不好,不能只看「准不准」。行业里把错误分成两类:把坏品当良品放过去叫漏检,把良品当坏品剔出来叫误检。产线上两者代价不同,因此需要从分类学的角度引入系统化的评价指标:

第一课结束,学徒明白了一个道理:想要当一名合格的质检员,先得知道自己面前可能出现哪些「坏」,以及评判好坏不能只看一个笼统数字。这个认知,决定了他接下来要收集什么、标注什么、训练什么。

Accuracy=TP+TNTP+TN+FP+FN\displaystyle \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
准确率 = 正确识别的样本数 ÷ 全部样本数。但在缺陷率极低的产线上,准确率容易被「大量良品」掩盖问题,后续我们还要结合精确率、召回率一起看。
  1. 分子 TP+TN所有被正确识别的样本,包括正确检出缺陷(TP)和正确放过良品(TN)。
    TP+TNTP + TN
  2. 分母全部样本在分子基础上加入两类错误——漏检(FN)和误检(FP),得到全体样本数。
    TP+TN+FP+FNTP + TN + FP + FN
  3. 整体含义正确识别的样本占全体样本的比例。它直观,但会在类别极度不均衡时失真。
    Accuracy=TP+TNTP+TN+FP+FN\displaystyle \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

样本采集策略

师傅没有急着教算法,而是带着学徒去车间蹲了一整天。学徒发现,同一个缺陷在不同光源下完全是两副面孔:正面强光下几乎隐形,侧面低角度光一扫,立刻无处遁形。师傅告诉他,练眼力的第一步,不是多练,而是「保证每个练眼的样本都看得清」。

在工业视觉项目里,数据采集的核心目标是让缺陷在图像中「足够醒目」。样本来源主要有三条途径:产线复采(从真实生产线上抓拍)、实验室模拟(人为制造缺陷再拍摄)、公开数据集(借用行业通用瑕疵图)。成像方案要综合考虑相机分辨率与光学倍率——分辨率不足,细划痕在图像里只有一两个像素,算法再强也无力回天。光照则更是成败手:明场照明显纹理,暗场照明显划痕,低角度光让凹凸缺陷产生强烈阴影,同轴光抑制反光。

为了量化「清晰度」,行业里常用信噪比来描述缺陷与背景的对比强度:

师傅拍拍徒弟的肩膀说:「看不见的缺陷,再厉害的算法也白搭。」学徒记下这句话,回到实验室认真调整光源角度——他知道,好样本是练出好眼力的地基,也是整个缺陷检测项目最不能省钱的地方。

SNR=μ前景−μ背景σ背景\displaystyle \text{SNR} = \frac{\mu_{\text{前景}} - \mu_{\text{背景}}}{\sigma_{\text{背景}}}
信噪比 =(缺陷亮度 − 背景亮度)÷ 背景波动幅度。信噪比越高,缺陷越容易被从背景中分离出来。
  1. 分子亮度差缺陷区域(前景)与周围良好表面(背景)的平均灰度差距。差值越大,人眼和算法都越容易发现它。
    μ前景−μ背景\mu_{\text{前景}} - \mu_{\text{背景}}
  2. 分母背景波动背景表面亮度的标准差,代表材质本身的「噪声底」。纹理越粗糙,分母越大。
    σ背景\sigma_{\text{背景}}
  3. 整体含义信噪比越大,说明缺陷相对背景越突出。当 SNR 太低时,首要任务不是调模型,而是调光源和成像参数。
    SNR=μ前景−μ背景σ背景\displaystyle \text{SNR} = \frac{\mu_{\text{前景}} - \mu_{\text{背景}}}{\sigma_{\text{背景}}}

缺陷标注规范

练眼神需要「错题本」。师傅拿出一支细油性笔,在镜片照片的划痕周围慢慢画上一个矩形框,又在旁边写了一个「划痕」。他对学徒说:你光知道要看哪里不够,还得知道师傅是怎么圈画的——框大一点、小一点、偏一点,都会影响后面所有练习的效果。

缺陷标注就是把人类视觉经验转译成机器能学习的「标准答案」。首先要做类别定义:把形态相近、处置方式相同的缺陷合并为同一类,避免类别之间边界模糊。比如细划痕和擦伤如果混用,模型就会混淆。其次要选标注工具,常用的有 LabelImg、Labelme、CVAT 等,目标检测用矩形框,语义分割用多边形描边。标注质量的把控同样关键:多人标注后必须交叉复核,抽检时用一致性系数衡量分歧,标准不统一的标注会直接变成训练噪声。

标注质量最终会反映在训练损失里,模型学的是「标注模式」而不是「绝对真理」。多分类交叉熵是训练时衡量预测与标注差距的常用函数:

画完一本「错题本」,学徒发现师傅画的框几乎都在同一位置重复出现,这才意识到:标注最重要的不是「绝对精确」,而是「始终一致」。有了这本规范统一的错题本,他练眼力才不会被前后矛盾的标准干扰。

L=−1N∑i=1N∑c=1Cyiclog⁡(y^ic)\displaystyle \mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic})
交叉熵损失 = 所有样本在真实类别上的预测概率取负对数后求平均。模型预测越接近标注,损失越小;坏标注会把模型带偏。
  1. 外层求和遍历 N 个标注样本,逐个计算损失。
    ∑i=1N\sum_{i=1}^{N}
  2. 内层求和遍历 C 个缺陷类别,只有真实类别对应的 y=1 项被保留,其余项归零。
    ∑c=1Cyiclog⁡(y^ic)\sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic})
  3. 负对数当模型对真实类别的预测概率 \hat{y} 越接近 1,\log(\hat{y}) 越接近 0,损失越小。
    −log⁡(y^)-\log(\hat{y})
  4. 归一化除以 N 得到平均损失,便于在不同数据规模下比较。
    1N\frac{1}{N}

目标检测定位

实习第一周,师傅让学徒在镜片过传送带时快速指出「哪里有问题」。学徒发现,只要先套一个大致的矩形框,把问题区域圈出来,根本不用管缺陷的边缘到底有多细。这个「先粗定位」的策略,就是缺陷检测里最常用的目标检测方法。

目标检测的任务,是同时解决「缺陷在哪里」和「缺陷是什么」两个问题——输出一个矩形框的位置,以及框内缺陷的类别。现代检测模型如 YOLO 系列,把图像划分成网格,让每个格子负责预测中心点落在其中的目标;再通过回归预测框的位置,通过分类判断缺陷类别。工业场景里,YOLO 因为推理快、部署轻量,成为最常用的选择。小缺陷(几个像素的划痕点)则需要靠特征金字塔结构,把浅层细粒度特征与深层语义特征融合起来。

评估检测框质量,行业标准是看预测框与真实标注框的重合程度,即交并比:

学徒很快掌握了粗框的技巧,但师傅提醒他:粗框能告诉你「划痕在这里」,却无法告诉你划痕是否真的穿透了镀膜层。要想做更精细的判断,还得学会另一种本领——细笔描边。

IoU=∣Bpred∩Bgt∣∣Bpred∪Bgt∣\displaystyle \text{IoU} = \frac{|B_{pred} \cap B_{gt}|}{|B_{pred} \cup B_{gt}|}
IoU = 预测框与真实框重叠面积 ÷ 两者合并总面积。IoU 越高,说明框定得越准;通常 IoU > 0.5 才算一次有效检出。
  1. 分子交集预测框与真实标注框重叠区域的面积。
    ∣Bpred∩Bgt∣|B_{pred} \cap B_{gt}|
  2. 分母并集两个框覆盖的总面积,即「本应覆盖」的全部区域。
    ∣Bpred∪Bgt∣|B_{pred} \cup B_{gt}|
  3. 整体含义重叠部分占全部覆盖区域的比例。完全重合时为 1,完全错开时为 0。
    IoU=∣Bpred∩Bgt∣∣Bpred∪Bgt∣\displaystyle \text{IoU} = \frac{|B_{pred} \cap B_{gt}|}{|B_{pred} \cup B_{gt}|}

语义分割定位

第二周,师傅给学徒一支细笔,让他把划痕的形状完整描出来,而不是只画一个框。学徒发现,有些缺陷是长条形的,有些是星芒状的,矩形框根本包不住它们的真实轮廓。他这才意识到,有些质检要求「看清缺陷的每一寸边界」,必须做像素级的判断。

语义分割正是回答「缺陷精确到哪个像素」的技术。它把图像中的每一个像素都分类为「正常」或「缺陷」,输出一张与输入尺寸相同的掩码图。常用的 U-Net 网络采用编码-解码结构:编码器逐步压缩图像提取高层语义,解码器逐步恢复分辨率还原细节,中间的跳跃连接把浅层边缘信息直接传给解码层,保证细小缺陷的轮廓不被丢失。

分割任务的训练策略与检测不同,通常会把像素级交叉熵和 Dice 损失组合使用。评估时直接比较预测掩码与真实掩码的相似度,最常用的指标是 Dice 系数:

学徒描完一整天的边缘,手酸了,心却亮了:粗框告诉他「这里有事」,细笔告诉他「事有多大、边界在哪」。目标检测与语义分割的组合,就像质检员先抬头扫一眼、再俯身拿放大镜确认,两步配合才能应对复杂缺陷。

Dice=2∣X∩Y∣∣X∣+∣Y∣\displaystyle \text{Dice} = \frac{2|X \cap Y|}{|X| + |Y|}
Dice = 预测掩码与真实掩码重叠像素的 2 倍 ÷ 两边像素总数之和。它等价于 F1 度量在像素级上的推广,对不平衡的缺陷像素非常敏感。
  1. 分子重叠 ×2预测缺陷像素与真实缺陷像素重合的数量翻倍,保证得分最大值不超过 1。
    2∣X∩Y∣2|X \cap Y|
  2. 分母像素总和预测掩码的缺陷像素数加上真实掩码的缺陷像素数。
    ∣X∣+∣Y∣|X| + |Y|
  3. 整体含义当预测完全覆盖真实且不多报时,Dice 为 1;漏检或多检都会让分子变小、分母变大。
    Dice=2∣X∩Y∣∣X∣+∣Y∣\displaystyle \text{Dice} = \frac{2|X \cap Y|}{|X| + |Y|}

模型迭代优化

实习第三周,师傅开始给学徒「月考」。每次考完,师傅都会拿出一张二维表:横轴是漏检率,纵轴是误检率。如果徒弟把坏镜片放过去了,就是漏检;如果把好镜片扔进废品堆,就是误检。师傅要求两边都不能出格,这叫「缺陷检测的平衡木」。

模型上线前的迭代调优,本质上就是在走这根平衡木。训练阶段的调参包括学习率、批大小、锚框尺寸等,让模型在训练集上稳定收敛。但真正的功夫在错误分析上:把每一张误检和漏检的图片单独拎出来,问三个问题——是什么场景?缺陷像什么?为什么模型会犯错?针对反复犯错的难例,常见的做法是难例挖掘与负样本补充:把易混淆的纹理、非缺陷反光点加入训练集,让模型学会「什么不算缺陷」。

这个平衡关系,可以用 F1 分数统一刻画。它把精确率(别误报)和召回率(别漏检)压缩成一个数值:

月考结束后,学徒盯着那张平衡木图,终于明白师傅的良苦用心:一味追求不漏检,会把产线上的良品全部误杀;一味追求不误检,又会让残次品流向市场。真正的好模型,是在两种代价之间找到工厂能接受的平衡点。

F1=2×Precision×RecallPrecision+Recall\displaystyle F_1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
F1 = 精确率与召回率的调和平均。只有当两者都高时,F1 才高;任何一方塌陷都会显著拖低 F1。
  1. 精确率 Precision模型判为「缺陷」的结果中,真实是缺陷的比例。它惩罚误检。
    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
  2. 召回率 Recall真实缺陷中,被成功检出的比例。它惩罚漏检。
    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
  3. 调和平均对两者做倒数平均,防止单一指标虚高。
    2×Precision×RecallPrecision+Recall\frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

产线集成部署

终于到了正式上岗的日子。学徒走出实训室,站在真实的流水线旁。传送带每秒钟送来两个镜片,留给他的判断时间只有不到 500 毫秒。他必须在眨眼之间给出结论,并且让结果直接触发机械臂,把次品精准推到废品槽里——这时候,他不再是一个人,而是产线控制系统的一环。

把训练好的模型部署到产线,不只是把「.pt 文件」塞进工控机那么简单。首先要解决推理性能问题:模型要经过 TensorRT、ONNX Runtime 等引擎加速,把单帧推理时间压缩到产线节拍以内。吞吐量是衡量处理能力的核心指标:

性能达标之后,还要与 PLC(可编程逻辑控制器)完成握手:检测结果通过工业协议发给 PLC,PLC 控制剔除气缸动作。整套链路有严格的延时预算——从成像到触发剔除,通常不能超过一个工件的传送间隔。此外,产线不是一成不变的:光源会衰减、产品批次会换材料、镜头会积灰,这些都要求工程师保留模型版本管理机制,定期用现场新样本重新评估、触发增量训练。学徒正式上岗的第一周,师傅只叮嘱一句话:「你不再是被考核的学生了,你是产线的一部分——稳定,比聪明更重要。」

Throughput=NframesΔt\displaystyle \text{Throughput} = \frac{N_{\text{frames}}}{\Delta t}
吞吐量 = 单位时间内处理的图像帧数。它必须大于等于产线节拍,否则相机采的图会不断积压,系统就会「宕机」或漏检。
  1. 分子处理帧数在统计窗口内完成检测的图像张数。
    NframesN_{\text{frames}}
  2. 分母时间窗口处理这些帧所消耗的总时长,包括推理时间与前后处理时间。
    Δt\Delta t
  3. 整体含义每秒能完成多少次质检。吞吐量不足时,要么升级硬件,要么简化模型。
    Throughput=NframesΔt\displaystyle \text{Throughput} = \frac{N_{\text{frames}}}{\Delta t}

AI 应用场景

手机玻璃盖板出厂质检

阶段:数据采集 + 目标检测 + 语义分割

解决的问题:手机玻璃盖板在加工、搬运过程中极易产生划痕与崩边。传统人工在强光灯下肉眼检测,漏检率随加班时间快速上升,且不同产线质检员的标准不一致。AI 视觉通过多角度成像和检测-分割级联模型,把「看缺陷」变成「框缺陷、量缺陷」的标准化流程。

具体案例:某盖板厂在每条产线上部署 4 台工业相机,分别用明场和暗场低角度光照采集图像。YOLO 模型先在整幅图上快速定位可疑划痕区域,再调用 U-Net 对可疑区域做像素级分割,精确测量划痕长度与崩边面积,超过规格阈值立刻联动 PLC 触发剔除气缸。上线后质检节拍从每人 6 秒缩短到每件 1.2 秒。

汽车压铸件内壁缺陷检测

阶段:成像方案 + 模型迭代 + 集成部署

解决的问题:汽车转向节等铝合金压铸件在铸造过程中内部容易产生气孔、缩松缺陷。传统做法是破坏性抽检,只能发现批次问题,无法定位具体缺陷位置。通过 X 射线数字成像 + 语义分割模型,可以对每一个零件做无损全检,精确定位内部缺陷的坐标和尺寸。

具体案例:某零部件厂商在清理产线后加装 X 光探伤工位,将每件铸件的透视图送入分割模型,模型输出气孔区域的像素掩码。技术人员按气孔最大直径和密集度自动判定合格/不合格,同时把不合格件的位置坐标发给机械臂完成自动分拣。该项目上线后,铸件内部缺陷漏检率从人工抽检时代的约 8% 降到 0.3% 以下。

Python 演示

python41 行
import numpy as np def generate_clean_image(size=64):    """生成干净的工件表面灰度图,正弦纹理模拟材质起伏"""    x, y = np.meshgrid(np.arange(size), np.arange(size))    return (128 + 60 * np.sin(x / 12.0) * np.cos(y / 15.0)).astype(np.uint8) def add_defects(image, num_defects=4):    """随机撒下暗色圆斑,模拟划痕与麻点缺陷"""    for _ in range(num_defects):        cx, cy = np.random.randint(16, 48, size=2)        r = np.random.randint(2, 5)        y, x = np.ogrid[:image.shape[0], :image.shape[1]]        image[(x - cx) ** 2 + (y - cy) ** 2 < r * r] = 45    return image def local_mean(img, k=5):    """用滑动窗口求每个像素邻域的平均亮度,模拟人眼局部对比感知"""    from numpy.lib.stride_tricks import sliding_window_view    pad = k // 2    padded = np.pad(img, pad, mode="symmetric")    windows = sliding_window_view(padded, (k, k))    return windows.mean(axis=(2, 3)) def detect_defects(image, threshold=25):    """像素明显暗于周围背景即判为缺陷,生成二值掩码"""    img = image.astype(float)    mask = (img + threshold) < local_mean(img)    return mask def main():    np.random.seed(42)    sample = generate_clean_image()    sample = add_defects(sample)    mask = detect_defects(sample)    print("图像尺寸:", sample.shape)    print("缺陷像素数:", int(mask.sum()))    print("检测完毕,标记缺陷区域数量:", int(mask.sum() > 0)) if __name__ == "__main__":    main()
目的:用合成工件图像演示缺陷检测的完整链路——构造带纹理的良品表面、随机添加暗斑模拟缺陷、通过局部背景对比找出异常像素并形成二值掩码。
  1. def generate_clean_image(size=64):用两个正弦函数叠加生成带起伏纹理的材质表面,模拟真实工件在光照下的灰度变化。
  2. def add_defects(image, num_defects=4):随机在图像中放几个暗色圆斑,模拟划痕和麻点这类低灰度缺陷。
  3. from numpy.lib.stride_tricks import sliding_window_view用滑动窗口一次性取出图像中所有 5×5 邻域块,是局部均值计算的性能关键。
  4. padded = np.pad(img, pad, mode="symmetric")对称填充边界,让图像边缘的像素也能参与邻域均值计算。
  5. mask = (img + threshold) < local_mean(img)核心判定逻辑:某个像素比它周围背景暗超过 25 个灰度级,就标记为缺陷。
  6. if __name__ == "__main__":让脚本既可被模块导入,也能独立运行并打印检测统计。

常见误区

误区刚启动项目时手里只有几十张缺陷图,于是认为深度学习模型再强也白搭,必须攒到几万张才能动工。

正解工业场景数据少是常态,但数据质量比数量更重要。真实缺陷样本少,可以通过数据增广(翻转、旋转、弹性形变、亮度抖动)扩充;也可以先用公开瑕疵集预训练,再用少量真实样本微调;还可以用仿真软件合成缺陷图像。用候选模型在产线上预筛、再让人工只复核可疑图,能快速积累高质量真实缺陷样本,形成飞轮效应。

为何常见:很多人把深度学习想象成「数据越多越聪明」,忽略了工业项目中「先跑通再扩大数据」的工程常态。数据不足只是起点,不是终点。

误区测试集准确率看着有 99%,就觉得达到产线要求,直接部署。结果上线第一天报警器响个不停,产线被频繁停机搅得焦头烂额。

正解缺陷率通常只有 1% 甚至 0.1%,在这种极度不均衡的数据下,99% 的准确率可能对应着极高的误检绝对数——每检 1000 件就有 10 件良品被误杀。正确的做法是同时看精确率(误检占比)和召回率(漏检占比),再结合产线停机代价和客诉损失,确定合理的阈值与指标平衡点。

为何常见:习惯用「准确率」这个单一指标评判模型,忽略了缺陷场景中「绝大多数样本是良品」这一前提,导致 99% 的空泛数字掩盖了真实的误检风暴。

误区标注缺陷时把边界抠得像素级精细,认为标注越精确,模型学到的东西就越准,效果必然更好。

正解模型学的是「一组标注者共同遵守的模式」,而不是某个绝对精确的像素坐标。如果多个标注人员对边界的松紧把握不一致,这批标注本身就充满了噪声,模型反而会被互相矛盾的标签带偏。先统一标注规范,再对同一个批次安排多人交叉复核、抽检一致性,比单纯追求「精细」重要得多。

为何常见:没理解监督学习的本质——模型拟合的是标注分布。大家把「标注精度」和「标注一致性」混为一谈,忽略了前者是质量、后者才是可控性。

误区把模型部署到工控机上,跑通了就觉得项目交付完成,等几个月后产线质检性能下滑了,才想起找算法工程师排查。

正解工业现场是持续变化的环境:光源会衰减、产品批次材料会变、相机镜头会污损、新缺陷形态会冒出来。模型上线只是运维的开始,需要持续记录图像与判定结果、定期抽样对比人工复检、监控推理置信度分布漂移,并且在性能跌破阈值时及时用新样本增量训练。

为何常见:把 AI 当成一次性交付的软件,忽视了视觉系统与物理产线长期耦合运行的特点。真正的工业 AI 项目是运营出来的,不是上线出来的。

面试题

Q1. 在目标检测任务中,用于衡量预测框与真实标注框位置重合程度的最常用指标是?

单选题 · easy

  • A.损失函数数值
  • B.交并比 IoU← 正确答案
  • C.梯度幅值大小
  • D.像素平均亮度

答案:B。IoU(交并比)计算预测框与真实框重叠面积占合并面积的比例,直接反映框定位的准确度。损失函数值和梯度幅值都是训练过程的中间量,像素平均亮度与定位无关。这就像评价学徒框得准不准,要看圈画范围与师傅圈画范围的重叠程度。

Q2. 缺陷检测项目中,为什么不能只盯着准确率一个指标?

单选题 · mid

  • A.部署后模型自动更新参数
  • B.准确率掩盖漏检和误检代价← 正确答案
  • C.训练数据一定完全均衡
  • D.误检不会影响产线效率

答案:B。缺陷率极低时,只要把全部样本判为良品,准确率都很高,但所有缺陷都被漏掉了。准确率把漏检和误检这两种代价不一样的错误混在一起,掩盖了产线真正关心的「坏品漏出去」和「好品被误杀」。必须分开看精确率和召回率。

Q3. 以下哪些策略能有效提升工业小尺寸缺陷的检出能力?

多选题 · mid

  • A.提高相机分辨率和光学倍率← 正确答案
  • B.改用暗场或低角度光照← 正确答案
  • C.减少采集样本降低计算量
  • D.使用特征金字塔分层检测← 正确答案

答案:ABD。提高分辨率让细小缺陷占据更多像素,暗场低角度光增强对比度,特征金字塔融合浅层细节与深层语义,三者都能提升小缺陷检出率。减少采集样本反而会降低模型泛化能力,是错误选项。

Q4. 语义分割与目标检测在缺陷定位上的核心区别是什么?

单选题 · hard

  • A.分割输出像素级掩码而检测输出矩形框← 正确答案
  • B.目标检测不需要任何训练数据
  • C.语义分割只能识别一种缺陷
  • D.检测框结果无法用于工业质检

答案:A。语义分割将每个像素分类,输出与图像同尺寸的掩码,能精确还原缺陷轮廓;目标检测只输出矩形框位置与类别。检测当然需要训练数据,分割也支持多类别,检测框也常用于质检,因此 B、C、D 都是错误的。

Q5. 当模型召回率很高但精确率偏低时,产线上最可能出现的现象是?

单选题 · easy

  • A.大量缺陷被漏检
  • B.大量良品被误判← 正确答案
  • C.模型推理速度变快
  • D.图像采集帧率降低

答案:B。召回率高意味着真实缺陷基本都被找出来了,但精确率低表示模型报出的「缺陷」里有很多其实是良品——也就是误判。这就像一个学徒把所有镜片都挑出来说「有问题」,确实没漏,但把大量好镜片也扔进了废品堆。

Q6. 关于缺陷数据标注规范,下列说法正确的有哪些?

多选题 · mid

  • A.合并相似缺陷利于类别学习← 正确答案
  • B.多人标注后应交叉复核一致性← 正确答案
  • C.标注框越大模型效果越好
  • D.翻转旋转增广可扩充样本规模← 正确答案

答案:ABD。把形态相近、处置方式相同的缺陷合并成同一类,能降低类间混淆;多人交叉复核保证标注标准统一;几何增广扩充样本规模。标注框不是越大越好,脱离真实缺陷边界的过大标注框会让模型学到错误位置。

Q7. 质检系统与 PLC 联动的主要目的是什么?

单选题 · mid

  • A.提高模型训练速度
  • B.检出缺陷后立刻触发剔除告警← 正确答案
  • C.自动修改错误标注
  • D.减少工业相机安装数量

答案:B。PLC 负责产线执行控制。质检模型把推理结果通过工业协议发给 PLC,PLC 再触发剔除气缸和声光报警,实现毫秒级的闭环处置。训练提速、标注修正、减少相机数量都与 PLC 联动的直接目的无关。

Q8. 产线上出现了一种训练集中从未见过的缺陷类型,最合理的处理方式是?

单选题 · hard

  • A.删除现有模型并全部重新训练
  • B.收集新缺陷样本回填训练集增量更新← 正确答案
  • C.立刻更换整套工业相机设备
  • D.调高检测阈值忽略该新缺陷

答案:B。新缺陷类型出现时,最稳妥的做法是收集足够样本、标注后与旧数据合并做增量训练,让模型在不遗忘旧知识的情况下学会新缺陷。重训代价高且没必要,换相机没有针对性,忽略新缺陷等于漏检,都会造成产线损失。

Q9. 以下哪些因素会造成质检模型在生产环境中的性能衰减?

多选题 · hard

  • A.车间光照强度和角度逐渐变化← 正确答案
  • B.产品批次间材料特性发生漂移← 正确答案
  • C.相机镜头积灰导致图像模糊← 正确答案
  • D.模型训练迭代次数不断增加

答案:ABC。光照漂移改变图像灰度分布,材料批次变化让缺陷形态偏移,镜头积灰降低图像清晰度——三者都会让现场数据分布偏离训练集,导致性能衰减。模型训练迭代次数的增加本身只会改变模型,在离线阶段完成,不属于生产环境因素。

Q10. Dice 系数主要被用作哪类任务的评估指标?

单选题 · easy

  • A.语义分割的掩码相似度← 正确答案
  • B.文本分类的词频统计
  • C.语音识别的波形编码
  • D.特征工程的缺失值填充

答案:A。Dice 系数在缺陷检测中用于衡量预测掩码与真实掩码的像素级重叠度,是语义分割任务的核心评估指标。文本分类、语音识别、缺失值填充等任务分别有各自的评价体系,与像素重叠无关。