DALL·E-2是如何工作的以及部署自己的DALL·E模型
DALL·E-2可以通过自然语言的描述创建现实的图像。 Openai发布了dall·e-2的Beta版。 在本文中,我们将仔细研究DALL·E-2的原始研究论文,并了解其确切的工作方式。由于并没有开放源代码, Boris Dayma等人根据论文创建了一个迷你但是开源的模型Dall·E Mini(命名为Craiyon),并且在craiyon.com上提供了一个DEMO。
在本文中,我们还将使用Meadowrun(一个开源库,可以轻松地在云中运行Python代码)把DALL·E Mini生成的图像输入到其他图像处理模型(GLID-3-xl和SwinIR)中来提高生成图像的质量,通过这种方式来演示如何将开源的ML模型部署到我们的云服务器上(AWS的EC2)。
DALL·E-2论文要点
DALL·E-2基于以前提出的unCLIP模型,而unCLIP模型本质上是对GLIDE模型[4]的增强版,通过在文本到图像生成流程中添加基于预训练的CLIP模型的图像嵌入。
与GLIDE相比,unCLIP可以生成更多样化的图像,在照片真实感和标题相似性方面损失最小。unCLIP中的解码器也可以产生多种不同图像,并且可以同时进行文本到图像和图像到图像的生成。
unCLIP框架
为了对给定的文本生成图像,提出了两阶段的过程:
1)使用先验编码器将文本编码到图像嵌入空间
2)使用图像扩散解码器根据图像嵌入生成图像。
由于它是通过反转CLIP图像编码器来生成图像的,因此本文将该框架命名为unCLIP。
CLIP[3]可以共同学习文本和图像的表示形式,如上图(虚线上方)所示将一对(文本,图像)对相同的嵌入空间进行编码。
训练过程
给定一个(图像x,文本y)对,首先获取图像和文本嵌入,称为zᵢ= clip(x),zₜ= clip(y)。
先验:p(zᵢ| y,zₜ)产生图像嵌入zᵢ条件y。
解码器:P(X |Zᵢ,Y),根据图像嵌入zᵢ(和可选的文本标题y)产生图像。
p(x | y)= p(x | y,zₜ)= p(x |zᵢ,y)p(zᵢ| y,zₜ)
训练细节
使用CLIP数据[3]和DALL-E[2]数据(共计650M图像)进行训练。
VIT-H/16图像编码器:输入为256×256图像,总计32层transformers,嵌入尺寸为1280。
GPT文本编码器:具有1024个嵌入和24层transformers解码器。
CLIP Model训练完成后,先验模型、解码器模型和上采样模型都只在DALL-E数据集(总共约250M幅)上训练。
解码器模型是一个3.5B的 Glide模型,包含两个模块:1.2B 24层transformers文本编码器和2.3B的ADM模型。 在训练期间,有50%的概率删除标题,有10%概率删除图像的嵌入。
为了生成高分辨率图像,作者训练了两个UPS采样器模型。 两者都使用ADMNET体系结构。 第一个将图像从64×64到256×256,第二个图像从256×256到1024×1024。
完整文章:
https://avoid.overfit.cn/post/8f08832ec42d402a836a5c3f5ee0440d