RCG Self-conditioned Image Generation via Generating Representations

RCG: Self-conditioned Image Generation via Generating Representations

TL; DR:将图像的无监督表征作为(自)条件(而非是将文本 prompt 作为条件),生成与原图语义内容一致的多样且高质量结果。视觉训练能不能 / 需不需要摆脱文本,仍有待研究。

引言

就像图像自监督表征学习(对比学习 / 图像掩码建模)成功赶超了有监督训练一样,作者想要在图像生成领域,使得无条件(自条件)生成的性能追赶上条件生成。

不同于无条件生成直接将噪声分布映射到图像分布。本文提出的自条件生成框架是先通过自监督表征训练得到图像编码器提取图像的表征,再训练一个表征 diffusion 模型对表征进行去噪,最后使用根据去噪后的表征再生成真实图片。

在这里插入图片描述

方法

本文提出了 RCG(Rpresentation Conditioned image Generation),RCG 由三部分组成:一个预训练的自监督图像编码器、一个表征生成器和一个像素生成器。详细介绍如下:

图像编码器:RCG 使用了 moco-v3 作为图像编码器,将图像分布(image distribution)映射到表征分布(representation distribution)。表征分布需要具有两个特点:易于用 diffusion 模型建模和含有丰富的高层语义特征。每个表征都根据自身的均值和标准差进行标准化

表征生成器:RCG 中的表征生成器称为 RDM,用于从表征分布中采样。RDM 采用具有多个残差块的全连接网络作为其骨干网络,残差块的具体结构如图所示。RDM 采用 DDIM 的训练和采样算法。训练阶段,图像表征 z 0 z_0 z0 会掺入高斯噪声 ϵ \epsilon ϵ 得到 z t z_t zt,RDM 的训练目标就是对 z t z_t zt 进行去噪,得到 z 0 z_0 z0 。推理阶段,采用 DDIM 的采样方式,RDM 对采样的高斯噪声降噪,生成图像表征。

在这里插入图片描述

像素生成器:RCG 中的像素生成器负责根据给定的图像表征作为条件,来生成图像像素。理论上来说,这里的像素生成器可以是任何条件生成模型,只要将原本的条件(text, label, etc.)表征换成自监督的图像表征即可。这里作者使用了 MAGE (本文一作的另一篇工作)作为像素生成器。训练阶段,像素生成器根据带掩码的图像和该图的表征,来重建原图。推理阶段,像素生成器根据 RDM 生成的图像表征和一个完全的掩码图,来生成图像。

在这里插入图片描述

以上介绍了 RCG 的三个主要组件及其训练方式。另外,RCG 还有一个重要特点,即虽然它本身是一种无条件(自条件)的生成方法,但它可以应用 Classifier-free Guidance(CFG)。

Classifier-free Guidance:CFG 可以提高生成模型的性能,但一般在无条件生成模型上没法用,因为 CFG 实际上是一种通过无条件的生成,来为条件生成提供引导的方法。虽然 RCG 也可以用于无条件生成,但实际上 RCG 中的像素生成器是要根据无监督的图像表征(作为自条件)来生成的,所以 RCG 可以应用 CFG,来进一步提高性能。

RCG 采用了 Muse 方法来在 MAGE 像素生成器中使用 CFG。在训练阶段,MAGE 有 10% 的概率会在没有自监督表征作为条件的情况下进行训练。在推理时,MAGE 每步会为每个 mask token 预测一个无条件的 logit l u l_u lu,和一个条件于自监督表征的 logit l c l_c lc,最终的 logits l g l_g lg l c l_c lc 根据系数 τ \tau τ 远离 l u l_u lu l g = l c + τ ( l c − l u ) l_g=l_c+\tau (l_c-l_u) lg=lc+τ(lclu)。MAGE 根据最终的 l g l_g lg 预测 mask token。

结果

定量结果

先看一下再 ImageNet 256px 上图像生成的定量指标结果。需要说明的是,由于无条件生成的方法无法使用 CFG,故这里 RCG 列出的结果也是没用 CFG 的。RCG-L FID 达到 3.56,IS 达到 186.9,超越了所有的无条件生成的 baseline,甚至超越了所有的条件生成的模型。

在这里插入图片描述

下面这张表是对比条件生成,并且加 CFG 的结果。可以看到,使用 CFG 之后,RCG 的 FID (3.56->3.31) 和 IS (186.9->253.4) 都有所提升,对比条件生成的方法使用 CFG 之后,也很接近了。

在这里插入图片描述

文章还做了丰富的消融实验,包括自监督表征模型大小/深度/宽度、projection 维度、去噪步数等,详见原文。

定性结果

文章的定性结果也很有意思,这里主要看表征重建和表征插值两个结果。

