1. OOD
OODformer: Out-Of-Distribution Detection Transformer是2021年12月发表在BMVC上的一篇比较新的OOD的论文。顾名思义,OODformer使用Transformer做异常检测。算法流程图如下:
OODformer是一种比较简单的算法,和之前的SSD、CSI等OOD方法的思路接近。OOD的主要步骤都如下:
- 训练一个ViT(有监督)。
- 根据ViT提取学习到的特征,用马氏距离度量测试样本和训练样本之间的差异,差异大(或者置信度低)则为异常样本。
重要更新:我个人认为这篇论文是有问题的,不建议大家学习。
代码中的这一行代码存在问题,分别对来自in-dataset和out-of-dataset的测试数据做了不同的处理:对in-dataset使用的是真实标签,out-of-dataset使用的是预测的标签。
这一不同的处理在异常检测中是不被允许的。因为异常检测目的是找到谁是异常数据,而这样的处理相当于提前知道了谁来自in-dataset,谁来自out-of-dataset,只有这样才能分别做不同的处理。相当于作弊了。
2. One-CLass
介绍三篇One-CLass+Transformer的算法,采用的基本结构都是encoder-decoder的经典无监督异常检测方法。
2.1 AnoViT
AnoViT: Unsupervised Anomaly Detection and Localization With Vision Transformer-Based Encoder-Decoder 用Transformer作为encoder,CNN网络作为decoder,该方法使重建误差、输入图像与重建图像之间的差异最小化,并学习正常数据的正态分布以进行异常检测。
2.2 UTRAD
UTRAD: Anomaly detection and localization with U-Transformer主要的贡献除了采用了transformer之外,主要是提出了一种U型的多尺度金字塔层次结构。在不同层之间连接,有助于检测多尺度结构和非结构异常。UTRAD的结构如下:
UTRAD的步骤:
- 将图像输入预训练网络,提取多尺度特征。
- 将深度特征发送到U-transformer进行特征级重构。
- 利用重构误差得到异常评分图。
2.3 VT-ADL
VT-ADL: A Vision Transformer Network for Image Anomaly Detection and Localization在encoder的输出之后加入了一个gaussian mixture density网络用来定位异常。
VT-ADL的步骤:
- 将图像分割为面片,通过位置嵌入进行增强后送到变压器编码器。
- 将编码后的特征求和为重构向量,再将重构向量送入解码器。
- 变压器编码的特征也被输入高斯近似网络,该网络随后用于定位异常