【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR
介绍
尽管最先进的模型可以生成常见实体的高质量图像,但它们通常难以生成不常见实体的图像,例如“Chortai(狗)”或“Picarones(食物)”。为了解决这个问题,我们提出了检索增强文本到图像生成器(Re-Imagen),这是一种生成模型,它使用检索到的信息来生成高保真和忠实的图像,即使对于罕见或看不见的实体也是如此。给定文本提示,Re-Imagen 访问外部多模态知识库来检索相关(图像、文本)对,并将它们用作生成图像的参考。
Re-Imagen 在两个图像生成基准上取得了新的 SoTA FID 结果,例如 COCO (即,FID = 5.25)和 WikiImage(即,FID = 5.82),无需微调。为了进一步评估模型的功能,我们引入了 EntityDrawBench,这是一个新的基准,可跨多个视觉域评估从频繁到罕见的各种实体的图像生成。对 EntityDrawBench 的人类评估表明,Re-Imagen 在照片真实感方面的表现与最佳先前模型相当,但具有明显更好的现实世界忠实度,尤其是在不太频繁的实体上。
内容
通过在多模态知识库中搜索实体信息来减轻这种限制,而不是试图记住实体的外观稀有实体。
它包含三个独立的生成阶段(实现为 U-Nets (Ronneberger et al.,2015))以逐渐产生高分辨率(即, 1024
×
第1024章)特别是,我们在由 Imagen 使用的图像文本数据集构建的数据集上训练 Re-Imagen (Saharia等人,2022),其中每个数据实例基于文本与数据集中的前 k 个最近邻相关联-只有BM25分数。
无分类器指导 Ho 和 Salimans ( 2021 )首先提出了无分类器指导来权衡多样性和样本质量。这种采样策略由于其简单性而被广泛使用。
模型的架构 ,其中我们将 UNet 分解为下采样编码器 (DStack) 和上采样解码器 (UStack)。具体来说,DStack以图像、文本和时间步作为输入,生成特征图,
当我们对检索到的< image, text >对进行编码时,我们共享相同的 DStack 编码器(使用t设置为零),这会产生一组特征图。
然后,我们使用多头注意力模块 (Vaswani et al.,2017)来提取最相关的信息以生成新的特征图。
然后上采样堆栈解码器预测噪声项,以用于训练期间的回归或 DDPM 采样。
评价指标
,FID (Fréchet Inception Distance) 和 ZS-FID (Zero-Shot Fréchet Inception Distance) 是两种常用的评估生成模型性能的指标。它们都是通过比较生成图像与真实图像的分布差异来进行评估的。
FID 需要访问到真实图像,并且在这些图像上训练模型,因此它更适合于有大量真实图像可用的情况。而 ZS-FID 不需要在真实图像上训练模型,因此它更适合于没有足够真实图像,或者想要评估模型在未见过的类别上的性能的情况。
FID
https://github.com/mseitzer/pytorch-fid#generating-a-compatible-npz-archive-from-a-dataset
FID 是一种衡量生成模型性能的指标,它通过比较生成图像与真实图像的统计特性来进行评估。具体来说,FID 使用 Inception 网络提取图像的特征,然后计算这些特征的高斯分布。FID 是根据这两个高斯分布的 Fréchet 距离来评价生成图像与真实图像的相似度。FID 越小,表明生成图像与真实图像的分布越接近,生成模型的性能越好。
ZS FID
ZS-FID 是 FID 的一个变种,它也是通过比较生成图像与真实图像的统计特性来进行评估。不过,ZS-FID 的一个关键区别在于,它不需要在真实图像上训练任何模型。这使得 ZS-FID 能够进行“零样本”或“零次射击”评估,即在没有真实图像的情况下评估生成模型的性能。这在某些情况下是非常有用的,例如当我们没有访问到足够的真实图像,或者当我们想要评估生成模型在未见过的类别上的性能时。
实验
Re-Imagen(使用 COCO 数据库)无需微调即可在 FID-30K 上实现显着增益:相对于 Imagen 大约有 2.0 的绝对 FID 改进。性能甚至比微调的 Make-A-Scene (Gafni et al. , 2022 )还要好,但比微调的 20B Parti 稍差。相比之下,从域外数据库检索的 Re-Imagen (LAION) 获得的增益较小,但仍比 Imagen 获得 0.4 FID 的改进。Re-Imagen 的性能远远优于另一种检索增强扩散模型 KNN-Diffusion。
由于 COCO 不包含不常见的实体,因此“实体知识”并不重要。相反,从训练集中检索可以为模型提供有用的“风格知识”。Re-Imagen能够使生成的图像适应相同风格的COCO分布,它可以获得更好的FID分数。从图4的上半部分可以看出 ,带有检索的Re-Imagen生成了与COCO相同风格的图像,而没有检索,输出仍然是高质量的,但风格与COCO不太相似。
图 4下半部分描述了一个示例 ,其中 LAION 检索找到“Island of San Giorgio Maggiore”,这有助于模型生成古典文艺复兴风格的教堂。当不检索生成时,模型无法生成特定的教堂。这表明在 WikiImages 数据集检索中拥有相关实体的重要性,也解释了为什么 LAION 数据库取得了最佳结果。我们还在附录 C中提供了来自 WikiImages 的更多示例。
ENTITYDRAWBENCH 上的以实体为中心的评估
数据集构建 我们引入EntityDrawBench来评估模型在不同视觉场景中生成不同实体集的能力。具体来说,我们从 Wikipedia Commons 和 Google Landmarks 中选择三种类型的视觉实体(狗品种、地标和食物)来构建我们的提示。我们总共收集了 150 个以实体为中心的评估提示。这些提示大多是独特的,我们无法通过Google图像搜索找到相应的图像。
我们使用提示作为输入,并使用其对应的图像文本对作为 Re-Imagen 的“检索”,生成四个 1024
×
1024 张图像。对于其他模型,我们也直接输入提示来生成四个图像。我们将从这四个样本中选出最好的图像来评价其真实感和忠实度。对于照片真实感,如果图像适度真实且没有明显的伪影,我们分配 1,否则,我们分配 0 分。对于忠实度度量,如果图像忠实于实体源和文本描述,我们分配 1,否则,我们分配0。
实体在 Imagen 训练语料库中的频率(前 50% 为“频繁”)进一步将实体分为“频繁”和“不频繁”类别。我们在 图 5中分别绘制了“频繁”和“不频繁”的忠实度得分。我们可以看到,我们的模型对输入实体的频率的敏感度低于其他模型,对于不频繁的实体仅下降了 10-20%。相比之下,Imagen 和 DALL-E 2 在不常见实体上都下降了 40%-50%。这项研究反映了文本到图像生成模型在长尾实体上的有效性。
我们提出了 Re-Imagen,一种检索增强扩散模型,并证明了其在生成真实且忠实图像方面的有效性。我们不仅通过标准基准(即COCO 和 WikiImage)上的自动 FID 测量,而且还通过新引入的 EntityDrawBench 上的人工评估来展示这些优势。我们进一步证明,我们的模型在从提及稀有实体的文本生成图像方面特别有效。
Re-Imagen 在文本到图像生成方面仍然存在众所周知的问题,我们将在下面的道德声明中对此进行回顾。此外,由于检索增强建模,Re-Imagen 还具有一些独特的局限性。首先,由于Re-Imagen对其所依赖的检索到的图像文本对很敏感,因此当检索到的图像质量较低时,会对生成的图像产生负面影响。其次,当实体的视觉外观超出生成空间时,Re-Imagen 有时仍然无法基于检索到的实体。第三,我们注意到超分辨率模型效果较差,并且经常会错过视觉实体的低级纹理细节。在未来的工作中,我们计划进一步研究上述局限性并解决它们。
相关文章:

