Feature Extraction with GAN
徐徐 抱歉选手

InfoGAN

InfoGAN希望输入数据的每一个维度代表着输出图像的某个特定特征,改变输入数据的某个维度,输出图像会同时有某一特征的改变,即解决input feature对output影响不明显的问题。

架构

和普通的GAN主要由两个地方的不同。

第一,input vector被分成了两个部分,第一个部分c代表了输出图像的特征的集合,z‘代表了纯粹随机的无法解释的部分。

第二,generator的输出被添加到两个路径,一个是到discriminator,一个是到classifier。classifier的作用是能根据generator的output x反推获得generator的input中代表特征的那个部分。但是如果没有discriminator,generator可能就偷懒直接把input c的部分直接放到output x,然后让classifier很方便就读出来。discriminator要让generator去创造。

image-20201118084308113

总结

input characteristic c must have a clear influence on x; The classifier can recover c from x.

GAN + AutoEncoder

应用在Interactive Photo Enditing中。

第一步,对于给一张image,投射到image embedding space中,变成一个code。

第二步,在这个code的向量空间内稍作移动就可以实现更改了某一特征(user给的constraint),但总体与原来的image相似的图片。

image back to vector

有三种实现方式。

image-20201118110058575

Editing photos

要找一个满足三个条件的图片。

第一个是user constraint,即要改变图片的某个feature。

第二个是要求计算两个图片的距离相近,即与原图片类似。

第三个是用discriminator来判断图片是否足够real。

image-20201118110212780

VAE-GAN

架构

image-20201118085429788

Encoder的任务就是Minimize reconstruction error,并且让output z close to normal(Variational Auto-Encoder)。

Generator as Decoder的任务也是Minimize reconstruction error,并且cheat discriminator。

Discriminator的任务是Discriminate real, generated and reconstructed images。

注意这里有三种image,一个是real image,一个是generator as decoder的generated image,另一个是decoder as generator的reconstrcuted image。

WHY VAE-GAN

一方面,从VAE考虑。VAE希望reconstruction error越小越好,也就是希望input x of encoder和output x of decoder as generator越接近越好,但问题是VAE的output不一定会realistic,会很模糊,因为无法衡量loss。

另一方面,从GAN考虑。原来在train GAN,Generator没有看过真正的image长什么样,需要很多时间去调参数。但是加上encoder,他知道真正的image长什么样。

Algorithm

  • Initialize En, De, Dis

  • In each iteration:

    • Sample M images from database

    • Generate M codes from encoder

      此处是encoder从real image输出的code

    • Generate M images from decoder

      此处是decoder从encoder的code输出的reconstructed image

      以上是auto-encoder的操作流程。


    • Sample M codes from prior

    • Generate M images from decoder/generator

      此处是用从normal distribution中sample出得随机的一个vector当作generator的输入。

      以上是GAN的generator部分的操作流程。


    • Update En to decrease , decrease

    • Update De to decrease , increase and

    • Update Dis to increase , decrease and

BiGAN

BiGAN也是VAE-GAN的一种变形,还是建立在Encoder/Decoder/Discriminator这三者之上。只不过这些基本单元的连接方式有所不同。

架构

image-20201118093923976

和VAE-GAN不同,BiGAN的Encoder和Decoder不再有一个real image和generated image的比较。Encoder和Decoder互相独立。

那如何训练这两者?这个任务在于Discriminator。对于每一对image x和code z的pair,discriminator要判断他来自encoder还是decoder。

解读

Encoder的输入和输出构成一个disribution,记做

Decoder的输入和输出构成一个disribution,记做

Discriminator的作用是evaluate the difference between P and Q

到最后P和Q会是一样的。

image-20201118095142014

Alogorithm

  • Initialize En, De, Dis

  • In each iteration:

    • Sample M images from database

    • Generate M codes from encoder

      Encoder生成一个pair


    • Sample M codes from prior

    • Generate M images from decoder/generator

      Decoder/generater生成一个pair


    • Update Dis to increase , decrease

    • Update En and De to decrease , increase

同样的还有Triple GAN

Domain-adversarial training

Testing data and training data are in different domains. How to extract feature of the same distribution via generator.

image-20201118100926623

架构

image-20201118101225140

主要由三个部分组成,generator的作用是domain extractor,discriminator的作用是domain classifier,判断feature来自哪个domain。同时需要另外一个class label classifier。

这三个部分可以一起learn,也可以不一起learn。

simultaneous training还是iterative training?其实fGAN中提出了一种将GAN simultaneous training的方法,但是会不太稳;原始GAN中还是iterative training。

Feature Disentangle

WHY

image-20201118103718044

在encoder的时候单纯的把input segment输出成一个code,那么这个code可能包含了很多信息,例如phonetic information, speaker information.

如果我们一开始就把code利用feature分开来,细化每一个encoder的任务,那么结果丢进encoder去test的时候reconstruct的效果会更好。

HOW

image-20201118103955694

利用一个speaker classifier当作discriminator来训练前面两个不同“domain”的encoder。

  • 本文标题:Feature Extraction with GAN
  • 本文作者:徐徐
  • 创建时间:2020-11-17 16:25:35
  • 本文链接:https://machacroissant.github.io/2020/11/17/ganfeatureextraction/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论