重新审视反向蒸馏在异常检测中的应用
文章链接:点这里
源码链接:点这里
前言
此篇文章是在 Anomaly detection via reverse distillation from one-class embedding 这篇的基础上改进创新的。重新审视了反向蒸馏(KD)这一想法,通过检查特征紧密性和异常信号抑制来确定RD方法的局限性。认为仅仅依靠蒸馏任务和OCBE模块不足以为学生提供紧凑的表示。此外,没有观察到像作者声称的那样使用OCBE块来丢弃异常模式的显式机制。为了解决这些问题,将RD与多任务学习结合起来,提出了RD++。
RD++解决两个任务:
①特征紧凑性任务:通过提出一种自监督的最优运输方法。
②异常信号抑制任务:通过模拟带有单纯形噪声的伪异常样本,使重建损失最小化。
研究方法
在每个中间教师块之后直接集成一个投影层,为学生网络提供一个紧凑的、无异常的表示。对于特征紧致性任务,提出了两个损失函数:自监督最优传输损失()用于将正态特征空间投影到紧致表示、对比损失(
)通过将投影的正常特征与异常特征分开来支持投影层学习紧凑嵌入。对于异常信号抑制任务,首先设计了伪异常机制,在训练过程中模拟伪异常样本,后提出重建损失(
),指导投影层知道如何从伪异常特征中重建正常特征空间。
伪异常机制
采用单纯形噪声,将扰动项随机添加到正常图像中。单纯形噪声在模拟基于幂律的异常分布方面优于高斯噪声。
①首先定义一个离散随机分布 U[a,b],用于生成噪声的高度和宽度
,以及噪声的起始位置
和
;
②通过一个外层循环遍历训练的所有epoch。每个 epoch 表示对整个训练集的一次完整遍历;
③每个 epoch 中,算法遍历正常训练集中的每个正常样本
;
④对于每个正常样本,算法从离散随机分布U[a,b]中随机生成噪声的高度
和宽度
⑤算法从离散随机分布U[a−,b−
]中随机生成噪声的起始位置
和
。这样可以确保噪声区域不会超出图像的边界;
⑥使用单纯形噪声(Simplex Noise)生成一个噪声块 ϵ;
⑦算法创建一个与正常样本形状相同的全零矩阵ξ;
⑧算法将生成的单纯形噪声 ϵ 添加到矩阵 ξ 的特定区域 [:
,
:
],其中
=
+
和
=
+
;
⑨算法将噪声矩阵 ξ 乘以一个噪声强度系数 λ,然后将其添加到正常样本中,生成伪异常样本
=
+ λ ∗ ξ;
⑩生成的伪异常样本将用于训练模型,帮助模型学习如何区分正常和异常样本。
反蒸馏进行异常检测
原始反蒸馏(RD)包含三个模块:一个固定的预训练教师作为编码器、一个可训练的单类嵌入(OCBE)模块、一个学生作为解码器。异构编码器和解码器的反向策略导致了异常的差异表示。OCBE模块采用Resnet的最后一个块进行特征提取,通过将模式压缩到低维空间并消除异常信号来增强反正态性的差异。T-S模型将余弦相似度损失作为知识转移的蒸馏损失:
多尺度投影层
投影层接收各自教师块的特征作为输入,并在馈送到OCBE模块之前将其投影到紧凑的特征表示中。通过顺序堆叠L个convblock (Convolution,InstanceNorm,LeakyReLU)来设计投影层。在实验设置中设置L = 4。
整体流程
4:使用 Adam 优化器来更新投影层、OCBE 模块
和学生解码器
的参数;
5:算法加载一个小批量的正常样本和伪异常样本。伪异常样本是通过在正常样本上添加噪声生成的;
8:通过教师编码器 E 提取正常样本 χ 在三个块的特征 ;
9:通过教师编码器 E 提取伪异常样本 ξ(χ) 在三个块的特征;
11:通过投影层 P1,P2,P3 将正常样本的特征 投影到紧凑的特征表示
;
13:通过投影层 P1,P2,P3 将伪异常样本的特征 投影到紧凑的特征表示
;
15:通过学生解码器 D 从 OCBE 模块的输出 中恢复特征
。
总体损失
总体损失 L 由四个部分组成:
-
蒸馏损失
:用于最小化教师模型和学生模型特征之间的差异;
-
自监督最优传输损失
:用于确保正常样本的投影特征尽可能接近;
-
重建损失
:用于指导投影层从伪异常特征中重建正常特征;
-
对比损失
:用于将正常样本的投影特征与伪异常样本的特征分开。
推理阶段
给定图像,推理过程如上图所示。这个过程几乎类似于RD,唯一的区别是,在被转发到OCBE模块之前,教师的块输出嵌入被传递到对应的投影层。由于投影层是轻量级的,推断时间几乎与基线RD相同。