大家好,我是 Yuan,明天给大家介绍最近爆火的 AI 修图工具 DragGAN,自从 6 月颁布源代码以来,star 数已超 30k。
DragGAN 是什么?
不同于之前大火的 Stable Diffusion 与 Midjourney 应用的扩散模型,DragGAN 是一款基于生成反抗网络(GANs)技术的图片编辑我的项目。DragGAN AI 是一款功能强大的 AI 编辑工具,容许用户应用独特的拖放界面轻松更改照片。这个新工具是谷歌、马克斯普朗克信息学研究所和麻省理工学院 CSAIL 钻研人员单干的成绩。
DragGAN 由两个次要局部组成:
- 第一局部是基于特色的静止监督,通过管制起始点向指标点静止,实现图像的变形;
- 第二局部是新的点跟踪办法,即最近邻检索,通过在雷同的特色空间上进行点跟踪,进步了效率,并防止了累计误差损失。
简略来说,它可能让你轻松掌控图片中的人物和动物,通过拖拽控制点和指标点来调整他们的地位、形态、姿态等等。
DragGAN 的特点
- 灵便、精确、通用!
DragGAN 的最大特点在于它的灵活性,能够调整很多不同的特色,比方地位、形态、姿态等等。除此之外,DragGAN 的精度非常高,你可能十分准确地调整各种不同的特色,真正实现白璧无瑕的成果。最初是它的通用性,不仅实用于不同类型的对象,而且可能满足各种不同的用户需要。
- 交互式操作,无拘无束!
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 成果
静止监督和 handle 跟踪
DragGAN 蕴含了两个子操作:
- 基于特色的静止监督,驱动 handle 点向指标地位挪动,
- 一种新的点跟踪办法,利用判断生成器特色来放弃定位 handle 点的地位。
实践上,GAN 的特色空间具备足够的判断性,能够实现静止监督和准确点跟踪。具体来说,静止监督是通过优化隐空间编码 (latent code) 的偏移 patch loss 来实现的。每个优化步骤都会使得 handle 点更靠近指标;而后通过特色空间中的最近邻搜寻来执行 handle 点跟踪。反复此优化过程,直到 handle 点达到目标。DragGAN 还容许用户有选择地绘制感兴趣的区域以执行特定于区域的编辑。因为 DragGAN 不依赖任何额定的网络,它实现了高效的操作,在大多数状况下在比方单个 RTX 3090 GPU 上只须要几秒钟。这容许进行实时的交互式编辑会话,用户能够在其中疾速迭代不同的布局,直到取得所需的输入。
- 静止监督是通过生成器特色图上的偏移 patch loss 来实现的。图中红圈 patch 和蓝圈 patch 之间的差别,对于 latent code 求导,能够失去新的 latent code w’。图中红 patch 后加了 ”.detach()”,意思就是它是原图,是不变的,而蓝 patch 是通过新 latent code 进去的可变量,所以是通过它反传梯度。
- 通过最近邻搜寻对同一特色空间进行 handle 点跟踪。图中是两头那个图,在正方形区域内最近邻搜寻原来 p 点的特色 f0,于是能够搜寻到新的地位 p,即实现跟踪。这么做的原理是,GAN 的特色具备判断性,能很好地捕捉了密集的对应关系,因而能够通过特色块中的最近邻搜寻无效地执行跟踪。
遮罩(mask)的用途
将狗的头部区域遮蔽后,其余部分简直没有变动。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 多平台公布