表征重建 是首先 ImageNet 中的图像提取自监督表征,然后对表征加入一定噪声之后,RDM 去噪,再生成图像。可以看到,RCG 的生成结果几乎完美的保持了图像的语义,并且具有一定的多样性。这说明了预训练的自监督表征真的能够表达图像的语义。

多说一句,感觉这种能力非常适合拿来做图像分类的数据增强,因为它能忠实地保持语义,同时具有多样性。而数据增强的目标就是在不改变图像基本语义的基础上,尽量丰富图像的多样性。一般的图像增强是在 pixel 维度加噪声,而 RCG 生成则相当于在 representation 维度加噪声。

在这里插入图片描述

P.S. 在笔者自己的实验中,RCG 对于自然图像的生成基本没有问题,但是对于人脸的生成却是崩的一塌糊涂。经知友提点,这是因为处于 ethics 考虑,目前 ImageNet 的人脸都被加了模糊,完全没有细节。如需生成人脸图像,自行收集相关数据集 finetune 会好一点。

在这里插入图片描述

表征重建

既然有丰富语义的表征,那能不能像之前 GAN 那样对 latent 进行编辑/插值,来控制生成图片的属性呢?这样的实验自然也是少不了,可以看到,两个图片表征之间插值的生成结果反应了变化的过程。这表明自监督表征空间确实是含有丰富的语义的,并且非常平滑。

在这里插入图片描述

总结

在计算机视觉领域,自监督表征学习(对比学习 / 图像掩码建模)基本已经摆脱了人工标注数据的束缚,迈入自监督学习的新时代。而在图像生成领域,还是需要大量的带标签(text/label)的图文对。本文尝试根据自监督表征,来进行自条件的图像生成,性能直逼有条件生成,可以说是接近弥合了这一 gap。

从方法的角度来看,是很有意思的一篇工作,结合视觉自监督表征,实现了无标注、无文本条件的生成。唯一遗憾就是方法本身看起来不太简洁,不熟悉几篇前置工作的话,理解起来还是要稍微费点劲儿的。

从应用的角度来看,上文中已经提到,RCG 生成的图像是一个很自然的数据扩增方法,而且在少样本的 setting 下,可能能发挥不小的作用。

从更大的视角来看,视觉智能的出现到底需不需要依赖于文本。即使是已经被认为取得成功的图像自监督表征方法中,无论如何最终都至少需要一个 linear probing 的微调,与我们想象中的”智能“还相去甚远。CLIP 的意义和影响力无疑是非常巨大的,它借助图文对这一弱监督数据,对齐了图文双模态。视觉领域终于也借助语言监督,实现了所谓的 zero-shot,从而带来了无限的想象力。从此,各种各样的视觉任务(分类、检测、分割等)都借助 CLIP 实现了 open-vocab。

然而,毕竟图像与文本是两个不同的模态,差别也是固有的。文本能帮助视觉,也会限制视觉。所谓”一图胜千言“,很多情况下,一张图的内容可能是语言很难甚至无法精确描述的。即,视觉的细粒度可以认为是无限的。以 CLIP 为例,熟悉它的人都知道,虽然说是对齐了两种模态,但是无论正负样本,CLIP 的图像文本相关性分数会集中在一个很小的区间(如 0.2-0.5),而非遍布整个 0-1 区间,这或许就是图文两模态之间 gap 的一点体现。

无独有偶,近期大火的 LVM,也是脱离文本的纯视觉训练方式,把视觉数据都统一起来,然后做自回归式的预测下一个 token。似乎大牛们都在探索无文本(text, label)的视觉训练。在 LLM 爆火的这一年,感觉 CV 的主题就是往上蹭,随便兜一个什么 adapter,就把视觉编码器的特征接到 LLM 上去。这种方式当然可以很好地借助 LLM 的理解能力,出一些前所未有的效果(GPT4 等)。但是按照条路走下去,看起来从此视觉就没什么需要研究的了,只是训一个 encoder,做好 LLM 的 sensor 即可。个人觉得这不会是 CV 或者图文多模态的最终形态。很期待视觉领域本身能涌现出更多更有想法的工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android :Paging (分页)加载数据-简单应用

1.Paging介绍: 安卓Paging是一种分页加载数据的方法,它基于无限滚动模式而设计,可以帮助应用更高效地利用网络带宽和系统资源。Paging库可以加载和显示来自本地存储或网络中更大的数据集中的数据页面,适用于以列表的形式加载大量…

VSCode配置记录

