大家好,我是Yuan,今天给大家介绍最近爆火的AI修图工具DragGAN,自从6月公布源代码以来,star数已超30k。
不同于之前大火的 Stable Diffusion 与 Midjourney 使用的扩散模型,DragGAN 是一款基于生成对抗网络(GANs)技术的图片编辑项目。DragGAN AI 是一款功能强大的 AI 编辑工具,允许用户使用独特的拖放界面轻松更改照片。这个新工具是谷歌、马克斯普朗克信息学研究所和麻省理工学院 CSAIL 研究人员合作的成果。
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
$ export PYTORCH_ENABLE_MPS_FALLBACK=1
$ python3 visualizer_drag_gradio.py
DragGAN效果
DragGAN 包含了两个子操作:
理论上,GAN 的特征空间具有足够的判别性,可以实现运动监督和精确点跟踪。具体来说,运动监督是通过优化隐空间编码(latent code)的偏移 patch loss 来实现的。每个优化步骤都会使得 handle 点更接近目标;然后通过特征空间中的最近邻搜索来执行 handle 点跟踪。重复此优化过程,直到 handle 点达到目标。DragGAN 还允许用户有选择地绘制感兴趣的区域以执行特定于区域的编辑。由于 DragGAN 不依赖任何额外的网络,它实现了高效的操作,在大多数情况下在比如单个 RTX 3090 GPU 上只需要几秒钟。这允许进行实时的交互式编辑会话,用户可以在其中快速迭代不同的布局,直到获得所需的输出。
将狗的头部区域遮盖后,其余部分几乎没有变化。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(非官方版本)