G5 - Pix2Pix理论与实战

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

目录

  • 理论知识
    • 图像翻译
    • CGAN
    • U-Net
    • Pix2Pix
      • 损失函数
      • 模型结构
        • 生成器
        • 差别器
  • 模型效果
  • 总结与心得体会


理论知识

前面已经学习了GAN与CGAN,这节开始学习Pix2Pix。

Pix2Pix是一个以CGAN为基础,用于图像翻译(Image Translation)的通用框架,旨在将一个图像域中的图像转换成另一个图像域中的图像,它实现了模型结构和损失函数的通用化,并在诸多的图像翻译数据集上取得了令人瞩目的效果。

图像翻译

首先要先理解 图像内容(Image Content)、图像域(Image Domain)和图像翻译这三个概念。

  • 图像内容:指的是图像的固有内容,它是区分不同图像的依据
  • 图像域:指在特定上下文中所涵盖的一组图像的集合,这些图像通常具有某种相似性或共同特征。图像域可以用来表示 一类具有共同属性或内容的图像。在图像处理和计算机视觉领域,图像域常常被用于描述参数某项任务或问题的图像集合
  • 图像翻译:是将一个物体的图像表征转换为该物体的另一个表征,例如根据皮包的轮廓得到皮包的彩色图。也就是找到一个函数,能让域A的图像映射到域B,从而实现图像的跨域转换。

CGAN

在之前的学习中我们知道CGAN是在GAN的基础上进行了一些改进。对于原始的GAN生成器而言,其生成的图像数据是随机不可预测的,因此CGAN在生成器和判别器中加入了额外的条件。它的本质是将额外添加的信息融入到生成器和判别器中,其中添加的信息可以是图像的类别、人脸表情和其他辅助信息等,旨在把无监督学习的GAN转化为有监督学习的CGAN,便于网络能够在我们的掌控下更好地进行训练 。
CGAN网络结构

U-Net

U-Net是一个用于医学图像分割的全卷积模型。它分为两个部分,其中左侧是由卷积和降采样操作组成的压缩路径,右侧是由卷积和上采样组成的扩张路径,扩张的每个网络块的输入由上一层上采样的特征和压缩路径部分的特征拼接而成。网络模型整体是一个U形的结构,因此被叫做U-Net
U-Net网络结构
分割任务是图像翻译任务的一个分支,因此U-Net也可以被用作其它的图像翻译任务,Pix2Pix就是采用了U-Net作为主体结构。

Pix2Pix

在Pix2Pix中,图像翻译任务可以建模为给定一个输入数据 x x x和随机噪声 z z z,生成目的图像 y y y,即 G : { x , z } → y G:\{x,z\} \rightarrow y G:{x,z}y

与传统的CGAN不同的是,在Pix2Pix中判别器的输入是生成图像 G ( x ) G(x) G(x)(或是目标图像 y y y)和源图像 x x x,而生成器的输入是源图像 x x x和随机噪声 z z z
Pix2Pix的训练过程

损失函数

因为Pix2Pix和CGAN相比,输入的数据不太相同了,所以它们的损失函数也要对应进行调整,可以表示为
L c G A N ( G , D ) = E x , y [ l o g D ( x , y ) ] + E x , z [ l o g ( 1 − D ( x , G ( x , z ) ) ) ] \mathcal{L}_{cGAN}(G,D) =\mathbb {E}_{x,y}[logD(x,y)] + \mathbb {E}_{x,z}[log(1-D(x, G(x,z)))] LcGAN(G,D)=Ex,y[logD(x,y)]+Ex,z[log(1D(x,G(x,z)))]
当然Pix2Pix也可以像CGAN一样在损失函数中加入正则项来提升生成图像的质量,不同的是Pix2Pix使用的是L1正则而不是L2正则,使用L1正则有助于使生成的图像更清楚
L L 1 ( G ) = E x , y , z [ ∣ ∣ y − G ( x , z ) ∣ ∣ 1 ] \mathcal{L_{L1}}(G) = \mathbb{E}_{x,y,z}[||y-G(x,z)||_1] LL1(G)=Ex,y,z[∣∣yG(x,z)1]
最终训练的目标是在正则约束情况下的生成器和判别器的最大最小博弈
G ∗ = a r g   m i n G   m a x D L c G A N ( G , D ) + λ L L 1 ( G ) G^*=arg\ \mathop{min}\limits_{G}\ \mathop{max}\limits_{D}\mathcal{L}_{cGAN}(G,D) + \lambda\mathcal{L}_{L1}(G) G=arg Gmin DmaxLcGAN(G,D)+λLL1(G)
之所以在生成数据中加入随机噪声 z z z,是为了使生成模型生成的数据具有一定的随机性,但是实验结构表明完全随机的噪声并不会产生特别有效的效果。在Pix2Pix中是通过在生成器的模型层中加入Dropout来引入随机噪声的,但是Dropout带来输出内容的随机性并没有很大

