July 14, 2024 针对 Diffusion 模型的条件控制,除了最常用的文本 Prompt,ControlNet 是个不错的方法,之前的文章有专门解释,ControlNet 可以输入一个 condition 图,condition 先经过几层卷积缩放到 latent 相同的大小,再与复制出来的 UNet 的 Zt 相加作为输入,最后把两个 UNet 的 Encoder 层加权相加,从而实现对生成结果的控制。由于 condition 只是卷积后直接加到Zt,ControlNet 的控制效果主要是空间对齐,比如线条、边缘、姿态骨架等。 但有时候我们希望生成结果只是“参考” condition 图,不需要空间对齐,甚至不能空间对齐,比如我们希望生成同一个人的不同动作,只需要人物主体保持一致,或者生成一些动画,帧与帧都是“参考”同一个输入图的: 针对这类问题,本文要介绍的 ReferenceNet 是一种典型算法,其最早可以追溯到 ControlNet 的作者在 sd-webui ControlNet 插件 里的实现,包括 Reference-Only、Reference-AdaIN 两种形式: [Major Update] Reference-only Control [New Preprocessor] The "reference_adain" and "reference_adain+attn" are added 后来有多篇 Paper 都采用了类似方法,用于视频生成、换装、换脸等。首先来看下 ReferenceNetContinue reading “ReferenceNet 简介及相关算法整理”