通过交互点控制图片生成
图 + 交互 -> 条件图片,图生图
什么是 DragDiffusion ?
- 借鉴 DragGAN,基于 DDPM 实现交互式的图像编辑功能
- 文章主要分为两部分:(1) LoRA 微调:通过 LoRA 和想要编辑的图像对 SD (StableDiffusion) 进行微调,保证在后面在对特征进行操作之后仍然能够保留图像信息;(2) 交互式图像编辑:借鉴 DragGAN 和运动监督、点跟踪两个过程,实现对图片的编辑
DragDiffusion 的原理?
- 在交互信息的引导上,和 DragGAN 的运动监督、点跟踪过程一样,区别在于 DDPM 是在 VAE 的中间隐变量上学习,并且在 Unet 的倒数第二个 block 的特征图输入交互监督
- 运动监督:监督新生成的图像从起始点向目标点移动
- 点跟踪:获取移动后新的起始点,然后作为监督信息输入到下
DragDiffusion 如何进行运动监督?
- 运动监督和 DragGAN 一样,定义为中心的正方形块 Ω(hik,r1)={(x,y):∣∣∣x−xik∣∣∣≤r1,∣∣∣y−yik∣∣∣≤r1} 为变长为 2r1+1,以 hik=(xik,yik) 为中心的正方形块,则运动监督第 K 次的迭代优化目标
L(z^tk)=i=1∑nq∈Ω(hik,r1)∑∥∥∥Fq+di(z^tk)−sg(Fq(z^tk))∥∥∥1+λ∥(z^t−1k−sg(z^t−10))⊙(1−M)∥∥∥1
- 其中 ztk^ 是第 k 个运动监督之后的第 t 步扩散潜码,di=(gi−hik)/∥∥∥gi−hik∥∥∥2 是第 k 次迭代中从第 i 个控制点到第 i 个目标点的归一化方向量,M 是用户指定的二进制掩码,保证扩散潜码未被屏蔽的部分保持不变。当 q+di 不是整数,Fq+di(z^tk) 的值通过双线性插值计算。sg(⋅) 是停止梯度操作,防止反向移动
DragDiffusion 如何进行点跟踪?
- 点跟踪和 DragGAN 一样,运动监督更新 z^tk 后,控制点的位置也可能改变,所以需要进行点跟踪更新控制点。由于 UNet 特征可以很好的捕获点的响应,所以可以使用 F(z^tk+1) 和 F(z^tk) 来跟踪新的控制点
- 具体来说,在方块 Ω(hik,r1)={(x,y):∣∣∣x−xik∣∣∣≤r2,∣∣∣y−yik∣∣∣≤r2} 内应用最近邻搜索来更新控制点 hik,
hik+1=argq∈Ω(hik,r2)min∥∥∥∥Fq(z^tk+1)−Fhik(zt)∥∥∥∥1
参考:
- DragDiffusion 论文详解 - 知乎
- 【AIGC 第二十三篇】DragDiffusion:基于点拖拽进行图像编辑的扩散模型 - 知乎