模型结构

Pix2Pix使用了CNN中常用的卷积+BN+ReLU的模型结构

生成器

对于图像翻译这种任务来说,经典的编码器-解码器结构是最优的选择。

  • Pix2Pix使用的是以U-Net为基础的结构 ,即在压缩路径和扩张路径之间添加一个跳跃连接
  • Pix2Pix的输入图像的大小 256 × 256 256 \times 256 256×256
  • 每个操作仅进行了三次降采样,每次降采样的通道数均乘以2,初始的通道数是64
  • 在压缩路径中,每个箭头表示的操作是卷积核大小为 4 × 4 4 \times 4 4×4的相同卷积 + BN + ReLU,它根据是否降采样来控制卷积的步长
  • 在扩张路径中,它使用的是反卷积上采样
  • 压缩路径和扩张路径使用的是拼接操作进行特征融合

Pix2Pix生成器网络结构

差别器

传统的GAN有一个棘手的问题是它生成的图像普遍比较模糊,其中一个重要的原因是它使用了整图作为判别器的输入。不同于传统将整个图像作为判别器差别的目标(输入),Pix2Pix提出了将输入图像分成 N × N N \times N N×N 个图像块(Patch),然后将这些图像块依次提供给判别器,因此这个方法被命名为PatchGAN,PatchGAN可以看作针对图像纹理的损失。实验结果表明,当 N = 70 N = 70 N=70 时模型的表现最好,但是从生成结果来看, N N N 越大,生成的图像质量越高。其中 1 × 1 1\times1 1×1大小的图像块的判别器又被叫做PixelGAN
不同N的准确率对比

不同N生成的图像
对于不同大小的N,需要根据 N N N的值来调整判别器的层数,进而得到最合适的模型感受野,我们可以根据表格来计算,进而运行Patch大小和层数。

模型效果

模型代码暂未实现,使用了Up给提供的直接运行。
训练过程

总结与心得体会

通过对Pix2Pix模型的学习,最让我印象深刻的特点是它把判别器由CGAN那种统一压缩完直接预测的逻辑转换成了分成一个Patch,这样提升了模型生成的精度。在了解了这个修改后,我对之前GAN和CGAN产生的斑点很多的生成有了更加深入的理解。应该是由于模型对特征的压缩,导致部分像素失去代表性,产生斑点。

还有一个印象深刻的点是完全随机的噪声 z z z并不会对生成有什么特别的结果,于是作者直接使用Dropout来产生噪声,不再对分布单独处理,这个问题在我实现CGAN时也有疑问,但是我没有认真验证,以后应当想办法抓住这些想法,去试着实现并验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698527.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux使用crontab定时执行url

在Linux操作系统中,Crontab是一个非常实用的工具,可以帮助用户定时执行任务,以达到自动化管理系统的目的。而在使用Crontab时,有时候我们可能需要让系统定时访问某个URL,以实现特定的功能或操作。本文将介绍如何使用Cr…

斯坦福新研究:RAG能帮助LLM更靠谱吗?

