用这个高级工具,P下图?

大家好,我是Yuan,今天给大家介绍最近爆火的AI修图工具DragGAN,自从6月公布源代码以来,star数已超30k。

DragGAN 是什么?

不同于之前大火的 Stable Diffusion 与 Midjourney 使用的扩散模型,DragGAN 是一款基于生成对抗网络(GANs)技术的图片编辑项目。DragGAN AI 是一款功能强大的 AI 编辑工具,允许用户使用独特的拖放界面轻松更改照片。这个新工具是谷歌、马克斯普朗克信息学研究所和麻省理工学院 CSAIL 研究人员合作的成果。

alt

DragGAN 由两个主要部分组成:

  • 第一部分是基于特征的运动监督,通过控制起始点向目标点运动,实现图像的变形;
  • 第二部分是新的点跟踪方法,即最近邻检索,通过在相同的特征空间上进行点跟踪,提高了效率,并避免了累计误差损失。 简单来说,它能够让你轻松掌控图片中的人物和动物,通过拖拽控制点和目标点来调整他们的位置、形状、姿势等等。

DragGAN 的特点

  • 灵活、准确、通用! DragGAN 的最大特点在于它的灵活性,可以调整很多不同的特征,比如位置、形状、姿势等等。除此之外,DragGAN的精度十分高,你能够非常精确地调整各种不同的特征,真正实现完美无缺的效果。最后是它的通用性,不仅适用于不同类型的对象,而且能够满足各种不同的用户需求。
alt
  • 交互式操作,自由自在! DragGAN 使用了一种创新的交互式编辑方法,仅需在图片上点击控制点和目标点,系统就会根据你的需求完成图片的修改。这意味着你只需简单拖拽多个点,就能快速实现更复杂、更精确的图片编辑效果。同时,该项目还附带了各种数据集,包括动物、人物、汽车和风景等。你可以通过它们来精确编辑不同类型的对象。

DragGAN 安装运行

  • 准备代码与模型 实验环境:Macbook Pro 2021,M1 pro芯片,16G内存,512G存储,macOS Ventura13.2.1系统,Python3.9环境

Step1:拉取代码并安装依赖

$ git clone git@github.com:XingangPan/DragGAN.git
$ pip3 install -r requirements

Step2:下载算法模型

cd scripts && chmod u+x download_model.sh && sh download_model.sh

该脚本的内容如下,也可自己手动下载模型放到 checkpoints 目录下:

mkdir checkpoints
cd checkpoints

wget https://storage.googleapis.com/self-distilled-stylegan/lions_512_pytorch.pkl
mv lions_512_pytorch.pkl stylegan2_lions_512_pytorch.pkl

wget https://storage.googleapis.com/self-distilled-stylegan/dogs_1024_pytorch.pkl
mv dogs_1024_pytorch.pkl stylegan2_dogs_1024_pytorch.pkl

wget https://storage.googleapis.com/self-distilled-stylegan/horses_256_pytorch.pkl
mv horses_256_pytorch.pkl stylegan2_horses_256_pytorch.pkl

wget https://storage.googleapis.com/self-distilled-stylegan/elephants_512_pytorch.pkl
mv elephants_512_pytorch.pkl stylegan2_elephants_512_pytorch.pkl

wget https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan2/versions/1/files/stylegan2-ffhq-512x512.pkl
wget https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan2/versions/1/files/stylegan2-afhqcat-512x512.pkl
wget http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-car-config-f.pkl
wget http://d36zk2xti64re0.cloudfront.net/stylegan2/networks/stylegan2-cat-config-f.pkl
  • 运行DragGAN服务 执行以下命令运行DragGAN服务,拖拽即可调整物体姿态,具体使用详见官方演示。
export PYTORCH_ENABLE_MPS_FALLBACK=1
$ python3 visualizer_drag_gradio.py

DragGAN效果

alt

运动监督和 handle 跟踪

DragGAN 包含了两个子操作:

  • 基于特征的运动监督,驱动 handle 点向目标位置移动,

  • 一种新的点跟踪方法,利用判别生成器特征来保持定位 handle 点的位置。

理论上,GAN 的特征空间具有足够的判别性,可以实现运动监督和精确点跟踪。 具体来说,运动监督是通过优化隐空间编码(latent code)的偏移 patch loss 来实现的。 每个优化步骤都会使得 handle 点更接近目标; 然后通过特征空间中的最近邻搜索来执行 handle 点跟踪。 重复此优化过程,直到 handle 点达到目标。 DragGAN 还允许用户有选择地绘制感兴趣的区域以执行特定于区域的编辑。 由于 DragGAN 不依赖任何额外的网络,它实现了高效的操作,在大多数情况下在比如单个 RTX 3090 GPU 上只需要几秒钟。 这允许进行实时的交互式编辑会话,用户可以在其中快速迭代不同的布局,直到获得所需的输出。

alt
  • 运动监督是通过生成器特征图上的偏移 patch loss 来实现的。图中红圈 patch 和蓝圈 patch 之间的差异,对于 latent code 求导,可以得到新的 latent code w'。图中红 patch 后加了".detach()",意思就是它是原图,是不变的,而蓝 patch 是通过新 latent code 出来的可变量,所以是通过它反传梯度。

  • 通过最近邻搜索对同一特征空间进行 handle 点跟踪。图中是中间那个图,在正方形区域内最近邻搜索原来 p 点的特征 f0,于是可以搜索到新的位置 p,即完成跟踪。这么做的原理是,GAN 的特征具有判别性,能很好地捕获了密集的对应关系,因此可以通过特征块中的最近邻搜索有效地执行跟踪。

遮罩(mask)的用处

alt

将狗的头部区域遮盖后,其余部分几乎没有变化。 Mask 可以在交互时,确定图像中确定图像中的可变区域,这样可以消除歧义,让用户做到更加精准的控制。

总结

DragGAN 是一种用于直观的基于点的图像编辑的交互式方法。 方法利用预训练的 GAN 来合成图像,这些图像不仅能精确地遵循用户输入,而且还能保持真实图像的多样性。 与许多以前的方法相比,本文通过不依赖特定领域的建模或辅助网络来呈现一个通用框架。 这是通过使用两个主要步骤来实现的:一是 latent code 的优化,它可以进行运动监督,将 handle 点移向其目标位置,二是一个点跟踪方法,它有效地跟踪 handle 点的轨迹。 作者未来计划将基于点的编辑扩展到 3D 生成模型。


相关资料:

官网展示:https://vcai.mpi-inf.mpg.de/projects/DragGAN/

论文链接:https://arxiv.org/abs/2305.10973

代码地址:https://github.com/XingangPan/DragGAN(官方版本)

https://github.com/Zeqiang-Lai/DragGAN(非官方版本)

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值