ControlNet作者新作Omost 一句话将LLM的编码能力转化为图像生成能力,秒变构图小作文,再也不用为不会写提示词担心了!

本文主要是介绍ControlNet作者新作Omost 一句话将LLM的编码能力转化为图像生成能力,秒变构图小作文,再也不用为不会写提示词担心了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近日,ControlNet的作者推出了一个全新的项目—Omost。Omost是一个将LLM的编码能力转化为图像生成能力的项目。对现有图像模型的提示词理解有着巨大的帮助。通过很短的提示词,就可以生成非常详细并且空间表现很准确的图片。

完美解决新手小白不会写提示词的痛点。现在只需一句超简单的提示词说明意图,Agent就会自己开始“构图”。

这个名字Omost有两层含义:

  • 每次使用 Omost 后,你的图像几乎就完成了;

  • O意思是omni多模式,most意味着我们想最大限度地利用它。

Omost提供LLM模型,该模型将编写代码以使用Omost的虚拟Canvas代理来组合图像视觉内容。这Canvas可以通过图像生成器的特定实现来渲染以实际生成图像。

所有模型都使用以下混合数据进行训练:

  • 包括 Open-Images 在内的多个数据集的真实注释,

  • 通过自动注释图像提取的数据

  • 来自 DPO(直接偏好优化,“代码是否可以由 python 3.10 编译”作为直接偏好)的强化

  • 来自 OpenAI GPT4o 多模态功能的少量调整数据。

相关链接

Github:https://github.com/lllyasviel/Omost HuggingFace:https://huggingface.co/spaces/lllyasviel/Omost

效果展示

以下结果全部采用随机种子:12345

提示词:衣衫褴褛的人:19世纪穿着破夹克的衣衫褴褛的人。

提示词:世界末日后最伟大的逃亡,全人类的希望。

提示词:拥有无尽魔法的最高统治者坐在哥特王座上,不死军团跪着。

提示词:生成战士与龙激烈战斗的图像

参数:description和Detailed_descriptions

我们引入一个概念,叫“子提示”,如果一个提示少于 75 个 token,并且不依赖其他提示就能独立描述某件事,我们就称其为“子提示”。

如description是一个子提示,detailed_descriptions是子提示的列表。

请注意,每个子提示严格少于 75 个标记(通常少于 40 个标记),您可以安全地使用任何剪辑对它们进行编码,而不必担心截断位置会影响语义。

子提示符的设计还允许基于贪婪合并的更令人满意的文本编码。

例如,如果你有

  • sub-prompt A: 25 tokens

  • sub-prompt B: 35 tokens

  • sub-prompt C: 5 tokens

  • sub-prompt D: 60 tokens

  • sub-prompt E: 15 tokens

  • sub-prompt F: 25 tokens

由于每个子提示都保证能够独立描述某件事,我们可以使用贪婪方法将它们合并到类似

  • bag 1 {A, B, C} : 65 tokens

  • bag 2 {D} : 60 tokens

  • bag 1 {E, F} : 40 tokens

每个袋子少于 75 个标记,并且可以一次性通过任何剪辑进行编码(然后将它们连接起来)。

以这种方式对文本进行编码将确保文本编码器永远不会犯语义截断错误。

有人可能会问 - 如果所有子提示都少于 75 个具有独立语义的标记,为什么不直接对它们进行编码而不进行合并然后再连接呢?这主要是因为我们希望文本嵌入更加连贯。例如,假设子提示 A 是“一个男人”,而子提示 B 是“英俊,专业”,那么在编码之前合并它们将为您提供一个更加混合的文本嵌入概念,其中包含英俊专业男人的连贯特征。

所有 Omost LLM 都经过训练,可以提供严格定义的子提示。您可以利用这些定义来设计无损文本编码方法。

参数:位置、偏移、面积

这三个参数定义了一个边界框。首先我们将画布分成33=9个位置:

然后我们进一步将每个位置划分为 33 偏移量,从而得到 9*9=81 个位置:

以这些位置为中心,我们进一步定义 9 种类型的边界框:

我们可以看到,该方法允许999=729个不同的边界框,几乎覆盖了图像中物体的所有常见可能位置。

这篇关于ControlNet作者新作Omost 一句话将LLM的编码能力转化为图像生成能力,秒变构图小作文,再也不用为不会写提示词担心了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