【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器

目录

一. 贡献概述

二. 方法详解

a) 训练阶段

b) 推理生成阶段:

三. 综合结果

四. 注意力可视化

五. 选择性主题驱动图像生成

六. 人体图像生成

七. 可推广到视频生成模型

八. 论文

九. 个人思考


稳定扩散(Stable Diffusion)模型可以让广泛的用户群轻松地根据文本提示生成图像。

但人们越来越感兴趣的领域是主题驱动生成,比如关注焦点从创建通用主题(例如“一只猫”)转移到生成特定实例(例如“这只猫”)。主题驱动定义可以见之前一篇文章DreamTuner(点击可跳转)。

今天要介绍的SSR-Encoder就是可以用于主题驱动生成的通用编码器。

一. 贡献概述

上文提到,人们对主题驱动越来越感兴趣。但通过制作完美的文本提示来生成所需的主题内容是一大难点,并且对大多数用户而言门槛略高。

分析已有的解决策略,可以发现:

  1. 主题驱动的图像生成任务通过从参考图像中学习主题,并生成符合身份和风格等特定概念的图像。

  2. 一种方法是涉及test-time微调,虽然有效,但需要大量的计算资源来学习每个新主题。

  3. 一种方法是将参考图像编码到图像嵌入中以绕过微调成本。但是基于编码器的模型通常需要与基础扩散模型联合训练,限制了它们的通用性。

  4. 一个同期工作 IP-adapter 通过学习投影将图像信息注入 U-Net 来解决微调成本和通用性,避免了对基础的文本到图像模型进行微调,从而拓宽了在个性化模型中的应用。

但问题是:

  1. 尽管之前的策略都有进步,但经常被忽视的一个关键方面是精准提取主题最丰富的信息表示

  2. 图像是主题、背景和风格的复杂组合,因此专注于有效表现主题的最关键元素至关重要。

如何解决:

  1. 文中提出的SSR-Encoder是一种新颖的架构,旨在有选择地从单个或多个参考图像中捕获任何主题

  2. SSR-Encoder响应各种查询模式,包括文本和掩码,无需测试时微调

  3. SSR-Encoder结合了 Token-to-Patch Aligner(将查询输入与图像补丁对齐)和保留细节主题编码器(用于提取和保留主题的精细特征),从而生成主题嵌入。这些嵌入与原始文本嵌入结合使用,决定了生成过程。

  4. SSR-Encoder以其模型通用性和效率为特点,适用于一系列自定义模型和控制模块。通过嵌入一致性正则化损失来改进训练。

  5. 大量实验证明了SSR-Encoder在多功能和高质量图像生成方面的有效性,表明了其广泛的适用性。

图片

SSR 编码器是一种模型通用编码器,它能够根据所选的图像表示来指导任何定制的扩散模型,用于单个主题驱动的图像生成(顶部分支)从不同图像(中间分支)生成多个主题驱动的图像通过文本查询或掩码查询,无需任何额外的测试时间微调此外,我们的 SSR 编码器还可以应用于具有附加控制的可控生成(底部分支)。

二. 方法详解

图片

a) 训练阶段

图片

  1. 训练时候, SSR-Encoder的输入是参考图像以及查询输入(掩膜查询或者文字查询)。

  2. SSR-Encoder的编码输出注入基础T2I模型,做法类似IPAdapter。

  3. 可以与任何自定义扩散模型集成,而无需测试时微调。

  4. 训练过程固定文本编码器,VAE和基础模型的参数,只训练SSR-Encoder。

b) 推理生成阶段:

图片

  1. 给定一个查询文本-图像对,SSR-Encoder采用token-to-patch aligner来突出显示查询中参考图像中的选择性区域。

  2. 同时,它通过保留细节的主题编码器提取主题的细粒度细节,通过token-to-patch aligner投影多尺度视觉嵌入。

  3. 然后,采用主题条件生成来生成具有高保真度和创造性可编辑性的特定主题。

三. 综合结果

SSR-Encoder 在不同生成能力下的结果,支持两种查询模式,并且适用于各种任务,包括单主体和多主体条件生成

其多功能性扩展到与其他定制模型的集成以及与现成 ControlNet 的兼容性。

