迷雾
更新:好消息!我们的论文被ICML 2023接受为口头报告。论文目前可在arxiv上找到。迷雾基于该论文并进行了一些扩展(详见我们的技术报告)。
迷雾是一款强大的图像预处理工具,旨在保护图像的风格和内容不被最先进的AI艺术应用程序模仿,包括Stable Diffusion、NovelAI和scenario.gg。通过向图像添加水印,迷雾使其对AI艺术应用程序使用的模型不可识别。AI艺术应用程序试图模仿这些经过迷雾处理的图像将会无效,模仿输出的图像将会杂乱无章,无法作为艺术作品使用。有关迷雾的更多详情,请参阅我们的文档和主页。
本仓库提供了迷雾的完整源代码。源代码可用于从头构建迷雾Web界面或在服务器上部署迷雾远程服务。
设置
我们的代码基于stable-diffusion并与之共享大部分要求。此外,还需要advertorch0.2.4来执行攻击。要设置环境,请运行:
conda env create -f environments.yml
conda activate mist
pip install --force-reinstall pillow
请注意,PyPI似乎安装了不完整的Pillow套件,因此需要重新安装。我们强烈建议在首次激活虚拟环境mist后重新安装Pillow。
还需要官方Stable-diffusion-model v1.4检查点,可在huggingface获取。目前,可以通过运行以下命令下载模型:
wget -c https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt
mkdir -p models/ldm/stable-diffusion-v1
mv sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
使用方法
使用Python脚本运行迷雾
mist_v2.py
将存储在test/sample.png
中的图像作为输入,并在test/
中输出添加水印的图像。该脚本有6个参数。
参数 | 值范围(推荐) | 说明 |
---|---|---|
强度 | [1, 32] | 水印的强度。 |
步骤 | [1, 1000] | 优化水印的步骤数。 |
输出尺寸 | {256, 512, 768} | 输出图像的尺寸,仅支持正方形。 |
分块数量 | {1(1x1), 2 (2x2)} | 如果为真,将图像分成BxB的块并分别添加水印。 |
模式 | {0 (纹理), 1 (语义), 2 (融合)} | 水印模式。详见文档。 |
融合权重 | [1, 5] | 在融合模式下平衡纹理模式和语义模式的权重。 |
参数必须按表中提到的顺序提供。例如,使用以下命令对图像进行迷雾处理,强度为16,步骤为100,输出尺寸为512,分块数量为1,模式为2(融合模式),融合权重为1:
python mist_v2.py 16 100 512 1 2 1
用户还可以对目录中的图像进行迷雾处理。例如,使用以下命令生成test/vangogh
中的迷雾处理图像:
python mist_v2_vangogh.py 16 100 512 1 2 1
使用Web界面运行迷雾
使用以下命令启动Web界面。有关更多信息,请参阅快速入门文档。
python mist-webui.py
输入变换下的鲁棒性
我们提供了裁剪和调整迷雾处理图像大小的脚本,以评估迷雾在输入变换下的鲁棒性。请参阅脚本utils/postprocess.py
。
验证
参考验证文档验证迷雾的效果。
许可证
本项目采用GPL-3.0许可证。
部分代码基于stable-diffusion。您可以在他们的仓库中找到stable-diffusion的许可证。
值得注意的是,迷雾需要stable diffusion模型的开放梯度流以进行端到端对抗性扰动。因此,以下由stable-diffusion提供的文件被修改以支持开放梯度流:
models/diffusion/ddpm.py ----> models/diffusion/ddpmAttack.py
configs/stable-diffusion/v1-inference.yaml ----> configs/stable-diffusion/v1-inference-attack.yaml
引用
如果您发现我们的工作有价值并使用它,我们恳请您引用我们的论文。
@inproceedings{liang2023adversarial,
title={Adversarial example does good: Preventing painting imitation from diffusion models via adversarial examples},
author={Liang, Chumeng and Wu, Xiaoyu and Hua, Yang and Zhang, Jiaru and Xue, Yiming and Song, Tao and Xue, Zhengui and Ma, Ruhui and Guan, Haibing},
booktitle={International Conference on Machine Learning},
pages={20763--20786},
year={2023},
organization={PMLR}
}
@article{liang2023mist,
title={Mist: Towards Improved Adversarial Examples for Diffusion Models},
author={Liang, Chumeng and Wu, Xiaoyu},
journal={arXiv preprint arXiv:2305.12683},
year={2023}
}