编码器和扩散模型
目录
- 摘要
- abstract
- 1.自动编码器
- 2.变分编码器(VAE)
- 3.论文阅读
- 3.1 介绍
- 3.2 方法
- 3.3 结论
- 4.总结
- 参考文献
摘要
本周学习了自动编码器(AE)和变分自动编码器(VAE)的基本原理与实现,分析其在数据降维、特征学习以及生成任务中的应用与局限性。自动编码器通过编码器和解码器结构,将复杂数据映射到低维潜在空间,再从潜在空间还原输入数据,但面临潜在空间表达模糊和对噪声敏感等问题。为解决这些问题,引入变分自动编码器(VAE),通过正则化潜在空间的分布,使得生成任务更为鲁棒和自然。此外,阅读并解读了《Enhancing Virtual Try-On with Synthetic Pairs and Error-Aware Noise Scheduling》一文,提出了结合合成数据与错误感知扩散的虚拟试穿方法,有效改善了生成图像的质量。实验表明,VITON-HD 和 DressCode-Upper 数据集上的增强数据与细化模型均能提升生成效果。
abstract
This week we studied the basic principles and implementation of AE and VAE, and analyzed their applications and limitations in data dimensionality reduction, feature learning, and generation tasks. Autoencoders map complex data to low-dimensional latent space through encoder and decoder structure, and then restore input data from latent space, but it faces problems such as fuzzy expression of latent space and sensitivity to noise. To solve these problems, variational autoencoders (VAE) are introduced to make the generation task more robust and natural by regularizing the distribution of potential Spaces. In addition, I have read and interpreted the paper “Enhancing Virtual Try-On with Synthetic Pairs and Error-Aware Noise Scheduling”, and proposed a virtual try-on method combining synthetic data and error-aware noise scheduling. Effectively improve the quality of the generated image. Experiments show that both the enhanced data and the refined model on VITON-HD and DressCode-Upper data sets can improve the generation effect.
1.自动编码器
思考:自动编码器如何将复杂数据转换为更简单、更有意义的的表示(称为潜空间)?
自动编码器是一种人工神经网络,用于学习数据的有效表示,用尽可能少的特征来描述非常大的数据。其基本架构是编码器(将输入数据压缩为潜在空间表示)、潜在空间(捕捉输入数据的基本特征)和解码器(将编码器和潜在空间产生的压缩表示重建输入数据)。
上述过程如何训练呢?
训练自动编码器的重点是最小化原始数据与其重建版本之间的差异,目标是提高解码器从压缩表示中准确重建原始数据的能力。通过对比两幅图片中像素均方误差来学习

上述过程中,潜在空间的维度决定了能够重建版本的关键参数。
自动编码器是最大优势也是它们最大的局限性:潜在空间,如果只依靠自动编码器的重构损失来组织潜在空间,我们通常会得到不是我们所希望的明确表示,如下图(将5D的数据在二维空间下的表示使得各手写数字的特征过于接近)从而影响了重建的效果。

另一个问题是如果在潜在空间中随机取两个点,预计中间点是那个两个点的混合,但在实际中,大多数中间点都毫无意义,如下如(所取值的0和6的插值为5,但是附近没有编码5)

最后一个问题就是,自动编码器也会学习许多不相关的特征,假设在输入中加入一点噪音,自动编码器无法重构原模型。