四. 注意力可视化

注意力图的可视化

五. 选择性主题驱动图像生成

从单个图像中选择不同的主题以进行重新生成图像。

六. 人体图像生成

尽管 SSR-Encoder没有接受过特定领域设置(例如人脸)的训练,但它已经能够捕获对象的复杂细节

利用 OpenImages 数据集中的人脸图像作为生成人体图像的参考图像。为了更好地说明结果,还使用了两位名人的图像作为参考。

七. 可推广到视频生成模型

SSR-Encoder不仅具有足够的通用性,可以适应各种自定义模型和可控性模块,而且还可以有效地应用于视频生成,与视频生成模型无缝集成

下面演示了将 SSR-Encoder与 Animatediff 相结合的影响。尽管没有接受过视频数据的训练,该方法可以完美地与 Animatediff 结合起来,生成与参考图像保持一致的角色身份的视频

八. 论文

论文:https://arxiv.org/pdf/2312.16272.pdf

九. 个人思考

这个项目挺有意义的,可以用极少代价即可固定特定主题,扩展文生图和图生视频的生成能力上限,还能充分利用基础模型。整体的思路有点类似IPAdapter。等代码公开后可以对比分析一波。


欢迎加入AI杰克王的免费知识星球,海量干货等着你,一起探讨学习AIGC!

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

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

相关文章

vue3项目中axios的常见用法和封装拦截(详细解释)

1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库,用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求,并获得服务端返回的数据。 此外,Axios还提供…

用js计算 m-n 之间所有数的和

