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,一经查实,立即删除!

相关文章

leetcode206 反转链表

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

leetcode 152 乘积最大子序列

给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 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.思考文章地址:https://arxi…

蛙泳姿势教学

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

leetcode238 除本身以外数组的乘积

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

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

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

leetcode136 只出现一次的数字

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

leetcode94 二叉树的中序遍历

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

leetcode647 回文子串

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

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

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

PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果

GAN模型网络结构实验效果演化1.GAN1.1网络结构1.2实验结果2.DCGAN2.1网络结构2.2实验结果3.WGAN3.1网络结构3.2实验结果4.WGAN-GP4.1网络结构4.2实验结果5.WGAN-SN5.1网络结构5.2实验结果小结1.GAN 文章: https://arxiv.org/pdf/1406.2661.pdf 代码: Py…

Spring Security使用

Spring Security 在web应用开发中,安全无疑是十分重要的,选择Spring Security来保护web应用是一个非常好的选择。 Spring Security 是spring项目之中的一个安全模块,可以非常方便与spring项目无缝集成。特别是在spring boot项目中加入sprin…

leetcode115 不同的子序列

给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是…

leetcode104 二叉树的最大深度

给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度…

leetcode105 前序中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路: 1、…

leetcode144 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路:模仿递归的思路压栈即可。 /*** Definition for a bi…

AJAX大总结

1、AJAX概述 1.1 什么是AJAX AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。 …

关系数据库——mysql数据类型大总结

整数类型: 实数类型: 定点数:DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值。 DECIMAL(M,D),其中M表示十进制数字总的个数,D表示小数点后面数字的位数。 如果存储时,整…

关系数据库——并发控制

并发控制 多用户数据库:允许多个用户同时使用的数据库(订票系统) 不同的多事务执行方式: 1.串行执行:每个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行。 2.交叉并发方式: …

关系数据库——数据库恢复

实现技术 恢复操作的基本原理:冗余 恢复机制涉及的两个关键问题 如何建立冗余数据 数据转储(backup)登录日志文件(logging) 如何利用这些冗余数据实施数据库恢复数据转储 数据转储定义: 转储是指DBA将整个数…