CycleGAN:架构与实现教程
1. CycleGAN架构概述
CycleGAN直接基于CGAN架构构建,本质上是两个CGAN连接在一起,也可以看作是一个自动编码器。在CycleGAN中,有图像域A和图像域B,图像a属于域A,图像b属于域B,$\hat{a}$ 是重建后的域A图像。
与传统自动编码器不同的是,CycleGAN的潜在空间具有同等维度,并且是另一个有意义的域(域B)。同时,CycleGAN引入了对抗损失,这是一个活跃的研究领域。
CycleGAN有以下几种损失:
| 损失类型 | 计算方式 | 衡量内容 | 确保目标 |
| — | — | — | — |
| 循环一致性损失(前向传播) | $\vert\vert\hat{a} - a\vert\vert_1$ | 原始域A图像与两次翻译后图像的差异 | 原始图像和两次翻译后的图像相同,保证A - B - A映射的连贯性 |
| 循环一致性损失(反向传播) | $\vert\vert\hat{b} - b\vert\vert_1$ | 原始域B图像与两次翻译后图像的差异 | 原始图像和两次翻译后的图像相同,保证B - A - B映射的连贯性 |
| 总体损失 | $L = L_{GAN}(G, D_B, A, B) + L_{GAN}(F, D_A, B, A) + \lambda L_{cyc}(G, F)$ | 四种损失的组合(两个生成器的对抗损失和循环损失) | 整体翻译具有真实感且有意义 |
| 身份损失 | $L_{identity} = E_{a\sim p(a)}[\vert\vert G_{BA}(a) - a\vert\vert] + E