深度学习系列29:VQ-GAN模型

这篇具有很好参考价值的文章主要介绍了深度学习系列29:VQ-GAN模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 介绍

发表于2021年,来自德国海德堡大学IWR研究团队。最大的亮点在于其可以生成百万像素级别的图片。
深度学习系列29:VQ-GAN模型
VQGAN的突出点在于其使用codebook来离散编码模型中间特征,并且使用Transformer(GPT-2模型)作为编码生成工具。codebook的思想在VQVAE中已经提出,而VQGAN的整体架构大致是将VQVAE的编码生成器从pixelCNN换成了Transformer,并且在训练过程中使用PatchGAN的判别器加入对抗损失。

2. 详情

深度学习系列29:VQ-GAN模型
整理一下,输入x,通过编码器E得到z,然后离散化得到 z q z_q zq,然后解码器G得到 x ^ \hat{x} x^

训练的部分和VQ-VAE基本相同,自监督损失为:
深度学习系列29:VQ-GAN模型
另一部分损失为GAN中的对抗loss,比如用 E ( D ( x ^ ) ) E(D(\hat{x})) E(D(x^))
对于判别器D(patch-based)而言,其损失函数可以笼统地表示为
L G A N ( { E , G , Z } , D ) = E ( D ( x ) ) + E ( 1 − D ( x ^ ) ) L_{GAN}(\{E,G,Z \},D) = E(D(x))+E(1-D(\hat{x})) LGAN({E,G,Z},D)=E(D(x))+E(1D(x^))
则优化目标为:
深度学习系列29:VQ-GAN模型
到这里,我们训练除了code book Z,cnn生成器E,和cnn解码器G

3. transformer使用

生成图片的时候,我们并没有x,因此在最终生成结果时,我们需要丢弃掉CNN生成器E,而使用transformer来生成z。我们从Z中选一个初始的code,然后用transformer一步步推出完整的code列表,然后再送入G进行解码
训练方法是,使用当前的 z q ∈ R h × w × n z z_q\in R^{h\times w\times n_{z}} zqRh×w×nz,得到 h w hw hw个维度为 n z n_{z} nz的code,随机替换其中一部分code,即modified_indices,通过训练使用transformer重构出unmodified_indices。训练损失函数为cross-entropy交叉熵损失。

在VQVAE工作中,生成code这一步是使用PixelCNN来实现的。但是从效果上已经看出了,VQVAE只能生成低分辨率的64×64的图像,而在Transformer的大力支持下,VQGAN已经实现了百万像素图像的生成。文章来源地址https://www.toymoban.com/news/detail-442163.html

到了这里,关于深度学习系列29:VQ-GAN模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言复现:轨迹增长模型发表二区文章 | 潜变量模型系列(2)

    培训通知 Nhanes数据库数据挖掘,快速发表发文的利器,你来试试吧! 欢迎报名郑老师团队统计课程 ,4.20直播。 案例分享 2022年9月,中国四川大学学者在 《Journal of Psychosomatic Research》 (二区,IF=4.7) 发表题为: \\\" Associations between trajectories of depressive symptoms and rate of cogniti

    2024年04月14日
    浏览(49)
  • 李沐论文精读系列五:DALL·E2(生成模型串讲,从GANs、VE/VAE/VQ-VAE/DALL·E到扩散模型DDPM/ADM)

    传送门: 李沐论文精读系列一: ResNet、Transformer、GAN、BERT 李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer 李沐论文精读系列三:MoCo、对比学习综述(MoCov1/v2/v3、SimCLR v1/v2、DINO等) 李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPas

    2024年02月10日
    浏览(44)
  • 深度学习系列53:大模型微调概述

    参考系列文章:https://zhuanlan.zhihu.com/p/635152813 github链接:https://github.com/liguodongiot/llm-action 下面这种instructive learning,在模型参数达到80亿后,会发生质的提升: 类似的还有手写prompt 然后可以推广到绿色的新任务上: fine-tuning指的是预训练模型下游接新的MLP,然后全量参数微调

    2024年02月21日
    浏览(43)
  • 深度学习生成对抗网络(GAN)

    生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型,用来通过计算机生成数据,由Ian J. Goodfellow等人于2014年提出。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。生成对抗网络被认为是当

    2024年02月07日
    浏览(61)
  • 深度学习系列60: 大模型文本理解和生成概述

    参考网络课程:https://www.bilibili.com/video/BV1UG411p7zv/?p=98spm_id_from=pageDrivervd_source=3eeaf9c562508b013fa950114d4b0990 包含理解和分类两大类问题,对应的就是BERT和GPT两大类模型;而交叉领域则对应T5 传统IR方法BM25基于tf-idf,介绍如下 根据单词去匹配有两类问题:有时候同一个词有很多意

    2024年02月22日
    浏览(37)
  • 深度学习系列61:在CPU上运行大模型

    https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用,链接为:https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?download=true 启动:./llava-v1.5-7b-q4.llamafile -ngl 9999,然后浏览器上就有一个聊天窗口了。 也可使用openai的python接口调用: 目前支持的模型: 也可以使

    2024年03月12日
    浏览(58)
  • 【深度学习】GPT系列模型:语言理解能力的革新

    自然语言理解包括一系列不同的任务,例如文本蕴涵、问答、语义相似度评估和文档分类。尽管大量的未标记文本语料库很充足,但用于学习这些特定任务的标记数据却很稀缺,使得判别式训练模型难以达到良好的表现。 我们证明,在多样化的未标记文本语料库上进行生成式

    2024年02月08日
    浏览(55)
  • 深度学习基础——GAN生成对抗网络

            生成对抗网络GAN(Generative adversarial networks)是Goodfellow等在2014年提出的一种生成式模型。GAN在结构上受博弈论中的二元零和博弈(即二元的利益之和为零,一方的所得正是另一方的所失)的启发,系统由一个生成器和一个判别器构成。         生成器和判别器均可以

    2024年02月22日
    浏览(66)
  • 深度学习(4)---生成式对抗网络(GAN)

     1. 生成式对抗网络(Generative Adversarial Network,GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。它启发自博弈论中的二人零和博弈(two-player game),两位博弈方分别由生成模型(generative model)和判别模型(discriminative model)充当。  2. 判别模

    2024年02月08日
    浏览(58)
  • 17- TensorFlow中使用Keras创建模型 (TensorFlow系列) (深度学习)

    知识要点 Keras 是一个用 Python 编写的高级神经网络 API 数据的开方:  np.sqrt(784)       # 28 代码运行调整到 CPU 或者 GPU: 模型显示: model.summary () 创建模型: 模型创建: model = Sequential () 添加卷积层: model.add (Dense(32, activation=\\\'relu\\\', input_dim=100))  # 第一层需要 input_dim 添加dropout: mod

    2024年02月01日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包