跳转至

AOI-SSL: Self-Supervised Framework for Efficient Segmentation of Wire-bonded Semiconductors In Optical Inspection

会议: CVPR 2026
arXiv: 2605.12430
代码: https://github.com/jacomof/aoi-ssl (有)
领域: 语义分割 / 自监督 / 工业视觉检测
关键词: 自动光学检测(AOI), 掩码自编码器(MAE), 小数据自监督, 检索式分割, 引线键合半导体

一句话总结

针对半导体引线键合自动光学检测中"每换一款器件就要重新标注+重训分割模型"的痛点,本文用领域内小数据自监督预训练(发现 MAE 比 DINO/iBOT 更适合)+ 轻量微调 + patch 级检索式无训练推理,在固定 8 小时算力下把分割 mIoU 提到 60.3%,并让检索式分割在单一器件上无需训练即达 71.5% mIoU、近乎即时适配新器件。

研究背景与动机

领域现状:自动光学检测(AOI)是半导体封装质检的关键环节,要先把引线(wire)、球焊点(ball)、楔焊点(wedge)、环氧封装(epoxy)等结构做语义分割,再交给下游做缺陷判定。目前主流的 AOI 分割模型(如 ResNet18 + U-Net++ / DeepLabV3+)都是器件专用的。

现有痛点:这些模型与具体器件设计、采集条件强耦合。一旦上新器件、或出现显著的协变量漂移(capture/process variation),就得重新采集标注数据、从头训一个新模型——在产线环境里既费钱又费时。同时 AOI 的成像还很"非标准":用单色(monochrome)双通道图(两个通道是同一器件在不同光源下的灰度视图,服务于光学标定与深度估计),分辨率从 ~800² 跨到 ~8120²,且大量黑边、结构极细(细引线)、类别极度不均衡(wedge 占标注像素不到 1%)。

核心矛盾:现成自监督(SSL)和基础模型(如 DINOv2)都假设有海量、多样的 RGB 预训练数据;而工业 AOI 恰恰是窄域 + 小数据 + 非 RGB + 边缘算力,两者错配。

本文目标:拆成三个子问题——(1) 在小 AOI 数据上做有效的领域自监督预训练;(2) 在固定算力预算下快速稳定地微调;(3) 换器件时不重训也能即时适配。

切入角度:作者观察到 AOI 域"语义多样性低、几何细节重要",这对像素级重建型 SSL(MAE)友好、对聚类蒸馏型(DINO/iBOT)不友好;同时检索式(in-context)适配天然契合"只更新一个标注记忆库即可换器件"的产线需求。

核心 idea:用领域内 MAE 预训练打底,再叠加 patch 级最近邻检索把标签从记忆库直接迁移到查询图,用"换记忆库代替重训解码器"实现近即时适配。

方法详解

整体框架

整篇方法围绕一条三阶段管线展开:预训练阶段用 7000+ 张无标注 AOI 图,在轻量 ViT 上做领域自监督(重点是 MAE);训练/建库阶段把带标注的参考图编码成稠密 patch 嵌入,连同其多标签掩码存进 key-value 记忆库 \(\mathcal{M}\)推理阶段对查询图编码出 patch 嵌入,逐 patch 用余弦相似度检索最近邻、聚合邻居标签、重组成整图掩码。微调式分支(接 UPerNet 解码头)与检索式分支共用同一个预训练编码器,前者追求高支持类的精度、后者追求无训练的即时适配。整体围绕单色双通道、细结构、强不均衡、边缘算力这几个约束做设计。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入<br/>单色双通道 AOI 图"] --> B["领域 MAE 预训练<br/>掩码重建·小数据"]
    B --> C["轻量编码器<br/>ViT-Tiny / FasterViT-0"]
    C -->|微调分支| D["UPerNet 微调<br/>cosine + LLRD"]
    C -->|无训练分支| E["patch 级检索<br/>相似度聚合标签"]
    E --> F["key-value 记忆库<br/>换器件只换库"]
    D --> G["多标签分割掩码"]
    F --> G

关键设计

1. 领域内 MAE 预训练:小数据、非 RGB 下选对自监督范式

