【AIGC】Kolors:快手开源的文生图大模型

GitHub:GitHub - Kwai-Kolors/Kolors: Kolors Team

论文:Kolors/imgs/Kolors_paper.pdf at master · Kwai-Kolors/Kolors · GitHub

comfyui:GitHub - comfyanonymous/ComfyUI: The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.

主要工作贡献

        选择GLM作为Kolors中英语和中文文本表示的合适的大语言模型。此外,我们还使用由多模态大语言模型生成的详细描述来增强训练图像。因此,Kolors在理解复杂的语义方面表现出了特殊的熟练程度,特别是在涉及多个实体的场景中,并展示了优越的文本呈现能力 。

        Kolors采用两阶段的方法进行训练,其中包括概念学习阶段,使用广泛的知识,和质量改进阶段,利用精心策划的高级美学数据。此外,我们引入了一种新的采样策略来优化高分辨率图像的生成。这些策略有效地提高了生成的高分辨率图像的视觉吸引力。

方法

 基于大型语言模型的文本编码器

        文本编码器是文本到图像生成模型的一个重要组成部分,它直接影响和控制模型生成的内容。我们将典型图像生成模型的文本编码器的使用情况与表1中我们的Kolors进行了比较。一般来说,CLIP [28]和T5 [29]系列主要是文本编码器。经典的方法,如SD1.5 [32]和DALL-E 2 [30],使用CLIP模型的文本分支来进行文本表示。然而,由于CLIP是通过对比损失训练来使整个图像与文本描述对齐的,因此它很难理解涉及多个主题、位置或颜色的详细图像描述

 一些方法从编码器-解码器变压器T5中提取文本嵌入,该T5携带更细粒度的局部信息,如Imagen [34]和PixArt-α [5]。此外,其他方法还利用多个文本编码器来增强文本理解。例如,eDiff-I [2]提出了一个集成的文本编码器,它结合了CLIP和T5,同时用于全局和本地文本表示。SDXL [27]使用了两个CLIP编码器,并在开源社区中取得了很有希望的结果。SD3 [9]进一步将一个T5-XXL文本编码器集成到其模型架构中,这对于处理复杂的提示是必不可少的。最近,LuminaT2X提出了一个统一的框架,通过利用预先训练好的LLM模型LLama2 [38],将文本转换为任何模态。

        值得注意的是,由于CLIP中英文文本编码器的局限性,大多数文本到图像的生成模型在中文提示中都遇到了困难。HunyuanDiT[19]通过使用双语CLIP和多语言T5 [43]编码器进行中文文本到图像的生成,解决了这个问题。然而,中文文本的训练语料库只占多语言T5数据集的不到2%,双语CLIP产生的文本嵌入仍然不足以处理复杂的文本提示。

        为了解决这些限制,我们选择了通用语言模型(GLM)[8]作为Kolors中的文本编码器。GLM是一种基于自回归空白填充目标的双语(英语和中文)预训练语言模型,在自然语言理解和生成任务方面显著优于BERT和T5。我们假设预先训练的ChatGLM3-6B-Base模型更适合文本表示,而ChatGLM3-6B聊天模型经过了人类偏好对齐训练,擅长文本呈现。因此,在Kolors中,我们使用开源的ChatGLM3-6B-Base作为文本编码器,该编码器经过了超过1.4万亿个双语token的预训练,从而产生了强大的中文理解能力。 

 基于多模态大语言模型改进的详细提示词

 使用多模态语言模型重新标注文本图像对,同时提出评估文本描述质量的方法

•长度:汉字总数。

•完整性:文本描述包含整个图像的程度。如果文本描述了图像中的所有对象,则得分为5分;如果文本描述的对象少于30%,则得分为1分。

•相关性:文本描述表示图像前景元素的准确性。如果文本描述了所有的前景对象,则得分为5分;如果文本覆盖的前景对象少于30%,则得分为1分。

•幻觉:在文本中提到的没有在图像中出现的细节或实体的比例。5分表示文本中没有幻觉,而如果超过50%的文本是有幻觉,则得分为1分。

•主观性:文本偏离描述图像的视觉内容的程度,而是传达主观印象的程度。例如,像“它给人一种轻松和宁静的感觉,让人们感到舒适”这样的话被认为是主观的。如果没有主观文本,则得分为5分,如果超过50%的文本包含主观句子,则得分为1分。

•平均:平均

下表是基于扩散模型不同的文本编码器的比较

 对比几个多模态大语言模型,最终选择了CogVLM-1.1-chat.

增强中文文本渲染能力 

主要难点

1.大量的汉字和这些汉字复杂的纹理使中文文本比英语更具挑战性。

