文生图——DALL-E 3 —论文解读——第一版

概述

本文主要是DALL·E 3官方第一版技术报告(论文)的解读,原文《Improving Image Generation with Better Captions》论文解读。该文要提升文生图的效果,将技术点放到了,提升指令跟随能力上,然后顺藤摸瓜分为提升训练数据caption(使用模型合成caption),当然也要提升模型(关于模型结构、训练策略、数据集等都未做过多介绍,但是官方又明确提到,除了数据,模型也起到了不少的作用)。
一句话省流版,数据方面,训练时使用95%模型(CoCa)合成详细描述caption + 5%原本人类 caption,测试时使用GPT-4v 扩写人类caption;模型方面使用T5xxl + vae encoder + diffusion latent + 自家decoder 取得最好效果。

效果

参考几个之前公众号推出的测试效果:
DALL·E 3内部实测效果惊人!Karpathy生成逼真灵动「美国小姐」,50个物体一图全包
DALL·E 3 推理能力炸裂提升,OpenAI 抢跑“ChatGPT 原生”
DALL·E 3:与Midjourney和SDXL对比 - 知乎
主要惊奇在他的指令跟随能力,以及可以连续对话(指令)的上下文语境理解能力。如下图:  
当时作为初入小白的直观感受是:现在open AI 要杀入文生图领域,这种自然对话能力,会使得SD 系列变为远古方式。当时内心OS:Stable diffusion 系列的编码器还是open AI 上个世代的产物CLIP,盲猜他的文本编码器是GPT,结果这篇报告就被打脸。这里真实使用的时候使用了GPT-4v,但是不是直接使用文本编码器的特征向量,而是用其扩写(作者称为upsample)人工prompt(论文给了扩写模板),扩写生成的例子如下:

数据方面

这篇报告也就主要讲两件事,都是针对文本captain(文本prompt):合成captain有没有用?如何和真实captain结合?

    合成captain有没有用

    为什么要合成caption

现象:现有的文本到图像模型很难遵循详细的图像描述,并且经常忽略单词或混淆提示的含义。原因:我们假设这个问题源于训练数据集中的噪声和不准确的图像标题,其实就是现在的训练数据多为互联网爬取数据,这些数据的通常来源于人类作者,他们专注于对图像主题的简单描述,而忽略了图像中描绘的背景细节或常识关系,不描述背景、属性、颜色等详细信息,或者一些就是描述错误或者甚至一部分是广告。具体作者认为如下:
*比如厨房里的水槽或人行道上的停车标志,以及对这些物体的描述。
*对象在场景中的位置和这些对象的数量。
*场景中物体的颜色和大小等常识性细节。
*在图像中显示的文本。

    合成captain整体思路

首先通过学习一个鲁棒图像描述器来产生准确、详细的图像描述。然后我们将此描述应用于数据集以生成更详细的标题。最终在改进的数据集上训练文本到图像的模型。然后,作者也知道这种思路其实并不新颖,除了论文提到的论文,像是BLIP 家族也都用了生成描述的方法。作者认为他们的创新点在于:建立一套生成描述性的图像描述系统,并测量在训练生成模型时使用合成字幕的影响;还为一系列评估建立了一个可重复的基准性能概要文件,这些评估用于测量提示执行情况。

    如何合成caption

基础模型是Google 的CoCa,模型结构如下(FIgure2)。这里作者构建了两个数据集(未开源),对应finetune了两版描述器模型:
*一个用于生成短(只描述图像主体)的图像描述(图中的SSC);
*一个用于生成详细(不仅描述了图像的主题,还描述了图像的周围环境、背景、图像中的文本、样式、颜色等。)的图像描述(图中称为DSC),作者举了个例子如下图(Figure3)。

    合成caption实验结果

这里初始合成caption实验也包含5%的原始caption,作者解释主要是为了防止模型过拟合到合成caption的某些范式,比如最常见的例子是合成的caption往往以"a"和"an”开头,相当于一种模型正则化。训练数据为50W张图片,测试图片为5W张,对应不同的描述。对比三个数据源训练的模型(关于模型后面模型部分讲):
*只使用原生人工描述
*5% 原生人工描述 + 95% 短描述(SSC)
*5% 原生人工描述 + 95% 长描述(DSC)
测试指标
*CLIP分数。使用开源的CLIP ViT-B/32,计算文本和图像的相似度(5W张测试图,结果*100倍画图),左右不同点是,左边的测试文本是人工描述,右边是模型长描述。可见训练+测试使用模型长描述效果好。

    caption混合比例实验

鉴于上个实验,这里混合的都是长描述+人。可见95%是一个比较好的混合比例,作者也尝试了65%,发现65%已经远远落后其他,这里没有画出来。评价指标和上面一样,也是CLIP分数。

    PS

到这里,作者的合成caption实验就结束了:训练时使用95%模型(CoCa)合成详细描述caption + 5%原本人类 caption训练,合成详细描述caption测试实验最好。问题是,应用场景是文生图啊,正式用户推理时,是没有图的,单纯人写caption(prompt)又不好,怎么办呢?因为GPT系列已经可以用于写故事、写诗词等,具有想象力,所以让GPT-4v去扩写用户原本输入的prompt。