痛点是通用 SSL 都依赖海量多样 RGB 数据,而 AOI 只有少量单色双通道图。作者在自家 7000+ 无标注图(50+ 器件)上同时适配 MAE、DINO、iBOT 三种范式做对照,结论是 MAE 在这个 regime 里明显最好。MAE 通过随机丢弃 patch token 再用轻量 transformer 解码头在像素空间重建、以重建 MSE 为目标学习表征;DINO/iBOT 走 student-teacher 自蒸馏(teacher 是 student 的 EMA),用温度缩放 softmax 把 \([CLS]\) 投影到 \(K\) 维概率空间做对齐,目标为 \(\mathcal{L}_{\text{DINO}}(I)=\sum_{x\in A_t(I)}\sum_{x'\in A_s(I)}\sum_{i=1}^{K}-P_t^{(i)}(x)\log P_s^{(i)}(x')\),并靠中心化 \(c\) 防塌缩。作者的解释是:AOI 域语义多样性低、几何细节才是关键,像素级重建天然适配稠密下游任务,而聚类式蒸馏抓不住细粒度几何,因此 MAE 收敛更快、下游分割更好。为让 MAE 能跑在不支持任意 token 数的 FasterViT 上,作者把可学习 mask token 同时塞进编码器和解码器输入(借鉴 iBOT/DINO),掩码比例 0.7,预训练 3000 epoch

2. 限时微调:cosine 退火 + 层级学习率衰减把小数据微调稳住

把预训练编码器接一个轻量 UPerNet 解码头(金字塔池化 + FPN,多尺度特征),ViT-Tiny 取最后 4 个 transformer block 的输出、FasterViT-0 取其 4 个层级特征图。痛点在于小数据 + 固定 8 小时算力下微调极易发散或欠拟合。作者发现训练调度才是成败关键:cosine annealing 学习率衰减叠加 LLRD(层级学习率衰减,浅层小学习率、深层大学习率)能把验证集 mIoU 从两者全关时的 22.4 拉到全开的 53.7。损失上,因为是带重叠的多标签分割,对每个类单独算 loss 再平均;试过 soft DICE、Jaccard 等区域损失来对抗类不均衡,最终发现简单的逐类 BCE 反而最稳

3. patch 级检索式 in-context 分割:换记忆库代替重训

这是为"换器件不重训"设计的核心。把 \(N\) 张参考图编码成归一化嵌入 key \(k_j\) 与其原始多标签掩码 value \(V_j\),构成记忆库 \(\mathcal{M}=\{(k_j,V_j)\mid k_j\in\mathbb{R}^d, V_j\in\mathbb{R}^{P^2\times C}\}_{j=1}^{M}\);与 RSU 存平均标签不同,这里整 patch 掩码原样存(小库才负担得起),以最大化 IoU。推理时对查询图每个 patch \(q_i\) 取 top-\(k\) 余弦最近邻 \(\mathcal{N}(i)\),再聚合邻居标签。作者对比两种聚合:相似度加权(本文)\(w^{\text{sim}}_{i,j}=s_{i,j}/\sum_{m}s_{i,m}\)\(\hat{y}_i=\sum_j w^{\text{sim}}_{i,j}V_j\);以及 RSU 式注意力加权 \(w^{\text{attn}}_{i,j}=\mathrm{softmax}(s_{i,j}/\beta)\)。一个反直觉的发现是:在这种低语义多样性的多标签稠密检索里,简单相似度聚合往往不输甚至优于更复杂的注意力聚合。换器件时只需更新记忆库、几乎零额外训练即可即时适配,用 Faiss 在 GPU 上做近对数时间检索,全训练集嵌入约占 2GB 显存

4. 架构归纳偏置:混合 ViT 救细长结构

纯 ViT 因非重叠 patch 边界会输出"盒状/低分辨率"掩码,细引线常常掉进 patch 缝隙里。作者引入带卷积成分的 FasterViT-0(层级下采样 + 重叠 tokenization),在 SSL 预训练之后归纳偏置依然重要:FasterViT-0 达 60.3% mIoU,明显超过纯 transformer 的 ViT-Tiny(53.5%),增益主要落在 Wire 这类细长类别上。这说明对受限模型规模的 AOI 任务,多尺度 + 卷积式归纳偏置是抓细结构的必要补充

一个完整示例:一张查询图怎么被检索分割

