GLIGEN

GLIGEN

开放式条件引导的文本到图像生成模型

GLIGEN是一个创新的开放式条件引导文本到图像生成模型。它扩展了冻结文本到图像模型的功能,支持框、关键点和图像等多种引导条件。在COCO和LVIS数据集的零样本测试中,GLIGEN大幅超越了现有的有监督布局到图像生成基线。这项技术在开放世界场景下的应用前景广阔,同时也需关注其局限性和伦理影响。

GLIGEN文本到图像生成人工智能计算机视觉深度学习Github开源项目

GLIGEN:开放集合的基于约束的文本到图像生成(CVPR 2023)

Yuheng LiHaotian LiuQingyang WuFangzhou MuJianwei YangJianfeng GaoChunyuan Li*Yong Jae Lee*(*共同资深作者)

[项目主页] [论文] [演示] [YouTube视频] 预览图

图片替代文本

  • GLIGEN超越了文本提示:在冻结的文本到图像生成模型上实现新功能,可以基于各种提示进行约束,包括边界框、关键点和图像。
  • GLIGEN在COCO和LVIS数据集上的零样本性能大幅超越了现有的有监督布局到图像基线。

:fire: 新闻

<center> <img src="https://yellow-cdn.veclightyear.com/835a84d5/aed03a15-e80b-4e11-8ff3-b9da593f9711.png" width="30%"> </center>
  • [2023.04.18] 我们更新了arXiv论文。我们在这里解释了GLIGEN和ControlNet之间的区别,以帮助研究人员更好地深入理解。

  • [2023.04.08] GLIGEN与Grounding DINO结合,无需人工标注边界框及其概念。给定语言提示,Grounding DINO用边界框定位概念:图像 $\rightarrow$ (边界框, 概念),然后GLIGEN对图像进行修复:(边界框, 概念) $\rightarrow$ 图像:

<center> <img src="https://camo.githubusercontent.com/4dabf8128cd4f40eaa97ee45d050ddcd8063356f631d98072fb5a5c19c35fa9c/68747470733a2f2f68756767696e67666163652e636f2f5368696c6f6e674c69752f47726f756e64696e6744494e4f2f7265736f6c76652f6d61696e2f47445f474c4947454e2e706e67" width="600"> </center>
  • [2023.03.22] 我们在diffusers上的分支已发布,支持基于文本框的生成和修复。现在更快、更灵活,并可从Huggingface Hub自动下载和加载模型!快来试试吧!
  • [2023.03.20] 通过查看计算机视觉在野外(CVinW)阅读列表,了解GLIGEN等基于约束的图像生成研究最新进展。
  • [2023.03.19] Yannic Kilcher在他最新的YouTube视频人工智能最重要的一周中介绍了GLIGEN。
  • [2023.03.05] Gradio演示代码已在GLIGEN/demo发布。
  • [2023.03.03] 代码库和检查点已发布。
  • [2023.02.28] 论文被CVPR 2023接收。
  • [2023.01.17] GLIGEN论文和演示发布。

环境要求

我们提供dockerfile来设置环境。

下载GLIGEN模型

我们提供了十个用于不同场景的检查点。这里的所有模型都基于SD-V-1.4。

模式模态下载链接
生成边界框+文本HF Hub
生成边界框+文本+图像HF Hub
生成关键点HF Hub
修复边界框+文本HF Hub
修复边界框+文本+图像HF Hub
生成Hed图HF Hub
生成Canny图HF Hub
生成深度图HF Hub
生成语义分割图HF Hub
生成法线图HF Hub

注意:提供的语义分割图检查点仅在ADE20K数据集上训练;法线图检查点仅在DIODE数据集上训练。

推理:使用GLIGEN生成图像

我们提供了一个脚本来使用提供的检查点生成图像。首先下载模型并将它们放在gligen_checkpoints中。然后运行

python gligen_inference.py

每个检查点的示例样本将保存在 generation_samples 中。可以查看 gligen_inference.py 了解更多关于接口的详细信息。

训练

基于约束条件的生成训练

首先需要为不同的约束模态条件准备数据。参考数据了解我们用于不同GLIGEN模型的数据。数据准备就绪后,使用以下命令来训练GLIGEN。(我们支持多GPU训练)

