当前位置: 首页 > news >正文

AE、VAE与GAN简明指南:三大生成模型对比

AE、VAE与GAN简明指南:三大生成模型对比

1. 核心概念一句话总结

模型核心思想一句话理解
AE压缩-还原把图片压成向量,再还原,像zip压缩
VAE压缩+随机性AE加噪声,让向量有概率意义
GAN造假-识别两个网络打架,越打越真

2. 模型结构对比

2.1 AE结构(最简单)

输入图片 → [编码器] → 隐向量z → [解码器] → 还原图片

在这里插入图片描述

特点

  • 隐向量是确定的(无随机性)
  • 训练目标:输入输出尽可能像
  • 隐空间可能不连续

2.2 VAE结构(AE升级版)

输入图片 → [编码器] → μ+σ → [采样] → 隐向量z → [解码器] → 生成图片

在这里插入图片描述

特点

  • 隐向量是概率分布(有随机性)
  • 训练目标:输入输出像 + 隐向量接近正态分布
  • 隐空间连续,可插值

2.3 GAN结构(完全不同)

噪声z → [生成器] → 假图片 → [判别器] → 真/假
真实图片 → [判别器] → 真/假

在这里插入图片描述

特点

  • 无编码器,直接从噪声生成
  • 对抗训练,生成器vs判别器
  • 生成质量最高,但训练不稳定

3. 训练与推理流程

3.1 AE训练流程

训练

  1. 输入图片x
  2. 编码器得到隐向量z
  3. 解码器得到重构图片x̂
  4. 计算MSE损失:||x - x̂||²
  5. 反向传播

推理

# 只能还原训练过的图片
reconstructed = ae(original_image)# 无法生成新图片(隐空间不连续)

3.2 VAE训练流程

训练

  1. 输入图片x
  2. 编码器输出μ和σ
  3. 从N(μ,σ)采样得到z
  4. 解码器得到生成图片x̂
  5. 计算损失:重构误差 + KL散度

推理

# 生成新图片(采样隐向量)
z = torch.randn(1, 100)
new_image = vae.decode(z)# 插值生成(隐空间连续)
z1 = vae.encode(image1)
z2 = vae.encode(image2)
interp_image = vae.decode(0.5*z1 + 0.5*z2)

3.3 GAN训练流程

训练

  1. 训练判别器
    • 真实图片 → 输出1
    • 生成假图片 → 输出0
  2. 训练生成器
    • 生成假图片 → 让判别器输出1
  3. 交替训练

推理

# 直接生成新图片
noise = torch.randn(1, 100)
new_image = generator(noise)

4. 损失函数对比

模型损失函数优化目标
AEMSE损失输入输出尽可能像
VAEMSE + KL散度输入输出像 + 隐向量正态分布
GAN对抗损失生成器骗过判别器

5. 实际应用对比

5.1 AE应用场景

应用实现方式局限性
图像压缩隐向量就是压缩码压缩率有限
特征提取用隐向量做下游任务特征可能不够好
去噪训练有噪声→无噪声只能去训练过的噪声

5.2 VAE应用场景

应用实现方式优势
人脸生成在隐空间插值平滑过渡
数据增强采样生成新样本多样性高
异常检测重构误差大的为异常无需异常样本

5.3 GAN应用场景

应用实现方式优势
艺术创作StyleGAN等质量最高
图像修复条件GAN逼真细节
风格迁移CycleGAN无需配对数据

6. 选择建议

6.1 按需求选择

需求推荐模型理由
快速原型AE最简单,易实现
稳定生成VAE训练稳定,可解释
最高质量GAN生成效果最佳
特征提取AE/VAE有编码器
数据增强VAE隐空间连续

6.2 按经验选择

  • 新手:先AE,再VAE,最后GAN
  • 研究:VAE理论清晰,GAN效果好
  • 工业:GAN质量优先,VAE稳定性优先

7. 一句话总结

  • AE:最简单的压缩还原,像zip文件
  • VAE:AE加随机性,可以生成新图片
  • GAN:对抗训练,质量最高但最难调

参考:
1、Autoencoders
2、Generative Adversarial Networks

http://www.lryc.cn/news/603967.html

相关文章:

  • 【LoRA微调】采用Lora微调时,假设设置的rank值为8,那么在微调时只会调整秩在8以下的矩阵还是只会调整秩等于8的矩阵
  • PaaS和SaaS的区别
  • JVM知识点(1)
  • 自定义View和动画学习记录 抓娃娃机View
  • 高端医疗超声AFE模拟前端应用
  • 网络安全运维面试准备
  • 背包进一步(多重背包、混合背包)
  • jvm冷门知识十讲
  • Arduino声控RGB矩阵音乐节奏灯DIY全攻略
  • Nuxt3 全栈作品【通用信息管理系统】菜单管理
  • 比肩 7B 表现!Ovis-U1-3B 集多模态理解、图像生成与编辑于一体
  • 《嵌入式C语言笔记(十五):字符串操作与多维指针深度解析》
  • Go进阶:流程控制(if/for/switch)与数组切片
  • ORACLE的用户维护与权限操作
  • 火山方舟使用豆包基模 —— 基础流程
  • 什么是ios企业签名?
  • ROUGE-WE:词向量化革新的文本生成评估框架
  • H.264视频的RTP有效载荷格式(翻译自:RFC6184 第5节 RTP有效载荷格式)
  • 自然语言处理NLP(3)
  • 烟草复杂包装识别准确率↑31%!陌讯多模态SKU检测算法在零售终端的实战解析
  • CMake 完全实战指南:从入门到精通
  • MySQL的JDBC编程
  • Seq2Seq学习笔记
  • 【绘制图像轮廓】——图像预处理(OpenCV)
  • idea运行tomcat日志乱码问题
  • CentOS安装ffmpeg并转码视频为mp4
  • 编程算法在金融、医疗、教育、制造业等领域的落地案例
  • 单片机(STM32-WIFI模块)
  • windows电脑如何截屏 windows电脑截屏教程汇总
  • 【机器学习深度学习】DeepSpeed框架:高效分布式训练的开源利器