可控文生图:EliGen控制实体的位置细节变化

简介: 可控文生图:EliGen控制实体的位置细节变化

01引言


为文生图模型增加额外的控制条件一直是AIGC社区研究的重点之一,如ControlNet, IP-Adapter等一直是热门可控生成方法。近期,魔搭社区联合浙江大学对实体级可控文生图进行了探索,并开发了EliGen模型。EliGen可以对想要生成的图像中的每个实体的位置和细节进行控制,从而生成具有复杂场景和构图的图像。


手持化妆镜的美丽小姐姐


EliGen提出了Regional Attention的注意力机制,对扩散模型中的Attention模块进行了通用扩展。同时,基于FLUX和Qwen2-VL,团队构建了500k样本的含有实体级标注的数据集,采用LoRA对EliGen进行了训练。EliGen不仅可以完成实体级的可控文生图任务,还可以对已有图像进行实体级局部重绘。同时,EliGen与社区模型:IP-Adapter、In-Context LoRA等结合,还可以应用在给定风格和角色的实体控制、Logo迁移等场景,具有无限可能。


论文链接:

https://arxiv.org/abs/2501.01097


代码链接:

https://github.com/modelscope/DiffSynth-Studio/tree/main/examples/EntityControl


模型链接:

https://www.modelscope.cn/models/DiffSynth-Studio/Eligen


在线Demo:https://www.modelscope.cn/studios/DiffSynth-Studio/EliGen


02EliGen技术方案


Regional Attention实现

EliGen提出了Regional Attention的机制,对扩散模型的注意力机制进行了扩展,使其支持基于任意形状空间信息的实体级控制。我们采用结构化文本向量来表示条件控制信息,包括描述图像整体内容的全局提示词(global prompt)和描述具体细节的多个局部提示词(local prompts)。每个local prompt都附带一个掩码(mask),用于表示其生成区域。基于这些mask,我们针对实体内、实体间和实体与图像的关系构建了attention mask,保证了每个实体的token序列只作用于特定区域。


训练数据生成和模型训练

使用Regional Attention对模型进行扩展后,可以发现它不经过训练也能改变某些区域的实体属性,比如颜色。但是未经训练的模型无法控制图像的布局。为了激活EliGen的空间控制能力,我们构建了带实体标注的数据集,采用LoRA,对实体控制任务进行了特化训练。


如下图所示,我们从DiffusionDB数据集的文本Prompt出发,使用FLUX.1-dev生成了500k训练图像。进一步,利用Qwen2-VL 72B的强大图像理解和grounding能力,对训练样本进行了重描述 (recaption),同时对图像中的实体的语义和位置信息进行了标注。



最终,经过训练,EliGen模型具有出色的实体级位置和细节控制能力,图像生成质量远超同类模型,在许多场景都有应用的潜力。


03应用场景


复杂构图的实体级构建

代码:

https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/EntityControl/entity_control.py


月下的海天一色



太阳初升的朝圣



为EliGen举牌打call



美学的孤独



手持化妆镜的美丽小姐姐:EliGen具有实体控制的鲁棒性,又不失图像生成的多样性


图像局部重绘

代码:

https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/EntityControl/entity_inpaint.py


原图 重绘图


特定风格的实体控制

代码:

https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/EntityControl/entity_control_ipadapter.py


风格参考图像
实体控制图像


Logo迁移

代码:

https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/EntityControl/entity_transfer.py


logo图和目标迁移图
迁移结果



相关文章
|
数据采集 机器学习/深度学习 数据可视化
深入学习NumPy库在数据分析中的应用场景
深入学习NumPy库在数据分析中的应用场景
|
17天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
3月前
|
缓存 NoSQL Java
【📕分布式锁通关指南 11】源码剖析redisson之读写锁的实现
Redisson 的 `RedissonReadWriteLock` 提供了高效的分布式读写锁实现,适用于读多写少的场景。通过 Redis 与 Lua 脚本结合,确保读锁并行、写锁互斥,以及读写之间的互斥,保障了分布式环境下的数据一致性。它支持可重入、自动过期和锁释放机制,提升了系统并发性能与资源控制能力。
74 0
|
7月前
|
存储 缓存 API
类似ComfyUI和Midjourney这样的文生图图生图应用的API与服务架构该怎么设计
文生图图生图应用的API与服务架构分析。或和微服务类似,但是不同。ComfyUI其 API 架构设计为我们理解此类应用提供了很好的参考模型。但距离生产级别的应用差距还有很远。
468 0
|
8月前
|
机器学习/深度学习 存储 算法
《探秘NAS:卷积神经网络的架构革新之路》
神经架构搜索(NAS)在卷积神经网络(CNN)领域掀起革新,自动化生成最优架构,改变传统设计方式。其特点包括扩展搜索空间、优化搜索策略、提升性能、模型压缩及跨领域应用。NAS发现了超越人工设计的高性能架构,如EfficientNet,并在图像分类、目标检测和分割中取得显著成果。尽管面临计算资源消耗大和可解释性差的挑战,NAS仍为CNN的发展带来重大突破,推动深度学习广泛应用。
209 12
|
8月前
|
运维 NoSQL 算法
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
本文深入探讨了基于Redis实现分布式锁时遇到的细节问题及解决方案。首先,针对锁续期问题,提出了通过独立服务、获取锁进程自己续期和异步线程三种方式,并详细介绍了如何利用Lua脚本和守护线程实现自动续期。接着,解决了锁阻塞问题,引入了带超时时间的`tryLock`机制,确保在高并发场景下不会无限等待锁。最后,作为知识扩展,讲解了RedLock算法原理及其在实际业务中的局限性。文章强调,在并发量不高的场景中手写分布式锁可行,但推荐使用更成熟的Redisson框架来实现分布式锁,以保证系统的稳定性和可靠性。
383 0
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
178 0
|
IDE API 数据处理
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件
420 7
|
Cloud Native
带你读《云原生架构白皮书2022新版》——ACNA(Alibaba Cloud Native Architecting)架构设计方法
带你读《云原生架构白皮书2022新版》——ACNA(Alibaba Cloud Native Architecting)架构设计方法
535 97
|
安全 搜索推荐 网络安全
智能家电的控制设置
智能家电的控制设置
529 3