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

环境依赖及一些问题

gaofei8704 opened this issue · 1 comments

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

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

  • [1 ] - 一开始需要先预处理下初始样本,比如把标准正样本的PCB部分剪切出来作为原始样本?先训练一遍后,得到项目中的:Discriminator_5.pth这个模型后,
  • [2 ] - 再通过CutTarget.py批量的进行图像分割,并且把分割的图像放到项目中cut_imgs文件夹,进行VAE_GAN_train训练。
  • [3 ] - 最后在项目使用的过程是通过main程序进行:先通过CutTarget切割出检测样本,在通过VAE_GAN生成图片,之后在进行样本和生成结果的比对。

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

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

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. 其他说明

  • PCBDiscriminator的名称错误已修改。
  • 已附加使用PyCharm直接生成的requirements.txt。如果环境有缺失,我可以再使用pip freeze的方式重新生成一份requirements.txt
  • 我们自己使用的版本与Git仓库中的版本是不一样的,因此如有其他命名错误等,欢迎后续反馈,我会进行修正。

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