DragGAN: 在生成图像流形上进行交互式点基操作
潘星岗 · Ayush Tewari · Thomas Leimkühler · 刘凌杰 · Abhimitra Meka · Christian Theobalt
SIGGRAPH 2023 会议论文集
网页演示
要求
如果你有 CUDA 显卡,请按照 NVlabs/stylegan3 的要求进行操作。
通常的安装步骤包括以下命令,它们应该能设置正确的 CUDA 版本和所有 Python 包:
conda env create -f environment.yml
conda activate stylegan3
然后安装额外的要求:
pip install -r requirements.txt
否则(对于 MacOS 上的 Silicon Mac M1/M2 GPU 加速,或仅使用 CPU),请尝试以下操作:
cat environment.yml | \
grep -v -E 'nvidia|cuda' > environment-no-nvidia.yml && \
conda env create -f environment-no-nvidia.yml
conda activate stylegan3
# 在 MacOS 上
export PYTORCH_ENABLE_MPS_FALLBACK=1
在 Docker 中运行 Gradio 可视化工具
提供的 Docker 镜像基于 NGC PyTorch 仓库。要快速在 Docker 中尝试可视化工具,请运行以下命令:
# 在构建 Docker 容器之前,确保你已经克隆了这个仓库,并通过 `python scripts/download_model.py` 下载了预训练模型。
docker build . -t draggan:latest
docker run -p 7860:7860 -v "$PWD":/workspace/src -it draggan:latest bash
# (使用 GPU)如果你想在 Docker 中使用 Nvidia GPU 加速,请添加命令标签 `--gpus all`,如:
# docker run --gpus all -p 7860:7860 -v "$PWD":/workspace/src -it draggan:latest bash
cd src && python visualizer_drag_gradio.py --listen
现在你可以打开 Gradio 提供的共享链接(打印在终端控制台中)。 请注意,Docker 镜像大约需要 25GB 的磁盘空间!
下载预训练的 StyleGAN2 权重
要下载预训练权重,只需运行:
python scripts/download_model.py
如果你想尝试 StyleGAN-Human 和 Landscapes HQ (LHQ) 数据集,请从这些链接下载权重:StyleGAN-Human、LHQ,并将它们放在 ./checkpoints
目录下。
欢迎尝试其他预训练的 StyleGAN。
运行 DragGAN GUI
要启动 DragGAN GUI,只需运行:
sh scripts/gui.sh
如果你使用的是 Windows,可以运行:
.\scripts\gui.bat
该 GUI 支持编辑 GAN 生成的图像。要编辑真实图像,你需要先使用 PTI 等工具进行 GAN 反演。然后将新的潜在编码和模型权重加载到 GUI 中。
你也可以运行 DragGAN Gradio 演示,这适用于 Windows 和 Linux:
python visualizer_drag_gradio.py
致谢
这段代码是基于 StyleGAN3 开发的。部分代码借鉴自 StyleGAN-Human。
(也向社区致敬)
许可证
与 DragGAN 算法相关的代码采用 CC-BY-NC 许可。 然而,本项目的大部分内容都有单独的许可条款:所有使用或修改自 StyleGAN3 的代码均采用 Nvidia Source Code License。
这段代码的任何形式的使用和衍生品都必须保留显示"AI 生成"的水印功能。
BibTeX
@inproceedings{pan2023draggan,
title={Drag Your GAN: Interactive Point-based Manipulation on the Generative Image Manifold},
author={Pan, Xingang and Tewari, Ayush, and Leimk{\"u}hler, Thomas and Liu, Lingjie and Meka, Abhimitra and Theobalt, Christian},
booktitle = {ACM SIGGRAPH 2023 Conference Proceedings},
year={2023}
}