当前位置: 首页 > news >正文

Revisiting Reverse Distillation for Anomaly Detection

重新审视反向蒸馏在异常检测中的应用

 文章链接:点这里

源码链接:点这里

前言

此篇文章是在 Anomaly detection via reverse distillation from one-class embedding 这篇的基础上改进创新的。重新审视了反向蒸馏(KD)这一想法,通过检查特征紧密性和异常信号抑制来确定RD方法的局限性。认为仅仅依靠蒸馏任务和OCBE模块不足以为学生提供紧凑的表示。此外,没有观察到像作者声称的那样使用OCBE块来丢弃异常模式的显式机制。为了解决这些问题,将RD与多任务学习结合起来,提出了RD++

RD++解决两个任务:

特征紧凑性任务:通过提出一种自监督的最优运输方法。
异常信号抑制任务:通过模拟带有单纯形噪声的伪异常样本,使重建损失最小化。

 研究方法

在每个中间教师块之后直接集成一个投影层,为学生网络提供一个紧凑的、无异常的表示。对于特征紧致性任务,提出了两个损失函数:自监督最优传输损失(L_{SSOT})用于将正态特征空间投影到紧致表示、对比损失(L_{Con})通过将投影的正常特征与异常特征分开来支持投影层学习紧凑嵌入。对于异常信号抑制任务,首先设计了伪异常机制,在训练过程中模拟伪异常样本,后提出重建损失(L_{Recon}),指导投影层知道如何从伪异常特征中重建正常特征空间。

伪异常机制

采用单纯形噪声,将扰动项随机添加到正常图像中。单纯形噪声在模拟基于幂律的异常分布方面优于高斯噪声。 

①首先定义一个离散随机分布 U[a,b],用于生成噪声的高度h_{noise}和宽度w_{noise},以及噪声的起始位置x_{start}y_{start};                                         

②通过一个外层循环遍历训练的所有epoch。每个 epoch 表示对整个训练集的一次完整遍历;   

③每个 epoch 中,算法遍历正常训练集X中的每个正常样本X_{i};                                         

④对于每个正常样本X_{i},算法从离散随机分布U[a,b]中随机生成噪声的高度h_{noise}和宽度w_{noise}

⑤算法从离散随机分布U[a−h_{noise},b−w_{noise}]中随机生成噪声的起始位置x_{start}y_{start}。这样可以确保噪声区域不会超出图像的边界;       

⑥使用单纯形噪声(Simplex Noise)生成一个噪声块 ϵ;       

⑦算法创建一个与正常样本X_{i}形状相同的全零矩阵ξ;       

⑧算法将生成的单纯形噪声 ϵ 添加到矩阵 ξ 的特定区域 [x_{start}x_{end},y_{start}y_{end}],其中 x_{end}=x_{start} + h_{noise}和 y_{end}=y_{start} + w_{noise}​;   

⑨算法将噪声矩阵 ξ 乘以一个噪声强度系数 λ,然后将其添加到正常样本X_{i}中,生成伪异常样本X_{i}=X_{i} + λ ∗ ξ;         

⑩生成的伪异常样本X_{i}将用于训练模型,帮助模型学习如何区分正常和异常样本。

​反蒸馏进行异常检测

原始反蒸馏(RD)包含三个模块:一个固定的预训练教师作为编码器、一个可训练的单类嵌入(OCBE)模块、一个学生作为解码器。异构编码器和解码器的反向策略导致了异常的差异表示。OCBE模块采用Resnet的最后一个块进行特征提取,通过将模式压缩到低维空间并消除异常信号来增强反正态性的差异。T-S模型将余弦相似度损失作为知识转移的蒸馏损失:

 多尺度投影层

投影层接收各自教师块的特征作为输入,并在馈送到OCBE模块之前将其投影到紧凑的特征表示中。通过顺序堆叠L个convblock (Convolution,InstanceNorm,LeakyReLU)来设计投影层。在实验设置中设置L = 4。

整体流程

4:使用 Adam 优化器来更新投影层P_{1,2,3}、OCBE 模块O和学生解码器D的参数;

5:算法加载一个小批量的正常样本和伪异常样本。伪异常样本是通过在正常样本上添加噪声生成的;

8:通过教师编码器 E 提取正常样本 χ 在三个块的特征 f_{1},f_{2},f_{3}

9:通过教师编码器 E 提取伪异常样本 ξ(χ) 在三个块的特征\widetilde{f}_{1},\widetilde{f}_{2},\widetilde{f}_{3}

11:通过投影层 P1,P2,P3​ 将正常样本的特征f_{1},f_{2},f_{3}​ 投影到紧凑的特征表示\varnothing _{1},\varnothing _{2},\varnothing _{3}

13:通过投影层 P1,P2,P3​ 将伪异常样本的特征​ \widetilde{f}_{1},\widetilde{f}_{2},\widetilde{f}_{3} 投影到紧凑的特征表示\widetilde{\varnothing} _{1},\widetilde{\varnothing} _{2},\widetilde{\varnothing} _{3}

15:通过学生解码器 D 从 OCBE 模块的输出O(\varnothing _{1},\varnothing _{2},\varnothing _{3}) 中恢复特征g_{1},g_{2},g_{3}

总体损失

总体损失 L 由四个部分组成:

  • 蒸馏损失 L_{KD}:用于最小化教师模型和学生模型特征之间的差异;

  • 自监督最优传输损失 L_{SSOT}:用于确保正常样本的投影特征尽可能接近;

  • 重建损失 L_{Recon}:用于指导投影层从伪异常特征中重建正常特征;

  • 对比损失 L_{Con}:用于将正常样本的投影特征与伪异常样本的特征分开。

推理阶段

给定图像,推理过程如上图所示。这个过程几乎类似于RD,唯一的区别是,在被转发到OCBE模块之前,教师的块输出嵌入被传递到对应的投影层。由于投影层是轻量级的,推断时间几乎与基线RD相同。 

相关文章:

  • 在CentOS7上部署与关闭Flask接口
  • 视频孪生技术赋能文旅数字化转型:重构景区体验与管理新模式
  • 嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT
  • MobSF(Mobile Security Framework) 的详细介绍、安装指南、配置说明
  • 物联网平台建设方案一
  • 力扣提升第一天
  • 在linux中利用conda安装blast
  • openssh9.9p2部分Linux操作系统的rpm包
  • Spring boot中的@ConfigurationProperties注解
  • 完全背包问题
  • SQL注入(order by,limit),seacms的报错注入以及系统库的绕过
  • deepseek部署:ELK + Filebeat + Zookeeper + Kafka
  • [C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
  • LUCEDA IPKISS Tutorial 81:通过参数函数定义形状
  • Spring Cloud源码 - Eureka源码原理分析
  • 17142弹珠堆放
  • ROS的action通信——实现阶乘运算(三)
  • echarts记录(柱状、折线、环形饼图,双柱,日期组件封装)
  • 【洛谷入门赛】B4018 游戏与共同语言
  • spring MVC执行流程
  • 做外贸开通哪个网站好/今天的新闻
  • 长春餐饮网站建设/官网设计比较好看的网站
  • 政府机关网站建设方案/百度关键词搜索热度查询
  • 做家政服务网站/小程序引流推广平台
  • 网站建设安全性/整合营销的特点有哪些
  • 国家对地理信息网站建设的重视/百度竞价包年推广是怎么回事