深入浅出 diffusion(5):理解 Latent Diffusion Models(LDMs)

2024-01-31 11:36

本文主要是介绍深入浅出 diffusion(5):理解 Latent Diffusion Models(LDMs),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        如果你了解 diffusion 原理的话,那么理解 Latent Diffusion Models 的原理就比较容易。论文High-Resolution Image Synthesis with Latent Diffusion Models(Latent Diffusion Models)发表于CVPR2022,第一作者是Robin Rombach(慕尼黑大学)

1. LDM 优势

        论文特点在于:

  • Diffusion model 训练和推理代价都很高。通过在潜在表示空间(latent space)上进行 diffusion 过程的方法,从而能够大大减少计算复杂度并达到较好的效果。
  • 可以生成更细致的图像,并且在高分辨率图片生成任务(如风景图生成,百万像素图像)上表现得也很好。
  • 模型在无条件图片生成(unconditional image synthesis), 图片修复(inpainting),图片超分(super-resolution)任务上进行了实验,都取得了不错的效果。
  • 论文还提出了cross-attention的方法来实现多模态训练,使得条件图片生成任务也可以实现。论文中提到的条件图片生成任务包括类别条件图片生成(class-condition), 文图生成(text-to-image), 布局条件图片生成(layout-to-image)。

2. LDM 原理

        LDM 的网络示意图如下所示。

2.1 图片感知压缩

        图片感知压缩(Perceptual Image Compression)特点如下:

  • 目的
  • 给定一个RGB空间内的图像x,编码器把x编成潜空间的z,解码器从潜空间把z解码回
  • 训练 loss
  • KL 正则和 VQ 正则。实验结果显示虽然FID指标上 VQ 比 KL 稍微好一点点,VQ分数是14.99,KL分数是15.21(FID越低越好),但是VQ的视觉效果要比KL好很多。

2.2 潜在扩散模型

        潜在扩散模型中,引入了预训练的感知压缩模型,它包括一个编码器  和一个解码器 。这样就可以利用在训练时就可以利用编码器得到 ,从而让模型在潜在表示空间中学习。

        下式为 DM 的目标函数

         下式为 LDM 的目标函数

2.3  条件机制

        条件机制(Conditioning Mechanisms)本质在于通过交叉注意机制增强其底层 UNet 主干,将 DM 转变为更灵活的条件图像生成器,这让基于attention的模型学习多种输入模态更有效了。

        Attention 计算公式如下:

        其中:

 3 训练与推理

3.1 训练

         训练过程分两步:

  • 第一步,训练一个VAE(下图中横的虚线框),得到x到 zt 的编码器 Encoder 和还原回 x′ 的解码器 Decoder;
  • 第二步,训练一个扩散模型LDM,学习一个噪声到 zt 的生成过程。其中LDM的架构是个Unet(如果包含条件输入的话,则条件信息的编码器与LDM一起训练)。

3.2 推理

        推理过程分为无条件信息和有条件信息两种情况:

        没有条件信息:

  • 从高斯噪声采样,经过LDM模型,得到潜空间图像zt;
  • zt经过 Decoder 模型还原到原图。

        有条件信息

  • 从高斯噪声采样
  • 条件信息经过条件处理的编码器得到的输出与初始高斯噪声以及u-net进行耦合(concat,attention),经过LDM得到潜在空间图像zt
  • zt经过 Decoder 模型还原到原图。

这篇关于深入浅出 diffusion(5):理解 Latent Diffusion Models(LDMs)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663625

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分