DEVILENMO / Unsupervised-Defect-Detection-Project-Based-on-VAE-GAN-Architecture

本项目实现了一种基于 VAE-CycleGAN 的图像重建无监督缺陷检测算法。该算法结合了变分自编码器 (VAE) 和 CycleGAN 的优势,无需标注数据即可检测图像中的缺陷/异常。This project implements an unsupervised defect detection algorithm for image reconstruction based on VAE-CycleGAN. This algorithm combines the advantages of variational autoencoders (VAE) and CycleGAN to detect defects in images without any supervision.
GNU General Public License v3.0
19 stars 4 forks source link

环境依赖及一些问题 #2

Open gaofei8704 opened 2 months ago

gaofei8704 commented 2 months ago

大佬你好:我们最近也遇到负样本不足的情况,想参考此项目思路进行实践,能否提供下程序的环境和相关包的版本,给个requirements list。

另外还有以下几个问题: 1、在readme中第一步是使用 CutTarget.py 文件来调用 Segment Anything Model (SAM) 自动分割图像中感兴趣的对象。但是在mian中有使用了一个PCBDiscriminator这个判别器(不知道跟TargetDiscriminator有什么区别?),这个也是通过VAE_GAN_train这个训练出来的么? 2、在第二步中使用 VAE_GAN_train.py 脚本在分割后的图像上训练 VAE-CycleGAN 模型。所以训练前是否是需要通过CutTarget预处理样本?那么项目的实施步骤是不是这样的:

不知我理解的对不对?还请不吝赐教! 感谢!

DEVILENMO commented 2 months ago

你好,对于你提出的问题:

1. PCBDiscriminator与TargetDiscriminator

之前重命名时出现了一些问题,PCBDiscriminator实际上就是TargetDiscriminator。当一张图片输入到SAM后,会分割出多个mask。为了判断哪个mask是真正的目标,我们使用了VAE-GAN中的辨别器去依次判断每一个mask是否正确,这一点是通过为辨别器预测的概率设置一个阈值来实现的。

2. 训练流程

训练代码主要位于VAE_GAN_train.py中:

  1. 使用CutTarget.py对原始样本(背景有不同花纹或干扰的图片)进行手动分割。分割完成后应该得到一张空白底图和分割出来的物体(在我们的例子中是PCB板),如最后的结果图所示。
  2. VAE-GAN使用分割后的图像进行训练,获取辨别器模型和VAE模型,VAE用于生成无缺陷图像,辨别器用于判断SAM分割的结果是否正确。

3. 预测流程

预测流程位于main.py中:

  1. 使用SAM分割输入图片。
  2. 使用TargetDiscriminator判断分割出的部分是否为目标,如果是则进行后续操作。
  3. 使用VAE进行重建。
  4. 基于图像减法对比原始图像与重建图像。

4. 其他说明

如有任何问题或建议,欢迎随时与我沟通。希望这个说明对你有所帮助!