浅析扩散模型与图像生成【应用篇】(二)——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.rhkb.cn/news/266191.html

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

相关文章

NerfStudio安装及第一个场景重建

NerfStudio文档是写在windows和linux上安装,本文记录Linux安装的过程,且我的cuda是11.7 创建环境 conda create --name nerfstudio -y python3.8 conda activate nerfstudio python -m pip install --upgrade pip Pytorch要求2.0.1之后的,文档推荐cud…

【论文阅读】深度学习在过冷沸腾气泡动力学分割中的应用

Application of deep learning for segmentation of bubble dynamics in subcooled boiling 深度学习在过冷沸腾气泡动力学分割中的应用 期刊信息:International Journal of Multiphase Flow 2023 级别:EI检索 SCI升级版工程技术2区 SCI基础版工程技术3区…

代码随想录刷题笔记-Day25

1. 分割回文串 131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xf…

Pytorch学习 day01(Jupyter安装

Jupyter 安装过程中遇到的问题: Anaconda的base环境会自动安装Jupyter,但是如果我们要在其他环境中安装Jupyter,就需要注意,该环境的python版本不能高于3.11,且用以下代码安装: conda install nb_conda_…

部署PhotoMaker通过堆叠 ID 嵌入自定义逼真的人物照片

PhotoMaker只需要一张人脸照片就可以生成不同风格的人物照片,可以快速出图,无需额外的LoRA培训。 安装环境 python 3.10gitVisual Studio 2022 安装依赖库 git clone https://github.com/bmaltais/PhotoMaker.git cd PhotoMaker python -m venv venv…

lv19 多态 4

1 虚函数 虚函数&#xff08; 基类指针可指向派生类对象&#xff0c; 动态联编&#xff09; 先看示例&#xff0c;不加virtual&#xff0c;不认对象认指针。 #include <iostream>using namespace std;class A{ public:A(){ }~A(){ }void show(){cout<<"AAA…

江科大stm32学习笔记——【5-2】对射式红外传感器计次旋转编码计次

一.对射式红外传感器计次 1.原理 2.硬件连接 3.程序 CountSensor.c: #include "stm32f10x.h" // Device header #include "Delay.h"uint16_t CountSensor_Count;void CountSensor_Init(void) {//配置RCC时钟&#xff1a;RCC_APB2Perip…

OpenAI Triton 入门教程

文章目录 Triton 简介背景Triton 与 CUDA 的关系 Triton 开发样例样例一&#xff1a;Triton vector addition 算子Triton kernel 实现kernel 函数封装函数调用性能测试 样例二&#xff1a;融合 Softmax 算子动机Triton kernel 实现kernel 封装单元测试性能测试 样例三&#xff…

【知识整理】Git Commit Message 规范

一. 概述 前面咱们整理过 Code Review 一文&#xff0c;提到了 Review 的重要性&#xff0c;已经同过gitlab进行CodeReview 的方式&#xff0c;那么本文详细说明一下对CodeReivew非常重要的Git Commit Message 规范。 我们在每次提交代码时&#xff0c;都需要编写 Commit Mes…

会声会影2024出来了吗?

近年来&#xff0c;随着人们对于娱乐和创意的需求不断增长&#xff0c;视频编辑软件也越来越受到大众的关注。其中&#xff0c;会声会影是一款备受欢迎的视频编辑软件&#xff0c;许多用户都在关注其新版本——会声会影2024。 然而&#xff0c;目前并没有官方宣布会声会影2024的…

如何制作一款建材商城微信小程序

现在&#xff0c;微信小程序已经成为了很多企业和商家开展线上业务的重要渠道之一。对于建材商城而言&#xff0c;制作一款专属的微信小程序可以帮助企业更好地展示产品、提供服务&#xff0c;并增加销售额。下面将介绍如何制作一款建材商城微信小程序。 首先&#xff0c;登录【…

C#,动态规划(DP)金矿问题(Gold Mine Problem)的算法与源代码

1 金矿问题&#xff08;Gold Mine Problem&#xff09; 给定一个N*M尺寸的金矿&#xff0c;每个点都有一个非负数表示当前点所含的黄金数目&#xff0c;最开始矿工位于第一列&#xff0c;但是可以位于任意行。矿工只能向右&#xff0c;右上&#xff0c;右下三个方向移动。问该…

solidity编程

一.Solidity 简介 Solidity 是⼀种⽤于编写以太坊虚拟机&#xff08; EVM &#xff09;智能合约的 编程语⾔。我认为掌握 Solidity 是参与链上项⽬的必备技 能&#xff1a;区块链项⽬⼤部分是开源的&#xff0c;如果你能读懂代码&#xff0c;就可以 规避很多亏钱项⽬。…

javaweb学习(day04-XML)

一、介绍 1 官方文档 地址: https://www.w3school.com.cn/xml/index.asp 2 为什么需要 XML 需求 1 : 两个程序间进行数据通信需求 2 : 给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去读取它应当监听的端口号、还有连接数据库的用户名…

php基础学习之错误处理(其一)

一&#xff0c;错误处理的概念 错误处理指的是系统(或者用户)在执行某些代码的时候&#xff0c;发现有错误&#xff0c;就会通过错误处理的形式告知程序员&#xff0c;俗称报错 二&#xff0c;错误分类 语法错误&#xff1a;书写的代码不符合 PHP 的语法规范&#xff0c;语法错…

Qt Android sdk配置报错解决

使用的jdk8总是失败&#xff0c;报错command tools run以及platform sdk等问题。后来主要是设置jdk版本为17&#xff0c;就配置生效了。Android sdk路径可以选用Android Studio自带的&#xff0c;但是也要在Qt中点击“设置SDK”按钮做必要的下载更新等。 编译器这里会自动检测到…

ODOO12设置收发邮件服务器教程

一、设置-技术 二、设置–技术–发件服务器 信息填写完整后&#xff0c;点击‘测试连接’&#xff0c;若提示成功&#xff0c;则发件服务器设置成功。 三、设置–技术–收件服务器 四、设置–参数–系统参数 修改之前的email系统参数&#xff1a; mail.catchall.alias: 收件服…

300分钟吃透分布式缓存(拉钩教育总结)

开篇寄语 开篇寄语&#xff1a;缓存&#xff0c;你真的用对了吗&#xff1f; 你好&#xff0c;我是你的缓存老师陈波&#xff0c;可能大家对我的网名 fishermen 会更熟悉。 我是资深老码农一枚&#xff0c;经历了新浪微博从起步到当前月活数亿用户的大型互联网系统的技术演进…

代码随想录算法训练营 Day29 | LeetCode491.递增子序列、LeetCode46.全排列、LeetCode47.全排列 II

LeetCode491.递增子序列 该题强调与之前的题目的不同在于给的数组顺序不能变换&#xff0c;这就导致了不能用used数组判断与前一个元素是否相同的方法进行去重的操作&#xff0c;因此该题加入了一个set&#xff0c;不和前一个元素比&#xff0c;而是判断之前有没有处理过这个值…

网工内推 | 项目经理,软考证书优先,最高26K,加班补贴

01 龙盈智达 招聘岗位&#xff1a;项目经理 职责描述&#xff1a; 1 根据业务员需求&#xff0c;完成生态圈下账簿中心系统的开发管理工作。 2 负责账簿中心实施过程中的需求调研分析、方案设计、开发测试、系统上线等工作的计划、组织协调、沟通等方面管理工作。 3 完成系统核…