当前位置: 首页 > 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.lryc.cn/news/584376.html

        相关文章:

      • 前缀和|差分
      • 【部分省份已考真题】备战2025全国青少年信息素养大赛-算法创意实践挑战赛c++省赛/复赛真题——被污染的药剂
      • Expected Sarsa 算法的数学原理
      • Flask 入门教程:用 Python 快速搭建你的第一个 Web 应用
      • Go语言包管理完全指南:从基础到最佳实践
      • UECC-UE连接协调的运作方式
      • 【会员专享数据】2013-2024年我国省市县三级逐月SO₂数值数据(Shp/Excel格式)
      • 2025年最新Python+Playwright自动化测试- 隐藏元素定位与操作
      • DSP的基础平台搭建
      • 24、企业设备清单管理(Equipment)详解:从分类到管理,设备全生命周期把控
      • 虚拟环境已安装该包,且已激活,但报错
      • 介绍 cnpm exec electron-packager
      • Apache http 强制 https
      • Qt使用脚本实现GUI扩展技术详解
      • Android View 绘制流程 优化 (Bitmap 复用+内容变化检测+防抖调度策略)
      • Canny边缘检测(cv2.Canny())
      • 2025年语言处理、大数据与人机交互国际会议(DHCI 2025)
      • MD5有什么特点吗
      • Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
      • fastMCP基础(一)
      • 如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
      • STM32F103C8T6驱动无源蜂鸣器详解:从硬件设计到音乐播放
      • 【研报复现】方正金工:(1)适度冒险 因子
      • Boost.Asio学习(3):异步读写
      • Pytest之收集用例规则与运行指定用例
      • 读取按键的四种方式
      • Thrust库介绍与使用
      • AI进校园:北京中小学9月起开设AI通识课,每学年不少于8课时
      • 【PTA数据结构 | C语言版】链式栈的3个操作
      • AI 对话实现打字机效果 Vue3 setup