一、前言
数据不足就自己造,本篇讨论一种无需训练缺陷数据生成算法--O2MAG,全称是 One reference anomalous image to More realistic anomaly Generation。它的出发点很直接:只给定一张参考异常图像及其掩码,再给定一张正常图像与目标异常区域,就生成更多与真实分布更接近的异常样本。与传统需要训练或微调生成器的方法不同,O2MAG 完全不额外训练 Stable Diffusion,而是在推理阶段通过注意力控制完成异常迁移。论文摘要和方法部分都强调,这是一个few-shot + training-free 的异常合成框架。
二、代码设置
打开 edit_anomaly_moregpu_fewshot.py,找到main函数,需要满足以下这些参数
根目录下新建文件夹 mvtec_data ,存放 mvtec 数据集,从网上下载好


在这里需要先确定要生成的缺陷数据是哪一个物体类别,假设是 bottle ,还有缺陷类型是broken_small, 那么在 ./anomalydiffusion/generated_mask 下 新建 bottle 文件夹,bottle文件夹内再新建broken_small 文件夹,存放 stablediffusin 生成的二值掩码图,也可以自己制作,用于确定要生成的缺陷大小位置,24位jpg格式,分辨率512*512,命名从0.jpg、1.jpg、...


根目录下新建 results_final_fewshot_toothbrush , 程序运行后将在该目录下新建路径 bottle/broken_small 文件夹,存放程序生成好的缺陷图片


根目录新建文件夹 data_agument ,在该目录下新建 bottle 文件夹,存放正常无缺陷的图片,512*512分辨率 24位png格式


anomaly_name文件夹下 新建 name-mvtec-my.txt ,这里面每一行是 物体类别+缺陷类别的形式,例如我这里是 前面的 bottle+broken_small ,就在txt 第一行写上


这里直接根目录新建文件夹 mvtec_embed_bank

这里是 单个显卡就只有0了

直接下载官方开源的代码,代码用到了 Stable Diffusion v1.5 完整权重文件,到 modelscope搜索 stable-diffusion-v1.5 下载得到 stable-diffusion-v1.5-no-safetensor , 文件较大,10几个G

在项目根目录新建 文件夹 stable-diffusion-v1-5 保存进去
三、真实缺陷文件和掩码图存放位置
前面讲到 要给定参考异常图像及其掩码, 这些是放在 mvtec_data 里的,例如我是 改动了mvtec_data 里的 bottle 类别文件夹,

ground_truth 里的 broken_small 存放的是我自己的真实缺陷图片的掩码图,512*512 8位png,命名也要参照mvtec形式

test 里的 broken_small 存放的是我自己的真实缺陷图片512*512 24位png,命名也要参照mvtec形式
