G5打卡——Pix2Pix算法
- 🍨 本文为🔗365天深度学习训练营中的学习记录博客
- 🍖 原作者:K同学啊
Pix2Pix 是一种基于条件生成对抗网络(cGANs)的图像到图像翻译算法,由 Phillip Isola 等人在 2016 年提出。该算法的核心思想是将输入图像作为条件信息,通过生成器和判别器的对抗训练,将输入图像转换为目标图像。Pix2Pix 的典型应用场景包括从语义分割图生成真实图像、从边缘图生成照片、从黑白图像生成彩色图像等。
核心思想
Pix2Pix 的基本思想是使用一个条件生成对抗网络(Conditional GAN),其中生成器(Generator)以输入图像为条件生成目标图像,判别器(Discriminator)则判断生成的图像是否与目标图像相似。
生成器(Generator)
- Pix2Pix 中的生成器采用的是 U-Net 架构。
- U-Net 包含编码器和解码器两部分:
- 编码器:逐步提取图像特征,降低分辨率。
- 解码器:逐步恢复图像细节,提高分辨率。
- U-Net 还引入了跳跃连接(skip connections),将编码器的特征直接传递给解码器的对应层,帮助保留图像的结构信息。
判别器(Discriminator)
- 判别器采用 PatchGAN 结构,其输出是一个二维矩阵,表示图像中每个局部区域的真实性。
- PatchGAN 不会评估整张图像的真实性,而是关注局部纹理和结构,使得生成的图像在局部上更逼真。
损失函数
Pix2Pix 使用两种损失函数来优化模型:
-
对抗损失(Adversarial Loss):
- 使用 LSGAN(Least Squares GAN)的损失函数,减少生成图像中的模糊问题。
- 公式:
Ladv=1N∑i=1N(D(xi,yi)−1)2+1N∑i=1N(D(xi,G(xi)))2Ladv=N1i=1∑N(D(xi,yi)−1)2+N1i=1∑N(D(xi,G(xi)))2
其中 DD 是判别器,GG 是生成器,xixi 是输入图像,yiyi 是目标图像。
-
L1 损失(Pixel-wise Loss):
- 强制生成的图像与目标图像在像素级别上接近。
- 公式:
LL1=1N∑i=1N∥yi−G(xi)∥1LL1=N1i=1∑N∥yi−G(xi)∥1
-
总损失:
- 总损失是上述两种损失的加权和:
Ltotal=λ⋅Ladv+LL1Ltotal=λ⋅Ladv+LL1
其中 λλ 是超参数,用于平衡对抗损失和 L1 损失。
- 总损失是上述两种损失的加权和:
生成器网络结构:
运行结果图:
总结:
Pix2Pix 算法总结
1. 核心思想
Pix2Pix 基于 条件生成对抗网络(cGAN),通过生成器(Generator)和判别器(Discriminator)的对抗训练,实现 图像到图像的翻译。
- 生成器:以输入图像为条件,生成目标图像(如边缘图→照片)。
- 判别器:判断生成图像与目标图像的相似性,推动生成器逼近真实图像分布。
2. 生成器架构(U-Net)
- 编码器(Encoder):逐步提取特征,降低分辨率(如
UNetDown(3, 64)
→UNetDown(512, 512)
)。 - 解码器(Decoder):逐步恢复图像细节,提高分辨率(如
UNetUp(512, 512)
→UNetUp(256, 64)
)。 - 跳跃连接(Skip Connections):将编码器的特征图与解码器对应层拼接,保留图像结构信息。
- 最终输出层:使用
Upsample + Conv2d + Tanh
生成目标图像。
3. 判别器架构(PatchGAN)
-
- 局部真实性判断:输出二维矩阵,评估图像中每个局部区域的真实性(而非整张图像)。
- 优势:关注局部纹理和结构,提升生成图像的逼真度。