cnulab / RealNet

Offical implementation of "RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection (CVPR 2024)"
MIT License
143 stars 5 forks source link

关于自己数据集生成的问题 #40

Closed Ben-Aff closed 1 week ago

Ben-Aff commented 1 week ago

作者您好,你的开源工作非常优秀,我在自己的私有数据集上有两个问题,能否帮我解答下:(1)训练classer loss为0 (2)用自己数据微调后diffusion生成数据实在vis目录里吗,是一个2x3的宫格,每张图像是不同超参数干扰强度下的结果吗?如果我想批量输出某个具体强度下的单个图像生产结果,我在代码中改如何操作。

cnulab commented 1 week ago

你好!

  1. classer loss 是监督训练引导分类器的交叉熵损失,通常不会为0,请检查label和模型输出的logit是否正确。
  2. vis目录中生成的图像用来监控扩散模型的训练情况,用于checkpoint选择。这些图像由左到右,由上到下分别是:1)扩散模型生成的一张正常图像。2)扩散模型生成的一张异常强度为s=0.1的异常图像。3)扩散模型生成的一张异常强度为s=0.2的异常图像。4)从数据集中采样的一张正常图像。5)由图像4)经过ddim确定性加噪得到的噪声图像。6)由图像5)对图像4)的ddim确定性重建。(当图像6和图像4一致时,代表扩散模型训练完成)
Ben-Aff commented 1 week ago

你好!

  1. classer loss 是监督训练引导分类器的交叉熵损失,通常不会为0,请检查label和模型输出的logit是否正确。
  2. vis目录中生成的图像用来监控扩散模型的训练情况,用于checkpoint选择。这些图像由左到右,由上到下分别是:1)扩散模型生成的一张正常图像。2)扩散模型生成的一张异常强度为s=0.1的异常图像。3)扩散模型生成的一张异常强度为s=0.2的异常图像。4)从数据集中采样的一张正常图像。5)由图像4)经过ddim确定性加噪得到的噪声图像。6)由图像5)对图像4)的ddim确定性重建。(当图像6和图像4一致时,代表扩散模型训练完成)

感谢您的耐心解答,图4和6还是具有高度的视觉相似的,如果我想要批量输出最终的生成图像(单张图像256,256 ),我应当如何操作,我运行了sampy.py后得到的是噪声图片

cnulab commented 1 week ago

批量生成异常图像应该使用sample.py文件,如果运行sample.py得到噪声图像可以按照以下步骤检查: 设置sample.py中的s=0观察模型能否生成正常图像(注释掉117行,去掉118行的注释),如果模型不能生成正常图像代表训练的扩散模型欠拟合,还需要继续训练。如果能生成正常图像,可以通过调节s的取值范围(修改117行来减小s的值)来生成异常图像。

Ben-Aff commented 1 week ago

批量生成异常图像应该使用sample.py文件,如果运行sample.py得到噪声图像可以按照以下步骤检查: 设置sample.py中的s=0观察模型能否生成正常图像(注释掉117行,去掉118行的注释),如果模型不能生成正常图像代表训练的扩散模型欠拟合,还需要继续训练。如果能生成正常图像,可以通过调节s的取值范围(修改117行来减小s的值)来生成异常图像。

感谢您的积极回复,1)我将S设置为0且去掉了分类器后,samply生成图像有了大概轮廓,但效果和1相似但依旧差于训练diffusion过程中的6)。我只有缺陷样本,并且是少样本(30),我将任务转换为了在缺陷样本上生成缺陷,您觉得samply的结果差是否与分类器的取消有关,我是否有必要训练分类器呢,还是说其他的因素。2)我能否得到6)的结果

cnulab commented 1 week ago

我觉得主要问题还是提供的训练图像太少。RealNet解决的主要问题是有大量的正常图像可用,根据正常图像来生成异常图像。如果是few-shot的异常图像扩充,我觉得Teng Hu等人Yuxuan Duan等人的工作更适合你。 Teng Hu: AnomalyDiffusion: Few-Shot Anomaly Image Generation with Diffusion Model Yuxuan Duan: Few-Shot Defect Image Generation via Defect-Aware Feature Manipulation

Ben-Aff commented 1 week ago

我觉得主要问题还是提供的训练图像太少。RealNet解决的主要问题是有大量的正常图像可用,根据正常图像来生成异常图像。如果是few-shot的异常图像扩充,我觉得Teng Hu等人Yuxuan Duan等人的工作更适合你。 Teng Hu: AnomalyDiffusion: Few-Shot Anomaly Image Generation with Diffusion Model Yuxuan Duan: Few-Shot Defect Image Generation via Defect-Aware Feature Manipulation 好的,我将尝试加多了训练轮次来观察结果,多谢您的回复,你们的开源工作十分优秀,祝科研顺利!