E. 深度学习 — 生成式对抗网络(GAN) 之概述
概述
- 组成部分
- Generator:类似 encoder无法学习 component 和 component 之间的关系
- Discriminator:类似 Seq2Seq 的Decoder
- 类比
- Teacher - Student
- 伪钞制作者 - 警察
Unconditional GAN
- 基本流程:一次迭代的流程
- 第一步:Discriminator
- 输入:两类数据
- 原始数据
- Generator 生成的数据
- 输出
- 原始数据为 1
- 生成数据为 0
- BP
- 获取所有数据的loss的平均值,反向调参
- 输入:两类数据
- 第二步:Generator
- 输入
- 向量/矩阵
- 输出
- 图片/Text 等
- BP
- loss,有 Discriminator 给出
- 输入
- 第一步:Discriminator
Supervised Conditional GAN
- Text - to - Image
- Generator
- 输入
- 文本
- 随机噪声
- 有可能同一个输入,有多个不同输出,因此需要加入噪音进行区分
- 输出
- 生成图片
- 输入
- Discriminator
- 输入
- Generator 的 输出/原始数据
- Generator 的 输入
- 输出
- 1分
- 对应上的数据,并且是高质量图片
- 0分
- 不匹配的数据
- 匹配,但是图片质量差
- 1分
- 输入
- 进阶版
- Stack GAN:分成两阶段
- 第一阶段
- Generator
- 通过一段文字,生成一张小的图片
- Discriminator
- 判断这段文字和这张图片是否匹配
- Generator
- 第二阶段
- Generator
- 通过一段文字和一张小的图片,生成一张高清图片
- Discriminator
- Generator
- 第一阶段
- Stack GAN:分成两阶段
- Generator
- Image - to - image
- Patch GAN
- Sound - to - image
- Spench Enhancement
- Video Generation
Unsupervised Conditional GAN
- Direct Transformation
- 基本思路
- Generator
- 输入
- Domain X的图片
- 输出
- 输入
- Discriminator
- 输入
- Domain Y的图片,和Generator生成的图片
- 输出
- 判断是否属于Domain Y 的图片
- 输入
- 约束性条件
- Generator 的输入和输出,希望有一定的联系
- Generator
- 算法
- 算法一
- Generator 的深度不要太深,理论上 输入和输出 会非常的相似
- 算法二
- Generator 的输入和输出,分别通过两个 Encoder 生成各自的code
- Generator 需要确保两个code 尽可能的相近
- Discriminator 正常判断
- 算法三:Cycle GAN/Dual GAN/Disco GAN
- 针对 Domain X
- Generator:两个Generator
- 输入 -> Generator1 -> image -> Generator2 -> 输出
- 输入和输出尽可能相近
- Discriminator
- 输入
- Domain Y的图片,和Generator生成的图片
- 输出
- 判断是否属于Domain X 的图片
- 输入
- Generator:两个Generator
- 针对 Domain Y
- Generator:两个Generator
- 输入 -> Generator2 -> image -> Generator1 -> 输出
- 输入和输出尽可能相近
- Discriminator
- 输入
- Domain Y的图片,和Generator生成的图片
- 输出
- 判断是否属于Domain Y 的图片
- 输入
- Generator:两个Generator
- 针对 Domain X
- 算法四:Star GAN
- 特点
- 跨 Domain 互转
- 特点
- 算法一
- 使用场景
- 只能做小修改
- 基本思路
- Projection to Common Space
- 基本思路
- 输入 -> Encoder -> Face Attribute -> Decoder -> 输出 -> Discriminator
- 算法
- 思路一
- Encoder 最后几层layer 和 Decoder 前几层的layer 是公用的
- 思路二
- 针对 Face Attribute,添加 Domain Discriminator
- 思路三:Combo GAN
- 输入 -> ENx -> Face Attribute -> DEy -> imageY -> ENy -> Face Attribute -> DEx -> 输出(imageX)
- imageY -> DiscriminatorY
- imageX -> DiscriminatorX
- 输入和输出尽可能相近
- 思路三:XGAN
- 输入 -> ENx -> Face Attribute -> DEy -> imageY -> ENy -> Face Attribute
- imageY -> DiscriminatorY
- 两个 Face Attribute 尽可能相近
- 思路一
- 基本思路
- 应用场景
- Voice Conversion
- Video Prediction
- Image Completion(图像还原/生成)
- PixelRNN
- 无监督算法
- Encoder - Decoder 模型
- VAE
- 基本结构
- Encoder - Decoder 模型 的优化
- 基本思路
- 通过加入噪声,能够生成ImageA 和 ImageB之间的图像,并且是可预期的
- 缺点
- 在做评估的时候,评估条件很死板,导致生成的数据,基本上是数据库里面的数据的线性变化,无法学到新的东西
- 只能模仿
- 衍生模型
- Conditional VAE
- 基本结构
- PixelRNN
Semi-Supervised Conditional GAN
- Triple GAN
GAN的评估
- 困难
- 难点一
- 问题
- Mode Collapse:不断的出现同一个图像(或者只是做过简单修改的图像)
- 解决思路
- 在Train的过程中,不断的checkpoint,当出现Mode Collapse的时候,直接拿上一次的checkpoint的mode
- 问题
- 难点二
- 问题
- Mode Dropping:只生成了真实数据的一部分分布,无法覆盖全部的分布
- 解决思路
- 不是一张图一张图评估,而是一批图一起评估
- Mini-batch Discriminator
- OTGAN(Optimal Transport GAN)
- 不是一张图一张图评估,而是一批图一起评估
- 问题
- 难点三
- 问题
- 生成的图片,和真实数据一模一样
- 解决思路
- 问题
- 难点一
- 方式
- 人工
- 自动
- 图像
- 人脸侦测系统
- 影像辨识系统
- 图像
- 评估算法
- Inception Score(IS)
- Good Quality
- 给一定一张图片,如果分类的分数越集中,说明质量越高
- Large diversity
- 给定一堆生成的图片,在分类系统中,每一种类别的分布
- 越集中,表示多样性不够
- 越分散,表示多样性足够
- 给定一堆生成的图片,在分类系统中,每一种类别的分布
- Good Quality
- Frechet Inception Distance(FID)
- Inception Score(IS)