# f-AnoGAN
f-AnoGAN is a GAN for anomaly detection. One of the features of this GAN is that two adversarial networks (Generator and Discriminator) and Encoder are trained separately. In addition, an anomaly score is computed by both a discriminator feature residual error and an image reconstruction error.
[Japanese version](./README.ja.md)
## References
Papar
- [f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks](https://www.sciencedirect.com/science/article/pii/S1361841518302640)
Github
- [tSchlegl/f-AnoGAN: Code for reproducing f-AnoGAN training and anomaly scoring](https://github.com/tSchlegl/f-AnoGAN)
- [PyTorch-GAN/wgan_gp.py at master · eriklindernoren/PyTorch-GAN](https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/wgan_gp/wgan_gp.py)
- [PyTorch-GAN/dcgan.py at master · eriklindernoren/PyTorch-GAN](https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/dcgan/dcgan.py)
`mnist/model.py`, `fanogan/train_wgangp.py` and `fanogan/train_encoder_izif.py` are modified eriklindernoren's `wgan_gp.py` for f-AnoGAN.
`mvtec_ad/model.py` is modified eriklindernoren's `dcgan.py` for f-AnoGAN.
## Requirements
Python 3.6 or later
PyTorch 1.x
Matplotlib
Numpy
pandas
Pillow
scikit-learn
## Usage for training and test a dataset
### MNIST
Please run below in order on the CPU.
#### Step: 0
```
python setup.py install
cd mnist
```
#### Step: 1
```
python train_wgangp.py --training_label 1 --seed 2 --n_epochs 20
```
#### Step: 2
```
python train_encoder_izif.py --training_label 1 --seed 2 --n_epochs 20
```
#### Step: 3
```
python test_anomaly_detection.py --training_label 1
```
After Step: 3, `score.csv` will be generated in the directory `results`.
See [f-AnoGAN_MNIST.ipynb](https://colab.research.google.com/drive/1mnuMH2gZH5RR47haP9r8Rv568G1mjJ1T?usp=sharing) about data visualization for `score.csv`.
#### Step: 4
```
python save_compared_images.py --seed 4 --n_iters 0 --n_grid_lines 10
```
Compared images are saved under `f-AnoGAN/mnist/results/images_diff`.
#### Visualization
![ROC AUC](./images/mnist_roc_auc.png)
![PR AUC](./images/mnist_pr_auc.png)
![Anomaly Scores](./images/mnist_anomaly_scores.png)
![Compared Images](./images/mnist_compared_images.png)
### Your own dataset
Please run below in order.
#### Step: 0
```
python setup.py install
cd your_own_dataset
```
Add your own dataset under `f-AnoGAN/your_own_dataset`
#### Step: 1
Please replace `your_own_dataset_dir_name/train_dir_name` with a relative path of your own training data.
```
python train_wgangp.py "your_own_dataset_dir_name/train_dir_name"
```
#### Step: 2
Please replace `your_own_dataset_dir_name/train_dir_name` with a relative path of your own training data.
```
python train_encoder_izif.py "your_own_dataset_dir_name/train_dir_name"
```
#### Step: 3
Please replace `your_own_dataset_dir_name/test_dir_name` with a relative path of your own test data.
```
python test_anomaly_detection.py "your_own_dataset_dir_name/test_dir_name"
```
After Step: 3, `score.csv` will be generated in the directory `results`.
#### Step: 4
Please replace `your_own_dataset_dir_name/test_dir_name` with a relative path of your own test data.
```
python save_compared_images.py "your_own_dataset_dir_name/test_dir_name" --n_iters 0 --n_grid_lines 10
```
Compared images are saved under `f-AnoGAN/your_own_dataset/results/images_diff`.
## Colaboratory
[f-AnoGAN_MNIST.ipynb](https://colab.research.google.com/drive/1mnuMH2gZH5RR47haP9r8Rv568G1mjJ1T?usp=sharing)
[f-AnoGAN_MVTecAD.ipynb](https://colab.research.google.com/drive/1_mIcP6k-706O6Bo70iIAoEIhYGYO4wAe?usp=sharing)
F-ANOGAN使用Gan改进了AE进行异常检测
需积分: 0 30 浏览量
更新于2023-10-17
1
收藏 94KB ZIP 举报
标题中的"F-ANOGAN"是指一种基于生成对抗网络(GAN)改进的自动编码器(Autoencoder, AE)用于异常检测的方法。这个方法试图利用深度学习技术,特别是GAN和AE的结合,来更有效地识别数据集中的异常行为。在传统的AE中,模型通过学习输入数据的压缩表示和重构,来检测那些不能被有效重构的样本,这些通常被视为异常。然而,F-ANOGAN通过引入GAN的训练机制,进一步提高了这种能力。
**生成对抗网络(GANs)**是由两部分组成:生成器(Generator)和判别器(Discriminator)。生成器试图从随机噪声中创建看似真实的数据,而判别器则尝试区分生成器产生的假样本和真实样本。在训练过程中,两者相互竞争,直到生成器能够生成足够逼真的样本以欺骗判别器为止。这种框架在图像生成、风格迁移等领域表现出色。
**自动编码器(AEs)**是无监督学习的一种,主要用于数据降维和特征提取。AE由两个主要部分构成:编码器(Encoder)和解码器(Decoder)。编码器将输入数据压缩为低维表示,然后解码器尝试从这个低维表示重构原始输入。在异常检测中,AE通过学习正常数据的压缩表示,当新的样本无法准确重构时,可能就被标记为异常。
**F-ANOGAN的工作原理**是将AE的重构误差与GAN的训练过程结合起来。在训练阶段,AE被用来学习正常数据的表示,同时,GAN的生成器被训练去模仿AE的编码器产生的中间表示。这样,生成器不仅可以生成看起来像真实数据的新样本,还可以尝试模仿正常数据的压缩特征。判别器则区分来自AE编码器和生成器的中间表示。通过这种方式,F-ANOGAN能够捕捉到更复杂的正常模式,并对异常样本产生较高的重构误差。
在实际应用中,**F-ANOGAN的优势**在于它可以更精确地识别异常,因为它考虑了数据分布的复杂性,不仅依赖于输入数据的重构质量,还利用了GAN的生成能力。此外,由于结合了两种模型,F-ANOGAN可以处理高维度和复杂的数据集,这在传统的AE或单一的GAN模型中可能是个挑战。
**文件名列表**中的"f-AnoGAN-master"可能是一个开源项目或库,包含了实现F-ANOGAN算法的代码。用户可以下载并运行这些代码,以便在自己的数据集上执行异常检测任务。这个项目可能包括模型结构、训练脚本、数据预处理函数以及结果可视化工具等。
总结来说,F-ANOGAN是一种结合了生成对抗网络和自动编码器的异常检测方法,它通过GAN的训练提升了AE的异常检测性能,适用于高维度和复杂数据集的异常检测任务。提供的文件名表明有一个完整的F-ANOGAN实现,可供研究者和开发者参考和使用。
ShengkunWu
- 粉丝: 94
- 资源: 2
最新资源
- 基于Java实现的MapReduce分布式计算框架设计源码
- Qwen2.5 Technical Report 详细技术报告
- 基于ThinkGms v2.0.1框架的旧快马配送系统设计源码
- 基于Java编程语言的俄罗斯方块游戏设计源码
- 套膜封切机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 小麦联合收割机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 小型全自动卷烟机构图纸工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 线体牵引力测试机(含bom)sw17可编辑工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 前端入门day1的文件记录
- 型钢校正机矫直机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 旋转停车系统工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 数仓构造与多维分析大作业
- 【图像融合】基于matlab结合contourlet与压缩感知图像融合【含Matlab源码 9741期】.zip
- 【坐标转换】基于matlab GUI大地坐标和空间直角坐标相互转换【含Matlab源码 9227期】.zip
- 【迷宫路径规划】基于matlab SARSA和强化学习迷宫路径规划解决迷宫问题【含Matlab源码 8857期】.mp4
- 【语音去噪】基于matlab GUI切比雪夫+椭圆形低通滤波器语音去噪【含Matlab源码 2198期】.mp4