《论文笔记》Anomaly Detection via Reverse Distillation from One-Class Embedding

这是2022年的CVPR文章,作者提出了一个创新的知识蒸馏方案:反转知识蒸馏
论文地址:https://arxiv.org/pdf/2201.10703v1.pdf

《论文笔记》Anomaly Detection via Reverse Distillation from One-Class Embedding_第1张图片

Motivation

论文针对传统的知识蒸馏的方案提出了一个问题:认为之前的方案容易阻碍异常表现的多样性

  1. 传统的知识蒸馏teacher和student的网络架构很相似或者几乎相同
  2. 而且teacher和student的输入流都是一样的

针对这个我的理解是,因为T和S网络相似,尽管T是预训练好的,有一定的泛化能力,而S只是模仿了T学到了重建正常样本的能力,但是不排除S学的非常好,有了和T很接近的能力,导致在推理阶段输入异常样本,S网络也是有很大的可能重建的和T很接近,那么最后的Loss也会比较小,这样对异常检测不利。
而且还有一点就是作者提到传统知识蒸馏中的student网络都要比teacher小,那么这也带来一个问题,就是小网络的重建性能是需要得到质疑的,如果重建能力不是那么好,不管正常还是异常都会产生问题。

针对上面提出的问题,作者提出了一个反转的知识蒸馏方案,将teacher作为encoder,student作为decoder,并且在teacher和student之间加入了一个one-class bottleneck embedding (OCBE) 模块
《论文笔记》Anomaly Detection via Reverse Distillation from One-Class Embedding_第2张图片


简单记录一下网络用到的方法:

  1. encoder模块使用的是预训练的模型,作者尝试了ResNet、WideResNet作为预训练模型,效果都比较好;
  2. 在OCBE模块中,包含了多尺度特征融合模块MFF一类特征提取模块OCE,使用多尺度融合大多数理由都差不多:低维度的特征包含了很多纹理、边缘等信息,高维度的特征包含了很多语义结构等信息。然后多尺度融合其实也进行了一个压缩特征的作用,去掉冗余的信息(作者提到了信息瓶颈的概念)
    对于OCBE模块的作用,我的理解是,作者认为直接把encoder最后一层的激活信息丢给decoder恢复的话,会有很多语义结构上的冗余信息,一方面会导致decoder恢复起来比较困难,另外一方面使得网络难以恢复最关键的信息。所以作者在使用多尺度的基础上,进行了特征的压缩,既有了丰富的信息,也尽量去掉了冗余信息。
    《论文笔记》Anomaly Detection via Reverse Distillation from One-Class Embedding_第3张图片
    从上图可以看到在MFF模块中,网络使用了3x3卷积进行下采样,然后将特征串联起来,在OCE中使用了残差网络的第4个block。
  3. 对于decoder模块来说,是一个和teacher对称的模块
  4. 损失函数也是比较常规的,用的是像素间的余弦相似性,
    在这里插入图片描述
    在这里插入图片描述
  5. 对于异常分数这里,结合评论区和代码的理解,论文中是对每一个图片都会记录一个像素级异常分数S_AL,对于图像级的分类,从像素级的分数中选取max(S_AL)的分数作为这张图片的得分,最后取阈值score=MAX(正常样本的max(S_AL)),在推理阶段,得分大于score的就是异常样本。

论文中还有一些细节,比如如何设置decoder、MMF、OCE(这里用了resnet结构的第4层bottleneck,stride=2),可以结合代码具体看看

你可能感兴趣的:(论文笔记,深度学习,计算机视觉,异常检测,知识蒸馏,CVPR)