当前位置: 首页 > 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!

相关文章:

  • Golang高质量编程与性能调优实战
  • 分类模型评估方法
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动
  • C#编程-使用集合
  • 基于SSM的校园二手交易平台
  • StreamPark + PiflowX 打造新一代大数据计算处理平台
  • 软件测试错题集(黑盒、白盒测试)
  • wsl(ubuntu)创建用户
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • 终端上的GitHub Copilot以及IDE上的GitHub Copilot
  • MySQL之CRUD、常见函数及union查询
  • 一、初识Redis与分布式系统
  • 云计算复习笔记--期末
  • C++上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法
  • 【大数据】Zookeeper 客户端的命令行操作
  • 【391天】每日项目总结系列128(2018.03.03)
  • angular2开源库收集
  • Java小白进阶笔记(3)-初级面向对象
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Nodejs和JavaWeb协助开发
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • php中curl和soap方式请求服务超时问题
  • React-flux杂记
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 阿里云Kubernetes容器服务上体验Knative
  • 彻底搞懂浏览器Event-loop
  • 基于axios的vue插件,让http请求更简单
  • 推荐一个React的管理后台框架
  • 正则学习笔记
  • 回归生活:清理微信公众号
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (vue)页面文件上传获取:action地址
  • (转载)Google Chrome调试JS
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core Web APi类库如何内嵌运行?
  • .net 按比例显示图片的缩略图
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net多线程总结
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • ::
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ C++ ] STL---仿函数与priority_queue
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [C++核心编程](四):类和对象——封装
  • [codeforces]Checkpoints
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择