近年来,大型语言模型(LLM)在自然语言处理领域取得了显著的进展,但它们也存在一些问题,如容易产生幻觉和无法提供最新的知识。为了解决这些问题,研究人员提出了一种名为检索增强生成(RAG&#xf…

猫头虎分享:2024应届生择业在大模型和智能机器人之间该如何选择?

猫头虎分享:2024应届生择业在大模型和智能机器人之间该如何选择? 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的…

快速入门链路追踪sleuth整合zipkin(代码演示)

1、演示项目背景 2、pom.xml 3、启动项目 4、测试 5、保存数据到数据库 6、通过mq保存数据到mysql 7、通过mq保存数据到es 1、演示项目背景 下载zipkin,建议使用2.x版本的,3.x版本的要求jdk高版本。如果自己是1.8,就下载2.x的 下载地…

Postman环境变量以及设置token全局变量!

前言百度百科解释: 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象,它…

Ubuntu server 24 (Linux) 安装部署 Zabbix 7.0 LTS

一 安装Mysql 8.03 testtest:~$ mysqld --version /usr/sbin/mysqld Ver 8.0.36-2ubuntu3 for Linux on x86_64 ((Ubuntu)) #mysql 大于8.03.x ,启动zabbix-server会报错如下 Unable to start Zabbix server due to unsupported MySQL database version (8.04.00). Must not…

英伟达最新GPU和互联路线图分析

Nvidia在计算、网络和图形领域独树一帜,其显著优势在于雄厚的资金实力及在生成式人工智能市场的领先地位。凭借卓越的架构、工程和供应链,Nvidia能够自由实施创新路线图,引领行业未来。 到 21 世纪,Nvidia 已经是一个非常成功的创…

GStreamer学习2.1----获取mp4中的图片

这里通过获取mp4中的图片例子来加深Gstreamer的理解,问问AI实现这样功能的命令, 得到 gst-launch-1.0 filesrc locationtest.mp4 ! qtdemux ! queue ! h264parse ! avdec_h264 ! videoconvert ! jpegenc ! multifilesink locationoutput_image_%03d.jp…

大福利!微信付费进群源码

微信付费进群源码 前言效果图搭建教程源码领取下期更新预报 前言 1、修复SQL表 2、修复支付文件 3、修复支付图标不显示 4、修复定位、分销逻辑、抽成逻辑 5、新增支持源支付、易支付的支付接口 6、修复官方微信、支付宝支付接口文件 本来早就可以完工的,电脑…

MEGALODON:突破传统,实现高效无限上下文长度的大规模语言模型预训练和推理

在人工智能领域,尤其是在自然语言处理(NLP)中,大模型(LLMs)的预训练和推理效率一直是研究的热点。最近,一项突破性的研究提出了一种新型神经网络架构——MEGALODON,旨在解决传统Tran…

Redis 7.2.x 主从复制+哨兵模式

IP操作系统服务版本192.168.140.153CentOS 7redis-master,sentinel7.2.5192.168.140.156CentOS 7redis-slave,sentinel7.2.5192.168.140.159CentOS 7redis-slave,sentinel7.2.5 一、安装Redis 配置主从复制 参考下面文档: Redis 7.2.x 主从复制-CSDN博客文章浏览…

论文略读:Onthe Expressivity Role of LayerNorm in Transformers’ Attention

ACL 2023 研究了LayerNorm在 Transformers 中对注意力的作用LayerNorm为Transformer的Attention提供了两个重要的功能: 投影,projection LayerNorm 帮助 Attention 设计一个注意力查询,这样所有的Key都可以平等地访问通过将Key向量投影到同一…

pinctrl 和 gpio 子系统实验学习

pinctrl 子系统主要工作内容如下: ①、获取设备树中 pin 信息。 ②、根据获取到的 pin 信息来设置 pin 的复用功能 ③、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等。 对于我们使用者来讲,只需要在设备树里面…

【计算机网络基础】OSI七层网络模型 TCPIP四层网络模型

文章目录 ISO介绍网络模型介绍OSI七层模型OSI七层模型介绍OSI七层特点一、TCP/IP四层模型介绍二、TCP/IP四层模型TCP/IP协议簇一次C/S通信 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分…

人工智能和机器学习这两个概念有什么区别?

什么是人工智能? 先来说下人工智能,人工智能(Artificial Intelligence),英文缩写为AI,通俗来讲就是用机器去做在过去只有人能做的事。 人工智能最早是由图灵提出的,在1950年,计算机…

【背就有效】软考中项计算公式汇总,简答题轻松拿下

宝子们注意啦!系统集成管理师的报名8月就要开始啦!你准备好迎接挑战了吗? 备考下半年软考的小伙伴们,在这里给大家准备了一份超实用的备考秘籍——系统集成项目管理工程师计算公式汇总。亲测有效,每天只需抽出一点时间…

数据库错误[ERR] 1071 - Specified key was too long; max key length is 1000 bytes

环境:phpstudy的mysql8 索引长度问题: 试了很多解决办法,例如需改配置: set global innodb_large_prefixON; set global innodb_file_formatBARRACUDA; 试了还是有问题,直接启动不了了。因为mysql8取消了这个配置。…

[linux]基于Ubuntu24.04原内核6.8.0升级到6.9.0

物理机操作系统: 虚拟机操作系统: Ubuntu 24.04 下载地址: https://mirror.nju.edu.cn/ubuntu-releases/24.04/ubuntu-24.04-desktop-amd64.iso VM版本信息: 内核源代码来源: https://ftp.sjtu.edu.cn/sites/ftp.kern…

React+TS前台项目实战(六)-- 全局常用组件Button封装

文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局按钮组件封装,可根据UI设计师要求自定义修改。 Button组件 1. 功能分析 (1)可以通过className属性自定义按钮样式,传递…

ZDH-智能营销-标签模块

目录 主题 项目源码 预览地址 安装包下载地址 标签模块 什么是标签 标签场景分类 标签设计 标签按照场景做了分类,但是运营人员需要感知到吗 标签按照场景做了分类,底层的计算引擎是否需要划分? 标签模块,是否需要涉及…