PaperNotes(4)-高质量图像生成-CGAN-StackGAN-Lapgan-Cyclegan-Pix2pixgan

cgan,stackgan,lapgan,cyclegan,pix2pixgan

  • 1.Conditional GAN
    • 1.1简介
    • 1.2网络结构与训练
    • 1.3特点与用途
  • 2.Stack GAN
    • 2.1简介
    • 2.2网络结构与训练
    • 2.3特点与用途
  • 3.Lap GAN
    • 3.1简介
    • 3.2网络结构与训练
    • 3.3特点与用途
  • 4.Pix2pix GAN
    • 4.1 简介
    • 4.2 网络结构和训练
    • 4.3 特点和用途
  • 5.Patch GAN
  • 6.Cycle GAN
    • 6.1简介
    • 6.2网络结构与训练
    • 6.3特点与用途
  • 7.思考与待定

题记–如何生成高质量图像,gan相关模型调研

1.基于散度距离的改进方案:f GAN, LSGAN, WGAN, WGAN-GP, SNGAN

2.基于网络结构的改进方案:DCGAN, ImprovedDCGAN, SAGAN, BigGAN

3.由应用引发的改进方案:Conditional GAN, TripleGAN, StackGAN, LapGAN,PGGAN, SRGAN, CycleGAN,StarGAN

4.GAN在特征提取上的应用:InfoGAN,VAEGAN,BigGAN

1.Conditional GAN

