【2022.1自蒸馏】Self-Supervised Anomaly Detection by Self-Distillation and Negative Sampling
1.预备知识:
测试数据和训练数据都来自同样的分布(称作分布内,in-distribution)
例如我们利用一组猫、狗照片训练一个猫、狗分类器。然而,部署的模型在实际使用中总是会遇到一些不属于封闭世界类别的图片,例如老虎。或者也会遇到一些和训练图片视觉上大相径庭的照片,例如卡通猫。
模型应当如何去处理这些不属于训练分布的图片(即分布外样本,out-of-distribution),是开放世界领域所关注的问题。
即“分布外检测”任务和新类识别类似,都是在找出测试集中不属于训练集中任何类别的 “新类” 样本。但是在新类识别的基础上,同时完成多分类任务。“分布外检测” 的训练集可以是单类别的也可以是多类别的。
2. 本文:基于自蒸馏和负采样的自监督异常检测
本文提出DINO框架。利用未标记数据进行OOD(Out-Of-Distribution)检测。
2.1自蒸馏框架
两个框架相同但参数值不同的网络:
学生:gs = g(x|
θ
\theta
θs)
老师:gt = g(x|
θ
\theta
θt) (老师网络已经训练过)
输入均为图片x,输出为K维向量。
利用温度
τ
\tau
τs,
τ
\tau
τt计算得到学生和老师的软标签。
老师网络是已经训练过的,所以这里训练只求学生的反向梯度,利用其来更新老师的参数(使用EMA方法)如下:
取同一个样本x,通过非恒等变换T,产生x’和x’’。
即包括整体变换G(整体视角,占图片较大的物体变换,例大于40%)和局部变换L(局部视角,例小于40%)。定义交叉熵损失如下:
其中变换 V = G U L,老师仅有全局视角,此步完成了局部到全局的通信。
2.2 负采样
将拒绝(in-distribution)分部内检测样本的得分作为度量,从而系统地产生负样本。
保留低级特征,利用最后一层特征作KNN来量化学习的质量,建立Dneg负分布集(保留了大部分底层特征,改变了高层语义)。
举例产生负样本的情况:
2.3 损失函数:
鼓励学生对负样本有统一的响应,即负样本的输出预测的每个分类值都相等。
也可以理解成3式取老师的温度趋于无穷。
总目标函数为3式加4式:
2.4 整体流程
同一个类选x样本进行不同变换x+分别给到学生和老师网络,再变换得到负样本x-,负样本可以来自in-fistribution的x或者辅助样本xaux。训练时利用学生的梯度来得到老师的参数改变,从学生的局部变换影响老师的整体视角。评估最终使用老师模型。
3. 实验结果