浅析扩散模型与图像生成【应用篇】(二)——ADM

2. Diffusion Models Beat GANs on Image Synthesis

  该文基于扩散模型主要做了两方面的工作:一是通过多种方式优化改进了UNet网络结构以提升扩散模型的生成效果;二是提出一种类别引导的条件生成方法,通过在多个数据集上的实验结果表明,改进后的扩散模型无论在无条件生成还是条件生成任务中都取得了媲美甚至超过GAN的性能。
  首先,在网络结构方面作者尝试了以下几种改进:1. 增加网络的深度,同时降低每层卷积的通道数,以保持网络的规模不变;2.增加注意力头的数量;3.在多个分辨率条件下使用注意力层;4.使用BigGAN中的残差块用于上采样和下采样;5.对残差链接的特征图进行放缩。经过一系列的消融实验,作者发现除了第5个改进点,其他的改进方案都能一定地提升模型的生成能力,实验结果如下表所示。
在这里插入图片描述
  除了上述改进,作者还实验了一种称为自适应组规范化(Adaptive Group Normalization, AdaGN)的方法,可以将时间步数和类别信息嵌入到每个残差块中,实现方式如下 A d a G N ( h , y ) = y s G r o u p N o r m ( h ) + y b AdaGN(h,y)=y_sGroupNorm(h)+y_b AdaGN(h,y)=ysGroupNorm(h)+yb其中 y = [ y s , y b ] y=[y_s,y_b] y=[ys,yb] y s y_s ys y b y_b yb分别由时间步数和类别嵌入经过一个线性层映射得到, G r o u p N o r m ( ⋅ ) GroupNorm(\cdot) GroupNorm()表示组规范化层, h h h表示残差块中第一个卷积层输出的特征图。作者实验结果表明,AdaGN能够有效提升样本生成的效果。
  此外,作者研究了如何将类别条件引入到扩散模型中,实现类别引导的条件样本生成。其实上文中提到的AdaGN已经可以将类别信息引入到网络模型中了,除此之外,作者又提出一种不同的方式:利用一个分类器 p ( y ∣ x ) p(y|x) p(yx)来改善扩散生成器。具体而言,利用带有噪声的图像 x t x_t xt训练一个分类器 p ϕ ( y ∣ x t , t ) p_{\phi}(y|x_t,t) pϕ(yxt,t),并使用对数梯度 ∇ x t log ⁡ p ϕ ( y ∣ x t , t ) \nabla_{x_t}\log{p_{\phi}(y|x_t,t)} xtlogpϕ(yxt,t)来引导采样过程,对于DDPM和DDIM其实现过程分别如算法1和2所示
在这里插入图片描述
  其中的梯度放大系数 s s s控制着生成样本的保真度和多样性,放大系数越大则生成的样本质量越高,保真度越强,但是多样性也会随之下降。如下图所示,由于FID和sFID综合考量了生成样本的保真度和多样性指标(数值越低越好),因此其随着 s s s的增大是先下降再上升的。而IS指标只关注样本生成的保真度(越大越好),因此随着 s s s的增加是逐渐增大的。随着 s s s的增加,Precision和Recall分别增长和降低,但Precision增长到一定上限后,不再继续提升了。
在这里插入图片描述
  最后,作者在LSUN和ImageNet两个数据集上,将本文改进的方法ADM与其他基于扩散模型的方法和基于GAN的方法进行了比较,其对比结果如下
在这里插入图片描述
  可以看到在多个数据集的多个指标上ADM都取得了不错的结果,尤其是在FID这项指标上,ADM在所有数据集上均取得了最优的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板初阶的补充和string一些函数的用法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 模板初阶的补充 一、C语言中的字符串 二、标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明(注意下面我只讲解最常用的接口&…

微服务day02-Ribbon负载均衡与Nacos安装与入门

一.Ribbon负载均衡 在上一节中,我们通过在RestTemplte实例中加上了注解 LoadBalanced,表示将来由RestTemplate发起的请求会被Ribbon拦截和处理,实现了访问服务时的负载均衡,那么他是如何实现的呢? 1.1 Ribbon负载均衡的原理 Rib…

【C++初识】语句

文章目录 1.注释 变量 常量 关键字 标识符命名规则 数据类型 sizeof关键字 数据的输入 运算符2.程序流程结构2.1选择结构2.2循环结构2.21while{循环条件}{循环语句};//满足循环条件,执行循环语句2.22do{循环语句}while{循环条件};//do....whi…

今年面试潮,说实话这个开发岗能不能冲?

自打华为 2019 年发布鸿蒙操作系统以来,网上各种声音百家争鸣。尤其是 2023 年发布会公布的鸿蒙 4.0 宣称不再支持 Android,更激烈的讨论随之而来。 当下移动端两大巨头瓜分了绝大部分市场: iOS 是闭源的,只有唯一的一家厂商&am…

DVWA 靶场 SQL 注入报错 Illegal mix of collations for operation ‘UNION‘ 的解决方案

在 dvwa 靶场进行联合 SQL 注入时,遇到报错 Illegal mix of collations for operation UNION 报错如下图: 解决办法: 找到文件 MySQL.php 大致位置在 \dvwa\includes\DBMS 目录下 使用编辑器打开 检索 $create_db 第一个就是 在 {$_DVW…

【Linux系统化学习】信号的保存

目录 阻塞信号 信号处理常见方式概览 信号的其他相关概念 在内核中的表示 sigset_t 信号集操作函数 sigprocmask函数 sigpending函数 信号的捕捉 内核如何实现信号的捕捉 sigaction函数 可重入函数 volatile 阻塞信号 信号处理常见方式概览 当信号来临时&#x…

【VTKExamples::PolyData】第四十一期 PointLocator

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例PointLocator,并解析接口vtkPointLocator,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. PointLocator …

使用 MongoDB Atlas 无服务器实例更高效地开发应用程序

使用 MongoDB Atlas无服务器实例更高效地开发应用程序 身为开发者,数据库并不一定需要您来操心。您可不想耗费时间来预配置集群或调整集群大小。同样地,您也不想操心因未能正确扩展而导致经费超标。 MongoDB Atlas 可为您提供多个数据库部署选项。虽然…

JAVA SE 2.基本语法

1.Java的基本语法 1.基本格式 // 类的修饰包括:public,abstract,final 修饰符 class 类名{程序代码 } 例: public class Test{public static void main(String[] args){System.out.println("hello " "world");} }语法说明…

1950-2022年各省逐年平均降水量数据

1950-2022年各省逐年平均降水量数据 1、时间:1950-2022年 2、指标:省逐年平均降水量 3、范围:33省(不含澳门) 4、指标解释:逐年平均降水数据是指当年的日降水量的年平均值,不是累计值&#…

【Django】执行查询—跨关系查询中的跨多值关联问题

跨多值查询 跨越 ManyToManyField 或反查 ForeignKey (例如从 Blog 到 Entry )时,对多个属性进行过滤会产生这样的问题:是否要求每个属性都在同一个相关对象中重合。 filter() 先看filter(),通过一个例子看&#xf…

web组态(BY组态)接入流程

技术文档 官网网站:www.hcy-soft.com 体验地址: www.byzt.net:60/sm 一、数据流向图及嵌入原理 数据流向 嵌入原理 二、编辑器调用业务流程图 三、集成前需要了解的 1、后台Websocket端往前台监控画面端传输数据规则 后台websocket向客户端监控画面…