DragGAN 官方实现部署实战:Conda 环境、Docker、预训练权重下载与交互式 GAN 图像编辑运行指南
DragGAN 官方实现部署实战Conda 环境、Docker、预训练权重下载与交互式 GAN 图像编辑运行指南【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGANDragGANDrag Your GANSIGGRAPH 2023的官方代码实现了一套基于点的交互操作技术用户在 GAN 生成图像上拖拽控制点模型会在保持图像处于生成流形generative image manifold上的同时让对应区域跟随指针移动。本文基于当前仓库的 README 及配套脚本、配置文件与源码完整覆盖从环境安装、Docker 部署、预训练 StyleGAN2 权重下载到本地 GUI 与 Gradio 网页可视化器运行的全部流程并补充说明各脚本参数与底层实现帮助读者独立完成部署并扩展到其他 StyleGAN 模型。1. 项目背景与定位本项目是论文Drag Your GAN: Interactive Point-based Manipulation on the Generative Image ManifoldACM SIGGRAPH 2023 Conference Proceedings的官方实现作者为 Xingang Pan、Ayush Tewari、Thomas Leimkühler、Lingjie Liu、Abhimitra Meka、Christian TheobaltMax Planck Institute for Informatics 等。从仓库结构看项目由三类核心部分组成交互式可视化器桌面端 GUI 入口 visualizer_drag.py 与网页端 Gradio 入口 visualizer_drag_gradio.py二者共用渲染与水印逻辑viz/renderer.pyStyleGAN 训练/推理基础设施仓库基于 NVIDIA 的 StyleGAN3 代码库开发保留了 training/、dnnlib/ 与 torch_utils/ 等模块StyleGAN-Human 扩展代码stylegan_human/ 目录移植自 StyleGAN-Human 项目包含人体分割PP_HumanSeg、PTI 潜码反演stylegan_human/run_pti.py等内容供对真实人像图像做编辑时使用。README 明确了许可证划分DragGAN 算法相关代码采用CC-BY-NC许可而所有来自 StyleGAN3 的代码沿用NVIDIA Source Code License并且任何形式的使用与衍生版本都必须保留显示 AI Generated 的水印功能。仓库内 LICENSE.txt 即为上述许可文本。2. 环境准备RequirementsREADME 给出的安装路径分为CUDA GPU 机器与CPU / Apple SiliconM1/M2机器两条分支。2.1 NVIDIA CUDA 机器Conda 一键创建conda env create -f environment.yml conda activate stylegan3随后安装额外 Python 依赖pip install -r requirements.txt对照 environment.yml 可以看到该环境的关键约束这些也是复现时的常见踩坑点依赖版本约束说明python 3.8环境名固定为stylegan3pytorch 2.0.1来自pytorch通道cudatoolkit11.1注意不是 11.8/12.xCUDA 计算能力要求以 NVIDIA StyleGAN3 官方 requirements 为准README 亦指明此点numpy / scipy 1.25 / 1.11.1—pillow9.4.0精确锁定版本ninja1.10.2用于编译torch_utils/ops中的 CUDA 扩展如upfirdn2d、filtered_lrelu等.cu内核imgui / glfw2.0.0 / 2.6.1桌面 GUI 可视化器的窗口与绑定gui_utils/glfw_window.py、gui_utils/imgui_window.pygradio3.35.2网页可视化器框架pyopengl / imageio-ffmpeg3.1.5 / 0.4.3OpenGL 渲染与视频导出pyspng使用pyspng-seunglab替代包注释明确说明 pyspng 在 MacOS 上存在问题requirements.txt 则补充了huggingface_hub与hf_transferHugging Face 高速下载等运行时依赖。2.2 CPU / Apple SiliconM1/M2机器剔除 CUDA 依赖README 给出的做法是先用grep从环境文件中过滤掉 NVIDIA/CUDA 相关条目再生成一份无 CUDA 的环境文件cat environment.yml | \ grep -v -E nvidia|cuda environment-no-nvidia.yml \ conda env create -f environment-no-nvidia.yml conda activate stylegan3 # On MacOS export PYTORCH_ENABLE_MPS_FALLBACK1其中export PYTORCH_ENABLE_MPS_FALLBACK1用于让 PyTorch 在 Apple MetalMPS后端缺失某些算子时回退到 CPU是 M 系列芯片上运行 StyleGAN 推理的必要设置。由于桌面 GUI 还依赖 GLFW/OpenGLCPU/Mac 环境更适合直接运行下一节的 Gradio 或 Docker 方案。3. 在 Docker 中运行 Gradio 可视化器README 提供了一条最省事的体验路径基于 NGC PyTorch 仓库的 Docker 镜像。# before you build the docker container, make sure you have cloned this repo, # and downloaded the pretrained model by python scripts/download_model.py. docker build . -t draggan:latest docker run -p 7860:7860 -v $PWD:/workspace/src -it draggan:latest bash # (Use GPU) 如需用 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 的共享链接浏览器打开即可操作。README 特别提醒该 Docker 镜像约占用 25 GB 磁盘空间。对照 Dockerfile 可以理解镜像的构成基础镜像为nvcr.io/nvidia/pytorch:23.05-py3即 NGC PyTorch 2023.05Python 3 系列预置 CUDA 与 PyTorchapt-get安装了一组 X11/GL 开发库xorg-dev、libgl1-mesa-dev、libxrandr-dev、libxi-dev等这些是为 imgui/GLFW 桌面窗口编译运行准备的系统依赖随后pip install -r requirements.txt安装 Python 依赖工作目录设为/workspace并通过ENTRYPOINT /entry.sh透传启动命令因此docker run ... bash进入容器后cd src python visualizer_drag_gradio.py --listen才能访问挂载到/workspace/src的仓库代码。-p 7860:7860对应 Gradio 默认端口--listen参数在 visualizer_drag_gradio.py 中定义为“以0.0.0.0作为服务名启动从而响应来自网络容器外部的请求”这正是容器内必须带该参数才能从宿主机访问的原因。4. 下载预训练 StyleGAN2 权重在构建 Docker 镜像或本地运行之前需要先准备模型权重python scripts/download_model.py该脚本scripts/download_model.py的工作机制值得了解它读取同目录的 scripts/download_models.json一个 URL → 本地文件名的映射把文件下载到checkpoints/目录若本地文件已存在且大小与远端content-length一致则跳过大小不一致则重新下载并用tqdm显示进度条、下载完成后校验完整性。从download_models.json可以看到脚本覆盖的 8 个官方权重本地文件名对应数据集stylegan2_lions_512_pytorch.pklLions 512stylegan2_dogs_1024_pytorch.pklDogs 1024stylegan2_horses_256_pytorch.pklHorses 256stylegan2_elephants_512_pytorch.pklElephants 512stylegan2-ffhq-512x512.pklFFHQ 人脸 512stylegan2-afhqcat-512x512.pklAFHQ Cat 512stylegan2-car-config-f.pkl汽车stylegan2-cat-config-f.pkl猫两个注意事项额外数据集需手动下载。若要体验StyleGAN-Human人体图像和Landscapes HQ (LHQ)数据集README 要求从 Google Drive 对应链接下载权重并放入./checkpoints目录——这两者不在download_model.py的自动清单里但后续 GUI 启动脚本会把它们一并加载见第 5 节可以替换为任意其他预训练 StyleGAN 权重。README 明确写道 Feel free to try other pretrained StyleGAN只要模型为 StyleGAN2/StyleGAN3 的.pkl格式且能被dnnlib加载即可。5. 运行 DragGAN 桌面 GUI5.1 启动命令Linux/macOSsh scripts/gui.shWindows.\scripts\gui.bat对比 scripts/gui.sh 与 scripts/gui.bat 的内容可知二者本质相同——都是调用python visualizer_drag.py并把 10 个预训练权重作为位置参数传入checkpoints/stylegan2_lions_512_pytorch.pkl checkpoints/stylegan2-ffhq-512x512.pkl checkpoints/stylegan2-afhqcat-512x512.pkl checkpoints/stylegan2-car-config-f.pkl checkpoints/stylegan2_dogs_1024_pytorch.pkl checkpoints/stylegan2_horses_256_pytorch.pkl checkpoints/stylegan2-cat-config-f.pkl checkpoints/stylegan2_elephants_512_pytorch.pkl checkpoints/stylegan_human_v2_512.pkl checkpoints/stylegan2-lhq-256x256.pkl这也解释了第 4 节中手动下载 StyleGAN-Human 与 LHQ 权重并放入./checkpoints的必要性gui.sh/gui.bat会引用这两个文件若缺失对应模型将无法加载。5.2 GUI 的源码结构从 visualizer_drag.py 的Visualizer类可以看出 GUI 的组织方式它继承自imgui_window.ImguiWindow窗口标题为 DragGAN初始尺寸 3840×2160内部组合了四个 Widget 组件PickleWidgetviz/pickle_widget.py加载/切换.pkl模型权重LatentWidgetviz/latent_widget.py选择潜码随机生成或载入DragWidgetviz/drag_widget.py设置点操控的拖拽目标与交互CaptureWidgetviz/capture_widget.py保存编辑结果。渲染由AsyncRenderer异步执行self._async_renderer拖拽操作即在生成图像流形上按点约束求解潜码的可视化结果渲染模块 viz/renderer.py 中的add_watermark_np对应许可证条款中必须保留 AI Generated 水印的要求。5.3 编辑真实图像先做 GAN 反演README 指出GUI 默认编辑的是GAN 生成的图像若要编辑真实照片需要先用PTIProgressive Trilinear Interpolation等工具完成 GAN 反演把真实图像映射回潜空间再把反演得到的潜码与新权重加载进 GUI。本仓库的 stylegan_human/run_pti.py 及 stylegan_human/pti/ 目录含 E4E/PSp 编码器与 StyleGAN2 投影器正是配套的反演基础设施。6. 运行 DragGAN Gradio 网页演示桌面 GUI 之外README 提供了一个跨平台Windows/Linux 通用的网页方案python visualizer_drag_gradio.py从 visualizer_drag_gradio.py 的参数定义可确认其命令行接口参数默认值作用--share开启源码中defaultTrue生成 Gradio 公共共享链接README 中打开终端打印出的 shared link即由此而来--cache-dir./checkpoints预训练权重缓存目录与第 4 节的下载目录一致--listen关闭以0.0.0.0启动响应网络请求Docker 场景必须见第 3 节从源码结构看该入口把桌面版的功能搬到了网页状态机中clear_state()负责清空global_state中的points点操控历史与mask区域遮罩重置为全 1 矩阵等编辑状态工具函数集中在 gradio_utils/ImageMask、draw_points_on_image、get_latest_points_pair等用于在浏览器侧渲染控制点与遮罩。需要注意源码中推理设备写死为device cuda即 Gradio 路径预期在有 NVIDIA GPU 的环境本地 CUDA 环境或第 3 节的 Docker 镜像下运行。7. 致谢、许可与引用致谢本代码基于 NVIDIA 的 StyleGAN3 开发部分代码取自 StyleGAN-Human 项目对应仓库内的 stylegan_human/ 目录。许可DragGAN 算法代码为 CC-BY-NC源自 StyleGAN3 的代码为 NVIDIA Source Code License任何使用与衍生版本必须保留 AI Generated 水印功能。引用如需在论文或文章中引用本项目README 给出的 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} }8. 小结一条完整的部署路径综合以上各节在当前仓库中跑起 DragGAN 的标准路径是conda env create -f environment.yml conda activate stylegan3 pip install -r requirements.txtMac/CPU 机器按第 2.2 节剔除 CUDA 依赖并设置PYTORCH_ENABLE_MPS_FALLBACK1python scripts/download_model.py下载 8 个官方 StyleGAN2 权重到checkpoints/StyleGAN-Human 与 LHQ 权重手动下载放入同目录GPU 桌面环境执行sh scripts/gui.shWindows 为scripts/gui.bat或直接python visualizer_drag_gradio.py无本地 GPU 环境时用docker build . -t draggan:latestdocker run --gpus all -p 7860:7860 -v $PWD:/workspace/src -it draggan:latest bash容器内执行cd src python visualizer_drag_gradio.py --listen打开共享链接。编辑真实照片时先用仓库自带的 PTI 工具链stylegan_human/run_pti.py完成 GAN 反演再加载潜码与权重进入 GUI 即可。所有涉及的脚本与配置均可在仓库中直接查阅scripts/download_model.py、scripts/download_models.json、scripts/gui.sh、Dockerfile、environment.yml、visualizer_drag.py 与 visualizer_drag_gradio.py。【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGAN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考