【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR
介绍 尽管最先进的模型可以生成常见实体的高质量图像,但它们通常难以生成不常见实体的图像,例如“Chortai(狗)”或“Picarones(食物)”。为了解决这个问题,我们提出了检索增强文本到图像生成器…...

南美巴西市场最全分析开发攻略,收藏一篇就够了
巴西位于南美洲东部,是南美洲资源最丰富,经济活力和经济实力最强的国家。巴西作为拉丁美洲的出口大国,一直是一个比较有潜力的市场,亦是我国外贸公司和独立外贸人集群的地方。中国长期是巴西主要的合作伙伴,2022年占巴…...
c++中操作符->与 . 的使用与区别
在C中,-> 和 . 是两个不同的成员访问操作符,用于访问类、结构体或联合体的成员。 “->” 操作符: 用于通过指针访问指针所指向对象的成员。当有一个指向对象的指针时,可以使用 -> 操作符来访问该指针所指向对象的成员。…...

golang 编译器 汉化
1、找到左上角file选项,点击选中settings进行单机 2、找到settings中找到plugins选中进行点击 3、再框中输入chinese进行搜索,出结果后找到如下图所示,点击进行安装 4、安装完成后进行重启ide,完美解决...
压缩包系列
1、zip伪加密 一个zip文件由三部分组成:压缩源文件数据区压缩源文件目录区压缩源文件目录结束标志。 伪加密原理:zip伪加密是在文件头中加密标志位做修改,然后在打开时误被识别成加密压缩包。 压缩源文件数据区: 50 4B 03 04&a…...

