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

生成对抗网络(Generative Adversarial Nets,GAN)

目录

基本概念介绍:

理论介绍与WGAN:

JS divergence 的问题:

生成器效能评估与条件式生成:

Cycle GAN:

一、核心思想

1. 无配对数据转换

2. 循环一致性(Cycle Consistency)

二、网络结构

1. 双生成器 + 双判别器

2. 损失函数

3. 可选扩展:身份损失(Identity Loss)

三、训练技巧与改进

四、应用场景

五、局限性


基本概念介绍:

之前的network只是一个函数,给一个输入,他给出一个输出。

现在的这个输入有一个随机的东西拼接,导致了同样的输入有多种可能的输出。

generator AND discriminator(发生器和鉴别器)

第一步:发生器生成一些图片,鉴别器用来鉴别这些图片的相似处。二者是对抗的关系。

第二步:

调节generator,使得discriminator的分数输出的越大越好。

第三步:反复执行

理论介绍与WGAN:

找一组generator的参数,使得G*最小。

一大堆的real data个generate data同时去train,训练的目标是找到一个discriminator的参数,看到real data就给高分,看到generate data就给低分。

JS divergence 的问题:

只要是Pg和Pdata不是很匹配,那么输出的值就一直是log2,但是实际上JS2是好于JS1的,但是我们的返回值是相同的,所以原来的系统就不知道哪个更好哪个更坏。

利用WGAN可以看出来哪个是更好的,哪个时更坏了。

生成器效能评估与条件式生成:

generator的好坏在很久之前都是通过人眼来判断的。

  • Inception Score (IS)

    • 原理:利用预训练的Inception-v3模型(在ImageNet上训练),假设高质量生成样本的类别预测应具有高置信度多样性

    • 公式:IS=exp⁡(Ex[KL(p(y∣x)∥p(y))])

      • p(y∣x):生成样本的类别概率分布。

      • p(y):所有生成样本的类别边缘分布。

    • 局限:依赖分类模型,对非自然图像(如抽象艺术)不敏感;无法检测模式崩溃。

  • Fréchet Inception Distance (FID)

    • 原理:计算真实数据与生成数据的特征分布之间的Fréchet距离(基于Inception-v3的特征空间)。

    • 公式

      FID=∥μr−μg∥2+Tr(Σr+Σg−2(ΣrΣg)1/2)
      • μr,μg​:真实和生成数据的特征均值。

      • Σr,Σg:协方差矩阵。

    • 优点:对模式崩溃敏感,数值越低表示生成质量越高。

  • Precision & Recall

    • 定义

      • Precision:生成样本中有多少与真实数据分布相似。

      • Recall:真实数据中有多少能被生成样本覆盖。

    • 实现:通过聚类或密度估计方法(如KNN)量化生成样本与真实数据的覆盖度。

Cycle GAN:

一、核心思想

1. 无配对数据转换
  • 传统条件GAN的局限
    条件式生成(如Pix2Pix)需输入-输出的成对数据(如街景图↔语义分割图),但许多场景难以获取配对数据(如梵高画作↔真实风景照片)。

  • CycleGAN的突破
    仅需两个域的非配对数据集(如“马”的图片集合和“斑马”的图片集合),即可学习域间的映射关系。

2. 循环一致性(Cycle Consistency)

通过强制双向转换的循环重构,确保转换后的图像保留原始内容:

  • 正向循环:X→GX→YY→GY→XX′≈XXGX→Y​​YGY→X​​X′≈X

  • 反向循环:Y→GY→XX→GX→YY′≈YYGY→X​​XGX→Y​​Y′≈Y

  • 目标:重构后的图像 X′X′ 和 Y′Y′ 应与原始图像 XX、YY 尽可能接近。


二、网络结构

1. 双生成器 + 双判别器
  • 生成器

    • GX→YGX→Y​: 将域 XX 的图像转换为域 YY。

    • GY→XGY→X​: 将域 YY 的图像转换为域 XX。

    • 结构:通常采用U-Net或ResNet,保留空间信息(如物体形状)。

  • 判别器

    • DXDX​: 判断图像是否属于域 XX。

    • DYDY​: 判断图像是否属于域 YY。

    • 结构:PatchGAN(局部感受野,提升细节真实性)。

