[大模型]Diffusion扩散式生成模型

news2024/11/26 12:34:48

一、概述

        扩散式生成模型相较于GAN网络的对抗式生成模型,有更高的精度,也更符合人类的视觉和审美罗技,且风格化能力更强。现行的所有Diffusion模型都是基于2020年的论文DDPM来实现的。

        GAN网络通过使生成器(Generator)生成的模型{X}'尽可能的逼近真实图片X来实现以假乱真的效果。而相较于GAN,Diffusion的生成模式略有不同。Diffusion包含两个步骤:①前向扩散(为模型添加噪声);②反向扩散(由噪声生成图像)。这两个过程互为反向运算,通过学习,模型能更好的从初始的高斯噪声中拟合出合适的图像。与其说Diffusion是在学习如何画画,倒不如说它是在学习如何为图像去噪。

二、前向扩散

        前向扩散可以概述为向原始图片X_0 不断添加高斯噪声,让它最终变为随机噪声X_T的过程,其公式可以表述为x_{t-1}\rightarrow x_t的递归公式:

                x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon _{t-1}

        其中,\alpha_t是一个值很小的超参数,\epsilon _{t-1}是一个0-1的高斯噪声,并且可以将其推倒为:

                X_t=\sqrt{\bar{\alpha}}X_0+\sqrt{1-\bar{\alpha_t}}\epsilon

        其中,\bar{\alpha}=\prod ^t_{i=1}\alpha_i\epsilon同样是一个0-1的高斯噪声。

三、反向扩散

         反向扩散可以理解为前向扩散的逆操作,这一功能在实际计算中通过预测噪声\epsilon _T来实现,并通过这个预测噪声逐步将随机噪声X_T还原成原始图像X_0。其公式可以表述为递归公式:

        ​​​​​​​        x_{t-1}=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha_t}}}\epsilon _\theta(x_t,t))+\sigma _tz

        其中,\epsilon _\theta为噪声估计函数(用于估计真实噪声\epsilon\theta是模型的训练参数),\sigma _t z表示预测噪声和真实噪声之间的误差(z \in N(0,1))。可见Diffusion模型的训练主要是训练噪声估计模型\epsilon _\theta(x_t,t),并使用它来估计真实噪声\epsilon

四、训练过程

        损失函数使用MSE表示为:

        ​​​​​​​        Loss = ||\epsilon -\epsilon _\theta(x_t,t)||^2=||\epsilon -\epsilon _\theta(\sqrt{\bar{\alpha_t}}x_{t-1}+\sqrt{1-\bar{\alpha_t}}\epsilon ,t)||^2

        模型的实际预测步骤可以分为以下5步:

五、生成图片

         通过章节中的训练,可以得到估计噪声\epsilon _\theta(x_t,t),然后使用反向扩散公式不断迭代得到最终图像x_0

六、噪声预测模型

        由于噪声和原始图片处在同一维度中,故可以使用AutoEncoder模型直接进行预测。原论文中直接使用了一个U-Net作为噪音预测模型

七、代码实现

PyTorch版​​​​​​​

        

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

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

相关文章

十四届蓝桥杯STEMA考试Python真题试卷第二套第五题

来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第五题 本题属于迷宫类问题,适合用DFS算法解决,解析中给出了Python中 map() 和列表推导式的应用技巧。最后介绍了DFS算法的两种常见实现方式——递归实现、栈实现,应用场景——迷宫类问题、图的连通性、树的遍历、拓朴排…

keil5的Debug调试时,卡在 LDR R0, =SystemInit,无法往后进行

解决办法:使用STM32Cube生成的工程文件时,勾选Use MicroLIB即可

OpenEuler 使用ffmpeg x11grab捕获屏幕流,rtsp推流,并用vlc播放

环境准备 安装x11grab(用于捕获屏幕流)和libx264(用于编码) # 基础开发环境&x11grab sudo dnf install -y \autoconf \automake \bzip2 \bzip2-devel \cmake \freetype-devel \gcc \gcc-c \git \libtool \make \mercurial \pkgconfig \zlib-devel \libX11-devel \libXext…

ai常见实验