python main.py --name=你的实验名称 --yaml_file=你的yaml配置文件路径

--yaml_file是最重要的参数,下面我们将通过一个例子来解释关键组件,以便您熟悉我们的代码并了解如何自定义训练自己的约束模态。其他参数的名称已经很明确。实验将保存在OUTPUT_ROOT/name中。

可以参考configs/flicker_text.yaml作为示例。可以看到该yaml文件定义了5个组件:diffusionmodelautoencodertext_encodertrain_dataset_namesgrounding_tokenizer_input。通常,diffusionautoencodertext_encoder不应更改,因为它们是由Stable Diffusion定义的。应该注意以下几点:

  • model中,我们添加了新参数grounding_tokenizer,它定义了一个产生约束标记的网络。这个网络将在模型中实例化。可以参考ldm/modules/diffusionmodules/grounding_net_example.py了解更多关于定义这个网络的详细信息。
  • grounding_tokenizer_input将定义一个网络,接收数据加载器的批次数据,并为grounding_tokenizer生成输入。换句话说,它是数据加载器和grounding_tokenizer之间的中间类。可以参考grounding_input/__init__.py了解有关定义这个类的详细信息。
  • train_dataset_names应列出一系列数据集的名称(所有数据集将在内部连接,因此对于训练来说组合数据集很有用)。每个数据集名称应首先在dataset/catalog.py中注册。我们已列出了所有使用的数据集;如果需要在自己的模态数据集上训练GLIGEN,请不要忘记先在那里列出其名称。

基于约束条件的修复训练

GLIGEN还支持修复训练。可以使用以下命令:

python main.py --name=你的实验名称 --yaml_file=你的yaml配置文件路径 --inpaint_mode=True --ckpt=已适配模型的路径

通常,我们首先在生成任务(例如,基于文本约束的生成)上训练GLIGEN,这个模型的输入卷积有4个通道(Stable Diffusion的潜在空间),然后我们修改保存的检查点为9个通道,额外的5个通道初始化为0。这种继续训练可以导致更快的收敛和更好的结果。path_to_an_adapted_model指的是这个修改过的检查点,可以使用convert_ckpt.py来修改检查点。**注意:**生成和修复训练的yaml文件是相同的,只需要更改--inpaint_mode

引用

@article{li2023gligen,
  title={GLIGEN: Open-Set Grounded Text-to-Image Generation},
  author={Li, Yuheng and Liu, Haotian and Wu, Qingyang and Mu, Fangzhou and Yang, Jianwei and Gao, Jianfeng and Li, Chunyuan and Lee, Yong Jae},
  journal={CVPR},
  year={2023}
}

免责声明

原始GLIGEN部分是在第一作者在威斯康星大学麦迪逊分校工作期间,在微软的兼职实习中实现的。这个仓库使用大学的GPU在PyTorch中重新实现了GLIGEN。尽管存在微小的实现差异,但本仓库旨在为研究目的重现论文中的结果和观察。

条款和条件

我们对使用模型检查点和演示有严格的条款和条件;它仅限于遵循<a href="https://github.com/CompVis/latent-diffusion">Latent Diffusion Model</a><a href="https://github.com/Stability-AI/StableDiffusion">Stable Diffusion</a>许可协议的用途。

更广泛的影响

重要的是要注意,我们的GLIGEN模型是为开放世界的基于约束条件的文本到图像生成而设计的,可以输入说明文本和各种条件(如边界框)。然而,我们也认识到负责任的AI考虑的重要性,以及需要明确传达我们研究的能力和局限性。虽然约束能力能很好地泛化到新的空间配置和概念,但我们的模型可能在超出范围或超出预期用例的情况下表现不佳。我们强烈反对在可能产生误导性或恶意图像的场景中滥用我们的模型。我们也承认用于训练我们模型的数据中可能存在潜在的偏见,需要持续评估和改进来解决这些问题。为确保透明度和问责制,我们包含了一个模型卡,描述了我们模型的预期用例、局限性和潜在偏见。我们鼓励用户参考这个模型卡,并在将我们的技术应用到新的环境中时谨慎行事。我们希望我们的工作能激发对AI伦理影响的进一步研究和讨论,以及在开发新技术时透明度和问责制的重要性。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多