当前位置: 首页 > news >正文

【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!

相关文章:

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

目录 一. 贡献概述 二. 方法详解 a) 训练阶段 b) 推理生成阶段: 三. 综合结果 四. 注意力可视化 五. 选择性主题驱动图像生成 六. 人体图像生成 七. 可推广到视频生成模型 八. 论文 九. 个人思考 稳定扩散(Stable Diffusion)模型可…...

[C]jupyter中使用C

[C]jupyter中使用C 安装使用用处 安装 https://github.com/brendan-rius/jupyter-c-kernel 下拉找到3条命令,装就可以了 mac和linux可用 python3可用, 2不可以 第二条命令可以改为 : python3 install_c_kernel 小总结:如果有问题&#xff0…...

探讨一下WebINFO 下的一些思考

在平时的开发中,我们经常看到一个/WEB-INF 这个目录,这个是web 容器初始化加载的一个标准路径。官方解释:WEB-INF 是 Java 的 web 应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。也就是说,这…...

MySQL中的开发基于Python的SQL工具类操作数据库简单示例

操作数据库封装SQL工具类的两种方式 为了更方便的实现基于连接池和pymysql 连接数据库,需开发一个sql工具类来让sql操作更简洁用两张方式来封装SQL工具类 1 )单例模式 封装 db.py 工具类 import pymysql from dbutils.pooled_db import PooledDBclas…...

安卓Android Studio读写FM1208CPU卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.6c46789elLwMzv&id615391857885 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout x…...

二、Redis的特性与应用场景

Redis是一个在内存中存储数据的中间件&#xff0c;主要用于作为数据库、数据缓存&#xff0c;在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。 一、Redis特性 1、在内存中存储数据 MySQL主要是“表”的方式来存储组织数据的&#xff0c;是“关系型数…...

编程笔记 html5cssjs 019 HTML实体

编程笔记 html5&css&js 019 HTML实体 一、HTML 字符实体二、HTML 符号实体小结 在HTML文档中&#xff0c;用一些标记表示特定的格式&#xff0c;那我们想使用这些标记字符本身时就出了问题&#xff0c;直接使用时&#xff0c;会被浏览器解析为标记的&#xff0c;要想显…...

数据结构:树详解

创建二叉树 给出了完整的先序遍历序列&#xff0c;子树为空用’#’表示&#xff0c;所以这样我们在通过先序遍历序列创建二叉树时我们直到先序遍历序列是先进行根结点&#xff0c;然后左子树最后右子树的顺序进行遍历的&#xff0c;所以对于完整的先序遍历序列我们可以直到先序…...

list1.Sort((m, n) => m.Id - n.Id); id是double类型的为什么回报错

问题产生的地方 原因 对于 double 类型的属性&#xff0c;不能直接使用减法运算符进行比较。减法运算符只能用于数值类型&#xff0c;而 double 是浮点数类型。 要在 double 属性上进行排序&#xff0c;可以使用 CompareTo 方法或者使用自定义的比较器。 更改 要在 double 属性…...

GoLang vs Python

Python和Go是两种非常不同的编程语言&#xff0c;它们在设计哲学、用途和特性方面有各自的优势和局限性。以下是它们的一些主要区别&#xff1a; 设计哲学: Python: 设计简洁明了&#xff0c;强调代码的可读性和简洁性。Python遵循"只有一种方式来做一件事"的原则。…...

Hello 2024(A~D,F1)

新年坐大牢 A - Wallet Exchange 题意&#xff1a;共有俩钱包&#xff0c;每回合从其中一个钱包中拿走一块钱&#xff0c;谁拿走最后一块钱谁赢。 思路&#xff1a;奇偶讨论即可。 // Problem: A. Wallet Exchange // Contest: Codeforces - Hello 2024 // URL: https://cod…...

Python+Torch+FasterCNN网络目标检测识别

程序示例精选 PythonTorchFasterCNN网络目标检测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonTorchFasterCNN网络目标检测识别》编写代码&#xff0c;代码整洁&#xff0c;规…...

v8 pwn利用合集

文章目录 前置知识JS Object 相关Ignition 相关JIT - turboFan 相关starCTF2019 OOB【越界读写map字段】googleCTF2018 jit【浮点数精度丢失导致越界读写】数字经济线下 Browser【Object::toNumber中callback导致的越界写】前置知识 JS Object 相关 V8 中的对象表示 ==> 基…...

JVM:字节码

JVM&#xff1a;字节码 前言1. JVM概述1.1 JVM vs JDK vs JRE1.1.1 JVM1.1.2 JDK1.1.2.1 常用的JDK8是Oracle JDK 还是 OpenJDK 1.1.3 JRE1.1.4 三者之间的关系与区别 1.2 什么是字节码?采用字节码的好处是什么?1.3 Java 程序从源代码到运行的过程1.4 JVM的生命周期1.5 JVM架…...

常见网络设备及功能详解

网络设备 - 交换机 交换机&#xff1a;距离终端用户最近的设备&#xff0c;用于终端用户接入网络、对数据帧进行交换等。 交换机的功能&#xff1a; 终端设备&#xff08;PC、服务器等&#xff09;的网络接入二层交换&#xff08;Layer 2 Switching&#xff09; 网络设备 - …...

Python教程(20)——python面向对象编程基本概念

面向对象 类和对象初始化方法属性和方法self关键字继承多态 面向对象&#xff08;Object-oriented&#xff09;是一种常用的程序设计思想&#xff0c;它以对象作为程序的基本单元&#xff0c;将数据和操作封装在一起&#xff0c;通过对象之间的交互来实现程序的功能。 在面向对…...

C# Winform教程(一):MD5加密

1、介绍 在C#中&#xff0c;MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数&#xff0c;用于将任意长度的数据转换为固定长度的哈希值&#xff08;通常是128位&#xff09;。MD5广泛用于校验数据完整性、密码存储等领域。 2、示例 创建MD5加密…...

Mongodb使用指定索引删除数据

回顾Mongodb删除语法 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中&#xff0c;除了指定过滤器外&#xff0c;还可以指定写入策略&#xff0c;字符序和使用的索引。 …...

虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤

在虾皮&#xff08;Shopee&#xff09;平台上进行跨境电商业务&#xff0c;选品是至关重要的一环。有效的选品策略可以帮助卖家更好地了解市场需求&#xff0c;提高销售业绩和客户满意度。以下是一些成功的选品策略&#xff0c;可以帮助卖家在虾皮平台上取得更好的业务成绩。 先…...

QML —— 使用Qt虚拟键盘示例(附完整源码)

示例效果 使用"虚拟键盘"注意 &#xff08;例子的Qt版本:5.12.4&#xff09; 注意一&#xff1a;      /* 必须在main.cpp开始处加入如下代码&#xff0c;否则无法使用"虚拟键盘" */      qputenv(“QT_IM_MODULE”,QByteArray(“qtvirtualkeybo…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...