GAN(对抗生成网络)

1. 对抗生成网络原理 

在对抗生成网络出现之前,几乎没有什么图片能解决图像生成的问题,在GAN出现之后,这个问就能够被解决了,并在很多领域得到应用。比如,图像超清化,换脸,图像修复,图像变漫画,漫画变图像,给漫画上色等等,此外GAN还可以应用于深度学习数据的生成,达到数据增强的效果。

原理

  • 动机

在GAN提出之前,深度学习在分类,检测等判别类问题上的进展很大,有各种各样可以提升网络效果的手段,如Dropout,Batch normalization,但是在生成类问题上确是止步不前的。

  • 问题特点

生成模型是一个无中生有的模型,没有明确的指标衡量一个模型的好坏,也无法利用判别模型的诸多技术。而GAN在解决生成问题时则能借助判别模型的优势。

  • 对抗哲学

以警察和骗子之间相爱相杀的对抗博弈关系为例,对于警察来说,目标是识破出骗子的行骗伎俩抓住越来越多的骗子,让骗子们无所遁形;而对于骗子来说,目标则是更新自己的行骗技巧能够瞒天过海以达到自己不可告人的目的。警察与骗子在这种道高一尺,魔高一丈,魔高一尺,道再高一尺的博弈过程中,二者的业务能力都得到了提高。

  • 生成器和判别器

交替训练------道高一尺魔高一丈

  • G的目标:生成一个仿真数据
  • D的目标:判别一个样本是真实样本还是仿真样本
  • 最终目标:得到一个好的G,生成的仿真数据D都判别不出来是假的,且D也是一个很好的判别器

 

 

2. 深度卷积对抗生成网络DCGAN

任务:从一个随机向量生成一个真实的图片

为了让模型能生成多张图像,给模型一个随机向量作为输入,每个随机向量对应一张图像

目标:生成一张真实图像

生成器G

  • 输入:一个随机向量z
  • 输出:一张图像G(z)

判别器D

  • 输入:一张图像x(真实的data/生成的G(z))
  • 输出:图像是真实图像的概率D(x)

目标函数 

                                     F=\underset{G}{min} \underset{D}{max}=E_{x\sim p_{data}(x)}\left [ logD(x) \right ]+E_{z\sim p_{z}(z)}\left [ log(1-D(G(z))) \right ]

算法描述:

  1. 随机初始化G和D的参数
  2. 在每个训练轮次中:
    1. 固定住G的参数,训练更新D的参数,目标是G生成的图像得低分,真实图像得高分

  1. 固定住D的参数,训练更新G的参数,目标是生成的图片经过D得高分

 

模型结构:

  • 池化层层被卷积层替代
    • D上使用strided convolutions
    • G上使用反卷积
  • G和D上等候使用batch normalization
    • 帮助解决初始化差的问题
    • 梯度传递到每一层,不会有梯度消失的问题
    • BN不应用于输入层和输出层(实战经验)
  • D上移除全连接层,使用global pooling
  • G上除了输出层使用tanh外其他都用Relu(输出最后要\in[0,255],激活函数输出有个范围会好一点)
  • D上使用leakyRelu

3. 图像翻译Pix2Pix 

任务:由一张图像生成一张新的图像,新图像内容与原图像类似,但表达形式完全不同,对应像素位置表达相同语义

要求:必须有配对的图像用于训练

 

目标:图像翻译

生成器G

  • 输入:待翻译图像x_{data}
  • 输出:一张图像G(x_{data})

判别器D

  • 输入:图像对(x_{data},x_{target})(x_{data},G(x_{data}))
  • 输出:两张图像是否是一对的概率D(x_{data},G(x_{data})/x_{target})D(x_{data},G(x_{data})/x_{target})

 模型结构:

  • U-Net

 图像翻译效果:

4. 无配对图像翻译CycleGAN

任务:对没有配对的图像也可以进行图像翻译

不要求数据必须是成对标记好的

目标:从非配对图像中学到转换

好的翻译能够把一个句子翻译过去再翻译回来

问题建模:

  • 两个领域x,y
  • 映射(生成器)G:x->y
  • 映射(生成器)F:y->x
  • 判别器Dx:区分x和F(y)--------F的判别器
  • 判别器Dy:区分y和G(x)-------G的判别器

CycleGAN