设一张新器件查询图被切成 \(L\) 个 patch。①编码器(ViT-Tiny)输出 \(L\) 个归一化 patch 嵌入 \(q_i\);②对每个 \(q_i\),在 2GB 记忆库里用 Faiss 取余弦最近的 top-\(k\) 个 key,记下相似度 \(s_{i,j}\);③按 \(w^{\text{sim}}_{i,j}=s_{i,j}/\sum_m s_{i,m}\) 加权聚合这些邻居对应的整 patch 多标签掩码 \(V_j\),得到该 patch 的预测 \(\hat{y}_i\);④把 \(\{\hat{y}_i\}\) 重排回图像分辨率,对每个类用网格搜索 + 5 折交叉验证选出的阈值二值化,得到最终多标签掩码。整个过程不更新任何网络权重——换一款器件,只要往记忆库里塞那款器件的少量标注图即可。

损失函数 / 训练策略

预训练:MAE 用掩码 patch 的像素级 MSE,掩码比 0.7,3000 epoch、batch 100、base lr \(1.5\times10^{-4}\)(A100);DINO/iBOT 用自蒸馏交叉熵 + 中心化防塌缩。所有 SSL 都配 AOI 专属增广(翻转、90° 旋转、高斯模糊、对比度抖动、高斯噪声)+ 100 epoch 线性 warmup 的 cosine 退火,作者实测去掉这套增广会让三种框架都过早表征塌缩。微调:逐类 BCE + cosine annealing + LLRD,AdamW(weight decay 0.05),所有模型统一在单张 RTX 2080 上限时 8 小时训练以模拟产线约束。

实验关键数据

主实验

固定 8 小时算力、RTX 2080 测吞吐。本文 AOI-MAE 预训练的 FasterViT-0 + UPerNet 取得最佳 60.3% mIoU,比 ImageNet 监督基线 ResNet18 + U-Net++ 高近 8 个百分点;无训练的 patch 检索也有 48.1% mIoU,且吞吐高得多(266.7 crops/s)。

模型 Crops/s mIoU Epoxy Wire Wedge Ball
ResNet18 + DeepLab(监督基线) 87.3 43.5 66.7 50.3 10.3 46.7
ResNet18 + U-Net++(监督基线) 86.9 52.4 75.4 59.1 9.2 65.8
ViT-Small 冻结 DINOv2 + Patch 检索 90.9 47.8 43.4 48.7 45.8 53.4
ViT-Tiny + Patch 检索(本文,无训练) 266.7 48.1 38.4 47.8 44.4 61.8
ViT-Tiny + UPerNet(本文) 218.1 53.5 (+50.7%) 73.7 43.0 26.5 70.7
FasterViT-0 + UPerNet(本文) 163.3 60.3 (+40.9%) 79.3 66.7 19.3 75.8

括号内为相对从头训练的预训练增益(MAE 预训练使 ViT-Tiny 微调相对提升达 ~50.7%)。值得注意:本文自定义 MAE 用 <1% 的 DINOv2 预训练数据、<一半参数(~10M vs ~22M)、~3× 吞吐,仍能稳压冻结 DINOv2 检索——即"双重收益"。

单一器件检索:当记忆库精选为同一器件布局(42 张库、24 张测、互不重叠),无训练 patch 检索达 71.5% mIoU,远超全微调的 ResNet18 + U-Net++(47.5%)。

策略 mIoU Epoxy Wire Wedge Ball
Patch 检索(本文,MAE 编码器) 71.5 68.0 65.6 78.7 73.5
ResNet18 + U-Net++(全微调) 47.5 43.3 72.1 3.4 71.1

消融实验

检索策略消融(5 折交叉验证,fine-tune 训练划分):

预训练 粒度 聚合 mIoU 说明
MAE Patch Similarity 45.7 patch + 相似度最好
MAE Patch Attention 44.7 注意力聚合略逊
MAE Image Similarity 26.9 图级粒度大幅掉点
DINO Patch Similarity 39.3 MAE > DINO
iBOT Patch Attention 40.1 iBOT 上注意力反超相似度

训练调度消融(验证集 mIoU):

Cosine 退火 LLRD mIoU 说明
53.7 两者都开
33.7 去 LLRD 掉 20
19.6 去 cosine 大崩
22.4 全关