模型方面

这个就先贴一下原始论文,一方面是因为确实论文就不想展开说,另一方面我现在也还不能理解那个“DALL-E 3 latent decoder ”到底是指整个diffusion 模型,还是vae的decoder。后续更新吧。

结果对比

主要对比DALL-E 3、 DALL-E 2、Stable Diffusion XL 1.0 ( with the refiner module)。这个也是作者认为他们的主要贡献并且可以后续开源的部分。分为自动、人工两部分,原文也在附录部分展示了对应的prompt模板和人工高标注界面。

    自动评价指标

这里使用图像文本对,指标有三个,如下:
*CLIP score:依靠CLIP模型(ViT-B/32 ),评价整图和整句子相似性。
*Drawbench:依靠GPT-4v,评价整图和扩充描述是否描述一致,原文附录给了对应的prompt。
*T2I-CompBench:依靠BLIP-VQA,评价颜色、形状、纹理相似性。

    手工评价指标

*指令跟随:向评分者展示文本到图像模型的完整上采样标题+生成图像,并要求“选择哪个图像更符合标题”。
*风格:向评分者展示图像,并要求“选择哪个图像风格更喜欢”。
*连贯性:向评分者展示图像,并要求“选选择哪个图像包含更连贯的对象”。一个“连贯”的物体是可能存在的物体。仔细观察人体的身体部位、面部和姿势、物体的位置和场景中的文字来做出判断。

    结果

当然是DALL-E 3更好,具体如下:

局限性

无非是文本生成模型(其中的LLM常见)如下:
*空间感知能力:物品的位置不可靠,例如,使用“在左边”、“在下面”、“在后面”等词。这是由于合成captioner也有这个弱点:它在陈述物体放置时不可靠,这反映在我们的下游模型中。
*文本渲染:会存在漏或者错。虽然作者在生成caption 的时候特别注意的涵盖了主要的文字,作者认为是T5编码器的问题,编码器需要把单词整个编码而不是字母级别。未来会探索字符级别的语言模型来提升字符渲染。
*特异性:也就是幻觉,例如,给定一幅花的植物图,通常会产生植物属和物种的幻觉,并将其放在描述中。之后也是改进文本生成模型。
*安全和偏见。

疑问

模型相关细节,decoder 是啥,只用vae 的encoder 不要匹配的docoder? 那怎么办,再联和训练?
真实训练时候数据集构成。

参考链接

DALL·E 3:与Midjourney和SDXL对比 - 知乎
DALL-E3: 加入字幕提示调优的文本-到-图像生成器 - 知乎
DALL-E 3技术报告阅读笔记 - 知乎
https://arxiv.org/pdf/2205.01917.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深眸科技以需求定制AI视觉解决方案,全面赋能产品外观缺陷检测

产品外观是影响产品质量最重要的因素之一,其平整度、有无瑕疵等不仅影响到产品美观,甚至能够直接影响产品本身的使用和后续加工,给企业带来重大经济损失。 随着人工智能技术的快速发展,机器视觉与AI技术的结合应用加速渗透进工业…

国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板

本篇测评由面包板论坛的优秀测评者“JerryZhen”提供。 本文将介绍基于米尔电子MYD-JD9X开发板打造成开源的Thingsboard网关。 Thingsboard网关是一个开源的软件网关,采用python作为开发语言,可以部署在任何支持 python 运行环境的主机上,灵…

vxe-table 打包部署上线,校验样式失效

正常效果 打包上线后的样式 样式失效原因,vue版本与vxe-table版本不兼容导致 版本 "vxe-table": "^4.3.5", "vxe-table-plugin-element": "^3.0.6", "xe-utils": "^3.5.4",由于vxe-table最新版本是4…

【Docker】联合探讨Docker:容器化技术的革命性应用

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

【大数据】Hadoop

文章目录 概述Hadoop组成HDFSMapReduce写MapReduce程序(Hadoop streaming) YARNHadoop 启动 工作方式Hadoop的主从工作方式Hadoop的守护进程 运行模式本地运行模式伪分布式运行模式完全分布式运行模式 Hadoop高可用的解决方案ZooKeeper quorumZKFC 环境搭…

postman接收后端返回的文件流并自动下载

不要点send,点send and download,postman接受完文件流会弹出文件保存框让你选择保存路径

【Sentinel】Sentinel簇点链路的形成

说明 一切节点的跟是 machine-root,同一个资源在不同链路会创建多个DefaultNode,但是在全局只会创建一个 ClusterNode machine-root/\/ \EntranceNode1 EntranceNode2/ \/ \DefaultNode(nodeA) DefaultNode(nodeA)|…

Fast R-CNN(2015.9)