损失函数:

  1.  两套GAN损失
    1. G和Dy:L_{GAN}(G,D_{y},x,y)=E_{y \sim p_{data}(y)}[logD_{y}(y)]+E_{x \sim p_{data}(x)}[log(1-D_{y}(G_{x}))]
    2. F和Dx:L_{GAN}(F,D_{x},y,x)=E_{x \sim p_{data}(x)}[logD_{x}(x)]+E_{y \sim p_{data}(y)}[log(1-D_{x}(G_{y}))]
  2. 一致性损失:L_{con}(G,F)=E_{x \sim p_{data}(x)}[||F(G(x))-x||_{1}]+E_{y \sim p_{data}(y)}[||F(G(y))-y||_{1}]

总损失函数:L(F,G,D_{x},D_{y})=L_{GAN}(G,D_{y},x,y)+L_{GAN}(F,D_{x},y,x)+\lambda L_{con}(G,F)

目标函数:

                                                                       G^{*},F^{*}=arg\underset{G,F}{min}\underset{D_{x},D_{y}}{max}L(G,F,D_{x},D_{y})

 CycleGAN为何会有效???

  • 一致性损失约束降低了领域映射后的搜索空间,若没有一致性损失,域A中的一张图像可以映射到域B中任意一张图像,而一致性损失限制域A映射到B后的图像,还能映射回A中原图

网络细节:

 网络效果:

5. 多领域图像翻译StarGAN 

任务:只学习一个网络就可以进行多域转换,比如,只学习一个网络就可以给原图加上胡子,换个表情,加上头发,戴上眼镜

当面对多个领域之间的图像翻译时,以上模型存在的问题:

  • 每个转换训练一个新模型
    • 低效
    • 模型中学到的新信息不能共享,效果有限

目标:训练一个模型,根据输入图像和不同领域的信息,生成不同领域分格的图

StarGAN

  • 解决的是成对图像的问题
  • G的输入添加目标领域信息
  • D除了判断是否真实以外,还需要判别类别
  • G和D训练时目标函数不同,G中多了图像重建loss

生成器G1

  • 输入:待翻译原领域图像x_{data}和目标领域信息
  • 输出:一张图像G1(x_{data})

生成器G2----原领域图像重建

  • 输入:生成的目标领域图像G1(x_{data})和原领域信息
  • 输出:一张图像G2(G1(x_{data}))

判别器D

  • 输入:图像对(x_{data},x_{target})(x_{data},G1(x_{data}))
  • 输出:两张图像是否是一对的概率D(x_{data},G1(x_{data})/x_{target})D(x_{data},G1(x_{data})/x_{target})

目标函数:

GAN(G1+D)损失:L_{adv}=E_{x}[logD_{src}(x)]+E_{x,c}[log(1-D_{src}(G(x,c))]

  • D领域fake图像分类损失L_{cls}^{f}=E_{x,c}[-logD_{cls}(c|G(x,c))]
  • D领域real图像分类损失L_{cls}^{r}=E_{x,c^{'}}[-logD_{cls}(c^{'}|x)]
  • 原领域图像重建损失:L_{rec}=E_{x,c,c^{'}}[||x-G(G(x,c),c^{'})||_{1}]

鉴别器D损失:L_{D}=-L_{adv}+\lambda_{cls}L_{cls}^{r}

生成器G损失:L_{G}=L_{adv}+\lambda_{cls}L_{cls}^{f}+\lambda_{rec}L_{rec}

6. 文本生成图像Text2Img 

数据

图像及其匹配的文字

模型结构:Conditional GAN

生成器G:

  • 输入:随机向量z+文本编码c
  • 输出:图像G(z,c)

判别器D:

  • 输入:生成图像G(z,c)/真实图像data+文本编码c
  • 输出:图像是否真实+图像文本是否匹配

目标函数

\begin{align*} F &=\underset{G}{min} \underset{D}{max}E_{x_{c}\sim p_{data}(x)}\left [ logD(x_c,c) \right ] & + E_{x_{other}\sim p_{data}(x)}\left [ log(1-D(x_{other},c) )\right ] & + E_{z\sim p_{z}(z)}\left [ log(1-D(G(z))) \right ] \end{align*}                                                    

技巧:

  • 先将图像是否合理训练出来,再训练图像文本是否匹配
  • 除了<假图,描述>和<真图,描述>之外,添加<真图,不匹配描述>

文本生成图像的效果:

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值