2. 损失函数
  • 对抗损失(Adversarial Loss)
    确保生成图像与目标域分布一致(类似标准GAN)。

    Ladv(GX→Y,DY)=Ey∼Y[log⁡DY(y)]+Ex∼X[log⁡(1−DY(GX→Y(x)))]Ladv​(GX→Y​,DY​)=Ey∼Y​[logDY​(y)]+Ex∼X​[log(1−DY​(GX→Y​(x)))]

    (同理定义 Ladv(GY→X,DX)Ladv​(GY→X​,DX​))

  • 循环一致性损失(Cycle-Consistency Loss)
    强制双向转换可逆,通常使用L1损失:

    Lcycle=Ex∼X[∥GY→X(GX→Y(x))−x∥1]+Ey∼Y[∥GX→Y(GY→X(y))−y∥1]Lcycle​=Ex∼X​[∥GY→X​(GX→Y​(x))−x∥1​]+Ey∼Y​[∥GX→Y​(GY→X​(y))−y∥1​]
  • 总损失

    Ltotal=Ladv+λLcycleLtotal​=Ladv​+λLcycle​

    (λλ 通常设为10,平衡对抗损失与重构损失)

3. 可选扩展:身份损失(Identity Loss)

强制生成器对目标域图像保持恒等映射(如输入斑马图像到 GX→YGX→Y​,输出仍为斑马),增强颜色一致性:

Lidentity=Ey∼Y[∥GX→Y(y)−y∥1]+Ex∼X[∥GY→X(x)−x∥1]Lidentity​=Ey∼Y​[∥GX→Y​(y)−y∥1​]+Ex∼X​[∥GY→X​(x)−x∥1​]


三、训练技巧与改进

  1. 历史缓冲区(History Buffer)

    • 存储生成器的历史生成样本,用于判别器训练,缓解模式崩溃。

  2. 权重初始化

    • 使用He初始化或Xavier初始化,避免梯度消失。

  3. 学习率调整

    • 前100轮固定学习率,后续线性衰减至0。

  4. 改进变体

    • DualGAN:类似结构,但使用Wasserstein距离优化。

    • UNIT:结合VAE与CycleGAN,隐空间对齐提升转换效果。

    • MUNIT:支持多模态输出(同一输入生成多种风格)。


四、应用场景

  1. 风格迁移

    • 照片→艺术画风(如莫奈、梵高)、季节变换(夏→冬)。

  2. 医学图像处理

    • MRI→CT图像合成、病理切片染色风格迁移。

  3. 图像增强

    • 低分辨率→高分辨率、去雾、老照片修复。

  4. 跨域翻译

    • 卫星图→地图、素描→彩色图像、文本→场景生成。


五、局限性

  1. 内容保留与细节丢失

    • 复杂场景转换可能导致物体形变(如人脸→猫脸时五官错位)。

    • 改进:结合注意力机制(如Attention-GAN)。

  2. 多模态生成能力有限

    • 默认CycleGAN生成单一风格结果,MUNIT等变体支持多样性。

  3. 依赖数据分布

    • 若两域数据分布差异过大(如猫→汽车),转换可能失败。

http://www.xdnf.cn/news/198091.html

相关文章:

  • 知识付费平台推荐及对比介绍
  • Nacos源码—1.Nacos服务注册发现分析一
  • Coding Practice,48天强训(26)
  • 空间计算:开启人机交互新纪元的下一代技术范式
  • 安卓主题换肤功能
  • 安卓基础(强制转换)
  • 社交电商和泛娱乐平台出海南美市场支付方式与策略
  • ASP.NET MVC​ 入门指南四
  • 【quantity】3 Unit 物理量计算库(quantity.rs)
  • c语言的指针详解
  • js补环境工具使用技巧、补环境实例、重点环境检测点详解
  • Qt开发:XML文件的写入与读取
  • AI与机器人外科手术:如何用智能化技术提升手术精度与安全性?
  • 【android bluetooth 协议分析 06】【l2cap详解 10】【通过avdtp连接流程,感受l2cap通道的生命周期变化】
  • [JavaScript]对象关联风格与行为委托模式
  • WSL释放空间
  • ‌wangEditor 所有菜单项分类、说明及隐藏方法
  • Java项目场景题深度解析
  • Termux - Android终端应用与Linux环境
  • Java读Excel:解析阿里云easyExcel导入文件的行号
  • vmare pro安装报错用户在命令行上发出了EULAS_AGREED=1,表示不接受许可协议的错误解决方法
  • 高压开关柜局部放电信号分析系统
  • C/C++链表的常用操作实现
  • three.js后处理原理及源码分析
  • HTML5好看的水果蔬菜在线商城网站源码系列模板7
  • 文档在线协同工具ONLYOFFICE教程:如何使用宏突出显示具有特定提示文本的空文本字段
  • window 图形显示驱动-在 WDDM 1.2 中提供无缝状态转换(下)
  • 系统架构师2025年论文《论面向对象的软件设计——UML 在面向对象软件架构中的应用》
  • leetcode 876. 链表的中间结点
  • Python 实现的运筹优化系统数学建模详解(动态规划模型)