My App

InstructPix2Pix: Learning to Follow Image Editing Instructions

讲任务:给定一个图片和一段提示词, 模型根据指引修改图片. 讲方法:用GPT-3和SD生成一个大的数据集. 讲效果:生成很快.

InstructPix2Pix-intro

介绍

数据对难获取, 使用GPT3和SD生成数据.

根据获得的数据集训练了一个条件diffusion模型, 卖点是零样本泛化.

方法

生成数据集

生成指引和对应的caption. 原始100条caption从LAION数据集获取, 人工标注Edit instruction和Edited Caption. 之后用这些去微调GPT3, 让GPT生成454445对. 观察到LAION数据集中有很多噪声, 但是可以通过数据集过滤和classifer-free guidance缓解.

生成图片对. 难点在于图片对的一致性难以保证, 即使是相同的提示词, 生成的图片也是完全不同的. 这里使用Prompt-to-Prompt技术, 其中也一个参数p控制相似度, 因为不同的提示词需要不同程度的相似度, 这里取p从0.1到0.9, 采样100个样本对, 使用一个基于CLIP的指标选择最好的.

InstructPix2Pix

L=EE(x),E(cI),cT,ϵN(0,1),t[ϵϵθ(zt,t,E(cI),cT)22]L = \mathbb { E } _ { \mathcal { E } ( x ) , \mathcal { E } ( c _ { I } ) , c _ { T } , \epsilon \sim \mathcal { N } ( 0 , 1 ) , t } \left[ \left\| \epsilon - \epsilon _ { \theta } \big ( z _ { t } , t , \mathcal { E } ( c _ { I } ) , c _ { T } \big ) \right\| _ { 2 } ^ { 2 } \right]

基础模型基于sd, VAE, Latent Space, 条件注入这些.

引用了一篇论文, 论述微调比从头训练好, 所以本文使用stable diffusion的权重初始化, 然后讲了一下怎么增加图片嵌入的.

先介绍了一下单classifer-free guidance, 当s大于1时, 模型进一步向条件的方向生成(权衡质量和多样性, 向质量的方向):

e~θ(zt,c)=eθ(zt,)+s(eθ(zt,c)eθ(zt,))\tilde{e}_\theta(z_t, c) = e_\theta(z_t, \varnothing) + s \cdot \bigl( e_\theta(z_t, c) - e_\theta(z_t, \varnothing) \bigr)

然后介绍本文使用的双classifer-free guidance, image和text为空的概率都是5%, 下面这个是推理的公式:

e~θ(zt,cI,cT)=eθ(zt,,)+sI(eθ(zt,cI,)eθ(zt,,))+sT(eθ(zt,cI,cT)eθ(zt,cI,))\begin{aligned} \tilde{e}_\theta(z_t, c_I, c_T) &= e_\theta(z_t, \varnothing, \varnothing) \\[6pt] &\quad + s_I \cdot \big( e_\theta(z_t, c_I, \varnothing) - e_\theta(z_t, \varnothing, \varnothing) \big) \\[6pt] &\quad + s_T \cdot \big( e_\theta(z_t, c_I, c_T) - e_\theta(z_t, c_I, \varnothing) \big) \end{aligned}

结果

展示 InstructPix2Pix 模型在各种图像编辑任务上的结果; 与 SDEdit 和 Text2Live 进行定性和定量比较; 分析数据集大小和过滤方法对模型性能的影响; 分析分类器无关引导参数对生成样本的影响.

感受

不太了解图像编辑领域, 生成数据集部分不评价. InstructPix2Pix是sd微调, 增加了图片条件输入, 双classifer-free guidance, 在其他论文里都见过.

On this page