就在昨天(23/06/25)晚上,在前段时间备受瞩目的 DragGAN 悄然发布了完整的源代码。笔者第一时间尝试上手体验,在踩了一些坑后,终于使用 Colab 跑成功了。简单记录如下
效果
按照惯例,先放效果(无加速,Colab T4)
经典需求:让大象转个头
运行
本地运行
项目的源代码在 XingangPan/DragGAN: Official Code for DragGAN,如果你希望本地运行,可以参考里面附带的指引。对于 GPU 设备,我的测试里 8GB 显存应该足以运行了。 先 Clone 源代码:
git clone https://github.com/XingangPan/DragGAN
源码里有 conda 的 environment.yml ,可以拿 Conda 的方式创建虚拟环境;但没有附带 requirements.txt。如果你希望使用 pip 安装依赖,据我测试,应该需要安装的依赖有:
pip install torch torchvision Ninja gradio huggingface_hub hf_transfer
使用以下命令下载模型:
# 下载 human 模型
wget -O DragGAN/checkpoints/stylegan_human_v2_512.pkl --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1dlFEHbu-WzQWJl7nBBZYcTyo000H9hVm' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1dlFEHbu-WzQWJl7nBBZYcTyo000H9hVm" && rm -rf /tmp/cookies.txt
# 下载更多类型的模型
cd DragGAN && sh scripts/download_model.sh
然后直接运行
cd DragGAN && python visualizer_drag_gradio.py
即可用 Gradio 打开;或者参考官方的 README 执行 visualizer_drag.py
Colab
对于我,鉴于没得 GPU 设备,只能去用免费的 GPU 资源。这里选择的是 Google Colab,门槛只需要一个 Google 账号。大家也可以点击 我的 Colab 笔记本链接 自行运行即可。注意,运行时一定要选 GPU 类型的。
成功的截图如下:
使用
打开的最终页面如下,左侧是操作区,右侧是图片的展示。简单列举一下:
左上角: 如下图,左上角第一栏是选择现有的模型,第二栏 “Seed” 用于控制随机种子(同一个种子生成的图片是一样的),下面的 Step Size 用于设置迭代的步幅。
整个的基本操作逻辑是:
- 输入种子,生成一张图
- 鼠标点击图片上的位置开始 “选点”,两个一组,分别控制变换的 “起始位置” 和 “结束位置”。
- 完成后点击 Start 开始变换,到差不多了你可以点个 Stop 手动停止
另外作者也附了一些说明,翻译如下:
快速开始
- 选择所需的预训练模型,并调整种子(Seed)生成初始图像。
- 点击图像以添加控制点。
- 点击开始,尽情享受!
高级用法
-
调整步长(Step Size)以调整拖拽优化中的学习率。
-
选择
w或w+来改变潜空间以进行优化:- 在
w空间上进行优化可能对图像产生较大影响。 - 在
w+空间上进行优化可能比w空间更慢,但通常能够获得更好的结果。
- 在
-
请注意,改变潜空间将重置图像、控制点和蒙版(这产生与重置图像按钮相同的效果)。
-
点击编辑可伸缩区域 (Edit Flexible Area) 以创建蒙版,并约束未被遮罩的区域保持不变。
结语
现在来回答我的标题:为什么说 “强大但不完全强大” 呢?
首先,“强大” 是因为这样的效果确实很惊艳,第一眼看上去确实很有未来的风格;但很明显它的使用价值并不那么高,比如说:
- 它的图片是 StyleGAN 生成的,也就是说目前并不能随便拿一张图片让它 P
- 两个点作为引导,不可控的因素太多了。很多时候图片的变化和你的预期并不匹配。如果能做到多模态,和语言模型相结合,能通过类似于 “衣服从上至下第三颗纽扣向左移一点”,是不是更魔幻一点
- 有时候某些奇奇怪怪的元素会面目全非,比如下面的这个包
完。