当前位置: 首页 > news >正文

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 使用两种损失函数来优化模型:

  1. 对抗损失(Adversarial Loss)

    • 使用 LSGAN(Least Squares GAN)的损失函数,减少生成图像中的模糊问题。
    • 公式:

      Ladv=1N∑i=1N(D(xi,yi)−1)2+1N∑i=1N(D(xi,G(xi)))2Ladv​=N1​i=1∑N​(D(xi​,yi​)−1)2+N1​i=1∑N​(D(xi​,G(xi​)))2

      其中 DD 是判别器,GG 是生成器,xixi​ 是输入图像,yiyi​ 是目标图像。
  2. L1 损失(Pixel-wise Loss)

    • 强制生成的图像与目标图像在像素级别上接近。
    • 公式:

      LL1=1N∑i=1N∥yi−G(xi)∥1LL1​=N1​i=1∑N​∥yi​−G(xi​)∥1​

  3. 总损失

    • 总损失是上述两种损失的加权和:

      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)
          • 局部真实性判断:输出二维矩阵,评估图像中每个局部区域的真实性(而非整张图像)。
          • 优势:关注局部纹理和结构,提升生成图像的逼真度。
        http://www.dtcms.com/a/272481.html

        相关文章:

      • Vue前端导出页面为PDF文件
      • 【HDLBits习题 2】Circuit - Sequential Logic(4)More Circuits
      • AI驱动的业务系统智能化转型:从静态配置到动态认知的范式革命
      • 基础 IO
      • Spring Boot中的中介者模式:终结对象交互的“蜘蛛网”困境
      • JAVA JVM的内存区域划分
      • Redis的常用命令及`SETNX`实现分布式锁、幂等操作
      • Redis Stack扩展功能
      • K8S数据流核心底层逻辑剖析
      • AI进化论06:连接主义的复兴——神经网络的“蛰伏”与“萌动”
      • k8s集群--证书延期
      • 项目进度管控依赖Excel,如何提升数字化能力
      • 调度器与闲逛进程详解,(操作系统OS)
      • UI前端与数字孪生结合案例分享:智慧城市的智慧能源管理系统
      • 数据结构笔记10:排序算法
      • Windows 本地 使用mkcert 配置HTTPS 自签名证书
      • Java并发 - 阻塞队列详解
      • XSS(ctfshow)
      • 文心大模型4.5开源测评:保姆级部署教程+多维度测试验证
      • 图书管理系统(完结版)
      • PyCharm 中 Python 解释器的添加选项及作用
      • 创始人IP如何进阶?三次关键突破实现高效转化
      • QT解析文本框数据——详解
      • pycharm中自动补全方法返回变量
      • 自动化脚本配置网络IP、主机名、网段
      • React封装过哪些组件-下拉选择器和弹窗表单
      • 常用的.gitconfig 配置
      • 【显示模块】嵌入式显示与触摸屏技术理论
      • HarmonyOS AI辅助编程工具(CodeGenie)UI生成
      • 时序数据库的存储之道:从数据特性看技术要点