互联网图片安全风控实战训练营开营!
内容安全风控,即针对互联网产生的海量内容的外部、内部风险做宏观到微观的引导和审核,从内容安全领域帮助企业化解监管风险和社会舆论风险,其核心是识别文本、图片、视频、音频中的有害内容。 由于互联网内容类型繁杂、多如牛毛,加…...

炫酷转换:Java实现Excel转换为图片的方法
摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在实际开发过程中,经常会有这样的需求:将Excel表格或特定区域转…...

vue elementui <el-date-picker>日期选择框限制只能选择90天内的日期(包括今天)
之前也写过其他限制日期的语句,感觉用dayjs()的subtract()和add()也挺方便易懂的,以此记录 安装dayjs npm install dayjs --save dayjs().add(value : Number, unit : String); dayjs().add(7, day); //在当前的基础上加7天dayjs().subtract(value : N…...
YOLOv5全新Neck改进:BiSPAN 结构独一无二,为目标检测打造全新融合网络,增强定位信号,对于小目标检测的定位具有重要意义
💡本篇内容:YOLOv5全新Neck改进:BiSPAN 结构升级版,为目标检测打造全新融合网络,增强定位信号,对于小目标检测的定位具有重要意义 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv…...

flutter开发实战-video_player插件播放抖音直播实现(仅限Android端)
flutter开发实战-video_player插件播放抖音直播实现(仅限Android端) 在之前的开发过程中,遇到video_player播放视频,通过查看video_player插件描述,可以看到video_player在Android端使用exoplayer,在iOS端…...

React组件
一、React组件 函数组件 // 函数组件 // 组件的名称必须首字母大写 // 函数组件必须有返回值 如果不需要渲染任何内容,则返回 null function HelloFn () {return <div>这是我的第一个函数组件!</div> }// 定义类组件 function App () {return (<di…...

[动手学深度学习]注意力机制Transformer学习笔记
动手学深度学习(视频):68 Transformer【动手学深度学习v2】_哔哩哔哩_bilibili 动手学深度学习(pdf):10.7. Transformer — 动手学深度学习 2.0.0 documentation (d2l.ai) 李沐Transformer论文逐段精读&a…...

hadoop集群安装并配置
文章目录 1.安装JDK 环境2.系统配置2.1修改本地hosts文件2.2创建hadoop 用户2.2 设置ssh免密(使用hadoop 用户生成) 3.安装 hadoop 3.2.43.1 安装hadoop3.1.1 配置Hadoop 环境变量 3.2配置 HDFS3.2.1 配置 workers 文件3.2.2 配置hadoop-env.sh3.2.3 配置…...

Quarto 入门教程 (3):代码框、图形、数据框设置
简介 本文是《手把手教你使用 Quarto 构建文档》第三期,前两期分别介绍了: 第一期 介绍了Quarto 构建文档的原理;可创建的文档类型;对应的参考资源分享。 第二期 介绍了如何使用 Quarto,并编译出文档(PDF…...

虚拟机Ubuntu18.04安装对应ROS版本详细教程!(含错误提示解决)
参考链接: Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客 1.4 ROS的安装与配置_哔哩哔哩_bilibili ROS官网:http://wiki.ros.org/melodic/Installation/Ubuntu 一、检查cmake 安装ROS时会自动安装旧版的Cmake3.10.2。所以在…...
#力扣:14. 最长公共前缀@FDDLC
14. 最长公共前缀 一、Java class Solution {public String longestCommonPrefix(String[] strs) {for (int l 0; ; l) {for (int i 0; i < strs.length; i) {if (l > strs[i].length() || strs[i].charAt(l) ! strs[0].charAt(l)) return strs[0].substring(0, l);}…...
Android 13.0 解锁状态下禁止下拉状态栏功能实现
1.前言 在13.0的系统定制化开发中,在关于一些systemui下拉状态栏的定制化功能开发中,对于关于systemui的下拉状态栏 是否可以下拉做了定制,用系统属性来判断是否可以在解锁的情况下可以下拉状态栏布局,虽然11.0 12.0和13.0的关于 下拉状态栏相关分析有区别,可以通过分析相…...

chromium线程模型(1)-普通线程实现(ui和io线程)
通过chromium 官方文档,线程和任务一节我们可以知道 ,chromium有两类线程,一类是普通线程,最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现,下一篇文章分析线程池的实现。ÿ…...

uniapp uni.showToast 一闪而过的问题
问题:在页面跳转uni.navigateBack()等操作的前或后,执行uni.showToast,即使代码中设置2000ms的显示时间,也会一闪而过。 解决:用setTimeout延后navigateBack的执行。...
代理模式介绍及具体实现(设计模式 三)
代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问 实例介绍和实现过程 假设我们正在开发一个电子商务网站,其中有一个商品库存管理系统。我们希望在每次查询商品库存之前,先进行权限验证,以确…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...