【PGGAN】3、代码解析

这里是对pytorch的代码进行的解析:GitHub - facebookresearch/pytorch_GAN_zoo: A mix of GAN implementations including progressive growing

解析的过程我采用:自顶向下、逐步求精的方法,也就是从全局到局部


整体的一个运行关系:

  1. train.py 是整个项目的起点:加载什么样的配置、加载数据集、开始train...
  2. progressive_gan_trainer 是改变模型的scale...操作,管理“progressive GAN”训练过程:包括 Logs, chekpoints, visualization, and number iterations
  3. progressive_gan 是整个运行的pipeline,例如getNetG、getNetD、Optimizer....|
  4. progressive_conv_net 是G 和 D的具体实现

 


1、train.py

train.py 是整个项目的起点:加载什么样的配置(parser.add_argument + config_256_ChEMBL.json)、加载数据集、开始train...

2、progressive_gan_trainer .py

通过train.py中的“getTrainer”函数加载 progressive_gan_trainer.py 和progressive_gan_trainer.py中的 ProgressiveGANTrainer class

 

G 和 D的构造位置在:models --> network  --> progressive_conv_net.py 中:

1. G的训练方式

作者采用progressive growing的训练方式,先训一个小分辨率的图像生成,训好了之后再逐步过渡到更高分辨率的图像。然后稳定训练当前分辨率,再逐步过渡到下一个更高的分辨率。

如上图所示。更具体点来说,当处于fade in(或者说progressive growing)阶段的时候,上一分辨率(4*4)会通过resize+conv操作得到跟下一分辨率(8*8)同样大小的输出,然后两部分做加权,再通过to_rgb操作得到最终的输出。这样做的一个好处是它可以充分利用上个分辨率训练的结果,通过缓慢的过渡(w逐渐增大),使得训练生成下一分辨率的网络更加稳定。

1.1、G代码解析

 2. D的训练方式

下图是Discriminator的growing,它跟Generator的类似,差别在于一个是上采样,一个是下采样。这里就不再赘述。

Progressive Growing GANs简介+PyTorch复现 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值