issues
search
chaos-moon
/
paper_daily
One paper a day, keep laziness away.
MIT License
7
stars
3
forks
source link
DragGAN
#20
Open
zc12345
opened
1 year ago
zc12345
commented
1 year ago
DragGAN
project
2305.10973
code
TL;DR
指定起始点和目标点,通过GAN合成起始点偏移到目标点的新图片。通过追踪点的位置迭代式生成
针对每个类别单独train一个GAN,不是一个泛化的模型
baseline
UserControllableLT
区别在于UserControllableLT 是直接鼠标拖拽,而且只支持单点control;DragGAN是定义了起始点和目标点,支持多点。其他实现上UserControllableLT 用的是flow map,DragGAN是latent code(看起来就是个feature map)
Related work
controllable image synthesis
Conditional GANs: EditGAN等
Controllability using Unconditional GANs: UserControllableLT等
Diffusion models: 不够efficient
Point Tracking
之前的方法主要是利用光流,如RAFT、PIPs等
本文直接利用GAN的feature进行matching就能实现tracking
pipeline
pipeline交互上是Interactive Point-based Manipulation
监督方式是Motion Supervision Loss
$$L=\sum
{i=0}^n \sum
{\bf{q_i}\in\Omega_1(\bf{p_i},r_1)}|| \bf{F(q_i)-F(q_i+d_i)}||_1+\lambda||\bf{(F-F_0)(1-M)}||_1$$
$F$ 是StyleGAN2的第六层feature map resize到原图尺寸;M是mask,即只更新unmasked区域
handle point $p_i$ 更新之后的位置为 $q_i$ , $q_i\in\Omega_1(p_i,r_1)$ 表示在 $p_i$ 半径 $r_1$ 内的pixel
loss目标是让当前点 $q_i$ 趋向于目标点 $t_i$ ,并且每次只更新一个单位长度。 $q_i,t_i$ 之间的单位方向向量为 $d_i$
定位handle point当前位置用的是point tracking
实现的时候在 $q_i\in\Omega_2(p_i,r
2)$ 的范围内做近邻搜索,搜索的时候使用特征图 $F'
{256\times 256\rightarrow h\times w}$
超参
$\lambda=20, r_1=3, r_2=12$
优化终止条件为 $distance(q_i,t_i)\le d$ 。当handle point少于5个时 $d=1$ ,否则 $d=2$
思考
有点类似Diffusion的迭代式生成,每次只修改一点
可控式生成未来可期:ControlNet+SD生成,辅以DragGAN微调,感觉能实现很精细而且自然的图像生成
demo效果很惊艳,可惜代码还没有放出来。目前一些复现的代码效果依赖于训练数据,有些OOD的输入会导致合成效果挺差
UserControllableLT的引用量只有1,而DragGAN爆火,demo效果和宣传都很重要啊……
作者的talk里面提到:早期的方法是使用光流驱动GAN,效果是比较work的,但是运算速度有点慢;point tracking也用过一些常规方法,但是在平滑区域不太work,而且速度慢,后来改成feature层面的方法
zc12345
commented
1 year ago
DragDiffusion
project
arxiv
code
Title: DragDiffusion: Harnessing Diffusion Models for Interactive Point-based Image Editing
Institution: ByteDance Inc.
TL;DR
把DragGAN的操作(motion supervision+point tracking)拿到了diffusion model的U-Net Decoder解码时的feature map上去做(DragGAN是在GAN的feature map上做的)
因为drag操作会导致object/style shift(拖动之后猫变成狗),因此需要先用Drag之前的图训一个LoRA,然后再Drag
zc12345
commented
1 year ago
DragonDiffusion
arxiv
code(soon...)
知乎
Title
: DragonDiffusion: Enabling Drag-style Manipulation on Diffusion Models
Tencent ARC Lab & Peking University
TL;DR
形式
从DragGAN的拖拽式编辑拓展到更细粒度的图像编辑
支持点对点的Drag操作
也支持整个物体的外观替换/物体拖动/缩放……
方法
不是直接对Diffusion feature操作,而是构建了基于diffusion feature的classifier guidance,将feature loss转化成梯度,直接修改diffusion的中间表示
zc12345
commented
1 year ago
FreeDrag
project
arxiv
code
Titile: FreeDrag: Point Tracking is Not You Need for Interactive Point-based Image Editing
Institution: Shanghai AI Lab
TL;DR
针对的问题
DragGAN包括motion supervision和point tracking两部分,其中point tracking的跟踪不够稳定
图像内容的剧烈变化导致跟踪丢失;相邻区域的相似点导致错误跟踪
解决方法
引入自适应更新的模板特征,ema的方法滑动平均更新模板特征,通过衡量每次移动的质量决定是否更新
使用模糊定位和线性搜索,不追求精确定位handle point的位置,只约束定位点在handle point附近
DragGAN
TL;DR
baseline
Related work
pipeline
思考