1. 修改代码背景颜色 1)Shift Command P,搜索框输入:settings.json 2)输入配置 {"workbench.colorCustomizations": {"editor.lineHighlightBackground": "#86e9e93d", # 修改鼠标所在行背景色…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢?接下来给大家讲讲。 Web自动化三大报错(Exception) 1. Exception1:no such element(没有在页面上找到这个元素) reason1:元素延迟加载了 solution: …

功率放大器有哪些功能和作用

功率放大器是一种电子设备,主要用于将输入的低功率信号放大为更大的功率信号。功率放大器的主要功能和作用包括: 信号放大:功率放大器可以将输入的低功率信号放大为更大的功率信号。这对于一些需要输出更大功率的应用来说非常重要&#xff0c…

外包干了3年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了差不多3年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

腾讯云服务器购买:腾讯云服务器购买指南一步步全流程攻略

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

正点原子高速无线下载器下载bin文件

有时候需要帮忙调试,直接下载写好代码的bin文件比较快,所以找到这个方式,关于keil如何生成bin文件可以看上篇文章,其他IDE生成方式我就遇到再说了,可以自己在网上搜教程。 关于正点原子的高速无线下载器可以去下载官方…

vrep学习笔记8——将vrep中graph文件导出为csv.文件,并导入matlab中绘制曲线图

在机械臂仿真过程中,使用vrep中的graph图表功能绘制出的曲线不够清晰,如何将graph中的图表数据导出为csv文件,并使用matlab绘制出同样的曲线图呢? 1.将vrep中的graph导出为csv文件 首先选中graph如下 选择file-export-selected g…

报错:AttributeError: ‘DataFrame‘ object has no attribute ‘reshape‘

这个错误通常发生在你试图在 Pandas DataFrame 上直接使用 reshape 方法时。reshape 方法通常与 NumPy 数组相关联,而不是 Pandas DataFrame。 如果你正在使用 Pandas DataFrame 并希望重新塑造它,你应该使用 Pandas 的重塑函数,如 pivot、m…

06_W5500_DHCP

1.DHCP协议介绍: DHCP(Dynamic Host Configuration Protocol)是一种用于自动分配IP地址和其他网络配置信息的协议。它允许网络中的设备(如计算机、手机、打印机等)在连接到网络时自动获取IP地址、子网掩码、默认网关、…

geolife笔记:比较不同轨迹相似度方法

1 问题描述 在geolife 笔记:将所有轨迹放入一个DataFrame-CSDN博客中,已经将所有的轨迹放入一个DataFrame中了,我们现在需要比较,在不同的轨迹距离度量方法下,轨迹相似度的效果。 这里采用论文笔记:Deep R…

前沿技术|张磊:RR22 Blazing Fast PSI 实现介绍

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow ​ 11月25日,「隐语开源社区 Meetup西安站」顺利举…

Pika:AIGC新秀,视频生成产业或迎来GPT时刻

今天分享的AIGC系列深度研究报告:《Pika:AIGC新秀,视频生成产业或迎来GPT时刻》。 (报告出品方:中泰证券) 报告共计:11页 Pika:专注Text to Video生成场景,支持3D和动漫…

从视频中提取图片,轻松制作专属视频封面

你是否曾经为如何制作一个吸引人的视频封面而烦恼?现在,我们将向你展示如何从视频中提取图片,并轻松制作专属的视频封面。无论你是视频编辑新手,还是经验丰富的专业人士,这个技巧都能够帮助你快速提升你的视频品质。 …

时间戳与QDateTime转换,以及QString转时间戳

1、主要有时间戳->QDateTime,QDateTime->QString 2、同时QString->QDateTime,QDateTime->时间戳 详情见代码&#xff1a; //QDateTime转时间戳qint64 time QDateTime::currentSecsSinceEpoch();double nowTime (double)time;qDebug()<<"nowTime1111…

【VTK】VTK中的光标样式

很高兴在雪易的CSDN遇见你 前言 本文分享VTK中的光标设置相关内容技术&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点赞就是我的动力(&#xff3e;&#xff35;&#…

你知道如何画时间轴吗?

时间轴的英文是time axis。贯穿四维空间的一条线&#xff0c;是虚数轴&#xff0c;时间轴上一段距离表示时间 。&#xff08;源自“百度百科”&#xff09; 时间轴&#xff1a;通过互联网技术&#xff0c;依据时间顺序&#xff0c;把一方面或多方面的事件串联起来&#xff0c;…

12.11作业

1. 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&…

java面试题-mysql索引相关问题

远离八股文&#xff0c;面试大白话&#xff0c;通俗且易懂 看完后试着用自己的话复述出来。有问题请指出&#xff0c;有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来&#xff0c;大家一起解决。 java面试题汇总-目录-持续更新中 这一块本想着晚一点再整…

大型软件编程实际应用实例:个体诊所电子处方系统,使用配方模板功能输入症状就可开出处方软件操作教程

一、前言&#xff1a; 在开电子处方的时候&#xff0c;如果能够输入症状就可以一键导入配方&#xff0c;则在很大程度上可以节省很多时间。而且这个配方可以根据自己的经验自己设置&#xff0c;下面以 佳易王诊所电子处方软件为例说明。 二、具体一键导入配方详细操作教程 点击…