【AIGC-图片生成视频系列-4】DreamTuner:单张图像足以进行主题驱动生成

本文主要是介绍【AIGC-图片生成视频系列-4】DreamTuner:单张图像足以进行主题驱动生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一. 项目概述

问题:

解决:

二. 方法详解

a) 整体结构

b) 自主题注意力

三. 文本控制的动漫角色驱动图像生成的结果

四. 文本控制的自然图像驱动图像生成的结果

五. 姿势控制角色驱动图像生成的结果


2023年的最后一天,发个文记录下。马上就要迎来新的一年,在这里预祝各位读者新年新气象!

今天要介绍的是字节的DreamTuner: Single Image is Enough for Subject-Driven Generation,可以通过单张图像实现特定主题的驱动生成。

一. 项目概述

什么是主题驱动生成?使用一张或几张参考图像生成定制概念的个性化应用。

问题:

  1. 现有的基于微调的方法需要在主题学习和维护预训练模型的生成能力之间进行权衡,个人理解是模型特化和泛化的权衡。

  2. 基于附加图像编码器的其他方法往往由于编码压缩而丢失主题的一些重要细节。

解决:

文中提出了 DreamTurner,这是一种从粗到细注入定制主题的参考信息的新颖方法。

  1. 首先提出了一种用于粗略主题身份保留的主题编码器,其中在视觉文本交叉注意之前通过附加注意层引入压缩的一般主题特征。

  2. 然后,我们将预训练的文本到图像模型中的self-attention修改为self-subject-attention层,以细化目标主体的细节。值得强调的是,self-subject-attention是一种优雅、有效、免训练的方法,用于维护定制概念的详细特征,可以在推理过程中用作即插即用的解决方案。

  3. 最后,通过仅对单个图像进行额外的微调,DreamTurner 在由文本或姿势等其他条件控制的主题驱动图像生成方面取得了卓越的性能。

二. 方法详解

DreamTuner 作为一种基于微调和图像编码器的主题驱动图像生成的新颖框架,它保持从粗到细的主题身份。

DreamTuner由三个阶段组成:主题编码器预训练、主题驱动微调和主题驱动推理。

  1. 首先,训练主题编码器以进行粗略的身份保留。主题编码器是一种图像编码器,为生成模型提供压缩图像特征。冻结的 ControlNet 用于解耦内容和布局。

  2. 然后我们在参考图像和一些生成的常规图像上微调整个模型,如 DreamBooth 中一样。请注意,主题编码器和自主题注意力用于常规图像生成以细化常规数据。

  3. 在推理阶段,通过微调获得的主题编码器、自身主题注意力和主题词[S*]用于从粗到细地进行主题身份保留。预训练的 ControlNet 还可用于布局控制生成。

a) 整体结构

  1. 提出的主题编码器作为一种图像编码器,为主题驱动生成提供粗略参考。使用冻结的 CLIP 图像编码器来提取参考图像的压缩特征。使用显著对象检测(SOD)模型或分割模型来去除输入图像的背景并强调主题。

  2. 然后引入一些残差块(ResBlock)进行域移位。CLIP提取的多层特征在通道维度上cat操作,然后通过残差块调整到与生成特征相同的维度。使用附加的主题编码器注意(SEA)层将主题编码器的编码参考特征注入到文本到图像模型中。主题编码器注意层添加在视觉文本交叉注意之前,因为交叉注意层是控制生成图像的总体外观的模块。

  3. 根据与交叉注意力相同的设置构建主题编码器注意力,并将输出层初始化为零。附加系数β引入来调整主题编码器的影响。

  4. 此外,进一步引入ControlNet来帮助解耦内容和布局。具体来说,我们训练主题编码器和冻结深度 ControlNet。由于ControlNet提供了参考图像的布局,主题编码器可以更加关注主题内容

b) 自主题注意力

  1. 由于主题编码器为生成过程提供了特定主题的一般外观,因此进一步提出基于原始自注意力层的自主题注意力,以实现良好的主题身份保存。

  2. 将预训练的文本到图像 U-Net 模型提取的参考图像的特征注入到自注意力层中。

  3. 参考特征可以提供精细且详细的参考,因为它们与生成图像的特征共享相同的分辨率。具体来说,在每个时间步长通过扩散前向过程对参考图像进行噪声处理t。

  4. 然后从噪声参考图像中提取每个自注意力层之前的参考特征,这些特征与时间步长生成的图像特征共享相同的数据分布。

  5. 利用参考特征将原始的自注意力层修改为自主题注意力层。将生成图像的特征作为查询,并将生成图像特征和参考图像特征的进行cat操作作为键和值。

  6. 为了消除参考图像背景的影响,使用显著对象检测(SOD)模型创建前景掩模,其中使用0和1来指示背景和前景。

  7. 此外,掩模还可以通过权重策略来调整参考图像影响的大小,即掩模乘以调整系数, 起到注意偏差的作用,因此使用对数函数作为预处理。

将原来的分类器免引导方法也修改为:

图片

第一个方程强调参考图像的引导,第二个方程强调条件的引导,用概率控制选择第一个或者第二个的可能性。

三. 文本控制的动漫角色驱动图像生成的结果

结果显示了专注于动漫角色的文本控制的主题驱动图像生成的输出。

局部编辑结果(例如第一行的表达式编辑)和全局编辑结果(包括后续五行的场景和动作编辑),即使输入复杂的文本也能产生高度详细的图像。值得注意的是,图像准确地保留了参考图像的细节。

四. 文本控制的自然图像驱动图像生成的结果

该方法在 DreamBooth 数据集上进行评估,其中每个主题的一张图像用作参考图像。通过使用主题编码器和自我主题注意力,生成精确的参考。

这使得 DreamTuner 能够成功生成与文本输入一致的高保真图像,同时还保留关键的主题细节,包括但不限于、小狗头上的白色条纹、包上的徽标、罐头上的图案和文字。

图片

五. 姿势控制角色驱动图像生成的结果

该方法可以与 ControlNet 相结合,将其适用性扩展到各种条件,例如姿势。在下面的示例中,仅使用一张图像进行 DreamTuner 微调,并使用参考图像的姿态作为参考条件。为了保证帧间的一致性,参考图像和生成图像的前一帧都用于自我注意力,参考权重分别为10和1。 

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

这篇关于【AIGC-图片生成视频系列-4】DreamTuner:单张图像足以进行主题驱动生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558944

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(