写在前面
WeThinkIn最新福利放送:大家只需关注WeThinkIn公众号,后台回复“简历资源”,即可获取包含Rocky独家简历模版在内的60套精选的简历模板资源,希望能给大家在AIGC时代带来帮助。
Rocky最新发布Stable Diffusion 3和FLUX.1系列模型的深入浅出全维度解析文章,点击链接直达干货知识:https://zhuanlan.zhihu.com/p/684068402
本文主要介绍AutoEncoder在图像生成(主要是自回归图像生成)以及多模态大模型中的应用。
VAE
《Auto-Encoding Variational Bayes》
https://arxiv.org/pdf/1312.6114
更多数学推导可以参见博客
VAE-1 (https://mbernste.github.io/posts/vae/) VAE-2 (https://lilianweng.github.io/posts/2018-08-12-vae/#vae-variational-autoencoder) VAE-3 (https://jaan.io/what-is-variational-autoencoder-vae-tutorial/) VAE-4 (https://liambai.com/variational-autoencoder/) VAE-5 (https://www.jeremyjordan.me/variational-autoencoders/)
VQ-VAE
《Neural Discrete Representation Learning》示NeurIPS 2017的一篇文章。
https://arxiv.org/abs/1711.00937
https://avdnoord.github.io/homepage/vqvae/
理解VQ-VAE就看下面这张图。
首先是有一个隐特征空间,输入经过一个encoder得到特征编码,通过look-up的方式从隐特征空间找对应关系,
而输入可以用隐特征空间的特征向量来表达,
训练的时候,目标函数为,
目标函数有三个组成部分,用于训练VQ-VAE的不同部分。第一项是重建损失,它优化了解码器和编码器。由于从到的映射采用直接通过梯度估计,嵌入向量不会从重建损失中接收到梯度。因此,为了学习嵌入空间,使用了最简单的字典学习算法之一,向量量化(VQ)。VQ目标使用误差将嵌入向量向编码器输出移动,如Fig 4的方程的第二项所示。由于这个损失项仅用于更新字典,也可以选择将字典项作为的移动平均函数来更新,即如下图公式所示:
是每一个MiniBatch中被量化到的样本数量。
VQ-VAE-2
《Generating Diverse High-Fidelity Images with VQ-VAE-2》是Google Deepmind在Neurips 2019发表的一个工作,对VQ-VAE做了改进,比如增加了层次化的向量量化。
https://arxiv.org/abs/1906.00446
模型的结构如图Fig 1所示,
模型的训练如图Fig 2所示,分为两个步骤:第一阶段训练 层次化的VQ-VAE,第二阶段是自回归先验模型PixelCNN的训练。
VQ-GAN
《Taming Transformers for High-Resolution Image Synthesis》是海德堡大学发表在CVPR 2021的一个工作,提出了VQ-VAE的另外一种改进,主要是亮点改进:一是生成图片的时候引入了Transformer以按照自回归的时候生成每一个特征向量的id,这些id可以从codebook里面索引对应的特征向量,然后再经过Decoder得到生成的图片,二是采用了GAN的训练方法和损失,让判别器Discriminater对生成的图片进行Patch级别的判别。
https://arxiv.org/abs/2012.09841
https://compvis.github.io/taming-transformers/
https://github.com/CompVis/taming-transformers
模型的结构如图Fig 1所示。
和VQ-VAE一样,VQ-GAN也会学习一个CNN Encoder 、Codebook 和CNN Decoder 。
输入图片经过Encoder 之后得到特征 ,经过离散的codebook 的量化之后得到,
重建图片为.
损失函数为
VQ-GAN的改进之一把上述的项换成了perceptual loss ,同时引入了patch-based的discriminator D,对应的损失项为
最后的优化目标
为了引入Transformer做自回归式建模,文中将Encoder提取的特征矩阵用量化向量在Codebook 里面的index来表示,即。这些index可以通过Codebook映射到对应的特征向量,进而恢复图片。
自回归建模为
生成图片的时候Transformer会按照一定大小的窗口计算滑动attention,按照自回归的方式生成下一个patch的code id。
ViT-VQ-GAN
《Vector-Quantized Image Modeling With Improved VQ-GAN》是Google DeepMind在ICLR 2022提出来的一个工作,对VQ-GAN作了进一步的改进,主要包括两个地方,第一个是直接用ViT提取图像特征,第二是为了缓解VQ-VAE训练时的一些codebook里面的code使用率过低导致的学习不充分,在做特征量化的会将特征进行降维,在低维度进行量化。
https://arxiv.org/abs/2110.04627
模型的结构如图Fig 1所示,训练包含两个步骤。
Stage 1: Image Quantization 输入图片分辨率为,ViT提取特征得到的特征矩阵,量化的时候会通过线性层进行降维,在低维度量化之后,再用线性层升维,最后作为Decoder的输入生成重建图片。Codebook的大小为8192。
Stage 2: Vector-quantized Image Modeling 用Transformer按照自回归的方式按照rasterized的顺序预测 个image token,在条件图像生成中,会将类别的token添加到image token序列的前面。
DALL-E
《Zero-Shot Text-to-Image Generation》是OpenAI发表在ICLM 2021的一个工作。
https://arxiv.org/abs/2102.12092
https://github.com/openai/DALL-E
https://github.com/lucidrains/DALLE-pytorch/tree/main
和VQ-GAN和ViT-VQ-GAN一样,DALL-E也是自回归生成图片的一种结构 。
第一阶段训练d-VAE对图片特征进行tokenization,输入的图片分辨率为,得到的token数为,每一个token可能取值为8192。
第二个阶段则是基于Transformer按照自回归的方式对图片的token进行预测,同时用d-VAE的Decoder生成图片,其中对文本用BPE进行tokenization得到256个token,和个图像token连接在一起,通过Transformer按照自回归方式进行概率建模。
文中提到了对图像、文本caption 和图片对应的token 的联合分布概率进行建模
模型训练的目标为为最大化该分布的置信下界,即
其中和分别对应的VQ-VAE的Encoder和Decoder, 为自回归的Transformer。
生成的图片和文本都会通过训练好的CLIP,计算两者的匹配得分,以选择最合适生成图片。
SPAE
《SPAE: Semantic Pyramid AutoEncoder for Multimodal Generation with Frozen LLMs》是CMU和Google发表在NeurIPS 2023的一个工作,也是对VQ-GAN的一个扩展,不过和VQ-GAN不一样的是,SPAE的codebook用的是预训练的LLM的codebook,这样图像特征量化之后的每一个token都对应一个word,存在一定的解释性,而且按照FPN的思想对图像特征进行多尺度的量化,如图Fig 1所示。
https://arxiv.org/abs/2306.17842
HQ-VAE
《Locally Hierarchical Auto-Regressive Modeling for Image Generation》是Korea 首尔国立大学发表在NeurIPS 2022的一个工作,也是对图片进行层次化的量化,top层的code捕捉高层级的结构化信息,bottom层code捕捉low-level的细节,同时通过层次化量化的Transformer对图片通过自回归的方式进行建模,如图Fig 1所示。
https://openreview.net/pdf?id=NYF6jNTAui
https://github.com/kakaobrain/hqtransformer?tab=readme-ov-file
UniCode
《UniCode : Learning a Unified Codebook for Multimodal Large Language Models》是智源和北大挂在 Arxiv 的一个工作,针对于多模态大语言模型学习了一个文本-图像统一的Codebook,已对图像和文本进行编码量化。
https://arxiv.org/pdf/2403.09072.pdf
在多模态大模型里面,对图像和文本的编码一般有两种方式,如图Fig 1所示。第一种是文本用text tokenizer进行token化,同时通过text codebook得到对应的文本embedding,而图像则是直接用Visual Encoder提取特征并通过align layer(Q-Former或者MLP)和文本embedding对齐特征维度,然后文本和图像embedding连接起来作为LLM的输入。第二种是文本和图像各有自己的codebook,其中图像的codebook的一般为VQ-VAE。文本则是提出了一种可以对文本和图像进行tokenization的统一的codebook。
对图像进行tokenization一般用VQ-VAE,VQ-VAE包含一个视觉Encoder E、decoder D和codebook , 和 是code和code对应的embedding。输入图片通过Encoder 之后得到特征图 ,量化之后得到code map 和量化后的特征向量。
文中用到了层次化的量化方式,即通过层的codebook对图像特征进行量化,最后图像量化之后的特征是各层级量化结果的融合,是融合函数,比如连接或者累积和。
在对unified codebook进行学习的时候,文中考虑了三种方式:Frozen LLM Codebook、Dual Alternative Training和Language-driven Iterative Training,如图Fig 2所示。
在第一种方式中,visual tokenizer的codebook用LLM的codebook进行初始化;在第二种方式中对visual tokenizer和text tokenizer进行交替训练,不过codebook都是用的同一个;在第三种方式中,用到了语言驱动的迭代式训练方法,具体来说就是用到了指数移动平均的方法更新visual codebook,
其中 是输入图片的特征,表示对的code的使用,且每隔一定的间隙便用text codebook更新image codebook
文中还用到了In-Context Image Decompression以缓解使用LLM时和word embedding的对齐问题。具体来说就是基于融合之后的图像量化特征,通过自回归的方式预测每一层的code map ,如图Fig 所示。
基于unified codebook的多模态大模型的训练包含两个步骤,第一个步骤通过图像重建任务对visual tokenizer进行训练,第二个步骤则是多模态指令微调。
Language-Quantized AutoEncoder LQAE
《Language Quantized AutoEncoders: Towards Unsupervised Text-Image Alignment》是伯克利发表在NeurIPS 2023的一个工作,也是对VQ-VAE的一个改进,类似于SPAE,LQAE也是将VQ-VAE里面的Codebook换成了预训练的LLM(RoBERTa)的codebook,而且预训练任务换成了masked image modeling的方式,而不再是自回归的方式,如图Fig 1所示。
https://arxiv.org/pdf/2302.00902.pdf
https://github.com/lhao499/language-quantized-autoencoders
训练VQ-VAE的目标函数为:
由于Codebook换成了预训练的LLM的codebook,而且权重固定,损失函数变成下面的格式:
RQ-VAE
《Autoregressive Image Generation using Residual Quantization》是韩国Kakao发表在CVPR 2022的一个工作,和HQ-VAE是比较类似的工作,不过RQ-VAE提出的日期更早。RQ-VAE也是用残差量化的方式只用一个codebook对图片特征进行多尺度量化,同时也通过Transformer以自回归的方式对图片量化的code进行建模,如图Fig 1所示。
https://arxiv.org/abs/2203.01941
https://github.com/kakaobrain/rq-vae-transformer
Make-A-Scene
《Make-A-Scene- Scene-Based Text-to-ImageGeneration with Human Priors》是Meta发表在ECCV 2022的一个工作,也是对图片进行离散量化,通过自回归Transformer进行图像生成,也把各种条件进行编码作为自回归Transformer的输入,以控制图像的生成,如图Fig 1所示。
https://arxiv.org/abs/2203.13131
https://github.com/CasualGANPapers/Make-A-Scene
MaskGIT
《MaskGIT- Masked Generative Image Transformer》是Google发表在CVPR 2022的一个工作,和VQ-GAN一样也会对图片按照codebook进行离散量化,即Tokenization,不同的是在生成图片的时候,图片的每一个token不再是按照自回归的方式生成,而是以一种迭代的方式、masked modeling的方式来生成,图片生成的速度相比于自回归来说也会更快,如图Fig 1所示。
https://github.com/google-research/maskgit
https://github.com/valeoai/MaskGIT-pytorch/
模型的结构如图Fig 1所示。
输入图片经过VQ-VAE的Encoder得到离散的tokens ,二值的mask为,在训练的时候如果,则将对应位置的token用特殊的token [MASK]来替换,如果则对应的token保持不变,mask之后的token序列记为,损失函数为:
其中概率用类似于BERT的双向Transformer来进行建模。
Muse
《Muse- Text-To-Image Generation via Masked Generative Transformers》是Google 2023提出来的一个工作,也是和MaskGIT一样,采用Masked Modeling的方式预测token,再采用Decoder生成图片。
https://arxiv.org/abs/2301.00704
https://github.com/lucidrains/muse-maskgit-pytorch
https://muse-model.github.io/
Muse训练了VQ-GAN,一个用于生成低分辨率的token ,对应于分辨率为图片,一个则是用于生成高分辨率的token ,对应于分辨率为的图片,如图Fig 1所示。
先训练低分辨率的VQ Tokenizer以及对应的BaseTransformer,之后再训练高分辨率的VQ Tokenizer和SuperRes Transformer,如图Fig 2所示。
最后也会对VQ-GAN的Decoder进行微调,这个时候会固定住VQ-GAN Encoder、Codebook和Transformer的权重,只优化Decoder的参数。
Parti
《Parti-Scaling Autoregressive Models for Content-Rich Text-to-Image Generation》是Google Research 2022年提出来的一个工作,和我Make-A-Scene一样,也是对图片进行离散的Tokenization,再基于Transformer通过自回归的方式得到生成图片的token,然后通过Codebook得到生成图片的特征,再通过VQ-GAN的Decoder得到生成图片。
https://arxiv.org/abs/2206.10789
https://github.com/google-research/parti
模型结构如图Fig 1所示。
VAR
《Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction》是北大和字节在2024年提出来的一个工作,也是通过自回归的方式生成图片,不过预测的目标不是下一个token,而是下一个更高分辨率的图片对应的token。如图Fig 1所示。
https://arxiv.org/abs/2404.02905
https://github.com/FoundationVision/VAR
模型的训练也包括两个步骤,第一个步骤示多尺度VQ-VAE的训练,对图片特征进行多尺度的离散量化如图Fig 3所示,第二个步骤则是对自回归Transformer(Decoder-Only Transformer)的训练。整个流程如图Fig 2所示。
推荐阅读
1、加入AIGCmagic社区知识星球
AIGCmagic社区知识星球不同于市面上其他的AI知识星球,AIGCmagic社区知识星球是国内首个以AIGC全栈技术与商业变现为主线的学习交流平台,涉及AI绘画、AI视频、ChatGPT等大模型、AI多模态、数字人、全行业AIGC赋能等50+应用方向,内部包含海量学习资源、专业问答、前沿资讯、内推招聘、AIGC模型、AIGC数据集和源码等。
那该如何加入星球呢?很简单,我们只需要扫下方的二维码即可。知识星球原价:299元/年,前200名限量活动价,终身优惠只需199元/年。大家只需要扫描下面的星球优惠卷即可享受初始居民的最大优惠:
2、Sora等AI视频大模型的核心原理,核心基础知识,网络结构,经典应用场景,从0到1搭建使用AI视频大模型,AI视频大模型性能测评,AI视频领域未来发展等全维度解析文章正式发布!
码字不易,欢迎大家多多点赞:
Sora等AI视频大模型文章地址:https://zhuanlan.zhihu.com/p/706722494
3、Stable Diffusion3和FLUX.1核心原理,核心基础知识,网络结构,从0到1搭建使用Stable Diffusion 3和FLUX.1进行AI绘画,从0到1上手使用Stable Diffusion 3和FLUX.1训练自己的AI绘画模型,Stable Diffusion 3和FLUX.1性能优化等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
Stable Diffusion 3和FLUX.1文章地址:https://zhuanlan.zhihu.com/p/684068402
4、Stable Diffusion XL核心基础知识,网络结构,从0到1搭建使用Stable Diffusion XL进行AI绘画,从0到1上手使用Stable Diffusion XL训练自己的AI绘画模型,AI绘画领域的未来发展等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
Stable Diffusion XL文章地址:https://zhuanlan.zhihu.com/p/643420260
5、Stable DiffusionV1-V2核心原理,核心基础知识,网络结构,经典应用场景,从0到1搭建使用Stable Diffusion进行AI绘画,从0到1上手使用Stable Diffusion训练自己的AI绘画模型,Stable Diffusion性能优化等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
Stable Diffusion文章地址:https://zhuanlan.zhihu.com/p/632809634
6、ControlNet核心基础知识,核心网络结构,从0到1使用ControlNet进行AI绘画,从0到1上手构建ControlNet高级应用等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
ControlNet文章地址:https://zhuanlan.zhihu.com/p/660924126
7、LoRA系列模型核心基础知识,从0到1使用LoRA模型进行AI绘画,从0到1上手训练自己的LoRA模型,LoRA变体模型介绍,优质LoRA推荐等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
LoRA文章地址:https://zhuanlan.zhihu.com/p/639229126
8、最全面的AIGC面经《手把手教你成为AIGC算法工程师,斩获AIGC算法offer!(2024年版)》文章正式发布
码字不易,欢迎大家多多点赞:
AIGC面经文章地址:https://zhuanlan.zhihu.com/p/651076114
9、10万字大汇总《“三年面试五年模拟”之算法工程师的求职面试“独孤九剑”秘籍》文章正式发布
码字不易,欢迎大家多多点赞:
算法工程师三年面试五年模拟文章地址:https://zhuanlan.zhihu.com/p/545374303
《三年面试五年模拟》github项目地址(希望大家能给个star):https://github.com/WeThinkIn/Interview-for-Algorithm-Engineer
10、Stable Diffusion WebUI、ComfyUI、Fooocus三大主流AI绘画框架核心知识,从0到1搭建AI绘画框架,从0到1使用AI绘画框架的保姆级教程,深入浅出介绍AI绘画框架的各模块功能,深入浅出介绍AI绘画框架的高阶用法等全维度解析文章正式发布
码字不易,欢迎大家多多点赞:
AI绘画框架文章地址:https://zhuanlan.zhihu.com/p/673439761
11、GAN网络核心基础知识、深入浅出解析GAN在AIGC时代的应用等全维度解析文章正式发布!
码字不易,欢迎大家多多点赞:
GAN网络文章地址:https://zhuanlan.zhihu.com/p/663157306
12、其他
Rocky将YOLOv1-v7全系列大解析文章也制作成相应的pdf版本,大家可以关注公众号WeThinkIn,并在后台 【精华干货】菜单或者回复关键词“YOLO” 进行取用。
Rocky一直在运营技术交流群(WeThinkIn-技术交流群),这个群的初心主要聚焦于技术话题的讨论与学习,包括但不限于算法,开发,竞赛,科研以及工作求职等。群里有很多人工智能行业的大牛,欢迎大家入群一起学习交流~(请添加小助手微信Jarvis8866,拉你进群~)