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时也有疑问,但是我没有认真验证,以后应当想办法抓住这些想法,去试着实现并验证。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode1143最长公共子序列

题目描述 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

大厂真实面试题(一)

滴滴大数据sql 取出累计值与1000差值最小的记录 1.题目 已知有表t_cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。 2.分析 本题主要是想找到累加值域1000差距最小的记录,也就是我们要对上述按照id进行排序并且累加,并…

【机器学习基础】Python编程06:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

婚恋网源码 相亲交友小程序源码

婚恋网源码 相亲交友小程序源码 1、婚恋相亲交友系统 超大型婚恋社交、相亲、征婚、互动系统,继承了此前O2O、SNS及B2C的优秀特点 2、媒婆推广返利系统 针对广大婚恋网站运营者而推出的一套共享返利婚恋模式,全民红娘,会员裂变式增长 3、…

VBA语言専攻通知20240608

通知20240608 各位学员∶本周MF系列VBA技术资料增加621-625讲,T3学员看到通知后请免费领取,领取时间6月7日晚上19:00-6月8日晚上20:00。本次增加内容: MF621:为组合框添加工作表数据 MF622:在代码中使用π值 MF623:在窗体上使用切换按钮 MF624:删除…

Windows下安装和配置Redis

目录 1、下载redis压缩包 2、解压redis文件 3、启动redis临时服务 4、打开Redis客户端进行连接 5、使用一些基础操作来测试 5.1、输入ping命令来检测redis服务器与redis客户端的连通性 5.2、使用set和get命令测试redis数据库进行数据存储和获取 5.3、在命令中通过shut…

flowable 工作流从入门到精通

HelloWorld 语雀文档地址: https://www.yuque.com/paomian-ldog4/by12xp/uqg6yhhgzeinaxge#snmoq 相关文档 https://tkjohn.github.io/flowable-userguide/ 文档手册 https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 flowable-ui下载地…

将小爱音箱接入 ChatGPT 和豆包ai改造成专属语音助手

这个GitHub项目,mi-gpt,旨在将小爱音箱和米家设备与ChatGPT和豆包集成,有效地将这些设备转变为个性化语音助手。以下是对其功能和设置的详细分析: 主要特点 角色扮演:该项目允许小爱适应不同的角色,如伴侣…

【TB作品】MSP430F5529 单片机,简单电子琴

使用MSP430制作一个简单电子琴 作品功能 这个项目基于MSP430单片机,实现了一个简单的电子琴。通过按键输入,电子琴可以发出对应的音符声音。具体功能包括: 按下按键时发出对应音符的声音。松开按键时停止发声。支持C调低音、中音和高音。 …

python词云生成库-wordcloud

内容目录 一、模块介绍二、WordCloud常用的方法1. generate(self, text)2. generate_from_frequencies(frequencies)3. fit_words(frequencies)4. generate_from_text(text) 三、进阶技巧1. 设置蒙版2. 设置过滤词 WordCloud 是一个用于生成词云的 Python 库,它可以…

关于安装typescript后运行tsc -v命令报错问题

报错信息: tsc 不是内部或外部命令,也不是可运行的程序 或批处理文件。 没有配置环境变量,使用npm命令查看typescript的安装目录: npm config get prefix 根据控制台输出的目录,配置path环境变量 tsc -v 运行成功&…

鸿蒙轻内核M核源码分析系列十七(3) 异常信息ExcInfo

本文中所涉及的源码,以OpenHarmony LiteOS-M内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。鸿蒙轻内核异常钩子模块代码主要在components\exchook目录下。 1、异常信息的宏定义、枚举和结构体 在文件components\exch…

计算机组成实验---Cache的实现

直接映射 先看懂cache的映射原理,根据cache大小与主存大小来计算各个信号线的位数 各个信号线位数 主存地址在逻辑上分为区号、块号、块内地址 Cache结构 Cache访问原理 基本过程 状态机:“三段式”实现 6.3 Verilog 状态机 | 菜鸟教程 (runoob.com) …

算法:226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]示例 3&#x…

服务监控-微服务小白入门(5)

背景 什么是服务监控 监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出现问题时能够准确快速地发现以减小影响范围。 为什么要使用服务监控 服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控…

draw.io 如何设置图形圆角?

draw.io 如何设置图形圆角呢? draw.io 是一款强大的,免费的开源工具,我经常用它来画流程图,但是我发现 draw.io 对于图形圆角的设置,只提供了一个设置选项,如下图: 当你选中某个图形&#xff0…

啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

通过U盘将第三方软件安装到各大品牌电视的方法

在本教程中,小武给大家整理了通过U盘的方式安装第三方软件到电视盒子上,可直接使用通用U盘的方式来进行安装。 如果您相应电视品牌按通用方式无法完成需求,下面为您也贴心整理了20款主流智能电视和电视盒子的U盘安装指南。这些步骤适用于小米…

GPT-4o:突出优势 和 应用场景

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

2024世界人工智能大会青年优秀论文TOP20发布

作为 WAIC 2024 针对青年科学家的重要奖项,该奖项关注人工智能基础理论、数学基础、机器学习、计算机视觉与模式识别、自然语言处理等前沿领域。 2024 年 3 月,《关于推荐“2024 世界人工智能大会青年优秀论文奖”参评论文的通知》发布,面向…