Georgeqi's Blog

Tags · Diffusion

Home

About

Archives

loading..
Diffusion

Diffusion学习10-图像编辑

图像编辑是Diffusion算法中一个重要的方向,其旨在对生成或者真实的图像进行操作以得到与原图相似却某在某些方面(如背景、主体、风格等)存在不同的效果,具体应用其包含换主体、换背景、主体移动等各种方向。 图像编辑示例(原图来自InstructPix2Pix) Prompt-to-Prompt 《Prompt-to-Prompt Image Editing with Cross-Attention Control》 【主页】【论文】【代码】 prompt2prompt算法框架 算法流程:提出一个training-free的图像编辑算法,无需任何其他数据和优化过程。作者观察到cross-attention层是控制图像空间layout与prompt中每个单词之间关系的关键元素,通过只修改promp..

Read more
loading..
Diffusion

Diffusion学习9-风格迁移

​ 一个图像的风格可以看作是图像的色彩、纹理等与内容无关的信息,而风格迁移旨在保证生成的图像具有指定的风格(不管是通过prompt指定还是通过图像指定),对于有指定内容的风格迁移,不仅要求生成结果具有指定的风格,还要保持和内容图具有相同内容(比如语义信息、layout),风格迁移的效果可以参考下面的示意图: 风格迁移示意图,原图来自InstantStyle-Plus Style Aligned 《Style Aligned Image Generation via Shared Attention》 【主页】【论文】【代码】 StyleAligned 算法流程:本算法提出了一个training-free的方法进行风格迁移,在生成的过程中通过共享图像之间的attention特征来保证生成风格一致..

Read more
loading..
Diffusion

Diffusion学习8-特征保持

特征保持是Diffusion下一个重要的研究领域,其在给定同主体的一张或者多张图像的情况,生成该物体不同风格、位姿、朝向的图像,同时要保证原主体特征不变【比如粗粒度的类别、颜色,细粒度的纹理细节、人脸特征等】。 特征保持示意图【原效果分别来自CustomNet和PuLID】 其实在之前博客《Diffusion学习6-生成可控性》提到的DreamBooth、LoRA、Textual Inversion等技术就是属于特征保持的算法,但是这类算法多多少少存在训练/推理耗时久、推理数据要求高等多个问题。而最近一些的特征保持算法则在训练速度、生成效果、数据要求上都得到了全方位的优化,所以这里单独开了一个篇章进行介绍。 IP-Adapter 《IP-Adapter:Text Compatible Image Pr..

Read more
loading..
Diffusion

Diffusion学习7-DiT

