DALL·E才发布两天就被复现?官方论文还没出,大神们就在自制代码和视频了

其实最难的是硬件

萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

没想到,OpenAI刚公布DALL·E,就已经有人在复现了。

虽然还是个半成品,不过大体框架已经搭建好了,一位第三方作者Philip Wang正在施工中。

DALL·E是前两天刚公布的文字转图像网络框架,目前只公布了项目结果,甚至连官方论文都还没出

论文还没出,就开始复现了

论文复现的依据,来自一位叫做Yannic Kilcher的博主制作的油管视频。

他在视频中,对DALL·E的原理结构进行了猜测。

他表示,这些猜测并不代表真实情况,也许DALL·E的论文出来后,会颠覆他的预想。

Yannic认为,DALL·E应该是VQ-VAE模型、和类似于GPT-3的语言模型的结合。

GPT-3这类语言模型,有着非常强大的语言建模能力,可以对输入的文字描述进行很好的拆分理解。

而VAE模型,则是一种强大的图像生成Transformer,在训练完成后,模型会去掉编码器(encoder)的部分,只留下解码器,用于生成图像。

将二者结合的话,就能像下图中的那个小方块一样,将输入的各种物体,根据理解的文字,结合成具有实际意义的一幅画面。

例如,输入人、太阳和树,模型就能输出“太阳下,树底坐着一个人”所描绘的图像。

要怎么实现?

先简单分析一下VQ-VAE的模型原理。

与VAE相似,这也是一个Transformer结构的模型,编码器对图像进行编码后,将编码数据送入隐空间,解码器再从隐空间中,对图像进行重构。

相比于VAE,VQ-VAE隐变量的每一维都是离散整数,也就是说,它的隐空间其实是一个编码簿(codebook),包含提取出的各种向量信息。

在DALL·E里,这个编码簿,本质上可以等价为一个词汇表(vocabulary)。

这个词汇表,专门用来存储对图像的各种描述。

对输入图像进行编码时,本质上是将图像分成各种像素块。

期间,会产生各种各样的图像信息。

假设天蓝色的格子,包含“天空”的描述信息,那么在重建时,解码器读取到“天空”信息,就会分配顶端的一系列像素,用来生成天空。

在完成VQ-VAE的训练后,模型就得到了一个只有解码器看得懂的编码簿。

届时,将由类似于GPT-3的语言模型,对输入的文字进行解码,转换成只有编码簿才能看懂的向量信息。

然后,编码簿会将这些信息进行排序,依次列出每个像素块应该生成的数据,并告诉解码器。

解码器会合成这些像素数据,得到最终的图像。

为了实现这样的目标,既要对类似于GPT-3的语言模型进行训练,也要提前对VQ-VAE模型进行预训练。

而且,还需要对二者融合后的模型进行训练。

这位作者复现的DALL·E,也是依据这个视频解析的原理复现的。

有关项目本身

目前,DALL·E的复现项目还没有完成,作者仍然在加工中(WIP),不过已经有700多个Star。

作者希望写出一个PyTorch版本的DALL·E,现在的框架中,已经包含了VAE的训练、CLIP的训练,以及VAE和CLIP融合后的模型预训练。

此外,还包括DALL·E的训练、和将预训练VAE模型融合进DALL·E模型中的部分。

上述模块训练完成后,就能用DALL·E来做文字生成图像了。

目前,作者正在进行DALL·E模块部分的代码复现。

作者承诺,完成DALL·E的部分后,会把CLIP模型也一起补上。

作者介绍

Philip Wang,本硕毕业于康奈尔大学,博士毕业于密歇根大学医学院。

他的研究兴趣是AI(深度学习方向),以及医疗健康,目前GitHub上已有1.7k个followers。

关于DALL·E本身,视频解析博主Yannic也表示,之所以能取得这么好的效果,并不全是因为模型设计

DALL·E,极可能也像GPT-3一样,用了样本量庞大的数据集,来对模型进行训练。

网友表示,难以想象训练这个玩意所用的GPU数量,气候又要变暖了。

所以要想完全复现这个项目,最难的其实是硬件部分?(手动狗头)

项目地址:
https://github.com/lucidrains/DALLE-pytorch

DALL·E视频解析:
https://www.youtube.com/watch?v=j4xgkjWlfL4

版权所有,未经授权不得以任何形式转载及使用,违者必究。