赞
踩
SimpleNet包括四个组件:
预训练的特征提取器,用于生成局部特征;
浅层特征适配器,将局部特征转移到目标域;
简单的异常特征生成器,通过向正常特征空间(以往是在图像中加噪声)添加高斯噪声来模拟异常特征;
二元异常鉴别器,用于区分异常特征和正常特征。
简单来说就是利用正常图像或加噪声生成伪异常。
问题:实际缺陷各异且难预知,所以模拟的效果会影响性能。
目前基于嵌入的方法取得了最先进的性能:先用预训练的CNN提取正常特征,然后采用一种统计算法来嵌入正常特征分布。测试时通过将输入特征与学习的分布或记忆的特征进行比较来检测异常。
问题:工业图像与ImageNet分布有差异,直接使用ImageNet的预训练网络可能导致不匹配问题;统计算法计算复杂度或内存消耗高:内存库搜索(Patchcore等)对内存消耗大;归一化流(CS-Flow等)只能处理完整的特征映射,即不允许下采样,耦合层消耗的内存是普通卷积层的几倍;蒸馏方法计算复杂度加倍,因为输入图像必须通过教师和学生
SimpleNet结合并改进了合成和嵌入的算法。
SimpleNet包括特征提取器、特征适配器、异常特征生成器和鉴别器。
老套路,用类Resnet骨干网络提取了多个层级的特征,然后再聚合
采用特征适配器 G θ G_\theta Gθ 将训练特征转移到目标域
q h , w i = G θ ( o h , w i ) q_{h,w}^i=G_\theta(o_{h,w}^i) qh,wi=Gθ(oh,wi)
特征适配器可以由简单的神经块组成,例如全连接层或多层感知机(MLP)。作者实验发现,单个全连接层可以产生良好的性能。
对应代码:
通过在正常特征空间qi h,w∈RC上添加高斯噪声来生成异常特征
q
h
,
w
i
−
=
q
h
,
w
i
+
ϵ
q_{h,w}^{i-}=q_{h,w}^{i}+\epsilon
qh,wi−=qh,wi+ϵ
作者将经过异常特征训练之后的特征空间与之前进行了比较。可以看到,经过适应的特征在每个维度上的标准差趋于一致。也就是加入伪异常之后的特征空间更加紧凑。
将正常样本和伪异常样本共同馈送到Discriminator中。论文中仅使用一个2层多层感知器(MLP)结构:
l h , w i = max ( 0 , t h + − D ψ ( q h , w i ) ) + max ( 0 , − t h − + D ψ ( q h , w i − ) ) l_{h,w}^i=\max(0,th^+-D_\psi(q_{h,w}^i))+\max(0,-th^-+D_\psi(q_{h,w}^{i-})) lh,wi=max(0,th+−Dψ(qh,wi))+max(0,−th−+Dψ(qh,wi−))
其中 t h + th^+ th+ 和 t h − th^- th− 是防止过拟合的截断项,默认选为0.5和-0.5,所以训练的目标就是将正样本的判别器输出 D ψ ( q h , w i ) D_\psi(q_{h,w}^i) Dψ(qh,wi) 接近0.5,而伪异常的判别器输出 D ψ ( q h , w i − ) D_\psi(q_{h,w}^{i-}) Dψ(qh,wi−) 接近-0.5。
对于每个点计算异常得分:
s h , w i = − D ψ ( q h , w i ) s_{h,w}^i=-D_{\psi}(q_{h,w}^i) sh,wi=−Dψ(qh,wi)
异常定位由每个点得分插值到原图像大小后得到,异常得分为异常得分最大的像素点的异常得分
文章研究了特征提取器中的邻域大小 p p p 、层级选择;适配器结构;噪声规模对性能的影响。
对邻域大小和层级分别进行了消融实验,最终选取
p
p
p 为3,选取WideResNet50的2+3层。
可以看到复杂的适配器会导致收敛迅速。经过实验,作者发现复杂特征适配器会导致显著的性能下降。可能的原因之一是复杂的适配器可能会导致过拟合,在测试中减少了缺陷的泛化能力。
对于噪声规模σ,当大的σ值时,训练会导致宽松的决策边界,从而导致高假阴性。相反,如果σ很小,训练过程将不稳定,判别器不能很好地泛化到正常特征。
论文的主要贡献在于利用极为简单的网络实现了最先进的性能。主要创新点在于在特征空间内加噪声生成伪异常。
复现结果
图像级AUROC为99.6,像素级AUROC为97.6
问题在于Pro比较低,仅为90.7。可能与作者在实验设置时优先考虑前两者有关。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。