原始ControlNet

ControlNet网络结构

ControlNet网络结构

Untitled

原始的controlnet作用的是UNet网络,把Encoder和Middle复制一份,作为条件图的输入,将每个trainable copy 的输出传到UNet对应分辨率的Decoder上。这里的连接是将ControlNet的输出乘以权重(64/h),直接与原输出相加得到,而非Concat。

Text2Video-Zero

这篇文章并非和controlnet直接相关,最大的特点是它的Zero-Shot的从text2image到text2video的转化,有部分思想可以学习,但其效果比较有限。

核心思想:从text2image采样出一张图,怎么以这张图为基础,生成出一系列关键帧,满足id一致以及时序一致。

一个关键的洞察,在DDIM下,如果参数eta=0,则生成出来的图像就是确定的。eta=1则是类似DDPM的结果。

Untitled

如何利用这个性质得到绑定ID的图像:假如得到x_t’, 对x_t’做一系列操作,得到[2:m]的x_t’.这儿的一系列操作,在原文中定义为镜头平移,即原像素(x,y) → (x+dx,y+dy)。dx,dy受到[2:m]的影响,即每一帧定义不同的平移矩阵。

做完这个操作之后,按照DDPM的加噪流程,重新回到[1:m] x_t,得到的噪声在噪声空间内能够满足比较接近的分布。按照DDIM的确定性采样流程,得到的一系列x_t’在ID上能够比较接近,同时由于平移矩阵,能够保持略有不同但有确定的移动方向。

Untitled

事实上,我认为这里的平移矩阵本质上并不是想得到物体的移动,可以认为是一种扰动的策略,这个扰动不会在太大程度上改变分布,又能够有一定的连续性,并且绑定id。另一方面,为什么需要先进行一定程度的去噪,再进行扰动呢?设想极端的情况,对噪声本身做扰动,那么得到的依然还是噪声,并且极大程度上并不能保证ID的一致性,在DDIM的文章中,作者通过插值,可以得到从一个ID到另一个ID的转化,可以说明UNet本身对噪声是极度敏感的。假如在已经生成好的图片上做变换,那么多样性就很难保证了(如果这样,为什么不直接把图片通过这个变换直接变成视频呢)。所以折中考虑,设计好这个的t‘,对整个过程影响很大。

虽然上述内容似乎已经能够产生一定“视频化”的效果了,但是事情往往不会那么简单。比如,在对x_t’的重新加噪过程中,无法保证这里的随机性不会导致一定程度的漂移。为了做到这一点,作者修改了UNet中的自注意层,使[2:m]每一帧对第一帧做交叉注意力机制(第一张作为k,v)。这么做能够增强ID和时序一致。