文章目录 AbstractIntroductionR-CNN and SPPnet训练是一个多阶段的流水线训练在空间和时间上都很昂贵目标检测速度慢 Contributions Fast R-CNN architecture and trainingThe RoI pooling layerInitializing from pre-trained networksFine-tuning for detectionMulti-task l…

【ARM Coresight 系列文章 3.3 - ARM Coresight SWD 协议详细介绍】

文章目录 1.1 SWD 协议框图1.2 读/写时序及命令1.2.1 SWD 时序1.2.2 SWD 命令详情1.3 芯片探测1.3.1 获取芯片 ID1.4 读/写操作1.1 SWD 协议框图 SWD协议可以配置SoC内部几乎所有的寄存器。时钟信号由SWCLK 管脚输入,数据信号从SWDIO管脚输入输出。首先 HOST 对SW-DP 进行操作…

OTA: Optimal Transport Assignment for Object Detection 论文和代码学习

OTA 原因步骤什么是最优传输策略标签分配的OT正标签分配负标签分配损失计算中心点距离保持稳定动态k的选取 整体流程代码使用 论文连接: 原因 1、全部按照一个策略如IOU来分配GT和Anchors不能得到全局最优,可能只能得到局部最优。 2、目前提出的ATSS和P…

井盖异动传感器丨井盖状态监测仪助力排水管网系统装上“眼睛”

智慧排水技术作为现代城市管理的重要组成部分,正在以其高效、可持续和环保的特点在全球范围内得到广泛应用。 随着城市化进程的不断加速,城市面临着日益严重的排水管理挑战。国家政府也在《全国城市市政基础设施建设“十三五”规划》等明确要求建设城市…

vue2.x封装svg组件并使用

第一步&#xff1a;安装svg-sprite-loader插件 <!-- svg-sprite-loader svg雪碧图 转换工具 --> <!-- <symbol> 元素中的 path 就是绘制图标的路径&#xff0c;这种一大串的东西我们肯定没办法手动的去处理&#xff0c; 那么就需要用到插件 svg-sprite-loader …

福建三明大型工程机械3D扫描测量工程零件开模加工逆向抄数-CASAIM中科广电

高精度3D扫描测量技术已经在大型工件制造领域发挥着重要作用&#xff0c;可以高精度高效率实现全尺寸三维测量&#xff0c;本期&#xff0c;CASAIM要分享的应用是大型工程机械3D扫描测量案例。 铣轮是深基础施工领域内工法先进、技术复杂程度高、高附加值的地连墙设备&#xff…

基于QT的图书管理系统

获取代码&#xff1a; 知识付费时代&#xff0c;低价有偿获取代码&#xff0c;请理解&#xff01; (1) 下载链接: 后发(2) 添加博主微信获取&#xff08;有偿&#xff09;,备注来源: mryang511688(3) 快速扫码咨询&#xff1a; 项目描述 技术&#xff1a;C、QT等 摘要&#…

YOLOv5 添加 OTA,并使用 coco、CrowdHuman数据集进行训练。

YOLO-OTA 第一步&#xff1a;拉取 YOLOv5 的代码第二步&#xff1a;添加 ComputeLossOTA 函数第二步&#xff1a;修改 train 和 val 中损失函数为 ComputeLossOTA 函数1、在 train.py 中 首先添加 ComputeLossOTA 库。2、在 train.py 修改初始化的损失函数3、在 train.py 修改一…

黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman

文章目录 1、为什么要使用Postman&#xff1f;2、什么是Postman&#xff1f; 1、为什么要使用Postman&#xff1f; 目前我们开发项目大都是前后端分离项目&#xff0c;前端采用h5cssjsvue基于nodejs&#xff0c;后端采用java、SpringBoot、SSM&#xff0c;大型项目采用SpringC…

【C语言】实现通讯录管理系统

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家实现通讯录&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 前言二. 通讯录的实现2.1 写出基本框架2.2 制作menu菜单2.3 创建联系人和通讯录结构体2.4 …

LSM Tree 深度解析

我们将深入探讨日志结构合并树&#xff0c;也称为LSM Tree&#xff1a;这是许多高度可扩展的NoSQL分布式键值型数据库的基础数据结构&#xff0c;例如Amazon的DynamoDB、Cassandra和ScyllaDB。这些数据库的设计被认为支持比传统关系数据库更高的写入速率。我们将看到LSM Tree如…

驱动开发4 使用字符设备驱动的分步实现编写LED驱动(LED亮灯)

一、思维导图 二、通过字符设备驱动的分步实现编写LED驱动&#xff0c;另外实现特备文件和设备的绑定 应用程序 test.c #include<stdlib.h> #include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include…

Jenkins部署失败:JDK ‘jdk1.8.0_381‘ not supported to run Maven projects

Jenkins部署报错&#xff1a;JDK ‘jdk1.8.0_381’ not supported to run Maven projects提示使用的jdk有问题&#xff0c;启动的jdk版本不能满足项目启动。 登录Jenkins管理页面&#xff0c;系统管理——全局工具配置——JDK安装配置满足条件的JDK版本&#xff0c;保存配置&…