StyleGAN-v2 ADA 的 pytorch 代码分析与实际使用

R e s o u r c e s \rm Resources Resources

 📋 P a p e r \rm Paper Paper >> T r a i n i n g   G e n e r a t i v e   A d v e r s a r i a l   N e t w o r k s   w i t h   L i m i t e d   D a t a \rm Training~Generative~Adversarial~Networks~with~Limited~Data Training Generative Adversarial Networks with Limited Data
💻 C o d e s \rm Codes Codes >>tensorflow/pytorch
📰 B l o g s \rm Blogs Blogs  >> C S D N : \rm CSDN: CSDN: T r a i n i n g   G e n e r a t i v e   A d v e r s a r i a l   N e t w o r k s   w i t h   L i m i t e d   D a t a \rm Training~Generative~Adversarial~Networks~with~Limited~Data Training Generative Adversarial Networks with Limited Data

A n a l y s i s \rm Analysis Analysis

1. 1. 1. 计算 L a d v L_{adv} Ladv 时,前馈真实样本或伪样本给鉴别器 D D D;

## 对生成伪样本
fake_logits = self.run_D(fake_img, fake_c)
## 对真实训练样本
real_logits = self.run_D(real_img, real_c)

2. 2. 2. run_D 的具体细节为:

def run_D(self, img, c):
    ## 使用定义的含 p 的数据增强流水线作 aug
    img = self.augment_pipe(img) 
    logits = self.D(img, c)
    return logits

3. 3. 3. 记录 L a d v L_{adv} Ladv E [ s i g n ( D t r a i n ) ] {\mathbb E}[\rm sign (D_{train})] E[sign(Dtrain)] (这里使用的是 WGAN,所以 L a d v L_{adv} Ladv 计算方式比较简单, min ⁡ / max ⁡ \min/\max min/max ?_logits 即可)

training_stats.report('Loss/scores/real', real_logits)
training_stats.report('Loss/signs/real' , real_logits.sign()) ## 👈 

4. 4. 4. 具体的,每一个被 r e p o r t e d \rm reported reported 的状态(统计数据 s t a t i s t i c \rm statistic statistic)被记录了 3 个统计量:

## `elems` 是一个形参,这里考虑 tensor `logits`
moments = torch.stack([
    torch.ones_like(elems).sum(), ## 记录数量 (count)
    elems.sum(),                  ## 求和
    ## 计算 E[sign(D_train)] 只需要前两个统计量,即:moments[1]/moments[0]
    elems.square().sum(),
])

