【Difussion Model】扩散模型的理解和编程实现

news2025/1/10 12:01:01

目录

  • 理论
    • 框架
    • text-to-imgae
      • decoder
      • generation model
      • clip的原理
    • FID指标:评估图像生成的好坏
    • 数学原理
      • training
      • inference
    • 图像生成模型的本质
      • 最大似然估计
    • 正式推导
    • sample 带来随机性
      • 从一次到位到N次到位

理论

框架

不断的进行去噪,并且在这个过程中,step也作为“去噪模型(其实就是扩散模型)”的输入:
在这里插入图片描述
denoise 模型的内部结构长这样下图这样,他能够产生一张噪声,然后原始图像减去这个噪声,就能够得到更清楚的图像(去噪后的图像)了:

在这里插入图片描述

为什么denoise 模型不直接对图片进行去噪,而是其内部的 noise predicator产生一个噪声图片?因为难度不一样,产生一张噪声要容易得多。
既然要其生成的是一张噪声,那么也需要有ground truth 的噪声,来进行该模型的训练:
在这里插入图片描述
每一步的噪声的 ground truth 怎么来?——先加噪,然后记录下每个step所添加的噪声就是ground truth:

在这里插入图片描述

text-to-imgae

如果是这类模型,则每次noise predictor还需要添加一样的文字。
在这里插入图片描述
在这里插入图片描述
text-image DM模型的整体框架,需要依赖encoder、decoder等:
在这里插入图片描述
下面介绍encder、generation model、decoder,已经它们分别是怎么训练的。

decoder

decoder的训练方法比较简单,中间一个缩小后的图片,然后用AE的训练方式即可。
在这里插入图片描述

generation model

generation model这里就类似扩散模型。
在这里插入图片描述
在每一个step中,noise predictor的输入是图像的representation、文字的represenation、当前step。输出得到该step添加的噪声。
在这里插入图片描述
经历若干个去噪步骤,再输入到decoder,基本就可以得到生成的大图了。
在这里插入图片描述

clip的原理

让两个encoder输出的向量相近:
在这里插入图片描述

FID指标:评估图像生成的好坏

依赖一个retrain好的CNN模型,输入一个生成的图片,得到representation,然后比较和真实影像的representation的进行比较:
在这里插入图片描述
两个分布(假设是高斯分布)越接近越好。

数学原理

先区分下VAE和扩散模型的区别:
在这里插入图片描述
扩散模型加噪的过程中,不需要训练一个encoder。

算法如下:
在这里插入图片描述

training

先来看看第一个算法是什么意思,红色框框做的是把原始图像和噪声进行加权相加, α t ˉ \bar{\alpha_{t}} αtˉ 越小代表加的的噪声越大,t越大,和原图相比的噪声越大。noise predictor所需要的输入是添加了噪声的图片(红色框框里面的内容)和step t,并且 α t ˉ \bar{\alpha_{t}} αtˉ 随着t的增大时越来也小的。注意这里是对 noise predictor (即 ϵ θ ( a , b ) \epsilon_{\theta}(a,b) ϵθ(a,b))做优化,让其根据两个输入,得到一个指定的噪声作为输出。
在这里插入图片描述
具体的训练流程如下图,给定一个添加噪声后的图,noise predictor 需要预测添加了那些噪声:
在这里插入图片描述
配合前面讲的理解
在这里插入图片描述

inference

流程如下,注意区分 α t ˉ \bar{\alpha_{t}} αtˉ α t \alpha_{t} αt 的区别,后者是新出现的一个变量:
在这里插入图片描述

图像生成模型的本质

凭空生成
在这里插入图片描述
文字生成图片
在这里插入图片描述

最大似然估计

x i x^i xi为模型生成样本空间的一张图, P θ ( x i ) P_{\theta}(x^i) Pθ(xi)指的是模型生成 x i x^i xi 的几率。最大似然估计就是要找到最优的 θ ∗ \theta^* θ,使得模型输出的空间分布 P θ ( x ) P_{\theta}(x) Pθ(x) 能够和 真实数据(也就是训练数据)的分布 P d a t a ( x ) P_{data}(x) Pdata(x)最接近:
在这里插入图片描述具体的计算方式如下:
在这里插入图片描述
VAE中的推导:
在这里插入图片描述
拓展到扩散模型:
在这里插入图片描述
在这里插入图片描述

正式推导

参数 β \beta β,和前面 α \alpha α 相关的表达式有所不同:

在这里插入图片描述

先看一下展开是咋样的:

在这里插入图片描述
两个高斯噪声可以这样化简(别问原因):
在这里插入图片描述

以此类推,并使用 α \alpha α 来替换 β \beta β

在这里插入图片描述
所以说做一次sample就可以得到 x T x_{T} xT 了,不需要经过多个 step 得到,这样可以用来减少 sample 的时间。

总之,前面提到的优化目标可以这样化简:
在这里插入图片描述

经过一些列化简后。。。。,得到如下公式,其他变量( α \alpha α 是根据提前制定的schedule决定的)都是已知的除了 ϵ \epsilon ϵ ,所以noise predictor 只需要求这个变量就行了。
在这里插入图片描述

sample 带来随机性

由于 扩散模型是从 随机噪声中采样,然后经过一步步降噪生成的,所以怎么sample都影响模型最后的输出,这样就具有随机性,以往我们认为取输出概率最大的比较好,就像下图这样:
在这里插入图片描述
但是后来研究发现,这样做容易跳帧,因为人写的文章,写的时候也不是考虑几率最大的那个词汇,所以采用sample这样的随机性生成会有更好的效果。

