DragGAN 快速上手指南:3 步装好环境,用鼠标拖拽修改 GAN 生成图
【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGAN
AI 生成的图有个通病:结果不满意只能换种子重抽,画中人想往左挪半步、衣服想换个款式都做不到。DragGAN 就是来解决这件事的——它让你在 GAN 生成的图像上直接点两个点,程序就把被点选的区域"拖"到新位置,且整张图依然保持在 GAN 的图像流形上,不会出现贴图感。整套交互只有两个按钮:Add Points(加点)和 Start(开始编辑)。
上面这排就是 StyleGAN-Human 模型生成的人像,换装、换姿态、换发型都能拖出来。
环境准备:3 条命令跑通 DragGAN 安装
前置要求只有一条:NVIDIA 显卡 + CUDA。项目基于 StyleGAN3 的代码库(training/ 目录),environment.yml 里锁定了 Python 3.8+、PyTorch 2.0.1、CUDA 11.1 这套组合,跟着走最省心。
1. 克隆仓库并创建 conda 环境
git clone https://gitcode.com/GitHub_Trending/dr/DragGAN cd DragGAN conda env create -f environment.yml conda activate stylegan32. 补装额外依赖
pip install -r requirements.txt这里会装上 gradio 3.35.2、imgui、glfw、pyopengl 等界面依赖。
3. 下载预训练权重
python scripts/download_model.py脚本按 scripts/download_models.json 的清单拉取 StyleGAN2 的官方预训练权重,统一放在./checkpoints目录。如果想试人像模型 StyleGAN-Human 或风景模型 LHQ,下载地址在 README 里有,下载后同样放进./checkpoints即可,界面下拉框会自动识别。
没有 NVIDIA 显卡?Mac M1/M2 或纯 CPU 也能跑,只是慢:先把 environment.yml 里含
nvidia、cuda的行过滤掉再生成环境,macOS 上再设export PYTORCH_ENABLE_MPS_FALLBACK=1。
一键启动:Gradio 网页版和桌面 GUI 两种入口
网页版(推荐,跨平台)
python visualizer_drag_gradio.py启动后自动打开浏览器。两个常用参数:加--listen可以响应局域网请求(服务器部署用);模型文件不在默认位置时,用--cache-dir /你的/路径指定权重目录。
桌面版(Linux / macOS / Windows)
sh scripts/gui.sh # Windows 用 .\scripts\gui.bat桌面版是 imgui 窗口(代码在 gui_utils/ 和 viz/),拖拽延迟更低;网页版胜在方便,下面以网页版为例。
Docker 路线:仓库自带 Dockerfile,基于 NGC PyTorch 镜像,docker build后运行python visualizer_drag_gradio.py --listen即可。注意镜像约 25GB 磁盘占用,本地试玩的优先级不如 conda。
动手编辑:Add Points → Start 两步出效果
进入网页界面后,左侧是生成参数,右侧是画布。第一张图不需要手动指定,选好模型点一下就会用随机种子生成。完整流程:
- 选模型:顶部下拉框(pretrained weight)选好
.pkl权重,改 Seed 可换一张新图; - 加点:点Add Points解锁画布,在图上依次点两下——第一下是"想动的起点",第二下是"目标位置",会显示一对红蓝控制点;
- 开始拖拽:点Start,右侧滑杆会实时推进迭代次数(steps),图像同步重绘,拖拽过程有平滑过渡;不满意随时Stop;
- 多对点:继续点Add Points可以叠加第二对、第三对控制点,多点同时约束后编辑更稳;
- 复位:改错了就Reset Points(只清点)或Reset Image(整张重来)。
几个可调参数值得注意:lr(学习率,默认较小,编辑不动就调大)、trunc_psi(截断系数,越小越保守)、latent space单选框(w全局编辑 vsw+逐层编辑,后者局部改动更精细)、以及draw interval(每隔多少步重绘一次画面,调小更流畅但更吃 GPU)。
进阶玩法:区域蒙版与真实照片编辑
只编辑一片区域(Flexible Area)
全局拖拽时背景也可能跟着变形。点Edit Flexible Area后在画布上涂抹出想保留/影响的区域,会生成一张半透明蒙版叠在图上(蒙版交互逻辑在 gradio_utils/utils.py),配合Reset mask重画。蒙版加控制点的组合,是"只改手臂不动脸"这类精细需求的标准解法。
编辑真实照片(需要先做 GAN inversion)
DragGAN 直接编辑的是 GAN 潜码,真实照片得先反演成潜码:用 PTI 这类工具把照片投影到w空间(仓库里带了完整实现,入口在 stylegan_human/run_pti.py,配套训练代码在 stylegan_human/training/),然后把反演得到的潜码 pkl 和对应模型权重一起加载进界面,后续拖拽流程和生成图完全一致。
批量出图
不做交互、只想要结果图的话,用 gen_images.py 一行命令跑批,配合--cache-dir指定权重,适合先挑参数再进界面细调。
避坑清单:6 个高频问题一次说清
- 界面卡在加载权重:确认
./checkpoints里有.pkl文件且能正常读取,下拉框是扫描该目录生成的,放错目录就选不到模型; - 拖拽很卡:把 draw interval 调大、分辨率别拉满,复杂编辑分多步小范围做,比一次拖很远更收敛;
- 效果太"飘":降低 lr、调低 trunc_psi,或改用
w+潜空间做局部编辑; - Windows 跑不了桌面 GUI:直接用 Gradio 网页版,
visualizer_drag_gradio.py两个平台通用; - CUDA 版本报错:以 environment.yml 里的 cudatoolkit 11.1 为准,PyTorch 和显卡驱动版本对不上时优先重装环境而不是改代码;
- 商用注意:DragGAN 算法部分是 CC-BY-NC 许可(非商业),且任何使用都必须保留输出图上的 "AI Generated" 水印,这是许可证的硬性要求,别删。
想继续往下玩的话:换成 LHQ 风景模型试试拖山拖树,或者把 PTI 反演流程串起来做"照片级"的交互编辑,这两条路线的代码仓库里都是现成的。
【免费下载链接】DragGANOfficial Code for DragGAN (SIGGRAPH 2023)项目地址: https://gitcode.com/GitHub_Trending/dr/DragGAN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考