DragGAN 快速上手体验:强大但不完全强大(附 Colab 使用链接)

5,072 阅读3分钟

就在昨天(23/06/25)晚上,在前段时间备受瞩目的 DragGAN 悄然发布了完整的源代码。笔者第一时间尝试上手体验,在踩了一些坑后,终于使用 Colab 跑成功了。简单记录如下

效果

按照惯例,先放效果(无加速,Colab T4)

EasyGIF-1687754609167.gif

tutieshi_640x419_25s.gif

经典需求:让大象转个头

运行

本地运行

项目的源代码在 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 类型的

成功的截图如下:

image.png

使用

打开的最终页面如下,左侧是操作区,右侧是图片的展示。简单列举一下:

image.png

左上角: 如下图,左上角第一栏是选择现有的模型,第二栏 “Seed” 用于控制随机种子(同一个种子生成的图片是一样的),下面的 Step Size 用于设置迭代的步幅。

image.png

整个的基本操作逻辑是:

  1. 输入种子,生成一张图
  2. 鼠标点击图片上的位置开始 “选点”,两个一组,分别控制变换的 “起始位置” 和 “结束位置”。
  3. 完成后点击 Start 开始变换,到差不多了你可以点个 Stop 手动停止

另外作者也附了一些说明,翻译如下:

快速开始

  1. 选择所需的预训练模型,并调整种子(Seed)生成初始图像。
  2. 点击图像以添加控制点。
  3. 点击开始,尽情享受!

高级用法

  1. 调整步长(Step Size)以调整拖拽优化中的学习率。

  2. 选择 w 或 w+ 来改变潜空间以进行优化:

    • 在 w 空间上进行优化可能对图像产生较大影响。
    • 在 w+ 空间上进行优化可能比 w 空间更慢,但通常能够获得更好的结果。
  3. 请注意,改变潜空间将重置图像、控制点和蒙版(这产生与重置图像按钮相同的效果)。

  4. 点击编辑可伸缩区域 (Edit Flexible Area) 以创建蒙版,并约束未被遮罩的区域保持不变。

结语

现在来回答我的标题:为什么说 “强大但不完全强大” 呢?
首先,“强大” 是因为这样的效果确实很惊艳,第一眼看上去确实很有未来的风格;但很明显它的使用价值并不那么高,比如说:

  • 它的图片是 StyleGAN 生成的,也就是说目前并不能随便拿一张图片让它 P
  • 两个点作为引导,不可控的因素太多了。很多时候图片的变化和你的预期并不匹配。如果能做到多模态,和语言模型相结合,能通过类似于 “衣服从上至下第三颗纽扣向左移一点”,是不是更魔幻一点
  • 有时候某些奇奇怪怪的元素会面目全非,比如下面的这个包

EasyGIF-1687766645362.gif

完。