我的编程空间,编程开发者的网络收藏夹
学习永远不晚

缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E

模型的参数规模并不需要那么大。

从年初 OpenAI 刷屏社区的 DALL-E 到英伟达生成逼真摄影的 GauGAN2,文本生成图像可谓是今年大火的一个研究方向。现在 OpenAI 又有了新的进展——35 亿参数的新模型 GLIDE。

如下图 1 所示,GLIDE 通常会生成逼真的阴影和反射,以及高质量的纹理。此外,该模型还能够组合多个概念(例如柯基犬、领结和生日帽),同时将属性(例如颜色)绑定到这些对象。

除了从文本生成图像,GLIDE 还有图像编辑功能——使用文本 prompt 修改现有图像,在必要时插入新对象、阴影和反射,如下图 2 所示。例如,在草坪上添加斑马:

如下图 3 所示,GLIDE 的零样本生成和修复复杂场景的能力也很强。

GLIDE 还能够将草图转换为逼真的图像编辑。例如下图中「一只戴着领结和生日帽的柯基犬」从涂鸦草图转换成了逼真的图像。

上述功能是怎样实现的呢?在新模型 GLIDE 中,OpenAI 将指导扩散(guided diffusion)应用于文本生成图像的问题。首先该研究训练了一个 35 亿参数的扩散模型,使用文本编码器以自然语言描述为条件,然后比较了两种指导扩散模型至文本 prompt 的方法:CLIP 指导和无分类器指导。通过人工和自动评估,该研究发现无分类器指导能够产生更高质量的图像。

  • 论文地址:https://arxiv.org/pdf/2112.10741.pdf
  • 项目地址:https://github.com/openai/glide-text2im

该研究发现使用无分类器指导模型生成的样本既逼真又反映了广泛的现实知识。人类评估的结果表明,GLIDE 的生成结果优于 DALL-E。

此外,值得注意的是,DALL-E 的参数量是 120 亿,而 GLIDE 仅有 35 亿参数,却实现了更优的性能。我们来具体看一下 GLIDE 的模型细节。

具有 35 亿参数的文本条件扩散模型:GLIDE

OpenAI 以 64 × 64 的图像分辨率训练了一个具有 35 亿参数的文本条件扩散模型(text-conditional diffusion model ),以及一个具有 15 亿参数的文本条件上采样扩散模型(text-conditional upsampling diffusion model),该模型将图像分辨率提高到 256 × 256。对于 CLIP 指导(CLIP guidance),OpenAI 还训练了一个噪声感知 64 × 64 ViT-L CLIP 模型。

文本条件扩散模型

OpenAI 采用 Dhariwal & Nichol (2021) 提出的 ADM 模型架构,但使用文本条件信息对其进行了扩充。对于每个噪声图像 x_t 和相应的文本说明(text caption),模型对 p(xt−1|xt, caption) 进行预测。为了以文本为条件,OpenAI 首先将文本编码为 K 个 token 序列,然后将这些 token 输入到 Transformer 模型中(Vaswani 等,2017)。这个 transformer 的输出有两种用途:

  • 首先,使用最终的 token 嵌入代替 ADM 模型中的类嵌入;
  • 其次,最后一层的 token 嵌入(K 个特征向量序列)分别投影到 ADM 模型中每个注意力层,然后连接到每一层的注意力上下文。

OpenAI 采用与 DALL-E 完全相同的数据集训练模型,并且使用与 Dhariwal & Nichol (2021) 提出的 ImageNet 64 × 64 模型相同的模型架构,模型通道为 512 ,从而为模型的视觉部分生成大约 23 亿个参数。对于文本编码 Transformer,OpenAI 使用 24 个残差块,产生大约 12 亿个参数。

此外,OpenAI 还训练了一个具有 15 亿参数的上采样扩散模型,图像分辨率从 64 × 64 增加到 256 × 256 。该模型同样以文本为条件,但使用宽度为 1024 较小的文本编码器(而不是 2048 )。

无分类器指导的微调

模型初始训练完成之后,可以微调基本模型以支持无条件图像生成。训练过程与预训练完全相同,只是 20% 的文本 token 序列被替换为空序列。通过这种方式,模型保留了生成文本条件输出的能力,同时也可以无条件地生成图像。

图像修复与编辑

以前的图像修复工作存在一个缺点,即模型在采样过程中无法看到整个上下文信息。为了获得更好的生成效果,OpenAI 对模型进行了微调:微调时,随机擦除训练样本一些区域,其余部分与掩码通道一起作为附加条件信息输入模型。OpenAI 对模型架构进行了修改,增加了四个额外的输入通道:第二组 RGB 通道和一个掩码通道。在微调之前,OpenAI 将这些新通道的相应输入权重初始化为零。对于上采样模型,OpenAI 提供了完整的低分辨率图像,但对于未掩码的区域提供高分辨率图像。

CLIP 指导扩散

鉴于分类器指导和 CLIP 指导的相似性,应用 CLIP 来提高文本条件扩散模型的生成质量似乎很自然。为了更好地匹配 Dhariwal & Nichol (2021) 的分类器指导技术,OpenAI 使用图像编码器训练噪声感知 CLIP 模型,该图像编码器接收噪声图像,以 64 × 64 的分辨率训练模型。

实验结果

该研究将 GLIDE 与之前的 SOTA 模型进行了定性比较,结果如下图 5 所示。GLIDE 生成了更逼真的图像,并且无需 CLIP 重排序或挑选。

定量结果

该研究首先通过查看图像质量保真度权衡的帕累托前沿来评估无分类器指导和 CLIP 指导之间的差异。下图 6 在 64 × 64 分辨率下评估了这两种方法的零样本 MS-COCO 生成。

该研究设置的人类评估实验如下:

让人们观察两个 256 × 256 的图像,并按如下两条标准选出一个更优的图像:要么更好地匹配给定的,要么看起来更逼真。评估结果如下图 7 所示。

并将人类评估的结果和下表 1 的结果进行比较,然后该研究发现人类和 CLIP 指导给出的分数不一致,因此无分类器指导能够产生与人类认知一致的更高质量生成结果。

此外,研究者还将 GLIDE 与其他文本生成图像模型进行了比较,结果如下表 2 所示。GLIDE 在 MS-COCO 上获得有竞争力的 FID。

最后,该研究使用上述人类评估实验设置比较了 GLIDE 和 DALL-E ,结果如下表 3 所示。注意到 GLIDE 的训练使用与 DALL-E 大致相同的训练计算,但模型要小得多(35 亿参数 VS120 亿参数),所需采样延迟更少,并且不需要 CLIP 重排序。

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E

从年初 OpenAI 刷屏社区的 DALL-E 到英伟达生成逼真摄影的 GauGAN2,文本生成图像可谓是今年大火的一个研究方向。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录