Generative Adversarial Text to Image Synthesis [ICML 2016,http://arxiv.org/abs/1605.05396]

1.1简介

论文:

条件GAN–生成的数据不仅要求逼真,还要求满足一定的条件约束

文字约束–一只在奔跑的小狗;

图像约束–生成图像的框架轮廓约束,生成器就好像在轮廓的基础上填充了颜色,绘制细节;

1.2网络结构与训练

生成网络增加了条件输入;
判别网络用于判别生成的图像与条件是否匹配,因此其需要三种类型的匹配对(生成图像,匹配条件)(真实图像,匹配条件)(真实图像,不匹配条件);
在这里插入图片描述
在这里插入图片描述
训练流程
在这里插入图片描述

1.3特点与用途

1.能生成符合条件的图像,但是现有数据集合成pair出现的很少;TripleGAN是基于 CGAN 的改进,主要用于解决配对数据少的问题,会训练一个图像标注模型。

2.不能生成大分辨率的高清图,图像细节缺失;StackGAN 也是基于 CGAN 的改进,它主要想C-GAN无法生成高清图的问题。

3.有一个观点:CGAN可以避免所有的随机噪声很产生相同的样本(模式坍塌问题),不同的条件,可以产生不同的图。

**思考:**条件要是文字形式的,会涉及到NLP,文字的表示方式;条件如果是图像,就是img2img的问题,类似于上色,填充简单细节。

参考博文:https://blog.csdn.net/taoyafan/article/details/81229466

2.Stack GAN

2.1简介

StackGAN 希望输入一个描述语 c,能够产生一张 256256 的清晰大图。通过两个阶段堆叠来实现这个过程。
第一个阶段输入(c,z)产生一个 64
64 的小图x,
第二个节点输入(c,x)产生一个256*256的大图X

2.2网络结构与训练

在这里插入图片描述
由结构图可见,对于获得的 text_embedding,stackGAN 没有直接将 embedding 作为
condition,而是用 embedding 接了一个 FC 层得到了一个正态分布的均值和方差,然后从
这个正态分布中 采样 出来要用的 condition。这样做实际是做了一个降维处理,避免原始embeding高维稀疏,导致模型过拟合。(为了避免过拟合在生成器的loss上增加了一个正太分布的正则项)

两个阶段的损失函数为:
在这里插入图片描述

2.3特点与用途

1.Conditioning Augmentation(CA) 条件增强技术

2.StackGAN 不能处理比较复杂的文本,李飞飞小组提出方法能处理更长更复杂的文本,并且有不错的生成效果,论文地址:https://arxiv.org/abs/1804.01622。

思考:
1.要有同一张图像的6464,256256大小的真图。
2.感觉就像是两个Conditional GAN 简单的堆叠在一起,多增加了一个CA技术;
3.不要condition,直接级连的效果是不是等价于生成网络层数加深?设计合适的级连结构,应该能够生成合适大小的图像才对呀?尝试级连生成大分辨率的工作,在相关工作中应爱会介绍

参考博文:https://blog.csdn.net/a312863063/article/details/83574422

3.Lap GAN

3.1简介

生成高分辨率图像GAN模型的典型代表,利用拉普拉斯金字塔,由低分辨率生成高分辨图像。金字塔的每一层都是一个C-GAN,其中下一级图像的上采样图作为G的条件,生成本级真实图像与上采样图像的残差。

3.2网络结构与训练

采样流程图,自右向左分析
在这里插入图片描述
训练流程,自右向左分析
在这里插入图片描述

3.3特点与用途

1.能生成较高分辨率的图像,但是更高分辨率的图像可能使用PGGAN,或者超分辨率GAN效果会更好一些。

2.实际都是C-GAN 的堆叠,只是G的条件是上采样的图,生成真图和上采样的残差。

参考博文:https://zhuanlan.zhihu.com/p/94153155

4.Pix2pix GAN

4.1 简介

从风格迁移说起:在深度学习兴起后,16年有篇cvpr文章使用深度卷积网络做风格迁移。随着GAN网络研究热潮,人们开始研究使用gan 网络做风格迁移。以下五个是比较典型风格迁移的工作。
pix2pix GAN (1611),CycleGAN (1703),DiscoGAN (1703),PAN( Perceptual Adversarial Networks)感知GAN (1706),StarGAN (1711)

pix2pix GAN 和 cycle GAN是同以作者,两篇递进式的工作。

pix2pix GAN工作出自Image-to-Image Translation with Conditional Adversarial Networks,实质还是用CGAN来做图像转换工作。

4.2 网络结构和训练

pix2pix gan 生成器和判别器的工作结构
在这里插入图片描述
pix2pix gan 损失函数,L1是True黑与生成黑的像素间l1范数距离。
在这里插入图片描述

4.3 特点和用途

1.pix2pix 主要做了G网络结构的探索:Encoder-decoder 结构和U-net结构,图像patch的操作

2.实质还是用CGAN来做图像转换工作。

参考博文:https://blog.csdn.net/on2way/article/details/78768221

5.Patch GAN

主要对判别网络做了改进,D输出N*N的矩阵,每个元素为True/False,表示输入图像中的感受野的真假。

思考:标签该怎么打?真实图像给一个NN的True块,生成图像给一个NN的False块?
主要是patch 操作?和pix2pix gan 中的patch有什么异同。

参考博文:https://blog.csdn.net/xiaoxifei/article/details/86506955
https://blog.csdn.net/weixin_35576881/article/details/88058040

6.Cycle GAN

6.1简介

用原始GAN结构在生成网络层数较深时,可能生成与输入差别较大的图像,就不是风格迁移,而是改头换面, 忽略了输入图像长什么样子。
在这里插入图片描述
为了防止生成器学习到具有欺骗性的造假数据,需要保证生成器的输出和原图具有很高的相似性,就可以不丢失原图的特征。

于是 CycleGAN 中加入了一个新的生成器,以第一个生成器的输出作为输入,希望输出一个和原始输入尽可能相似的图。如果能够还原回原始图片,可以表明第一个生成器的输出保留了大量原始图片的特征,输出结果是较为可靠的;而如果不能较好的还原回原始图片,意味着第一个生成器输出与输入差别较大。

6.2网络结构与训练

单向cycle gan
在这里插入图片描述
双向cycle gan(很多博文中都是这个结构)
在这里插入图片描述

6.3特点与用途

1.用来做风格迁移,在pix2pi的基础上不需要pair的训练样本。

2.CycleGAN 存在一种问题,是它能学会把输入的某些部分藏起来,然后在输出的时候再还原回来。比较好理解,隐藏掉一些破坏风格相似性的“坏点”会更容易获得判别器的高分。

思考:如何用实现图像分辨率扩大的功能?

参考博文:https://blog.csdn.net/on2way/article/details/78768221

7.思考与待定

做高分辨率的实验

1.cycle gan 似乎不是天生用来做分辨率变高的实验的。

2.直接使用stack GAN,梯度信息传不到前面–两个生成器具分开训练

3.CGAN的公式推导,如何与stein 变分合在一起–基本没啥好推导的。

4.直接级连不需要条件的GAN–基本上没有看到相关的文章

5.srgan 官网上提供了训练好的超分辨率模型,可以尝试一些图像的超分辨率生成。但如果原图是一团看不清的东西,基本也不了什么。

6.两个网络堆叠:两个网络同时训练的比两个网络分开训练难训。改造了stack gan stage2 的GAN模型(去除条件输入)堆叠模型在object101-airplane上表现好不错,但是在cifar上的效果还是基本看不出来画的是什么。

pg-gan,info gan 还没有看多

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

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

相关文章

关于c++的一些案例

之前做项目的时候,有时候会用到位,也就是将一些数据放在二进制里,然后存在数据库中或者缓存在服务器上,取出来,然后要判断某位是不是置0或1,然后再将某位置0或1(比如领多个奖励的 游戏逻辑),之前有点傻,竟然用 << ,>>这些运算符计算,今天翻起以前好久不…

C++(1)--概况、开发工具、hello word

简介1. 概况2. 开发工具3. mac 写hello word4. c 基本概念5.两个数相加代码分解5.1编译预处理命令# include5.2输入输出库iostream6.注释7.编码规范《老九学堂C课程》《C primer》学习笔记。《老九学堂C课程》详情请到B站搜索《老九零基础学编程C入门》1. 概况 20世纪70年代&a…

class 和 struct的区别

C中的struct对C中的struct进行了扩充&#xff0c;它已经不再只是一个包含不同数据类型的数据结构了&#xff0c;它已经获取了太多的功能。 struct能包含成员函数吗&#xff1f; 能&#xff01; struct能继承吗&#xff1f; 能&#xff01;&#xff01; struct能实现多态吗&…

leetcode206 反转链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题&#xff1f; 经典题不解释 /*** Definition for singly-linked list.* public class ListNode…

浅议柔性数组

很多时候,柔性数组应用在了变长结构体中,如: StructPacket {Int state; Int len;

leetcode 152 乘积最大子序列

给定一个整数数组 nums &#xff0c;找出一个序列中乘积最大的连续子序列&#xff08;该序列至少包含一个数&#xff09;。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子…

PaperNotes(5)-Conditional Generative Adversarial Nets

Conditional GAN 论文阅读笔记Abstract1 Introduction2 Related Work3 Conditional Adversarial Nets3.1 Generative Adversarial Nets3.2 Conditional Adversarial Nets4 Experimental Results4.1 Unimodal4.2 Multimodal5 Future Work6.思考文章地址&#xff1a;https://arxi…

蛙泳姿势教学

偶尔看到分享的一篇日志&#xff0c;记录下&#xff0c;忙过这段时间努力学蛙泳。 蛙泳配合有一个顺口溜&#xff0c;在讲解蛙泳动作要领之前先介绍给大家&#xff1a;“划手腿不动&#xff0c;收手再收腿&#xff0c;先伸胳膊后蹬腿&#xff0c;并拢伸直漂一会儿。”从顺口溜中…

leetcode238 除本身以外数组的乘积

给定长度为 n 的整数数组 nums&#xff0c;其中 n > 1&#xff0c;返回输出数组 output &#xff0c;其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法&#xff0c;且在 O(n) 时间复杂度内完…

C 和c++的一些杂想,想到哪儿写到哪儿

关于C和c++一直有好多的程序猿在研究,研究区别研究相似的地方,究竟用那个预言好,没有确定的说法,要看你做什么了。 初始化操作: 在初始化的时候,我们都知道C语言一般都是这样处理的: int a=12; C++ 呢,除了这样复制初始化之外还可以直接初始化: int a(12); 啊…

C++(2)--mac使用VScode 进行C++编译、运行、调试

mac 使用VScode 进行C开发1.编译的基础概念2. mac 编译c代码2.1 查看编译器情况2.2 安装插件C/C&#xff0c;C/C Clang Command Adapte2.3新建一个C project2.3.1本地新建文件夹2.3.2新建mian.cpp文件2.3.3 编写hello word demo2.4 代码编译&#xff0c;运行&#xff0c;调试2.…

boost库linux编译安装

0.下载 1.解压boost_1_49_0.tar.g然后放到/opt/ 2. 进入解压后的文件夹 cd /opt/boost_1_49_0 3.将boost安装配置在/boost/prefix目录下 不过之前先 mkdir -p /boost/prefix

leetcode136 只出现一次的数字

给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&#xff1f; 示例 1: 输入: [2,2,1] 输出: 1 示例 2: …

C++(3)--编译、gdb调试

3--编译和执行过程1.编译2.gdb调试gdb 查coreGCC是一个编译套件&#xff0c;是一个以"gcc"命令为首的源码施工队。施工队的成员有gcc、cpp、as、ld四个成员 预处理–宏定义展开&#xff0c;头文件引入-- cpp 等价于 gcc -E编译–C语言->汇编语言–gcc -S汇编–汇…

leetcode94 二叉树的中序遍历

给定一个二叉树&#xff0c;返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 递归 /*** Definition for a binary tree node.* public class TreeNode …

使用动态链接库

1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载…

算法(29)--两棵树匹配

树匹配1.剑指 Offer 26. 树的子结构2.剑指 Offer 27. 二叉树的镜像3.剑指 Offer 28. 对称的二叉树1.剑指 Offer 26. 树的子结构 判断&#xff1a;小树B是否是大树A的一部分&#xff0c;需要以大树A的每个为根节点进行匹配判断。 算法&#xff1a;判断两个节点是否相等&#xf…

leetcode647 回文子串

给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被计为是不同的子串。 示例 1: 输入: "abc" 输出: 3 解释: 三个回文子串: "a", "…

windows下关于Objective-C开发环境的配置

最近IOS一直很火&#xff0c;也想学习以以下OC开发&#xff0c;一般装个虚拟机&#xff0c;然后装个mac&#xff0c;我相信大多数人的机子跑不起来或者很卡&#xff0c;所以之前借鉴了一个文章&#xff0c;就是关于在windows下配置OC开发环境&#xff0c;这里我把自己的安装说一…

如何选择商铺投资

如何选择商铺&#xff1f; 选择商铺时&#xff0c;需要考虑哪些因素呢&#xff1f; 聂先生表示&#xff0c;要看地段&#xff0c;包括周围的商业环境、停车方便程度、汽车流量、未来发展前景、视觉效果等因素。此外&#xff0c;地域经济也很重要&#xff0c;必须要有一个好的投…