因此下面引入变分编码器(正则化自动编码器VAE)。
代码实现:
# 定义自动编码器模型
class Autoencoder(nn.Module):def __init__(self, input_dim, latent_dim):super(Autoencoder, self).__init__()# 编码器self.encoder = nn.Sequential(nn.Linear(input_dim, 128),nn.ReLU(),nn.Linear(128, latent_dim))# 解码器self.decoder = nn.Sequential(nn.Linear(latent_dim, 128),nn.ReLU(),nn.Linear(128, input_dim),nn.Sigmoid() # 假设输入是归一化数据)def forward(self, x):z = self.encoder(x)x_reconstructed = self.decoder(z)return x_reconstructed
2.变分编码器(VAE)
其目的是将输入有噪声的图片转换为干净的或者至少去除一部分噪声的图片。使用均方误差作为损失函数,同时减少自动编码器输出和干净图像之间的距离。
思考:降噪自动编码器真正学习到了什么?
其本质就是将噪声图像投影回流形的映射,不仅消除了噪声,还可以学习流形本身的结构(可以识别有意义图像的模式和特征)
使用数学模型来构建噪声模型所用到的公式:

用干净数据和噪声数据之间的MSE训练神经网络

使得上述噪声图像回归流形线中所使用到的公式:
f θ ( x ~ ) = x ~ + σ ∇ log p σ ( x ~ ) f_\theta(\tilde{x})=\tilde{x}+\sigma\nabla\log p_\sigma(\tilde{x}) fθ(x~)=x~+σ∇logpσ(x~)
f θ ( x ~ ) f_\theta(\tilde{x}) fθ(x~):表示根据当前模型参数 θ \theta θ,对输入噪声数据 t i l d e x tilde{x} tildex的修正函数, σ \sigma σ代表噪声强度,通常是与扩散过程中的时间步数相关的变量。 ∇ log p σ ( x ~ ) \nabla\log p_\sigma(\tilde{x}) ∇logpσ(x~)表示数据在噪声分布 l o g p σ log p_\sigma logpσ下的对数概率密度梯度,即“得分函数”,他描述了在噪声数据上,如何调整以上增加其概率密度。
代码实现:
# 定义VAE模型
class VariationalAutoencoder(nn.Module):def __init__(self, input_dim, latent_dim):super(VariationalAutoencoder, self).__init__()# 编码器self.encoder = nn.Sequential(nn.Linear(input_dim, 128),nn.ReLU())self.mu = nn.Linear(128, latent_dim) # 均值self.log_var = nn.Linear(128, latent_dim) # 方差的对数# 解码器self.decoder = nn.Sequential(nn.Linear(latent_dim, 128),nn.ReLU(),nn.Linear(128, input_dim),nn.Sigmoid() # 假设输入是归一化数据)def reparameterize(self, mu, log_var):std = torch.exp(0.5 * log_var)epsilon = torch.randn_like(std)return mu + epsilon * stddef forward(self, x):h = self.encoder(x)mu = self.mu(h)log_var = self.log_var(h)z = self.reparameterize(mu, log_var)x_reconstructed = self.decoder(z)return x_reconstructed, mu, log_var# 定义损失函数
def vae_loss(reconstructed, original, mu, log_var):reconstruction_loss = nn.MSELoss()(reconstructed, original)kl_divergence = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())return reconstruction_loss + kl_divergence
| 特性 | 自动编码器 (AE) | 变分自动编码器 (VAE) |
|---|---|---|
| 表示学习 | 确定性潜在表示 | 概率分布表示 |
| 损失函数 | 重建误差 | 重建误差 + KL散度 |
| 应用场景 | 数据压缩、降维 | 数据生成、概率建模 |
| 潜在空间采样 | 无法采样 | 可以从潜在空间采样生成新数据 |
3.论文阅读
3.1 介绍
给定一个标准产品视图中的孤立服装图像和一个单独的人物图像,虚拟试穿任务旨在生成穿着目标服装的人的新图像。先前的虚拟试穿工作在实现这一目标是面临两大挑战:
- 配对的(人类和服装)训练数据可用性有限;
- 生成与提示服装完美匹配的人体纹理很困难,通常会导致文本扭曲和纹理褪色。
《Enhancing Virtual Try-On with Synthetic Pairs and Error-Aware Noise Scheduling》这篇论文中探索结合通过数据合成和模型细化解决这些问题的方法。引入了一种服装提取模型,该模型可以从穿着衣服的个体的单个图像生成合成服装对。然后可以使用合成对来增强虚拟试穿的训练。论文还提出了一种基于错误感知细化的EARSB,它可以精确地针对局部生成错误来纠正基础虚拟试穿模型的输出。为了识别可能的错误,论文提出了一个弱监督错误分类器,它可以定位区域来进行细化,随后使用其置信度热图增强
Schrodinger Bridge 的噪声计划。在VITON-HD和DressCode-Upper上表明,合成数据增强了先前工作的性能,而EARSB提高了整体图像质量。