Scalable Diffusion Models with Transformers 【主页】【论文】【代码】 DiT Block架构 当前主流的Diffusion模型大都采用U-Net模型作为主干网络,U-Net网络的输入和输出具有同样的尺寸,自然也很在适合Diffusion中用于预测与输入noisy latent相同尺寸的noise。但是自ViT后,Transformer结构也已经在多个视觉任务上被验证了其有效性,且相比较于CNN结构的U-Net可能还具有更好的效果。今天这篇论文则成功将transformer结构应用在Diffusion模型上,并且探究了其scalability能力,最终的实验也表明其最大的模型DiT-XL/2在ImageNet 256x256的类别条件生成上达到了SOTA(FI..

Read more
loading..
Diffusion

Diffusion学习6-生成可控性

Diffusion相比较起前辈GAN,在生成质量上已经得到了大幅度的提升,之前的文章介绍过虽然通过prompt配合上classifier-free guidance技术能够从一定程度达到控制生成内容的目的,但是如何更加精确控制diffuison结果,例如定制化生成指定的目标对象,控制生成目标的姿态、形状、颜色等,也成为后续研究的重点,当然这些控制性生成目前也已经能够达到下图所示的非常好的效果了,本篇文章也将重点介绍些这些控制diffusion生成的大杀器。 Diffusion可控性生成效果示意效果,原图来自huggingface/lllyasviel DreamBooth 《DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subje..

Read more
loading..
Diffusion

Diffusion学习5-高质量文生图模型

高质量Diffusion模型生成结果(原图来自DALLE-2) DALLE系列 DALLE 《Zero-Shot Text-to-Image Generation》 【主页】【论文】【代码-非官方】 DALL·E的名字是为了向艺术家萨尔瓦多·达利和皮克斯的机器人WALL-E致敬 DALLE-2 《Hierarchical Text-Conditional Image Generation with CLIP Latents》 【主页】【论文】 DALLE-3 《Improving Image Generation with Better Captions》 【主页】【论文】 GLIDE 《GLIDE: Towards Photorealistic Image Generation and Editin..

Read more
loading..
Diffusion

Diffusion学习4-效果和性能提升

下述效果的具体代码见: qzq2514/Diffusion 效果提升 这里简单实验和讨论了在训练DDPM过程中使用的损失函数(L1或L2损失),并且实验了Improved DDPM 中提到的Cosine Beta Schedule带来的效果提升。 Cosine Beta Schedule 首先回顾下DDPM在前向过程中的一个重要公式-利用重采样技巧从直接得到,即Diffusion学习2-理论推导中的公式(3): 而且在原DDPM论文中使用的线性Beta采样,即: torch.linspace(start=0.0001, end=0.02, steps=100) Improved DDPM则进一步分析了这种Beta设计的缺点,取出论文中的图3和图5: Linear和Cosine的Beta方式对..

Read more
loading..
Diffusion

Diffusion学习3-代码实践

先放一张在人脸数据集上训练好后去噪的可视化过程 DDPM可视化去噪 各数据集参数配置及效果 训练: CUDA_VISIBLE_DEVICES=0 python train_solver.py --data_name "Flower102" 在config.yaml中各个数据集使用默认的Training Setting,每个数据集特有的配置见config.yaml下的Train_Data. 生成效果 生成效果如下: 数据集 去噪过程可视化 最终去噪效果 插值 Mnist Fashion_Mnist Cifar10 Flower102 StyleGAN2人脸 上述训练数据集和已经训练好的模型放在这里. 去噪过程可视化中,如果在..

Read more
loading..
Diffusion

Diffusion学习2-理论推导

概述 生成模型总览(原图来自lilianweng.blog) Diffusion属于生成模型的一种,相比较于GAN等其他生成模型,Diffusion模型最大的不同之处就在于其latent code是和原输入图相同尺寸的。Diffusion模型其实也可以看成是一个隐变量模型,并且与VAE,GAN的单隐变量不同,其可以看成存在多个隐变量(即加噪过程中的每个加噪结果都可以看成一个隐变量)。Diffusion模型总体包括前向加噪和逆向去噪两个过程: 前向过程-加噪扩散:对给定的真实图像不断添加高斯噪声,经过中间状态最终变成纯高斯噪声 逆向过程-去噪生成:从完全的纯噪声不断去噪,经过中间状态最终变成其对应的真实图像 上面两个过程示意图可以表示如下: Diffusion的前向和逆向过程(原图来自Ho et..

Read more
loading..
Diffusion

Diffusion学习1-预备知识

Diffusion模型打响了AIGC的第一枪,我之前一直是做GAN这一块的图像生成,但是奈何Diffuison模型效果好的离谱,也趁着空闲时间抱着学习的态度看看到底是他是靠着什么"吊打"GAN的,但是在推Diffusion公式的时候,牵扯到很多比较细碎的小知识点,有一些因为不常用也都忘记了,这里正好补充在这里,方便后续快速查询。 关于Diffusion相关的论文推导后面会单独开一个新的文章进行介绍,如果有时间和精力应该还会补充代码的实践~ 马尔科夫链 总体思想: 过去的所有信息都被保存在了现在的状态中,只使用现在状态就能预测到之后的状态,换句话说就是某个时刻的状态转移概率只依赖于它的前一个状态。 公式化表达: 举例: 股市涨跌:当前股市的涨、跌、平的状态概率分别为[0.3,0.4,0.3],且转移概率矩..

Read more