【论文精读】DALLE3:Improving Image Generation with Better Captions 通过更好的文本标注改进图像生成

本文主要是介绍【论文精读】DALLE3:Improving Image Generation with Better Captions 通过更好的文本标注改进图像生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、文章概览
  • 二、数据重标注
    • (一)现在训练数据的文本标注主要存在的问题
    • (二)创建图像标注器
    • (三)微调图像标注器
  • 三、评估重新标注的数据集
    • (一)混合合成标注和真实标注
    • (二)评估方法
    • (三)问题一:评估在不同类型的标注上训练的模型之间的性能差异
    • (四)评估合成标注与真实标注的最佳混合比例
    • (五)实际应用
  • 四、对比DALLE3与其他模型的效果
    • (一)自动评估
    • (二)人工评估


DALLE3的核心:如何通过更好的文本标注让图像生成质量提升

一、文章概览

  • 提出问题: 现有的文本到图像模型很难遵循详细的图像描述,并且经常忽略单词或混淆提示的含义。
  • 作出假设: 假设这个问题是因为训练数据集中的噪声和不准确的图像标题。
  • 解决方案: 训练一个图片标注器用于生成标注,然后使用它来重新捕获训练数据集。
  • 主要工作: 训练了DALLE3,发现对生成的图片标注进行训练确实能提升生成模型的性能,并且提出了一套评估生成模型的方案。

在这里插入图片描述

二、数据重标注

(一)现在训练数据的文本标注主要存在的问题

  1. 厨房中的水槽或人行道上的停车标志等物体的存在以及对这些物体的描述。
  2. 场景中对象的位置以及这些对象的数量。
  3. 常识细节,例如场景中物体的颜色和大小。
  4. 图像中显示的文本。

更糟糕的是,在互联网上找到的字幕通常根本不正确;描述图像的切向相关细节。例如,在通常用于生成图像标题的替代文本中经常会发现广告。

(二)创建图像标注器

用于预测文本的传统语言模型:

  • 分词器将文本字符串分解为离散的标记: t = [ t 1 , t 2 , . . . , t n ] t=[t_1,t_2,...,t_n] t=[t1,t2,...,tn]
  • 通过最大化似然函数来构建文本的语言模型:
    L ( t ) = ∑ j l o g P ( t j ∣ t j − k , . . . , t j − 1 ; Θ ) L(t)=\sum_j logP(t_j|t_{j-k},...,t_{j-1};\Theta) L(t)=jlogP(tjtjk,...,tj1;Θ)

本文的图像标注器:

  • 基于CLIP的图像嵌入函数 F ( i ) F(i) F(i)对语言模型进行了条件调整:

图像有数千个像素值组成,因此需要一个压缩的表示空间,CLIP就提供了这一点

L ( t , i ) = ∑ j l o g P ( t j ∣ t j − k , . . . , t j − 1 ; z j ; F ( i ) ; Θ ) L(t,i)=\sum_j logP(t_j|t_{j-k},...,t_{j-1};z_j;F(i);\Theta) L(t,i)=jlogP(tjtjk,...,tj1;zj;F(i);Θ)

(三)微调图像标注器

作者训练了两种标注模式:

  • 短标注(SSC):只描述主要物体
  • 详细描述(DSC):不仅描述主体,还描述环境,背景,文字 风格等

在这里插入图片描述

三、评估重新标注的数据集

作者在评估生成文本标注对模型性能的影响时,主要集中讨论了两个问题:

  • 使用每种类型的合成标注对性能的影响。 (长标注、短标注)
  • 合成标注与真实标注的最佳混合比例。

(一)混合合成标注和真实标注

考虑到图像标注器会出现过拟合现象(过度拟合数据集中的分布规律),作者将合成标注和真实标注进行混合。混合发生在数据采样时,文章会以固定的百分比机会随机选择合成标注和真实标注。

(二)评估方法

文章采用的评估指标:CLIP 分数

CLIP 分数与文本图像相似度有很强的相关性

