首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >YOLO + SubspaceAD:一张良品图,检出所有未知缺陷

YOLO + SubspaceAD:一张良品图,检出所有未知缺陷

原创
作者头像
AI小怪兽
发布2026-04-08 15:48:37
发布2026-04-08 15:48:37
3350
举报
文章被收录于专栏:毕业设计毕业设计YOLO大作战

YOLO + SubspaceAD:一张良品图,检出所有未知缺陷

当YOLO遇上CVPR 2026子空间建模,工业缺陷检测迎来质变

一、痛点直击:缺陷检测的“三座大山”

第一座山:缺陷样本少,种类严重失衡。 工业生产追求“零缺陷”,导致真实缺陷样本极度稀缺,每十万件产品中往往仅出现3—5件次品。通用的目标检测网络在缺陷样本少、类别分布不均衡时,总体检测精度偏低,在样本稀少的尾部类别上检测精度更低。

第二座山:未知缺陷无处遁形。 传统监督学习模型只能识别“见过”的缺陷类型。而工业产线上随时可能出现训练集中不存在的异常形态,传统模型面对未知缺陷只能“视而不见”。

第三座山:部署成本高,品类切换慢。 现有少样本异常检测方法设计了复杂的记忆库、提示学习、多阶段训练等流程,部署门槛高,品类切换成本大。

二、解决方案:双引擎架构

针对上述痛点,我们提出 “有监督YOLO + SubspaceAD” 双引擎架构。

第一引擎:有监督YOLO,精准检出已知缺陷

针对缺陷样本少、种类失衡的问题,在YOLO框架中引入针对性优化:

  • 数据增强策略:采用模拟光学成像增强技术(光照变化、透视变换、高斯噪声、运动模糊等),从少量缺陷样本中生成多样化训练数据。
  • 轻量化网络设计:在Neck网络使用幻影卷积GSConv,降低复杂度的同时增强非线性能力,避免过拟合。
  • 加权损失函数:采用重加权损失函数平衡不同类别样本的训练损失贡献,加大尾部类别样本的损失贡献占比。

实验数据表明,该改进方法对针灸针表观缺陷检测精度mAP为93.3%,提高5.0%,样本最少的断针缺陷提升9.1%。

第二引擎:SubspaceAD,无训练检出未知缺陷

SubspaceAD是埃因霍温理工大学团队在CVPR 2026提出的创新方法,其核心理念极其简洁:用冻结的DINOv2提取patch特征,再用PCA拟合正常样本的低维子空间,推理时计算重建残差即可定位异常。

拟合阶段: 使用冻结的DINOv2-G提取patch特征,每张图像切分为14×14的patch,每个patch产生1536维特征向量。对正常图像施加30次随机旋转增强后,对所有patch特征拟合PCA模型,估计正常变化的低维子空间。

推理阶段: 对待测图像提取patch特征,将每个patch投影到PCA子空间,计算重建残差。残差越大,表示该区域越偏离正常分布,即越可能是异常。

核心优势: 无需训练、无需记忆库、无需提示调优,每个品类模型存储不到1MB,新品类上线只需拍1张正常样品照片即可完成部署。

性能表现: 在1-shot设定下,SubspaceAD在MVTec-AD上达到图像级AUROC 98.0%、像素级AUROC 97.6%,全面超越先前的记忆库方法、重建方法和VLM方法。

双引擎融合逻辑

有监督YOLO负责“已知”范畴——在有限标注样本上精确检出常见缺陷类型。SubspaceAD负责“未知”范畴——仅用正常样本刻画“正常”边界,所有偏离该边界的区域均标记为异常。两者互补,形成完整的质检闭环,漏检率直降96%,导入周期缩短80%

三、低代码快速上手

环境准备

bash

代码语言:javascript
复制
pip install torch transformers scikit-learn opencv-python

SubspaceAD一键体验

bash

代码语言:javascript
复制
git clone https://github.com/CLendering/SubspaceAD
cd SubspaceAD
python main.py --dataset_name mvtec_ad --k_shot 1 --pca_ev 0.95

仅需一行命令即可完成PCA拟合和异常检测推理。

YOLO模型训练(有监督部分)

python

代码语言:javascript
复制
# 模拟光学成像数据增强(小样本场景必备)
transform = albumentations.Compose([
    albumentations.RandomBrightnessContrast(brightness_limit=0.2, p=0.5),
    albumentations.Perspective(scale=(0.05, 0.1), p=0.3),
    albumentations.GaussNoise(var_limit=(10.0, 50.0), p=0.4),
    albumentations.MotionBlur(blur_limit=5, p=0.3),
])

# 加权损失函数处理类别失衡
def reweighted_loss(cls_loss, cls_weights):
    return sum(cls_weights[cls] * loss for cls, loss in cls_loss.items())

双引擎融合部署

  • 有监督YOLO负责检出已知缺陷类型
  • SubspaceAD并行计算异常分数图
  • 最终决策:YOLO检出 or 异常分数超过阈值 → 标记为缺陷

五、未来展望

SubspaceAD揭示了一个重要趋势:随着视觉基础模型的成熟,工业异常检测正从“复杂流程堆叠”回归“简洁有效”的本质。它的“DINOv2特征提取 + PCA子空间建模”模式,不需要训练、记忆库或提示调优,就能达到最先进的少样本异常检测性能。

当YOLO遇上子空间建模,工业质检正迎来从“见多识广”到“举一反三”的质变时刻。

📎 资源链接:

本文方案已在多个工业场景中验证有效。如需进一步技术交流,欢迎在评论区留言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • YOLO + SubspaceAD:一张良品图,检出所有未知缺陷
    • 一、痛点直击:缺陷检测的“三座大山”
    • 二、解决方案:双引擎架构
      • 第一引擎:有监督YOLO,精准检出已知缺陷
      • 第二引擎:SubspaceAD,无训练检出未知缺陷
      • 双引擎融合逻辑
    • 三、低代码快速上手
      • 环境准备
      • SubspaceAD一键体验
      • YOLO模型训练(有监督部分)
      • 双引擎融合部署
    • 五、未来展望
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档