条件生成对抗网络(Conditional GAN, CGAN)原理及实现(pytorch版)

发布于:2025-04-07 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、CGAN 原理

1.1 基本概念

条件生成对抗网络(Conditional GAN, CGAN)是GAN的一种扩展,它在生成器和判别器中都加入了额外的条件信息 y y y这个条件信息可以是类别标签、文本描述或其他形式的辅助信息

1.2 与传统GAN的区别

  • 传统GAN: G ( z ) G(z) G(z) → 生成样本, D ( x ) D(x) D(x) → 判断真实/生成
  • CGAN: G ( z ∣ y ) G(z|y) G(zy) → 基于条件 y y y 生成样本, D ( x ∣ y ) D(x|y) D(xy) → 基于条件 y y y 判断真实/生成

1.3 目标函数

CGAN的目标函数可以表示为: m i n G m a x D V ( D , G ) = 𝔼 x ∼ p data [ l o g D ( x ∣ y ) ] + 𝔼 z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ∣ y ) ∣ y ) ) ] min_G max_D V(D,G) = 𝔼_{x \sim p_{\text{data}}}[log D(x|y)] + 𝔼_{z \sim p_z(z)}[log(1 - D(G(z|y)|y))] minGmaxDV(D,G)=Expdata[logD(xy)]+Ezpz(z)[log(1D(G(zy)y))],其中 y y y 是条件信息。

1.4 损失函数

(1) 判别器(Discriminator)的损失函数

  \space     \space  判别器需要同时判断:

  1. 真实图像是否真实(且匹配其标签)
  2. 生成图像是否虚假(且匹配其标签)

损失函数公式

L D = E x , y ∼ p data [ log ⁡ D ( x ∣ y ) ] ⏟ 真实样本损失 + E z ∼ p z , y ∼ p labels [ log ⁡ ( 1 − D ( G ( z ∣ y ) ∣ y ) ] ⏟ 生成样本损失 \mathcal{L}_D = \underbrace{\mathbb{E}_{x,y \sim p_{\text{data}}}[\log D(x|y)]}_{\text{真实样本损失}} + \underbrace{\mathbb{E}_{z \sim p_z, y \sim p_{\text{labels}}}[\log (1 - D(G(z|y)|y)]}_{\text{生成样本损失}} LD=真实样本损失 Ex,ypdata[logD(xy)]+


网站公告

今日签到

点亮在社区的每一天
去签到