参考链接https://arxiv.org/pdf/2410.19894 对比实验(sota 表格) -辅助信息可以体现 P F 等 可视化结果 (图片形式) 消融实验 超参数实验 (有时候表示 有时候单独表格 看哪个参数好) 部分消融和超参数…

【万字详文介绍】:迭代扩张卷积神经网络(IDCNN)

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

Oracle OCP认证考试考点详解082系列12

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 56. 第56题: 题目 解析及答案: 关于企业管理器(EM)Express,以下哪两个陈述是…

任务:拟合曲面

3d 要拟合粗的蓝色曲面,剩下三条线是在3个平面的投影 1 2 3 4d

Python世界:自动化办公Word之批量替换文本生成副本

Python世界:自动化办公Word之批量替换文本生成副本 任务背景编码思路代码实现相关参考 任务背景 为提高办公效率,用python试手了一个word任务,要求如下: 给你一个基础word文档A,格式为docx,名字为&#xf…

如何检查雷池社区版 WAF 是否安装成功?

容器运行状态检查: 使用命令行检查:打开终端,连接到安装雷池的服务器。运行 docker ps 命令,查看是否有与雷池相关的容器正在运行。 如果能看到类似 safeline-mgt、safeline-tengine 等相关容器,并且状态为 Up&#x…

青少年编程能力等级测评CPA Python编程(一级)

青少年编程能力等级测评CPA Python编程(一级) (考试时间90分钟,满分100分) 一、单项选择题(共20题,每题3.5分,共70分) 下列语句的输出结果是( )。 print(35*2) A&a…

java学习2

一、什么是方法 方法(method)是程序中最小的执行单元 重复的代码、具有独立功能的代码可以抽取到方法中;提高代码的复用性和可维护性。 二、方法的格式 1.方法的格式定义: 最简单的方法定义 调用:playGame(); 带…

蓝牙资讯|苹果AirPods Pro 2推出听力测试、助听器和听力保护等功能

苹果推送iOS 18.1 系统版本更新,AirPods Pro 2 用户也在 iOS 18.1 中获得了强大的新功能。 运行固件 7B19 的 AirPods Pro 2 用户,搭配 iOS 18.1 系统的 iPhone,将获得三项强大的听力健康功能:听力测试、助听器和听力保护。 听力…

【学习日记】Anaconda的安装与使用-小白大学生

目录 日记说明 解压安装: 配置 使用 日记说明 作者是个大学生 这个专栏主要收集课时常用的软件 以及女朋友上课用的软件的教程 所有安装包可以私聊我获取 免费 提前清除已有python环境 windows11 Anaconda-2024.02 垃圾话: Anaconda 是全球领先的数…

内网项目,maven本地仓库离线打包,解决Cannot access central in offline mode?

背景&#xff1a; 内网项目打包&#xff0c;解决Cannot access central in offline mode? 1、修改maven配置文件&#xff1a; localRepository改为本地仓库位置 <localRepository>D:\WorkSpace\WorkSoft\maven-repository\iwhalecloud-repository\business</loca…

教你怎样搭建自动化测试框架?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近好多小伙伴都在说接口自动化测试&#xff0c;那么究竟什么是接口自动化测试呢&#xff1f;让我们一起往下看就知道了&#xff0c;首先我们得先弄清楚下面这…

反转链表.

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

数列分块入门

本期是数列分块入门。其中的大部分题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:here (其实是对之前分块的 blog 的整理补充) sto hzwer orz %%% [转载] ---------------------------------------------------------------------------------…

基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

苍穹外卖day-01

后端环境搭建 创建git仓库 提交代码 创建gitee远程仓库 开始连接远程仓库 运行sql文件&#xff0c;创建数据库。这里选取的可视化工具是navicat 编译一下项目 运行项目 登录的账号和密码在数据库中的emploee表中 退出前端界面登录后再重新登录&#xff0c;可以从后台清晰看到前…

【Docker故障处理】Ubuntu系统下tab键无法补全问题解决

【Docker故障处理】Ubuntu系统下tab键无法补全问题解决 一、环境介绍1.1 本地环境规划1.2 本次实践说明二、故障现象三、故障分析3.1 可能的原因3.2 排错思路四、故障处理4.1 安装bash-completion4.2 下载补全脚本4.3 配置永久生效五、测试tab键补全六、总结一、环境介绍 1.1 …