详细解读ControlNet作者最新力作:透明图层的生成模型LayerDiffusion

本文主要是介绍详细解读ControlNet作者最新力作:透明图层的生成模型LayerDiffusion,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Diffusion models代码解读:入门与实战

前言:ControlNet的作者Lvmin Zhang的新作品LayerDiffusion,可以用于生成四通道带有透明图层的图片,这对于设计和落地是巨大的利好,因为业务场景下会有很多背景替换、人物替换的需求,从此告别抠图!这篇博客详细解读背后的原理,并解读代码和复现实验。

目录

贡献概述

方法详解

当前问题

整理流程

Loss约束

多透明图层生成

数据收集

效果复现

论文和代码 

贡献概述

生成透明图像的方法,可以生成单个透明图像或多个透明层。理论上任何LDM都可以通过这种方法对其进行微调转换为透明图像生成器。

该方法学习了一个“潜在透明度”,将 alpha 通道透明度编码到预训练的潜在扩散模型的潜在流形中,通过调节添加的透明度作为潜在偏移量来保持生成质量,以避免破坏潜在分布,对预训练模型的原始潜在分布的变化最小。

方法详解

当前问题

1、透明图层的图像没有大规模数据集。

2、SD对潜在空间非常敏感,对潜在空间的数据分布稍微调整也会严重影响推理效果。所以直接微调让其生成透明图像会破坏原有的潜在空间分布。

整理流程

先将透明图像(四通道)分解成RGB图像(三通道)和alpha通道的图像(单通道),将RGB图像变成Premultiplied图片经过SD编码器与潜在透明图像相加,生成的Premultiplied图片(四通道),经过解码器得到alpha通道的图像和RGB图像(三通道)。

透明编码器和透明解码器:从头训练一个专门针对透明图像的编码器,这个编码器的输入不仅有alpha通道的图像,还有像素空间的图像。透明解码器的输入是调整后的潜在噪声和重建后的RGB图像。

Loss约束

身份损失:因为在原有的潜在分布上加上了alpha通道的噪声会破坏原有的噪声分布,所以用一个身份损失约束对潜在空间偏移量的修改。

重建损失:用重建后的alpha通道图像和重建后的RGB图像与输入图像计算损失:

鉴别损失:引入PatchGAN的鉴别器损失:

最终的损失由三个损失加权得到:

默认情况下使用λrecon = 1, λidentity = 1, λdisc = 0.01

微调损失:由于调整后的潜在空间特征分布,与原始预训练的潜在空间特征分布分布保持一致。因此可以直接在调整后的潜在空间上对Stable Diffusion进行微调。微调公式和大部分扩散模型微调的公式一致,唯一变化是输入参数不一致:

多透明图层生成

前景的噪声潜在图像被表示为xf,背景的噪声潜在图像被表示为xb。然后训练了两个LoRAs,一个用于前景(由θf参数化),另一个用于背景(由θb参数化),以去噪这两个编码后的图像。

这两个模型之间的注意力部分的权重共享,训练目标相互独立:

为了实现多个层的一致生成,研究者们在扩散模型的每个注意力层中,将“前景潜在空间向量”和“背景潜在空间向量”进行拼接,使得两个独立的扩散过程可以合并为一个共同优化的大型模型。合并后的噪声被表示为:

数据收集

使用human-in-the-loop(人类会全程参与数据的筛选和编辑)的方法,共收集了1M 透明图像,并将这些单层透明图层样本的数据扩展到多层样本。扩展的方法如下:

用GPT生成前景+背景的提示词,前景提示通过训练好的透明图像生成器处理,以获得透明图像。使用SDXL修复模型将所有Alpha值小于1的像素修复,以获得中间图像。反转Alpha掩模,进行腐蚀操作,然后再次使用背景提示进行修复,以获得背景层。重复这个过程1M次,以生成大约1M对层。

效果复现

论文和代码

https://github.com/KaustubhPatange/Diffuser-layerdiffuse

这篇关于详细解读ControlNet作者最新力作:透明图层的生成模型LayerDiffusion的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri