【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器
目录
一. 贡献概述
二. 方法详解
a) 训练阶段
b) 推理生成阶段:
三. 综合结果
四. 注意力可视化
五. 选择性主题驱动图像生成
六. 人体图像生成
七. 可推广到视频生成模型
八. 论文
九. 个人思考
稳定扩散(Stable Diffusion)模型可以让广泛的用户群轻松地根据文本提示生成图像。
但人们越来越感兴趣的领域是主题驱动生成,比如关注焦点从创建通用主题(例如“一只猫”)转移到生成特定实例(例如“这只猫”)。主题驱动定义可以见之前一篇文章DreamTuner(点击可跳转)。
今天要介绍的SSR-Encoder就是可以用于主题驱动生成的通用编码器。
一. 贡献概述
上文提到,人们对主题驱动越来越感兴趣。但通过制作完美的文本提示来生成所需的主题内容是一大难点,并且对大多数用户而言门槛略高。
分析已有的解决策略,可以发现:
-
主题驱动的图像生成任务通过从参考图像中学习主题,并生成符合身份和风格等特定概念的图像。
-
一种方法是涉及test-time微调,虽然有效,但需要大量的计算资源来学习每个新主题。
-
一种方法是将参考图像编码到图像嵌入中以绕过微调成本。但是基于编码器的模型通常需要与基础扩散模型联合训练,限制了它们的通用性。
-
一个同期工作 IP-adapter 通过学习投影将图像信息注入 U-Net 来解决微调成本和通用性,避免了对基础的文本到图像模型进行微调,从而拓宽了在个性化模型中的应用。
但问题是:
-
尽管之前的策略都有进步,但经常被忽视的一个关键方面是精准提取主题最丰富的信息表示。
-
图像是主题、背景和风格的复杂组合,因此专注于有效表现主题的最关键元素至关重要。
如何解决:
-
文中提出的SSR-Encoder是一种新颖的架构,旨在有选择地从单个或多个参考图像中捕获任何主题。
-
SSR-Encoder响应各种查询模式,包括文本和掩码,无需测试时微调。
-
SSR-Encoder结合了 Token-to-Patch Aligner(将查询输入与图像补丁对齐)和保留细节主题编码器(用于提取和保留主题的精细特征),从而生成主题嵌入。这些嵌入与原始文本嵌入结合使用,决定了生成过程。
-
SSR-Encoder以其模型通用性和效率为特点,适用于一系列自定义模型和控制模块。通过嵌入一致性正则化损失来改进训练。
-
大量实验证明了SSR-Encoder在多功能和高质量图像生成方面的有效性,表明了其广泛的适用性。

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

a) 训练阶段

-
训练时候, SSR-Encoder的输入是参考图像以及查询输入(掩膜查询或者文字查询)。
-
SSR-Encoder的编码输出注入基础T2I模型,做法类似IPAdapter。
-
可以与任何自定义扩散模型集成,而无需测试时微调。
-
训练过程固定文本编码器,VAE和基础模型的参数,只训练SSR-Encoder。
b) 推理生成阶段:

-
给定一个查询文本-图像对,SSR-Encoder采用token-to-patch aligner来突出显示查询中参考图像中的选择性区域。
-
同时,它通过保留细节的主题编码器提取主题的细粒度细节,通过token-to-patch aligner投影多尺度视觉嵌入。
-
然后,采用主题条件生成来生成具有高保真度和创造性可编辑性的特定主题。
三. 综合结果
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 小总结:如果有问题࿰…...
探讨一下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卡源码
本示例使用的发卡器: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是一个在内存中存储数据的中间件,主要用于作为数据库、数据缓存,在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。 一、Redis特性 1、在内存中存储数据 MySQL主要是“表”的方式来存储组织数据的,是“关系型数…...
编程笔记 html5cssjs 019 HTML实体
编程笔记 html5&css&js 019 HTML实体 一、HTML 字符实体二、HTML 符号实体小结 在HTML文档中,用一些标记表示特定的格式,那我们想使用这些标记字符本身时就出了问题,直接使用时,会被浏览器解析为标记的,要想显…...
数据结构:树详解
创建二叉树 给出了完整的先序遍历序列,子树为空用’#’表示,所以这样我们在通过先序遍历序列创建二叉树时我们直到先序遍历序列是先进行根结点,然后左子树最后右子树的顺序进行遍历的,所以对于完整的先序遍历序列我们可以直到先序…...
list1.Sort((m, n) => m.Id - n.Id); id是double类型的为什么回报错
问题产生的地方 原因 对于 double 类型的属性,不能直接使用减法运算符进行比较。减法运算符只能用于数值类型,而 double 是浮点数类型。 要在 double 属性上进行排序,可以使用 CompareTo 方法或者使用自定义的比较器。 更改 要在 double 属性…...
GoLang vs Python
Python和Go是两种非常不同的编程语言,它们在设计哲学、用途和特性方面有各自的优势和局限性。以下是它们的一些主要区别: 设计哲学: Python: 设计简洁明了,强调代码的可读性和简洁性。Python遵循"只有一种方式来做一件事"的原则。…...
Hello 2024(A~D,F1)
新年坐大牢 A - Wallet Exchange 题意:共有俩钱包,每回合从其中一个钱包中拿走一块钱,谁拿走最后一块钱谁赢。 思路:奇偶讨论即可。 // Problem: A. Wallet Exchange // Contest: Codeforces - Hello 2024 // URL: https://cod…...
Python+Torch+FasterCNN网络目标检测识别
程序示例精选 PythonTorchFasterCNN网络目标检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonTorchFasterCNN网络目标检测识别》编写代码,代码整洁,规…...
v8 pwn利用合集
文章目录 前置知识JS Object 相关Ignition 相关JIT - turboFan 相关starCTF2019 OOB【越界读写map字段】googleCTF2018 jit【浮点数精度丢失导致越界读写】数字经济线下 Browser【Object::toNumber中callback导致的越界写】前置知识 JS Object 相关 V8 中的对象表示 ==> 基…...
JVM:字节码
JVM:字节码 前言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架…...
常见网络设备及功能详解
网络设备 - 交换机 交换机:距离终端用户最近的设备,用于终端用户接入网络、对数据帧进行交换等。 交换机的功能: 终端设备(PC、服务器等)的网络接入二层交换(Layer 2 Switching) 网络设备 - …...
Python教程(20)——python面向对象编程基本概念
面向对象 类和对象初始化方法属性和方法self关键字继承多态 面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。 在面向对…...
C# Winform教程(一):MD5加密
1、介绍 在C#中,MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据转换为固定长度的哈希值(通常是128位)。MD5广泛用于校验数据完整性、密码存储等领域。 2、示例 创建MD5加密…...
Mongodb使用指定索引删除数据
回顾Mongodb删除语法 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中,除了指定过滤器外,还可以指定写入策略,字符序和使用的索引。 …...
虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤
在虾皮(Shopee)平台上进行跨境电商业务,选品是至关重要的一环。有效的选品策略可以帮助卖家更好地了解市场需求,提高销售业绩和客户满意度。以下是一些成功的选品策略,可以帮助卖家在虾皮平台上取得更好的业务成绩。 先…...
QML —— 使用Qt虚拟键盘示例(附完整源码)
示例效果 使用"虚拟键盘"注意 (例子的Qt版本:5.12.4) 注意一: /* 必须在main.cpp开始处加入如下代码,否则无法使用"虚拟键盘" */ qputenv(“QT_IM_MODULE”,QByteArray(“qtvirtualkeybo…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
