当前位置: 首页 > 科技观察

第二代GAN网络的崛起?DALL·EMini画面惊悚,老外为之疯狂!

时间:2023-03-21 15:59:10 科技观察

现在谷歌、OpenAI等大公司的一文生图模型是趣味新闻记者的温饱父母,也是久旱逢甘霖的米姆爱好者的雨。只需输入一行字符,即可生成各种精美或搞笑的图片,既不累人也不麻烦,吸引人们的眼球。因此,DALL·E系列和Imagens具有温饱和长期旱涝的本质属性:有限的可得性,并非随时分配的无限利益。2022年6月中旬,抱脸向全网所有用户免费发布了DALL·E界面简洁易用的版本:DALL·EMini。创造力。DALL·EMini创意潮:既好笑又吓人现在各种社交媒体上都有人说:玩DALL·EMini一时爽,玩个不停,停不下来怎么办。就像“滑板上的便便”一样,蹭来蹭去,犹如魔鬼的脚步。有些人喜欢做“正常创作”,比如打破物种界限的“柯基版斑马”。如果古代的文官们有这些材料,就不用那么辛苦地把非洲长颈鹿发明成神话中的独角兽了。GitHub的码农们真牛逼,在官方推特上发了一篇《松鼠用电脑编程》的生成作品。“哥斯拉法庭现场速写”,不得不说,真的很像英语国家报刊上不公开的案件审理报告的速写风格。“爱心熊抢劫便利店”。动漫偶像为何跌得这么惨?是熊本性的扭曲,还是道德的沦丧……除此之外,DALL·EMini在塑造“走野路被擒的神兽”形象方面也有着不俗的成绩。这是“走在田间小道上的小恐龙,被相机拍下”。这是《走在多邻国鹦鹉商标荒野小径上,被相机拍下》。由DALL·EMini生成的这些神兽行走的画面,背影是那么的落寞和凄凉。不过,这可能是AI模拟出来的弱光摄影效果。编辑部大家也纷纷模仿:“草泥马走马路”,语气阳光欢快了很多。DALL·EMini生成的神人图并不比神兽图差。比如这首《耶稣火热霹雳舞》,真没想到老头子的身体这么灵活。各种健身网站上的“与主一起拉伸”的广告,似乎都有其根源。而这幅《RapperDogLordonStainedGlass》,真的有教堂圣像窗格和印象派画作的风格吗?用DALL·EMini恶搞影视界的角色也很时髦。以下是来自星球大战宇宙的“R2D2Baptized”。可能星战宇宙的物理化学规律与现实世界不同,机器人过水既不会漏电也不会生锈。同样来自星战宇宙的达斯维达先生,实在是太惨了。被师父砍入岩浆洗火山浴,残废后被亲生儿子追杀。残疾人戴上呼吸机掌握原力后,倒地与爱斯基摩人抢生意……还有这部《沃特怀特误入森友会世界》,还有秃头寡妇和绝望的毒枭突然变得可爱起来。可惜任天堂并没有在2000年代真正推出动森,不然老白会发现在动森里靠虚拟交易赚钱比努力做蓝冰一样的实体产品养家糊口省心多了。让我们一起唱“拒绝色情~拒绝毒药~拒绝黄赌毒~”。这段“灭霸在超市找妈妈”真的很符合人物内核,演绎的非常专业。不服则灭族,不服则灭宇宙。这就是巨婴找不到妈妈痛哭流涕的性格。然而,这些创作都是清淡的。和重口味克苏鲁爱好者的作品相比,简直就是清澈如水。比如这一段《伊隆·马斯克扮演有缝隙的小丑》就有点吓人。《打篮球的魔王》,看到这张图,小编真的不敢继续追这部剧了《怪奇物语》。各种系列恐怖片的主角也在作品中出现,比如这部《面具杰森恶魔吃墨西哥卷饼》还有这部《埃尔米特街头杀手吃意大利面》……花样吓人让小编回忆起了DVD里的青春看这些恐怖片的岁月被吓坏了。不过,当代通俗文艺比起古典艺术稍微没有那么可怕,比如这幅《戈雅的《农神食子》油画中的科米青蛙上镜》。AI用当代卡通片配上19世纪的表现主义油画,能把初来乍到的人吓出一身冷汗。还有这首《金拱门之死》。看完这些,你还敢上班上学迟到吗?Demo只有60行代码!当然,细心关注DALL·E系列动态的读者会发现,DALL·EMini生成的图片与以往的DALL·E大机型有明显的区别:在DALL·E生成的人像中EMini,人脸都比DALL·E原版生成的人脸模糊。DALL·EMini项目的主要开发者BorisDayma在开发笔记中解释道:这是一款面向大众的精简配置版本,Demo只有60行代码,功能较弱属正常现象。以下是BorisDayma在笔记中对项目的描述。我们先来看看项目的具体实现。它会根据文字生成相应的图片:一句简单的句子,紧接着是一张牛油果扶手椅在太空中闪烁~这个模型使用了三个数据集:1.包含300万个2.“YFCC100M”的OpenAI子集,包含了大约15个万张图片,但出于存储空间的考虑,作者进一步处理了200万张图片降采样。同时使用标题和文字描述作为标签,并删除相应的html标签、换行符和多余空格;3.“Conceptual12M”包含1200万个图像和标题对。在训练阶段:1.首先,图像会被VQGAN编码器编码,目的是将图像转化为token序列;2、图片对应的文字描述会经过BART编码器进行编码;3.BART编码器和VQGAN的输出编码器编码后的sequencetoken会一起送到BART解码器。解码器是一个自回归模型,其目的是预测下一个token序列;4.损失函数为交叉熵损失,用于计算模型预测VQGAN的图像编码结果与VQGAN的真实图像编码之间的损失值。在推理阶段,作者仅使用短标签并尝试生成相应的图片。具体过程如下:1.标签将通过BART编码器进行编码;2、是一个序列标志,起着特殊的作用——开始标志将被发送到BART解码器;3.根据BART解码器预测的下一个token的分布,依次对图像token进行采样;4.图像令牌序列将被发送到VQGAN解码器进行解码;5.最后,“CLIP”会为我们选择最好的生成结果。接下来,让我们看看VQGAN图像编码器和解码器是如何工作的。Transformer模型想必大家都不陌生。自诞生以来,它不仅屠戮了NLP领域,就连CV领域的卷积CNN网络也被它扼杀。作者使用VQGAN的目的是将图像编码成离散的token序列,可以直接用在Transformer模型中。由于使用了一系列像素值,离散值的嵌入空间太大,最终导致模型训练和满足self-attention层的内存需求变得异常困难。VQGAN通过结合GAN的感知损失和判别损失来学习像素的“密码本”。编码器输出“码本”对应的索引值。由于图像被编码为一系列标记,因此可以在任何Transformer模型中使用。在这个模型中,作者使用压缩因子f=16(4个块的宽度和高度除以2)将图像编码为大小为16,384的词汇表中的“16x16=256”离散标记。解码图像为256x256(每边16x16)。更详细的了解VQGAN,请参考《 Taming Transformers for High-Resolution Image Synthesis》。Seq2Seq模型将一个标记序列转换为另一个标记序列,通常用于NLP中的翻译、摘要或对话建模等任务。如果图像被编码成离散的标记,同样的想法可以转移到CV域。该模型使用BART,作者只是对原始架构进行了微调:1.为编码器和解码器创建了一个单独的嵌入层(当有相同类型的输入和输出时,两者通常可以共享);2.,调整decoder输入输出的shape,使其与VQGAN的size一致(这一步不需要中间embedding层);3、强制生成的序列有256个标记(这不包括序列的开始和结束)。CLIP用于建立图像和文本之间的关系,使用对比学习进行训练,包括最大化图像和文本对embeddings的乘积(余弦相似度,即正样本)和最小化非关联对(即负样本)).样品)。作者在生成图像时,根据模型的logits分布随机采样图像标记,导致生成图像的样本不同,质量不一致。CLIP允许根据输入描述对生成的图像进行评分,从而选择最佳生成的样本。在推理阶段直接使用OpenAI的预训练版本。那么,CLIP与OpenAIDALLE相比如何?并非所有关于DAL的细节都是公开的,但以下是作者认为的主要差异:1.DALLE使用GPT-3的120亿参数版本。相比之下,作者的模型大了27倍,大约4亿个参数。2.作者大量使用预训练模型(VQGAN、BART编码器和CLIP),而OpenAI必须从头开始训练所有模型。模型架构考虑了可用的预训练模型及其效率。3.DALL·E从较小的词汇表(8,192VS16,384)中使用较多的标记(1,024VS256)对图像进行编码。4.DALL·E使用的是VQVAE,而作者使用的是VQGAN。当作者在Seq2Seq编码器和解码器之间拆分时,DALLE将文本和图像作为单个数据流读取。这也允许他们对文本和图像使用单独的词汇表。5.DALL·E通过自回归模型读取文本,而作者使用双向编码器。6.DALL·E训练了2.5亿对图文,而作者只用了1500万对。的。7.DALL·E使用更少的标记(最多256VS1024)和更小的词汇表(16384VS50264)来编码文本。在VQGAN的训练中,作者首先从ImageNet上的pre-trainedcheckpoint开始,压缩因子f=16,词汇量为16,384。虽然在编码大范围图像时非常高效,但预训练的检查点在编码人和人脸方面并不擅长(因为这两者在ImageNet中并不常见),因此作者决定在2xRTX的云实例上进行测试A6000约20小时的微调。很明显,人脸生成图像的质量并没有太大提升,可能是“模型崩溃”。模型训练完成后,我们将Pytorch模型转换为JAX以供下一阶段使用。训练DALL·EMini:该模型采用JAX编程,充分利用了TPU的优势。作者使用图像编码器对所有图像进行了预编码,以加快数据加载速度。在训练过程中,作者很快确定了几个几乎可行的参数:1.对于每一步,每个TPU的batchsize为56,这是每个TPU可用的最大内存;2.梯度累积:有效批量大小56×8个TPU芯片×8步=每次更新3584张图片;3.优化器Adafactor的内存效率允许我们使用更高的batchsize;4.2000步“预热”和线性衰减的学习率。作者花了将近半天的时间,通过发起超参数搜索,为模型找到了一个比较好的学习率。每一个NB模型的背后,大概都有这样一个寻找超参数的艰辛过程!经过笔者的初步探索,长时间尝试了几种不同的学习率,最终确定为0.005。