从一次到位到N次到位

所以在每一步加一点随机性,效果会更好:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生Docker镜像管理

docker是什么? docker是一个go语言开发的应用容器引擎。 docker的作用? ①运行容器里的应用; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别? 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…

android framework面试经验分享

hi,粉丝朋友们! 大家好!近来有很多学员粉丝都经常问framework面试的一些经验。 更多framework干货知识手把手教学 Log.i("千里马qq群",“422901085”);简历书写建议 1、写上自己突出重点的framework一些模块&#xf…

【微信小程序开发】第 6 节 - 小程序的宿主环境

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、宿主环境简介 3、小程序的宿主环境 4、小程序宿主环境包含的内容 4.1、通信模型 4.1.1 通信的主体 4.1.2 小程…

【服务器】远程ERP财务软件

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求;全面支持企业对远程仓库、异地办事处的管理需求;全面满足企业财务业务一体化管理需求。企业一般将其…

​蚂蚁集团自动化混沌工程 ChaosMeta 正式开源

ChaosMeta 介绍 ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。 经过公司内部多年复杂故障演练场…

黄仁勋台北演讲分享 不论是为了追逐食物而跑,或不被他人当作食物而跑,都要尽量保持奔跑,别缓步前进。

不论是为了追逐食物而跑,或不被他人当作食物而跑,都要尽量保持奔跑,别缓步前进。 2023年5 月 27 日,美国英伟达(Nvidia)公司创始人黄仁勋先生受邀到位于中国台北的台湾大学参加2023年的毕业典礼&#xff0…

天津的每个早点摊儿,都是与清心寡欲对抗的战场

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 粒粒 封面 / 姝琦midjourney 产品统筹 / bobo 录音间 / 声湃轩北京站 作为一个天津人创建的美(健)食(康)播客&#xff0c…

CSS 颜色设置透明度的新姿势

在 CSS 中,我们有很多种方式为元素设置透明度,常见的是给元素设置透明度和给颜色设置透明度,不同的方式将会带来不一样的效果。那么今天,我们就一起来聊聊 CSS 中的不透明度。感兴趣的同学,请继续往下阅读。 设计中的透…

尺度悖论:数据分析必须警惕的坑

I. 尺度悖论的概述 尺度悖论是指在某些系统或现象中,尺度的大小或范围会对其性质、行为或理解产生矛盾或困难的现象。尺度悖论常出现在自然科学、社会科学和哲学等领域中,引发了一系列有关尺度和尺度变化对系统行为的影响的研究。 II. 举3个简单的例子…

Qt编写视频监控系统78-视频推流到流媒体服务器

一、前言 视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务器拉取…

接口幂等性——防止并发重复插入数据

接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。…

chatgpt赋能python:Python如何变为列表

Python如何变为列表 Python是一种高级编程语言,用于快速、轻松地编写软件。它的语法简洁、易于学习,可以用于各种领域,包括Web开发、机器学习和数据科学等。其中,列表是Python的一种基本数据类型,它用于存储一系列相关…

聚观早报 | 皮克斯十年来首次大规模裁员;OpenAI网站访问量大增

今日要闻:皮克斯十年来首次大规模裁员;OpenAI网站访问量大增;华为版ChatGPT将于7月初发布;苹果Siri或将迎来重大调整;罗斯柴尔德减持英伟达 皮克斯十年来首次大规模裁员 迪士尼公司旗下皮克斯动画工作室已裁员 75 人&…

西门子PLC与IO模块之间无线PROFINET通信

在实际系统中,一个车间内PLC与多个IO信号点需要建立通讯,从而提高工作效率,通常距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大且不美观,这种情况下比较适合采用无线通信方式。本方…

百城巡展 | 人大金仓5月联合伙伴释放数字活力奏响发展强音

5月下旬,人大金仓“百城巡展”走过贵阳、苏州、南宁,吸引线上线下逾4400人参与,得到用户和伙伴的高度认可;并携手东软集团股份有限公司、云上比格(贵州)大数据有限公司、数字广西集团有限公司、用友网络科技…

推荐 5 个好玩儿的小项目

近期,每日的开源项目热榜都是 ChatGPT 相关、AI 相关的。说实话,老逛看的也头疼,本期推荐几个不一样的,好玩的小项目。 本期推荐开源项目目录: 1. 在你的 Windows 养小猫 2. 把你的图片生成 ASCII 3. 中国制霸生成器 4…

初始JavaScript

JavaScript 的作用 表单动态验证(密码强度检测)(js产生的最初的目的)网页特效服务端开发(Node.js)桌面程序(Electron)App (Cordova)控制硬件-物联网(Ruff)游戏开发(coco…

chatgpt赋能python:Python如何将字符串首字母大写

Python 如何将字符串首字母大写 在编程中,字符串操作是不可避免的,而往往需要将字符串的首字母大写,例如在处理用户名、标题等信息时,这样做可以提高可读性和美观性。Python作为一种高效、易学易用的编程语言,有很多内…

webpack零基础入门

一、什么是webpack Webpack 是一个现代的 JavaScript 应用程序静态模块打包器 (module bundler)。 它是一个开源的前端工具,可以将各种资源文件(JS、CSS、图片、字体等)打包成一个或多个包,并且能够通过配置选项来实现各种构建需…

基于SpringBoot+Vue的招聘信息管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…