扩散模型(十六)|T2I Diffusion Models:Kolors
Kolors: Effective Training of Diffusion Model for Photorealistic Text-to-Image Synthesis
https://github.com/Kwai-Kolors/Kolors/blob/master/imgs/Kolors_paper.pdf
https://github.com/Kwai-Kolors/Kolors
近期,快手提出Kolors模型,具备强大的中英文理解能力,主打生成写实风格图片。Kolors在backbone架构方面和SDXL相同,直接继承SDXL的U-Net架构,没有对模型架构做改进(这也意味着基于sdxl进行设计的方法可以较容易迁移到Kolors上)。即使没有对U-Net进行改进,Kolors也表现出卓越的性能,超越了目前的开源方法,达到Midjourney-v6等级水平。相比SDXL和其它文生图模型,Kolors的改进:
在增强文本语义理解方面:
使用General Language Model(GLM)作为text encoder,而非CLIP或T5等。因为GLM具备强的中英 ...
扩散模型(十五)| 主题生成:Textual Inversion
An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion
论文:NVIDIA-https://arxiv.org/pdf/2208.01618
代码:https://github.com/rinongal/textual_inversion
概览任务:Textual Inversion属于主题生成任务的一种方法。用户给定3-5张指定概念的参考图片,如一个主题或者某种风格,训练模型,使模型可以个性化生成和此概念有关的图像。
以往的方法:冻结住模型,训练transformation模块以在面对新概念时适应其输出。这些方法往往会导致对先验知识的遗忘,即有可能学会生成这个概念,但是忘记了其它概念如何生成;并且这些方法难以持续学习新的概念(学习概念A后,无法在学会概念A的情况下再学会概念B)。
Textual Inversion: “An Image is Worth One Word”,将参考图片看作一个伪单词,学习其在文本嵌入空间中的text embedding表示 ...
扩散模型(十四)|Image-Conditioned T2I:IP-Adapter
IP-Adapter: https://arxiv.org/pdf/2308.06721
“an image is worth a thousand words”,图像中蕴含丰富的信息,image prompt比text prompt更直观易理解。本文介绍一个将图像条件注入扩散模型的方法:IP-Adapter。除了IP-Adapter外,ControlNet也是经典的将图像条件注入模型的方法,其通过在原始sd模型中添加额外的网络(并行的unet的encoder层)进行训练来完成空间条件注入,在此前的博客https://lichtung612.github.io/posts/8-diffusion-models/ 中有专门介绍。IP-Adapter、ControlNet都在未改变原扩散模型权重参数的情况下,完成了空间条件信息的注入;IP-Adapter和ControlNet可以结合起来,完成对参考图的结构控制生成(见本文应用部分)。
动机以往的基于adapter的图像条件注入方法,如T2I-adapter、Uni-ControlNet,它们的做法通常如下:
使用CLIP image ...
扩散模型(十三)| 主题生成:DreamBooth
DreamBooth:Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation
论文:https://arxiv.org/pdf/2208.12242.pdf
代码:https://dreambooth.github.io/
参考:https://www.bilibili.com/video/BV18m4y1H7fs/?spm_id_from=333.788&vd_source=f16d47823aea3a6e77eec228119ddc27
任务
给定针对特定主题的输入图像(通常3-5张)和文本提示,通过diffusion model可以生成该主题在其他语义下的图像。生成结果可以自然和环境交互,具有多样性和高保真度。
方法Text-to-Image Diffusion Models预训练的text-to-image diffusion model:$\hat x_\theta$
初始噪声图: $\epsilon \sim N(0,I)$
条件向量 $c=T(P)$,T是text enc ...
扩散模型(十二)| LoRA
LoRA学习笔记
论文:https://arxiv.org/abs/2106.09685
学习主要参考:https://zhuanlan.zhihu.com/p/618894919
代码:https://github.com/microsoft/LoRA/blob/main/loralib/layers.py
原理模型是过参数化的,它们有更小的内在维度,模型主要依赖这个低的内在维度去做任务适配。
假设模型在适配任务时参数的改变量是低秩的,由此引出低秩自适应方法LoRA,通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的微调。
做法步骤
在原模型旁边增加一个支路,通过低秩分解(先降维再升维)来模拟参数的改变量
训练时,原模型固定,只训练降维矩阵A和升维矩阵B
前向过程: $Wx = W_0x+\Delta Wx = W_0x + BAx$
缩放 $\Delta Wx$:对低秩输出部分会乘上一个scale系数 $\frac{\alpha}{r}$,缩放帮助我们在改变r时减少重新调节超参数的需求。当用Adam优化时,微调 $\alpha$相当于微调学习率,所以 ...
扩散模型(十一)| Transformer-based Diffusion:DiT
Scalable Diffusion Models with Transformers-23ICCV oral
https://arxiv.org/pdf/2212.09748.pdf
https://github.com/facebookresearch/DiT
参考:https://zhuanlan.zhihu.com/p/641013157
概要
使用transformer架构代替常用的U-Net架构
更高Gflops的DiT(增加transformer depth/width或者输入token的数量)得到较低的FID,有更好的生成能力。
方法DiT采用IDDPM方法(IDDPM解读见https://lichtung612.github.io/posts/2-diffusion-models/ ),同时预测模型的噪声和方差。
PatchifyDiT的输入是一个空间潜在表示 z(对于256x256x3的图像来说,z的shape为32x32x4)。
输入首先要经过patchify变成包含T个tokens的序列,每个token的维度是d。
之后使用sine-cosine位置编 ...
扩散模型(十)| Transformer-based Diffusion:U-ViT
《All are Worth Words: A ViT Backbone for Diffusion Models》-23CVPR- https://arxiv.org/pdf/2209.12152.pdf
代码:https://github.com/baofff/U-ViT
总体介绍背景:ViT在各种视觉任务中取得优异效果,而基于CNN的U-Net模型依然在扩散模型中占据主体地位。一个很自然的问题:在扩散模型中,ViT能否代替基于CNN的U-Net?
模型架构:在本论文中,我们设计了一个简单通用的基于ViT架构的图像生成扩散模型U-ViT:
把包括时间、条件、噪声所有的输入视为tokens
在浅层和深层之间应用长距离跳跃连接(因为图像生成是一个pixel-level预测任务,对低层级特征敏感。长跳跃连接提供低层次的特征,使模型更容易训练)
在输出前添加3x3卷积块,以获得更好的视觉质量
实验:我们在无条件图像生成、类别条件图像生成和text-to-image生成三种类型任务上评估U-ViT,实验结果表明:
U-ViT即使不优于类似大小的基于CNN的U-Net,也具有可比 ...
扩散模型(九)| Diffusion for Point Cloud
PointE
PointE: A system for Generating 3D Point Clouds from Complex Prompts
https://arxiv.org/pdf/2212.08751.pdf
https://github.com/openai/point-e
Abstract最近的text-conditional 3D生成模型经常需要多个GPU-hours来生成一个单一样本,这和图像生成模型(几秒或几分钟就可以生成样本)相比有巨大的差距。本文提出一个3D生成模型PointE(generate Point clouds Efficiently),可以用单个GPU在1-2分钟内生成3D模型。
该方法首先用一个text-to-image diffusion模型生成一个单一的合成视角的图像,之后用另一个输入条件为图像的diffusion模型生成3D点云。
该方法虽然质量上和sota模型有差距,但是速度比其他的快1-2个数量级。
Introduction最近的text-to-3D方法大致分成2类:
使用成对的数据(text,3D)或者没有标签的3D数据训练生 ...
扩散模型(八)| Image-Conditioned T2I:ControlNet
Adding Conditional Control to Text-to-Image Diffusion Models-2302
https://arxiv.org/pdf/2302.05543.pdf
https://github.com/lllyasviel/ControlNet
概要
一种高效微调text-to-image diffusion models的方法,可以让diffusion model学习空间条件注入信息。
ControlNet冻结stable diffusion的参数,复用它的encoding layers来训练,其中复用的encoding layers的参数为零初始化(”zero convolutions”, zero-initialized convolution layers),确保没有有害的噪声影响微调。
在输入粗糙的边缘、pose、深度、草图、语义图等条件下都可以得到满意的效果。
方法ControlNet
初始输入feature map: $x$,输出feature map: $y$
初始网络: $y = F(x;\theta)$
冻结初始网 ...
扩散模型(七)| SDXL
SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
论文:https://arxiv.org/abs/2307.01952
代码:https://github.com/Stability-AI/generative-models
参考:https://zhuanlan.zhihu.com/p/642496862
主要改进
SDXL使用3倍大的UNet backbone:模型参数增长主要来源于添加更多的attention块和更大的cross-attention,因为SDXL使用了2个text encoder。
2个简单但是有效的额外的条件条件注入,不需要任何形式的额外监督;在多纵横比(aspect ratio)上微调SDXL。
引入一个分离的diffusion-based细化模型来提升视觉效果。
模型架构VAE以一个更大的batchsize(256 vs 9)重新训练stable diffusion的autoencoder模型,同时采用EMA。
下表可以看出,SDXL-VAE的性能最 ...