CLIP分数的计算方式:

  • 首先使用公共 CLIP ViT-B/32图像编码器来生成图像嵌入 z i z_i zi
  • 然后使用文本编码器为图像创建文本嵌入标题 z t z_t zt
  • 将 CLIP 分数计算为余弦相似度 C
    C ( z i , z t ) = z i . z t ∣ ∣ z i ∣ ∣ ∣ ∣ z t ∣ ∣ C(z_i,z_t)=\frac{z_i. z_t}{||z_i|| ||z_t||} C(zi,zt)=∣∣zi∣∣∣∣zt∣∣zi.zt

(三)问题一:评估在不同类型的标注上训练的模型之间的性能差异

作者设计了三个不同的模型:

  1. 仅根据真实标注训练的文本到图像模型。
  2. 在 95% 的短合成标注上训练的文本到图像模型。
  3. 在 95% 的描述性合成标注上训练的文本到图像模型。

对于每个模型,作者分别使用真实标注(左图)描述性合成标注(右图) 进行了两次评估计算:
在这里插入图片描述
结果表明:

  • 在基于真实标注进行评估时,两种基于合成标注训练的模型的 CLIP 评分性能都比基线模型稍好,而在描述性合成标注上进行评估时,性能明显更好。这表明在训练文本到图像模型时使用合成标注没有任何缺点。
  • 合成标注的评估曲线的方差要低得多。这说明重新标注确实可以被视为一种平均操作。
  • 在合成标注上评估的图像生成模型在所有训练的模型中也获得了更高的净 CLIP 分数,这支持了合成​​标注与其相应图像具有更好绑定的概念。

(四)评估合成标注与真实标注的最佳混合比例

作者使用了 65%、80%、90% 和 95% 四种混合比例的描述性合成标注训练了四个图像生成模型。实验进行到一半时,评估显示 65% 的混合物在所有评估中都远远落后于其他混合物,因此作者放弃了它。

在这里插入图片描述

结果表明: 更高程度的合成标注混合始终可以提高模型的 CLIP 分数。

(五)实际应用

由于用户在实际应用过程中,可能不会发出长的、高度描述性的标注的分布,因此可以借助大型语言模型帮助用户直接扩写,具体来说,可以使用 LLM进行“上采样”,将短的prompt转换成长的prompt,这样不仅可以添加缺失的细节,还可以消除复杂关系的歧义。
在这里插入图片描述

四、对比DALLE3与其他模型的效果

作者使用95%的合成标注和5%的真实标注对DALLE3进行训练,并使用自动评估和人工评估两种方式对DALLE3与其他模型的效果进行了对比。

(一)自动评估

评估指标:

  • CLIP score
  • Drawbench:基于lmagen提出的一系列比较全面的测评pompts,用GPT-V来评估生成图片和prompts的匹配度(实际上是用生成模型评估生成模型)
  • T2l-Compbench:与Drawbench类似,只是换了不同的prompts体系和不同的评估模型
    在这里插入图片描述
    结果表明,DALL-E 3 在所有评估的基准测试中都是最先进的。

(二)人工评估

人工评估主要考察的三个方面:

  • prompt following:向评估者呈现提供给文本到图像模型的完整上采样标题,并要求“选择哪个图像更好地对应于标题”。
  • style:要求评估者根据图片本身的风格舒适度进行选择。
  • coherence:要求评估者选择哪张图像包含更连贯的对象。

针对于前面两个方面,作者使用了自建的prompts体系去评估,coherence则使用MSCOCO数据集中的一些标注作为prompts体系(主要是因为MSCOCO中没有虚幻的场景)。Drawbench评估方法与自动评估的prompts体系一直,但是用人工来评判生成的图片和prompts是不是致,而不是用GPT-V这种生成模型。
在这里插入图片描述
结果显示,在所有三个方面,尤其是在prompt following方面,DALL-E 3 生成的图像在大多数情况下都比所有竞争对手更受人类评分者的青睐。

参考:【DALLE3论文】openAI最新图像生成模型

这篇关于【论文精读】DALLE3:Improving Image Generation with Better Captions 通过更好的文本标注改进图像生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833566

相关文章

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-