5. 5. 5. 累计前面 4. 4. 4. 记录的数据 moments of real_logits,累积(会使用到 _moments.add_(moments) N = 4 N=4 N=4 次迭代( i t e r / m i n i b a t c h \rm iter/minibatch iter/minibatch
6. 6. 6. 通过获取 E [ s i g n ( D t r a i n ) ] \mathbb E[\rm sign(D_{train})] E[sign(Dtrain)] 来动态更新 p

# Execute ADA heuristic.
if (ada_stats is not None) and \ ## 是否使用 ADA 这一项技术
   (batch_idx % ada_interval == 0): ## N 值
    ada_stats.update()
    adjust = np.sign(ada_stats['Loss/signs/real'] - ada_target) \ ## ada_target 是 r_t 的阈值,文中设置是 0.6
                                                                  ## ada_stats['Loss/signs/real'] = moments_of_real_logits[1]/moments_of_real_logits[0]
             * (batch_size * ada_interval) / (ada_kimg * 1000)    ## 增益,the gain := (BxN)/SCALE, `B` is batch size, `N` is # of batches; all-in-all, it is FIXED.
    ## 更新 p 值
    augment_pipe.p.copy_((augment_pipe.p + adjust)\               ## D 偏强,则 adjust 为正,Aug 强度适当增大;D 偏弱,则 adjust 为负,Aug 强度适当减弱
                         .max(misc.constant(0, device=device)))   ## clip/truncate,限制概率在有效范围

U s a g e   o f   A u g P i p e \rm Usage~of~AugPipe Usage of AugPipe

引用脚本文件 ./training/augment.py,直接初始化 nn.Module 模块——

import augment

aug_pipe = augment.AugmentPipe()
## input --type=torch.tensor --size=(N,C,H,W)
aug_input = aug_pipe(input)

B T W \rm BTW BTW,这个项目对于 pytorch 多线程、多卡并行训练编程有非常好的借鉴性,木奉👍!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
第一章 StyleGAN原理介绍 ................................ ................................ ................................ ................. 3 1.1 StyleGAN StyleGAN的前身 —— ProGAN ProGAN ................................ ................................ ............................. 3 1.2 StyleGAN 1.2 StyleGAN 架构解读 ................................ ................................ ................................ .................. 4 第二章 StyleGAN代码解读 ................................ ................................ ................................ ................. 9 2.1 StyleGAN 2.1 StyleGAN 代码架构总览 ................................ ................................ ................................ ......... 9 2.2 网络架构代码解读 ................................ ................................ ................................ ................. 10 2.3 损失函数代码解读 ................................ ................................ ................................ ................. 27 2.4 训练过程代码解读 ................................ ................................ ................................ ................. 30 第三章 StyleGAN模型修改与拓展 ................................ ................................ ................................ . 33 3.1 如何修改 StyleGAN 架构 ................................ ................................ ................................ ..... 33 3.2 如何拓展 StyleGAN 组件 ................................ ................................ ................................ ..... 33 3.3 如何指定 仅拓展组件的参数更新而固Generator Generator Generator Generator 参数 ................................ ........ 34 3.4 拓展组件无法 梯度反向传播的解决方................................ ................................ ....... 34 3.5 StyleGAN 3.5 StyleGAN 衍生论文介绍 ................................
### 回答1: cvae-gan-zoos-pytorch-beginner这个词汇代表一个初学者使用PyTorch框架进行CVAE-GAN(生成式对抗网络变分自编码器)的编码器,这个网络可以在数据集中进行分析学习,并将数据转换为可以生成新数据的潜在向量空间。该网络不需要通过监督学习标签分类,而是直接使用数据的分布。这个编码器的目的是从潜在空间中生成新数据。此模型可以用于不同的任务,例如图像生成和语音生成。 为了实现这一目标,这一模型采用了CVAE-GAN网络结构,其中CVAE(条件变分自编码器)被用来建立机器学习模型的潜在空间,GAN(生成式对抗网络)作为一个反馈网络,以实现生成数据的目的。最后,这个模型需要使用PyTorch框架进行编程实现,并对数据集进行分析和处理,以便输入到模型中进行训练。这个编码器是一个比较复杂的模型,因此,初学者需要掌握深度学习知识和PyTorch框架的相关知识,并有一定的编程经验,才能实现这一任务。 总的来说,CVAE-GAN是一个在生成数据方面取得了重大成就的深度学习模型,可以应用于各种领域,例如图像、语音和自然语言处理等。然而,对于初学者来说,这是一个相对复杂的任务,需要掌握相关知识和技能,才能成功实现这一模型。 ### 回答2: cvae-gan-zoos-pytorch-beginner是一些机器学习领域的技术工具,使用深度学习方法来实现动物园场景的生成。这些技术包括:生成式对抗网络(GAN)、变分自编码器(CVAE)和pytorchGAN是一种基于对抗机制的深度学习网络,它可以训练出生成逼真的场景图像;CVAE也是一种深度学习网络,它可以从潜在空间中提取出高质量的场景特征,并生成与原图像相似的图像;pytorch是一个深度学习框架,它可以支持这些技术的开发和实现。 在这个动物园场景生成的过程中,通过GAN和CVAE的组合使用可以从多个角度来创建逼真而多样化的动物园场景。此外,pytorch提供了很多工具和函数来简化代码编写和管理数据,使得训练过程更加容易和高效。对于初学者们来说,这些技术和框架提供了一个良好的起点,可以探索深度学习和图像处理领域的基础理论和实践方法,有助于了解如何使用技术来生成更好的图像结果。 ### 回答3: CVaE-GAN-ZOOS-PyTorch-Beginner是一种结合了条件变分自编码器(CVaE)、生成对抗网络(GAN)和零样本学习(Zero-Shot Learning)的深度学习框架。它使用PyTorch深度学习库,适合初学者学习和使用。 CVaE-GAN-ZOOS-PyTorch-Beginner的主要目的是提供一个通用的模型结构,以实现Zero-Shot Learning任务。在这种任务中,模型要从未见过的类别中推断标签。CVaE-GAN-ZOOS-PyTorch-Beginner框架旨在使模型能够从已知类别中学习无监督的表示,并从中推断未知类别的标签。 CVaE-GAN-ZOOS-PyTorch-Beginner的结构由两个关键部分组成:生成器和判别器。生成器使用条件变分自编码器生成潜在特征,并进一步生成样本。判别器使用生成的样本和真实样本区分它们是否相似。这样,生成器被迫学习产生真实的样本,而判别器则被迫学习区分真实的样本和虚假的样本。 总的来说,CVaE-GAN-ZOOS-PyTorch-Beginner框架是一个强大的工具,可以用于解决Zero-Shot Learning问题。它是一个易于使用的框架,适合初学者学习和使用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值