生成对抗网络(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→YYGY→XX′≈X
-
反向循环:Y→GY→XX→GX→YY′≈YYGY→XXGX→YY′≈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):
Ladv(GX→Y,DY)=Ey∼Y[logDY(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)))]
确保生成图像与目标域分布一致(类似标准GAN)。(同理定义 Ladv(GY→X,DX)Ladv(GY→X,DX))
-
循环一致性损失(Cycle-Consistency Loss):
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]
强制双向转换可逆,通常使用L1损失: -
总损失:
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]
三、训练技巧与改进
-
历史缓冲区(History Buffer)
-
存储生成器的历史生成样本,用于判别器训练,缓解模式崩溃。
-
-
权重初始化
-
使用He初始化或Xavier初始化,避免梯度消失。
-
-
学习率调整
-
前100轮固定学习率,后续线性衰减至0。
-
-
改进变体
-
DualGAN:类似结构,但使用Wasserstein距离优化。
-
UNIT:结合VAE与CycleGAN,隐空间对齐提升转换效果。
-
MUNIT:支持多模态输出(同一输入生成多种风格)。
-
四、应用场景
-
风格迁移
-
照片→艺术画风(如莫奈、梵高)、季节变换(夏→冬)。
-
-
医学图像处理
-
MRI→CT图像合成、病理切片染色风格迁移。
-
-
图像增强
-
低分辨率→高分辨率、去雾、老照片修复。
-
-
跨域翻译
-
卫星图→地图、素描→彩色图像、文本→场景生成。
-
五、局限性
-
内容保留与细节丢失
-
复杂场景转换可能导致物体形变(如人脸→猫脸时五官错位)。
-
改进:结合注意力机制(如Attention-GAN)。
-
-
多模态生成能力有限
-
默认CycleGAN生成单一风格结果,MUNIT等变体支持多样性。
-
-
依赖数据分布
-
若两域数据分布差异过大(如猫→汽车),转换可能失败。
-