2.由于缺乏包含中文文本和相关图像的足够的训练数据,导致模型训练和拟合能力不足。 

         首先,对于汉语语料库,我们选择了5万个最常用的单词,构建了一个数千万个的训练数据集通过数据合成得到的图像-文本对。为了确保有效的学习,这些综合的数据只在概念学习阶段被合并。其次,为了增强生成的图像的真实性,我们利用OCR和多模态语言模型对真实世界的图像生成新的描述,如海报和场景文本,从而得到了大约数百万个样本

        通过整合综合数据和真实数据,系统地解决训练数据的局限性,显著提高了中文文本渲染的质量,从而为中文文本图像生成的新进展铺平了道路。 

提高视觉感染力 

         培训分为两个阶段:概念学习阶段质量改进阶段。在概念学习阶段,该模型主要从一个包含数十亿个图像-文本对的大规模数据集中获取全面的知识和概念。这个阶段的数据来自于公共数据集(例如,LAION [35],DataComp [11],JourneyDB [37])以及专有数据集。通过采用类别平衡策略,该数据集确保了广泛覆盖广泛的视觉概念。在质量改进阶段,焦点转移到提高高分辨率的图像细节和美学。[6,18]之前的工作也强调了在此过程中数据质量的关键重要性

        为了获得高质量的图像-文本对,我们首先将传统的过滤器(如分辨率、OCR精度、面部、清晰度和美学评分)应用到我们的数据集,从而将其减少到大约数千万张图像。这些图像随后会进行人工注释,并将注释分为五个不同的级别。为了减轻主观偏见,每幅图像被注释三次,最终的级别通过投票过程确定。不同级别图像的特征表现如下: 

•级别1:被认为不安全的内容包括描绘色情、暴力、血腥或恐怖的图片。

•级别2:显示人工合成迹象的图像,如存在标识、水印、黑色或白色边框、缝合图像等。

•级别3:有参数错误的图像,如模糊、过度曝光、曝光不足,或缺乏一个清晰的主题。

•级别4:不起眼的照片,类似于没有过多考虑的快照。

•级别5:具有高审美价值的照片,这意味着一幅图像不仅应该具有适当的曝光度、对比度、色调平衡和色彩饱和度,而且还应该传达一种叙事感。

这种方法最终产生了数百万张5级高美学图像这些图像被用于质量增强阶段。 

高分辨率图像训练 

在Kolors中,我们采用了基于DDPM的训练方法[13],具有一个预测目标。在概念学习的低分辨率训练阶段,我们采用了与SDXL [27]相同的噪声时间表。对于高分辨率训练,我们引入了一个新的时间表,它简单地将步数从原来的1000扩展到1100,使模型能够实现更低的终端信噪比。此外,我们调整了β的值,以保持αt曲线的形状,其中αt决定了xt =√αtx0 +√1−αtϵ。如图5所示,我们的αt轨迹完全包含了基本调度的轨迹,而其他方法的轨迹则有明显的偏差。这表明,当从低分辨率中使用的基本时间表过渡时,与其他时间表相比,新时间表的适应和学习难度降低了。 

下图是提升视觉质量前后的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143177.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【UEFI基础】BIOS下的启动项管理

启动管理 启动管理(Boot Manager)是UEFI BIOS中重要的一部分,它通过一系列的变量来确定启动策略,包括: 执行启动还是恢复操作启动顺序是如何 本文会介绍下面的内容: 与启动管理相关的变量启动或恢复的流…

关于STM32项目面试题02:ADC与DAC篇(输入部分NTC、AV:0-5V、AI:4-20mA和DAC的两个引脚)

博客的风格是:答案一定不能在问题的后面,要自己想、自己背;回答都是最精简、最精简、最精简,可能就几个字,你要自己自信的展开。 面试官01:什么是模数转换/ADC?说说模数转换的流程? …

『功能项目』靠近Npc显示可对话标识【60】

我们打开上一篇59窗口可拖拽脚本的项目, 本章要做的事情是在资源加载时加载Npc01并且实现主角靠近Npc01时,显示可对话标识,当按键盘G键时弹出对话内容 首先在资源场景中加载一个Npc模型 导入(除脚本)外的资源 在资源文…

PAT甲级-1055 The World‘s Richest

题目 题目大意 输入给出富人的总数以及富人的姓名、年龄、财富,接下来的k行给出需要排序的个数,每个排序要求输出m个富人,并且限制了年龄段,[Amin, Amax]。要求输出所有的排序。如果满足年龄段的人数为0,就输出None。…

Windows目录监控部署

1.前提 Cell_Directory_Monitoring.bat脚本用到的du命令,请协调Windows系统管理员提供。 下述du命令部署配置方式仅供参考,如要部署,请协调Windows系统管理员协助确认其不会对系统造成异常。 1.1.du.exe部署 1.将x32位du.exe文件放入如下目录 目录:C:\Windows\System3…

