pytorch-CycleGAN-and-pix2pix
PyTorch实现的CycleGAN和pix2pix图像翻译框架,支持配对/非配对图像转换,含25K+Star
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch实现的CycleGAN和pix2pix图像翻译框架,支持配对/非配对图像转换,含25K+Star
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你随手画了一幅简笔画——一匹马的轮廓,AI就能把它变成一张栩栩如生的斑马照片;你拍了一张夏天Yosemite的风景照,AI能在保留构图的同时,把阳光明媚的夏景翻译成雾凇遍野的冬日仙境。这不是PS,也不是滤镜,而是深度学习中一个叫做图像到图像翻译(Image-to-Image Translation)的技术领域,而 pytorch-CycleGAN-and-pix2pix 正是这个领域最具代表性的开源实现之一。

图1:CycleGAN 经典案例——马变斑马.gif,图片来源:项目仓库
这个项目的核心是两篇影响力深远的学术论文。pix2pix(2017)来自UC Berkeley的Isola等人,首次提出用条件生成对抗网络(cGAN)解决配对图像翻译问题——也就是说,当你有成对的训练数据时(比如建筑草图配实景图),pix2pix能学会它们之间的映射关系。紧接着,CycleGAN(同年ICCV)突破了最大的限制:不再需要配对数据,仅凭两组各自独立的图像集合(比如说一堆马的照片加上一堆斑马的照片),就能让AI学会"马"和"斑马"之间的跨域翻译。
这两个工作的代码最初由UC Berkeley团队用 Lua/Torch 实现,在学术圈已广泛使用。PyTorch 版本由Jun-Yan Zhu和Taesung Park等人维护,将这些经典算法迁移到更现代的深度学习框架中,并持续更新以支持最新版本的Python和PyTorch。截至2025年,代码库已支持Python 3.11、PyTorch 2.4以及DDP分布式多卡训练,保持着极高的工程活跃度。

图2:CycleGAN 论文首页效果展示,左为原图,右为翻译后结果,图片来源:CycleGAN 官网
pix2pix采用条件GAN架构,训练时需要成对的数据集——每张输入图片都有对应的真实输出图片作为"标准答案"。这种模式的优势在于翻译精度高、细节保留好,适合有明确标注数据的任务。
项目内置支持的经典任务包括:
pix2pix使用U-Net作为生成器骨干,PatchGAN作为判别器。U-Net通过跳跃连接保留了原始图像的空间细节,PatchGAN则专注于判别图像块级别的真假,这种组合在图像局部细节处理上表现优异。
CycleGAN的核心创新是循环一致性损失(Cycle Consistency Loss)。在没有成对数据的情况下,AI如何知道自己的翻译是正确的?CycleGAN的思路非常巧妙:把翻译看成两个方向的转换——A→B 和 B→A。循环一致性要求:把一张图从A翻译到B,再从B翻译回A,应该能恢复成原始图片。这个约束让模型在缺乏配对数据的情况下,依然能学习有意义的跨域映射。
最经典的案例就是"马变斑马":给模型喂一堆马的照片和一堆斑马的照片,不告诉它哪张马对应哪张斑马,它自己就能学会两者之间的风格差异。此外还有莫奈画作→实景照片、iPhone照片→单反照片、Yosemite 季节变换等多种任务。

图3:pix2pix 多任务翻译效果展示,图片来源:pix2pix 官网
这个项目最大的工程价值在于其清晰的模块化架构,非常适合作为GAN开发的参考模板。代码主要分为以下几个模块:
models/ — 模型核心,包含 base_mo