<script>let mprompt(输入小值)let nprompt(输入大值)function fn(min,max){let sum0for(let imin;i<max;i){sumi}return sum}let allfn(m,n)console.log(和&#xff1a;${all})</script> 效果&#xff1a;

【elfboard linux开发板】7.i2C工具应用与aht20温湿度寄存器读取

1. I2C工具查看aht20的温湿度寄存器值 1.1 原理图 传感器通过IIC方式进行通信&#xff0c;连接的为IIC1总线&#xff0c;且设备地址为0x38&#xff0c;实际上通过后续iic工具查询&#xff0c;这个设备是挂载在iic-0上 1.2 I2C工具 通过i2c工具可以实现查询i2c总线、以及上面…

C#,入门教程(11)——枚举(Enum)的基础知识和高级应用

上一篇&#xff1a; C#&#xff0c;入门教程(10)——常量、变量与命名规则的基础知识https://blog.csdn.net/beijinghorn/article/details/123913570 不会枚举&#xff0c;就不会编程&#xff01; 枚举 一个有组织的常量系列 比如&#xff1a;一个星期每一天的名字&#xf…

鸿蒙开发之拖拽事件

一、拖拽涉及的方法 Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//拖拽开始.onDragStart((event: DragEvent) > {console.log(drag event onDragStartevent.getX())})//拖拽进入组件范围&#xff0c;需要监听onDrop配合.onDragEnter((event: DragEvent) …

backtrader框架初探,轻松跑通策略并策略分析

网上有很多backtrader的文章&#xff0c;并有些将其与vnpy做比较&#xff0c;经过安装后发现&#xff0c;还是backtrader教程简单。 1、前期准备 # 安装akshare免费行情源 pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-hostmirrors.aliyun.com …

前端--基础 常用标签 - ( 内部链接,空链接,下载链接,网页元素连接)

链接分类 &#xff1a; 外部链接 内部链接 空链接 下载链接 网页元素链接 内部链接 &#xff1a; 即 网站内部页面之间的相互链接&#xff0c;直接点击 链接内部页面名称即可 所谓内部链接&#xff0c;就是在同一个网站里面&#xff0c;有许多链接&#xff0c;当你在 a…

Scrum的工件

我们采用了Scrum进行开发方面的管理&#xff0c;那么所有的计划和工作都应该是透明的&#xff0c;这给了我们检查这些东西的机会&#xff0c;以便能够即时做出调整来适应即将发生的变化。 那么Scrum为我们设计了一些工件帮助我们检查我们的工作和计划&#xff0c;每个工件都有…

数据结构入门到入土——链表(1)

目录 一&#xff0c;顺序表表/ArrayList的缺陷 二&#xff0c;链表 三&#xff0c;链表的实现 四&#xff0c;与链表有关的题目练习&#xff08;1&#xff09; 1.删除链表中等于给定值 val 的所有节点 2.反转一个单链表 3.给定一个带有头结点 head 的非空单链表&#xf…

机器视觉系统选型-环境配置:报错序列不包含任何元素 的解决方法

描述 环境&#xff1a;VM4.0.0VS2015 及以上 现象&#xff1a;配置环境后&#xff0c;获取线线测量模块结果&#xff0c;报错“序列不包含任何元素”。如下图所示&#xff1a; 解答 将“\VisionMaster4.0.0\Development\V4.0.0 \ComControls\bin\x64”下整体重新拷贝。

Python join()方法:合并字符串及 dir()和help()帮助函数

Python dir()和help()帮助函数 join() 方法也是非常重要的字符串方法&#xff0c;它是 split() 方法的逆方法&#xff0c;用来将列表&#xff08;或元组&#xff09;中包含的多个字符串连接成一个字符串。 使用 join() 方法合并字符串时&#xff0c;它会将列表&#xff08;或…

深入浅出 Zookeeper 中的 ZAB 协议

本文主要内容如下&#xff1a; ZAB 协议的全称是 Zookeeper Atomic Broadcase&#xff0c;原子广播协议。 作用&#xff1a;通过这个 ZAB 协议可以进行集群间主备节点的数据同步&#xff0c;保证数据的一致性。 在讲解 ZAB 协议之前&#xff0c;我们必须要了解 Zookeeper 的各…

Grounding 模型 + SAM 报错

引入 Grounding 目标检测模型串联 SAM 从而实现实例分割任务&#xff0c;目前支持 Grounding DINO 和 GLIP 参考教程 MMDetection-SAM 如果是 Grounding DINO 则安装如下依赖即可 cd playground pip install githttps://github.com/facebookresearch/segment-anything.git pip…

uni-app 前后端调用实例 基于Springboot 上拉分页实现

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

java spring mvc 初探 web搭建过程详解

提前准备安装tomcat 设备:mac 第一步:下载 进入官网下载压缩包 注意:如果jdk版本是1.8,则tomcat需要v8才行,否则会报错 https://tomcat.apache.org/ 第二步:解压 解压后路径 /Users/you/Library/tomcat/apache-tomcat-8.5.73 进入此目录 修改配置 code setclasspath.…

Java SE面试

1.什么是 Java&#xff1f; Java 是一门面向对象的编程语言&#xff0c;不仅吸收了 C语言的各种优点&#xff0c;还摒弃了 C里难以理解的多继承、指针等概念&#xff0c;因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编程语言的优秀代表&#xff…

C+语言的新特性

总是期待学习别人做好了的东西&#xff0c;是否也是一种懒惰呢&#xff1f; C语言是一门想象中的语言&#xff0c;它介于C和C之间。新的研究表明&#xff0c;C语言不支持某些特性&#xff0c;而C过于复杂。于是&#xff0c;便有了C语言&#xff0c;它的新特性如下&#xff1a; …

【已解决】js定义对象属性是.如何访问

当变量没有length属性的时候&#xff0c;可能是个对象变量&#xff0c;当有键值对的时候就可能是个对象&#xff0c;读者都知道的是&#xff0c;用typeof(变量)可以查看属性&#xff0c;今天本文解决的问题是如果js定义对象中属性是"点"如何访问 问题再现 var a {…

【Linux软件包管理器】yum详解

目录 1、什么是软件包 2、yum的操作 1&#xff09;yum源 2&#xff09;三板斧 ① yum list ② yum install [软键名] ③ yum remove [软件名] 1、什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了,…

Dubbo入门介绍和实战

1. 引言 Dubbo是一款开源的高性能、轻量级的Java RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;旨在解决分布式服务之间的通信问题。本文将介绍Dubbo的基础概念、核心特性以及使用场景&#xff0c;包括实际示例演示。 2. 什么是Dubbo&#xff1f; Dubbo是阿里巴…
最新文章