想用 pix2pix 做一个图片上色的项目。
论文:https://arxiv.org/abs/1611.07004
pix2pix 的创新点:
条件生成对抗网络(Conditional GAN,cGAN)通过向生成器和判别器引入额外条件信息(如标签或参考图像),实现了对生成内容的定向控制。
与传统GAN的无条件生成不同,cGAN在生成过程中利用输入条件建立与目标输出的显式映射关系,使其在图像到图像翻译任务中能够生成结构精准且符合语义的图像。
Pix2Pix框架将cGAN与像素级约束相结合,构建了双重优化目标:生成器通过最小化对抗损失来欺骗判别器,而判别器则通过最大化包含真实样本和生成样本的损失函数提升判别能力;同时引入加权L1损失,强制生成图像在像素空间与目标图像保持拓扑一致性。这种对抗损失与重建损失的联合优化机制(目标函数为)既保证了生成图像的真实性,又解决了单纯对抗训练导致的模糊问题。
实验表明,该方法在需要精确几何对应的任务(如建筑轮廓转实景图)中表现优异,但依赖严格配准的成对训练数据,且对复杂场景的多样性表达存在局限。
在传统基于CNN的图像生成任务中,损失函数的设计往往需要针对特定任务进行人工调优。例如,L2损失虽能衡量像素级差异,但其对高频纹理的欠敏感性常导致生成图像过度平滑;而SSIM、VGG感知损失等设计则依赖领域知识对特征空间进行显式约束。这种手工设计的损失函数不仅耗时费力,且难以泛化到不同任务中。
cGAN通过对抗训练机制实现了损失函数的自动学习:判别器隐式构建了一个动态特征空间,将输入条件(如边缘图)与目标图像之间的复杂映射关系编码为判别边界。生成器的对抗损失本质上是在最小化生成图像与真实数据在该特征空间中的分布差异,而非简单的像素值差异。这种基于对抗学习的隐式度量具有以下优势:
在Pix2Pix框架中,对抗损失与L1损失的结合进一步平衡了全局结构约束与局部细节生成——L1确保输入输出的几何一致性,对抗损失则专注于纹理真实性的提升。这种设计使cGAN摆脱了传统方法对任务定制损失函数的依赖,显著简化了模型开发流程。
PatchGAN判别器的局部感知机制
在Pix2Pix框架中,PatchGAN通过将判别器设计为局部感受野的卷积网络,实现了对图像高频细节的精准建模。与传统GAN判别器全局分类不同,PatchGAN以滑动窗口形式遍历图像的NxN局部区域(如70×70或1×1像素),在每个图像块上独立判断其真实性。这种局部判别策略的核心优势在于:一方面通过限制感受野增强对边缘、纹理等细节的敏感度,另一方面显著降低参数量以提升训练效率。数学上,其对抗损失函数可表示为:
其中判别器输出的并非单一真假概率,而是对应输入图像块的响应图(每个位置代表对应区域的判别结果)。当N取值增大时(如N→∞),判别器趋向全局判断模式;而N=1时则退化为像素级约束,仅关注颜色分布一致性。实验表明,采用中等尺寸(如70×70)局部块的PatchGAN能在保留语义结构的同时,有效抑制生成图像的局部伪影,尤其适用于图像修复、风格迁移等需要精细纹理重建的任务。
PatchGAN 的判别器本质上是一种全卷积网络(Fully Convolutional Network, FCN),出来的是一个map图,比如30 x 30 的特征图,特征图上的一个像素点起始就是原始图的一块(Patch)像素经历计算后的概率值。
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!