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

        相关文章:

      • 【PTA数据结构 | C语言版】顺序队列的3个操作
      • 【会员专享数据】2013-2024年我国省市县三级逐年SO₂数值数据(Shp/Excel格式)
      • [论文阅读]LLMZip: Lossless Text Compression using Large Language Models
      • 【C++详解】STL-list模拟实现(深度剖析list迭代器,类模板未实例化取嵌套类型问题)
      • 文心一言4.5开源部署指南及文学领域测评
      • 【音视频】HTTP协议介绍
      • Windows 驱动程序中不同函数运行在不同的中断请求级别 (IRQL)详细的分类
      • 正点原子 文件权限
      • 聊一聊跨浏览器测试验证点梳理
      • 搜索引擎vs向量数据库:LangChain混合检索架构实战解析
      • 数据提取之bs4(BeautifuSoup4)模块与Css选择器
      • 使用Word/Excel管理需求的10个痛点及解决方案Perforce ALM
      • CMD,PowerShell、Linux/MAC设置环境变量
      • 主从IO核心
      • Transformers 和 PyTorch 的区别与安装指南
      • Flowable23手动、接收任务----------持续更新中
      • 【计算机基础理论知识】C++篇(二)
      • codeforeces Round1032 - Round 1036
      • 学习笔记(32):matplotlib绘制简单图表-数据分布图
      • Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)
      • Java从入门到精通!第三天(数组)
      • 【threejs】第一人称视角之八叉树碰撞检测
      • 论文笔记(LLM distillation):Distilling Step-by-Step!
      • MiniGPT4源码拆解——models
      • 原生微信小程序研发,如何对图片进行统一管理?
      • 微信小程序101~110
      • UnrealEngine5游戏引擎实践(C++)
      • Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin
      • Android 如何阻止应用自升级
      • C语言 | 函数核心机制深度解构:从底层架构到工程化实践