如何在win10Docker安装Mysql数据库?

1.拉取镜像 docker pull mysql 2.查看镜像 使用以下命令来查看是否已安装了 mysql镜像。 3.运行镜像 命令: docker run -p 3306:3306 --name mysql --restartalways --privilegedtrue \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var…

机器学习-点击率预估-论文速读-20240916

1. [经典文章] 特征交叉: Factorization Machines, ICDM, 2010 分解机(Factorization Machines) 摘要 本文介绍了一种新的模型类——分解机(FM),它结合了支持向量机(SVM)和分解模型的优点。与…

Linux下的CAN通讯

CAN总线 CAN总线简介 CAN&#xff08;Controller Area Network&#xff09;总线是一种多主从式 <font color red>异步半双工串行 </font> 通信总线&#xff0c;它最早由Bosch公司开发&#xff0c;用于汽车电子系统。CAN总线具有以下特点&#xff1a; 多主从式&a…

解决使用阿里云DataV Geo在线地图路径访问403问题

文章目录 1. DataV Geo在线地图路径访问403问题2. 解决方法3. 重启生效 1. DataV Geo在线地图路径访问403问题 最近在写一个省市下钻的demo&#xff0c;用到的是 阿里云DataV Geo在线地图 去动态获取GeoJSON 省市的数据&#xff0c;如下代码 axios.get("https://geo.dat…

Golang | Leetcode Golang题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; func thirdMax(nums []int) int {var a, b, c *intfor _, num : range nums {num : numif a nil || num > *a {a, b, c &num, a, b} else if *a > num && (b nil || num > *b) {b, c &num, b} else if b ! ni…

马匹行为识别系统源码分享

马匹行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

C语言程序设计(进阶)

行到水穷处&#xff0c;坐看云起时。 中秋快乐呀&#xff01; 数据在内存中的存储 1.数据类型的介绍 &#xff08;1&#xff09;基本的内置类型&#xff1a; char //字符数据类型 short //短整型 int //整型 long //长整型 …

说一说Zookeeper的应用场景及其原理

一 ZooKeeper简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名…

K8S - Access Control 机制介绍

作为开发人员&#xff0c; 我们通常会直接用root 帐号操作 k8s master node 里的kubectl 命令&#xff0c;并不能感知k8s 多用户权限管理存在。 即使自动化&#xff0c; 我们也会考虑用ansible 来远程操作master node… 所以大部分开发人员默认上是不用深入研究k8s的Access c…

基于AlexNet实现猫狗大战

卷积神经网络介绍 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;是一种深度学习模型&#xff0c;特别适用于处理图像、视频等数据。它的核心思想是利用卷积层&#xff08;Convolutional layers&#xff09;来提取输入数据…

[C语言]连子棋游戏

文章目录 一、前言二、游戏思路三、游戏方法1、初始化2、判断胜利3、交互4、电脑下棋 四、核心方法说明1、初始化游戏2、销毁棋盘3、显示游戏4、电脑下棋5、用户下棋6、判断游戏状态7、游戏交互 五、游戏效果展示与源码分享1、游戏效果2、源代码 一、前言 对于指针和数组理解尚…

关于std::swap原理

swap 操作交换两个相同类型容器的内容。调用swap之后&#xff0c;两个容器中的元素将会 交换&#xff1a; vector<striong> svec1(10); //10个元素的vector vector<string> svec2(24); //24个元素的vector swap(svec1,svec2); 调…

C++ | Leetcode C++题解之第413题等差数列划分

题目&#xff1a; 题解&#xff1a; class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int n nums.size();if (n 1) {return 0;}int d nums[0] - nums[1], t 0;int ans 0;// 因为等差数列的长度至少为 3&#xff0c;所以可以从 i2 开…

一款免费开源且功能强大的思维导图软件-思绪思维导图

思绪思维导图是一款免费开源的思维导图软件&#xff0c;旨在帮助用户有效地组织和表达思想。它提供了丰富的功能&#xff0c;包括支持富文本、图片、图标、超链接、备注、标签等内容&#xff0c;以及关联线、概要等特性。 思绪思维导图下载&#xff1a;https://pan.quark.cn/s…

在STM32工程中使用Mavlink与飞控通信

本文讲述如何在STM32工程中使用Mavlink协议与飞控通信&#xff0c;特别适合自制飞控外设模块的项目。 需求来源&#xff1a; 1、增稳云台里的STM32单片机需要通过串口接收飞控传来的云台俯仰、横滚控制指令和相机拍照控制指令&#xff1b; 2、自制的有害气体采集器需要接收飞…