3.2 方法

基于细化的 EARSB 中的扩散过程。首先对输入图像进行预处理,然后使用基本试穿模型,该模型采用蒙面人体图像,其姿态表示P以及服装C作为输入,以生成初始人体图像x1.x1被输入到弱监督分类器WSC以获得误差图M.该图将噪声分布ϵ重新加权ϵr为I2SB扩散中,并将生成的误差图像x1细化为真是图像x0.
3.3 结论
本文提出了一种方法来解决虚拟试穿方面的先前研究的两个缺点。首先通过引入人衣模型来解决数据可用性有限的问题,该模型可以从穿着衣服的个体的单张图像生成(人衣、合成服装)对。其次提出了一个改进模型 EARSB,该模型可以精准地针对先前模型输出中的局部生成误差。EARSB 根据针对已知伪影的空间变化噪声计划改进了初始生成图像的低质量区域。在两个基准数据集上进行的实验表明合成数据增强提高了现有方法的性能,并且 EARSB 提高了先前模型生成的图像的质量。
4.总结
本周通过详细阐述 AE 和 VAE 的架构与实现,展示了它们在特征学习和生成任务中的重要作用。AE擅长处理降维和特征提取任务,但其潜在空间表达存在不确定性,限制了生成任务的能力。VAE通过概率建模与KL散度正则化(KL散度正则化相当于告诉模型:“你不仅需要学会重建数据,还要确保潜在空间的结构遵循某种有意义的分布(例如标准正态分布)。这样,就能利用这个潜在空间采样出新的数据,而不是只能还原训练集中的数据。”)克服了这些缺陷,在图像生成与数据建模中表现出更强的能力。在虚拟试穿领域,结合合成数据与基于扩散的 EARSB 模型,能够生成更高质量的虚拟试穿图像,解决了以往方法中数据有限和局部生成失真等问题。
参考文献
http://arxiv.org/abs/2501.04666v1
相关文章:
编码器和扩散模型
目录 摘要abstract1.自动编码器2.变分编码器(VAE)3.论文阅读3.1 介绍3.2 方法3.3 结论 4.总结参考文献 摘要 本周学习了自动编码器(AE)和变分自动编码器(VAE)的基本原理与实现,分析其在数据降维…...
PAT甲级-1024 Palindromic Number
题目 题目大意 一个非回文数,加上它的翻转数所得的和,进行k次,有可能会得到一个回文数。给出一个数n,限制相加次数为k次,如果小于k次就得到回文数,那么输出该回文数和相加的次数;如果进行k次还…...
FS8405 Release FS0B
复位场景:FS8405正常工作后,RSTB后期产生拉低复位信号。 1 故障与PGOOD、RSTB和FS0B引脚的联系 FS8405出现故障时,会对PGOOD、RSTB和FS0B引脚产生不同的影响,具体影响如下: 橙色标记,反应是不可配置的。…...
IGBT的损耗计算的学习【2025/1/24】
可以通过示波器实测IGBT电压电流波形,然后通过示波器的math功能将电压电流波形乘积后积分求损耗。 软开管:给了导通信号,但是电流并没有从此IGBT流过 IGBT(绝缘栅双极晶体管)的损耗主要分为 导通损耗 和 开关损耗 两部…...
Unity|小游戏复刻|见缝插针1(C#)
准备 创建Scenes场景,Scripts脚本,Prefabs预制体文件夹 修改背景颜色 选中Main Camera 找到背景 选择颜色,一种白中透黄的颜色 创建小球 将文件夹里的Circle拖入层级里 选中Circle,位置为左右居中,偏上&…...
No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置
删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的,很适合放在网格地图中 比如网格地图是宽10列,高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board&…...
SSM框架探秘:Spring 整合 SpringMVC 框架
搭建和测试 SpringMVC 的开发环境: web.xml 元素顺序: 在 web.xml 中配置 DisPatcherServlet 前端控制器: <!-- 配置前端控制器 --> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>…...
2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传
题目来源:buuctf BUU UPLOAD COURSE 1 1 目录 一、打开靶机,查看信息 二、解题思路 step 1:上传一句话木马.php文件康康回显 step 2:蚁剑连接 三、小结 一、打开靶机,查看信息 这里提示到了文件会被上传到./uplo…...
【架构面试】三、高可用高性能架构设计
高可用高性能架构设计 面试要点引入:架构原理、分布式技术等是面试必考领域,高可用高性能需求考察频繁。面试常通过询问系统架构设计来考察能力,讲解架构设计过程就是证明系统高可用的过程,其中涉及SLA指标。SLA指标详解 定义与衡…...
11.渲染管线——光栅化阶段
光栅化阶段是渲染管线中的一个关键步骤,负责将3D模型转换成屏幕上的2D像素。用通俗易懂的方式来解释: 通俗解释:光栅化就像把3D模型“投影”到2D屏幕上 想象你是一个画家,正在把3D场景画到2D画布上: 3D模型到2D屏幕的…...
【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...
二叉树的深度
二叉树深度的定义: 二叉树的深度(高度)是指从根节点到最远叶子节点的最长路径上的节点数。例如,一个只有根节点的二叉树,其深度为1;如果根节点有两个子节点,且每个子节点又分别有两个子节点&…...
MySQL命令及用法(精华版)
目录 DDL(数据定义语言) 数据库操作 表操作 DML(数据操作语言) DQL(数据查询语言) 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL(数据控制语言) 用户…...
R语言学习笔记之高效数据操作
一、概要 数据操作是R语言的一大优势,用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作,包括排序、更新、分组汇总等。R数据操作包:data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具,可以实现快…...
将 OneLake 数据索引到 Elasticsearch - 第二部分
作者:来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分,第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中,我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…...
Linux——冯 • 诺依曼体系结构
目录 一、冯•诺依曼体系结构原理二、内存提高冯•诺依曼体系结构效率的方法三、当用QQ和朋友聊天时数据的流动过程四、关于冯诺依曼五、总结 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 流程&#…...
Java进阶(一)
目录 一.Java注解 什么是注解? 内置注解 元注解 二.对象克隆 什么是对象克隆? 为什么用到对象克隆 三.浅克隆深克隆 一.Java注解 什么是注解? java中注解(Annotation)又称java标注,是一种特殊的注释。 可以添加在包,类&…...
appium自动化环境搭建
一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用,支持多种编程语言(python,java,Ruby,Javascript、PHP等) 原生应用和混合应用…...
Qt 5.14.2 学习记录 —— 이십 QFile和多线程
文章目录 1、QFile1、打开2、读写3、关闭4、程序5、其它功能 2、多线程1、演示2、锁 3、条件变量和信号量 1、QFile Qt有自己的一套文件体系,不过Qt也可以使用C,C,Linux的文件操作。使用Qt的文件体系和Qt自己的一些类型更好配合。 管理写入读…...
積分方程與簡單的泛函分析7.希爾伯特-施密特定理
1)def函數叫作"由核生成的(有源的)" 定义: 设 是定义在区域上的核函数。 对于函数,若存在函数使得, 则称函数是“由核生成的(有源的)”。 这里的直观理解是: 函数的“来源”可以通过核函数 与另一个函数的积分运算得到。 在积分方程理论中,这种表述常…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
