深度学习系列43:SAGAN/BigGAN和big_sleep

Posted IE06

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习系列43:SAGAN/BigGAN和big_sleep相关的知识,希望对你有一定的参考价值。

1. 从SAGAN到BigGAN

sa_gan是Self-Attention Generative Adversarial Networks的缩写。
动机:一般的dc_gan(deep convolution)模型擅长处理含有大量纹理的类型,比如天空、风景等,但在结构上的表现比较差,比如不能正确生成人脸、四肢等。其原因是卷积核不足以覆盖较大的区域。因此,我们加入attention机制。
下图中的fgh类似注意力机制中的kqv

convolution feature maps的尺寸为[C, W, H]
f/g后的尺寸为[C/8, WH], h后的尺寸仍旧是[C, W, H]
attention map的尺寸为[W
H,W*H]
attention map和h相乘得到的o,尺寸为[C, W, H]

BigGAN是SAGAN的升级版,包括:

  • batchsize*8
  • parameters*2~4
  • noise truncate:截断先验分布z,在保证多样性的同时,防止生成坏图片。

2. big_sleep模型介绍

big_sheep是结合了CLIP的多模态版本big_gan。git地址为:https://github.com/lucidrains/big-sleep。
由于没有论文,我们简单看下代码:

# 使用biggan生成图像
model = BigGAN.from_pretrained('biggan-deep-512')
out = model(*lats(), 1)

# 使用clip计算图像和文字的损失,加入到discriminator的损失函数中
perceptor, preprocess = clip.load('ViT-B/32')
tx = clip.tokenize('''a cityscape in the style of Van Gogh''')
t = perceptor.encode_text(tx.cuda())
i = perceptor.encode_image(out)
loss1 = latents损失
loss2 = 分类损失
loss3 =-100*torch.cosine_similarity(t, i, dim=-1).mean() # 图像与文本相似度损失

# 其他的步骤和biggan相同

3. 使用方法

在有gpu的机器上,调用pip install big-sleep

然后直接执行$ dream "a pyramid made of ice"就可以获得图片了。在colab上使用3个半小时,生成的图片如下:

如果内存足够,可以用大模型:$ dream "storm clouds rolling in over a white barnyard" --larger-model
想要保存的话,添加下面的参数:$ dream "a bowl of apples next to the fireplace" --save-progress --save-every 100
或者保存最佳:$ dream "a room with a view of the ocean" --save-best

在python中调用方法如下:

from big_sleep import Imagine

dream = Imagine(
    text = "fire in the sky",
    lr = 5e-2,
    save_every = 25,
    save_progress = True
)

dream()

高阶玩法:建立一个pipline,逐步生成更高级的图片。用|分割即可:

from big_sleep import Imagine

dream = Imagine(
    text = "an armchair in the form of pikachu|an armchair imitating pikachu|abstract",
    lr = 5e-2,
    save_every = 25,
    save_progress = True
)

dream()

避免模糊和放大:可以添加text_min参数:

from big_sleep import Imagine

dream = Imagine(
    text = "an armchair in the form of pikachu|an armchair imitating pikachu|abstract",
    text_min = "blur|zoom",
)
dream()

如果你用的是windows机器,这里还有一个界面:
https://softology.pro/voc.htm

以上是关于深度学习系列43:SAGAN/BigGAN和big_sleep的主要内容,如果未能解决你的问题,请参考以下文章

深度学习和目标检测系列教程 12-300:常见的opencv的APi和用法总结(上)

Keras深度学习实战(43)——深度Q学习算法

深度学习笔记:归一化问题总结

深度学习系列37:CLIP模型

深度学习笔记:归一化问题总结

深度学习笔记:Batch size问题总结