关键发现

  • 粒度 > 聚合方式:patch 级相对图级是质变(45.7 vs 26.9),因为能容忍 AOI 图常见的局部形变与位置漂移;而相似度 vs 注意力在 MAE/DINO 上只是微差,低语义多样性下简单相似度足矣、还更省算力(iBOT 是例外,注意力反超)。
  • Wedge 类是检索的主场:wedge 占标注像素 <1%,卷积解码器会"过平滑"导致 IoU 仅 3.4%–9.2%(低召回);patch 检索靠直接匹配相似 patch + MAE 预条件化细结构,把 wedge IoU 做到 78.7%。
  • 归纳偏置在 SSL 后仍重要:纯 ViT 因非重叠 patch 出"盒状"低分辨率掩码,FasterViT 的层级注意力 + 多尺度缓解了这点,Wire 类增益最明显。
  • 记忆库可扩展性:mIoU 随标注图数量近线性增长,库扩到 400 张(比全微调少 33% 数据)时 patch 检索即超越 ResNet18 + U-Net++ 基线,数据效率更优。

亮点与洞察

  • "换库代替重训"直击产线痛点:把器件适配从"重训解码器"降级成"更新一个 key-value 记忆库 + 网格搜阈值",几乎零训练即可上新器件,这是把 in-context/检索思路真正落到工业 AOI 的少见尝试。
  • 小数据下 MAE > 蒸馏的解释很有迁移价值:把"任务语义多样性低、几何细节为王"作为选 SSL 范式的判据——任何窄域、细结构、单色/非 RGB 的工业检测都能借鉴"先试 MAE"这条经验。
  • 反直觉结论:复杂注意力聚合并非普遍更优。在低语义多样性多标签稠密检索里,简单余弦相似度加权常常打平甚至胜过 RSU 式注意力,省下算力,提醒大家别无脑上复杂聚合。
  • 存整 patch 掩码而非平均标签:当记忆库本身不大时,用空间换 IoU 是个划算且容易复用的小 trick。

局限与展望

  • 作者承认:只做了直接 SSL 预训练,未叠加来自更大编码器的知识蒸馏;极端类不均衡只用区域损失对付,没系统试 Focal Loss / 类重加权(调参开销大,留作未来);只在 512² 中心裁剪上验证,更高分辨率与产线级质量要求待评估。
  • 自己发现:两套数据集均为单一光学系统下的私有数据,跨成像系统/跨厂的泛化未知;检索式分割对每类阈值高度敏感,需网格搜索 + 5 折交叉验证,换数据集要重调;单一器件 71.5% 与多器件 60.3% 不可直接横向比(前者记忆库被精选到同一布局,结构先验更强)。
  • 改进思路:把 MAE 预训练与轻量蒸馏结合;为 wedge 这类超稀有类设计自适应阈值或代价敏感检索;探索全图(非中心裁剪)下的检索拼接以满足产线分辨率。

相关工作与启发

  • vs RSU(Retrieval-based Scene Understanding): RSU 也建 patch 记忆库 + 注意力式标签混合,但存的是平均标签、且默认注意力聚合更好;本文存整 patch 掩码以最大化 IoU,并实证在 AOI 低语义多样性下简单相似度聚合往往足够,把这套思路首次系统迁移到引线键合分割。
  • vs DINOv2 等大基础模型: 冻结 DINOv2(142M 图预训练)做检索能用,但本文自训 MAE 以 <1% 数据、<一半参数、~3× 吞吐取得更高 mIoU,说明检索虽 backbone 无关,但在工业 AOI 上唯有配领域自监督才发挥全力。
  • vs 传统 AOI 分割(ResNet18 + U-Net++ / DeepLabV3+): 这些卷积基线器件专用、换器件需重训,且在 wedge 等细小稀有类上过平滑、IoU 个位数;本文在细结构类与适配速度上明显占优,但在某些高支持类(如 Wire 的微调列)仍可能被传统解码器局部反超。
  • vs FasterViT/SegFormer/Swin 等高效骨干: 本文把 FasterViT 当 AOI 实用骨干,并强调即使经 SSL 预训练,卷积式归纳偏置对细长结构仍不可或缺。

评分

  • 新颖性: ⭐⭐⭐⭐ 把检索式 in-context 分割系统落到工业 AOI,并给出"小数据选 MAE、简单相似度聚合够用"的反直觉结论,单点创新扎实但多为已有思路的领域迁移。
  • 实验充分度: ⭐⭐⭐⭐ 主对比 + 单器件 + 检索/调度/库规模多维消融齐全,但只在单一私有光学系统、512² 裁剪上验证,跨厂泛化缺位。
  • 写作质量: ⭐⭐⭐⭐ 动机—方法—实验链条清晰,三阶段管线与公式交代到位,少量细节散落附录。
  • 价值: ⭐⭐⭐⭐ 直击半导体产线"换器件重训"痛点,提供可即时适配的工程化方案,工业落地价值高。