Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Offical implementation of "RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection (CVPR 2024)"

License

ZhangYichi-ZYc/RealNet

 
 

Repository files navigation

RealNet

💡 这是论文 "RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection (CVPR 2024)" 的官方实现 [arxiv]

RealNet 是一个简单而高效的框架,包含三个关键创新:首先,我们提出了强度可控的扩散异常合成(SDAS),这是一种基于扩散过程的合成策略,能够生成具有不同异常强度的样本,模拟真实异常样本的分布。其次,我们开发了异常感知特征选择(AFS),这是一种选择具有代表性和区分性的预训练特征子集的方法,以提高异常检测性能,同时控制计算成本。第三,我们引入了重构残差选择(RRS),这是一种自适应选择区分性残差的策略,用于跨多个粒度层次全面识别异常区域。

🏆 异常合成

我们使用扩散模型进行异常合成,为四个数据集(MVTec-AD、MPDD、BTAD 和 VisA)的异常检测模型训练提供了 36万 张异常图像。[下载]

🏆 扩散模型检查点

扩散模型 [下载] 和指导分类器(可选)[下载],在 MVTec-AD、MPDD、BTAD 和 VisA 数据集上训练。

🏆 基于特征重构的方法

图像 AUROC 像素 AUROC
MVTec-AD 99.6 99.0
MPDD 96.3 98.2
BTAD 96.1 97.9
VisA 97.8 98.8

🔧 安装

要运行实验,首先克隆存储库并安装 requirements.txt

$ git clone https://github.com/cnulab/RealNet.git
$ cd RealNet
$ pip install -r requirements.txt

数据准备

下载以下数据集:

对于 VisA 数据集,我们进行了格式处理以确保一致性。强烈建议您从我们的链接下载。

如果使用 DTD(可选)数据集进行异常合成,请下载:

将它们解压到 data 文件夹中。请参阅 data/README

🚀 实验

🌞 训练扩散模型

我们加载在 ImageNet 上预训练的扩散模型权重,如下所示:

我们使用指导分类器来提高图像质量(可选):

下载它们并放置在 pretrain 文件夹中。

在 MVTec-AD 数据集上训练扩散模型:

$ python -m torch.distributed.launch --nproc_per_node=4  train_diffusion.py --dataset MVTec-AD

在 MVTec-AD 数据集上训练指导分类器:

$ python -m torch.distributed.launch --nproc_per_node=2  train_classifier.py --dataset MVTec-AD

我们使用 4*A40 GPUs,训练扩散模型需要 48 小时,使用 2*RTX3090 GPUs,训练指导分类器需要 3 小时。

我们提供以下检查点:

下载它们到 experiments 文件夹中。请参阅 experiments/README

🌞 强度可控的扩散异常合成

使用 1*RTX3090 GPU 采样异常图像:

$ python -m torch.distributed.launch --nproc_per_node=1  sample.py --dataset MVTec-AD

我们为每个类别提供了 10k 张分辨率为 256*256 的采样异常图像,可以通过以下链接下载:

🌞 训练 RealNet

使用 1*RTX3090 GPU 训练 RealNet:

$ python -m torch.distributed.launch --nproc_per_node=1  train_realnet.py --dataset MVTec-AD --class_name bottle

realnet.yaml 提供了训练期间的各种配置。

更多命令可以在 run.sh 中找到。

🌞 评估 RealNet

计算图像 AUROC、像素 AUROC 和 PRO,并生成异常定位的定性结果:

$ python  evaluation_realnet.py --dataset MVTec-AD --class_name bottle

✈️ 其他

我们还为每个类别提供了一些生成的 正常 图像(在论文中将异常强度设置为0),可以通过以下链接下载:

该存储库的附加文件目录:

代码参考:UniADBeatGans

🔗 引用

如果这项工作对您有帮助,请引用:

@inproceedings{zhang2024realnet,
      title={RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection}, 
      author={Ximiao Zhang, Min Xu, and Xiuzhuang Zhou},
      year={2024},
      eprint={2403.05897},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

About

Offical implementation of "RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection (CVPR 2024)"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.0%
  • Shell 4.0%