StoryGPT-V——可以生成漫画故事的多模态大模型

前言

目前,大型模型在复杂故事可视化任务方面依然面临着重大挑战。这是因为此类任务需要对框架描述中的代词(例如He、她、他们、他们)进行解析,即在分辨率和确保跨帧的角色和背景融合方面进行详细解剖。尽管存在这些挑战,新兴的大语言模型(LLM)表现出强大的推理能力,能够通过模糊的参考和广泛的序列导航。
为了应对这些挑战,引入了一种被称为Storygpt-V的模型,它充分利用了隐扩散模型(LDM)和LLM的优势,以生成在给定故事描述下具有一致且高质量角色的图像。首先,通过训练角色吸引的LDM,该模型将角色增强的语义嵌入作为输入,并使用角色分割掩码监督跨意义地图,旨在提高角色生成的准确性和忠诚度。在第二阶段,通过对齐LLM的输出和位于第一阶段模型输入空间中的字符增强的嵌入,充分利用了LLM的解决模糊参考的推理能力以及记忆上下文的理解能力。
通过在两个视觉故事可视化基准上进行全面实验,该模型报告了较高的定量结果,并在产生具有出色质量的准确特征方面保持了一致性,同时内存消耗较低。

概述

图像生成算法在逼近达到人类水平的熟练程度方面取得了显著进展。然而,即使是强大的图像生成器在故事可视化任务中也面临挑战,其中涉及生成一系列保持语义连贯性的帧,以呈现通过多个句子在一系列帧中展开的对象交互的叙事。过去的研究在故事可视化领域有所探索,但没有充分考虑参考解析的问题。本研究旨在通过利用强大的文本到图像模型和大型语言模型来解决这些挑战,实现基于共指帧描述的故事可视化。为了提高角色生成的高度忠实性,我们改进了预训练的潜在扩散模型,并利用大型语言模型来解决模糊的参考问题。我们的方法通过以低内存消耗的方式将图像处理为LLM输入空间中的令牌序列,从而有效地保留上下文。

本文详细介绍了一种文本表示增强方法,该方法基于视觉特征和字符分割掩码,以及一种基于字符感知的LDM模型,用于生成更准确的角色。同时,模型还采用LLM模型,将文本和图像输入进行交错,以实现对先前上下文的隐式推理和生成视觉响应。该模型在故事可视化基准测试中展现了准确和连贯的角色和背景生成,同时能够以低内存消耗生成长篇故事。

实现步骤

最近,通过基于扩散模型的文本到图像方法在提升图像质量和增强多样性方面取得了显著进展。然而,现有的文本到图像方法主要侧重于对齐基于文本描述的个别生成图像,未考虑故事可视化任务中涉及多帧人物和场景一致性的重要方面。
在多模态大型语言模型方面,一些研究从LLM表示的隐藏嵌入中学到额外的视觉输出,将其映射到冻结的预训练文本到图像生成模型的输入空间。本研究采用了一种多模态LLM的方法,将交错的图像和参考文本描述作为输入,通过将输出与第一阶段Char-LDM的字符感知融合嵌入对齐,引导LLM进行隐式推导参考。
在故事可视化方面,StoryGAN提出了一种顺序条件生成网络框架,具有双重框架和故事级判别器,以提高图像质量和叙事连贯性。其他方法如DuCoStoryGAN、VLCStoryGAN和StoryDALL-E在利用视频字幕、改造交叉注意力层等方面进行了尝试,但它们未考虑文本描述中的歧义引用。相较之下,StoryLDM首次引入了参考解析,采用了带有记忆注意力模块的自回归扩散框架来解决歧义引用问题。然而,该方法在解析引用上存在困难,并且由于需要在像素空间中保留所有以前的上下文,具有较高的内存消耗。为了有效地保持上下文,本研究采用了强大的因果推理LLM进行参考解析,将视觉特征映射为LLM输入中的几个token嵌入。

实现方法

这篇文章介绍了一种双阶段方法,目的是将文本叙述转换为相应的视觉帧,从而生成准确且高质量的角色。首先,通过使用角色分割掩码监督,将文本表示与角色的视觉特征融合在一起,对Char-LDM进行优化,以实现高质量的角色生成。接着,充分利用LLM的推理能力,通过将LLM的输出与Char-LDM的输入空间对齐,解决了模糊引用问题,从而实现了时间上的一致性故事可视化。
在预备知识方面,文章提到了文本条件扩散模型中的交叉注意力。在扩散模型中,每个扩散步骤都包括通过u型网络以文本嵌入为条件,从噪声代码中预测噪声。U-Net中的交叉注意力层接受空间潜代码和文本嵌入作为输入,然后将它们投影为Q。在这一情境下,交叉注意力中的每个条目量化了从第k个文本标记到位置(i, j)的潜在像素的信息传播幅度。
此外,文章还介绍了具有注意力控制的字符感知LDM,以及在故事可视化中将视觉特征与文本条件相结合的方法。为了实现准确、高质量的角色描述,通过增加相应角色的视觉特征,增强了文本描述,并引导了文本条件的注意力更多地关注相应角色的合成。利用CLIP文本编码器和图像编码器获取文本嵌入向量和图像中出现字符的视觉特征,并通过连接token嵌入和相应字符的视觉特征,输入到MLP中,从而获得增强的文本嵌入。每个增广标记嵌入c中的形式如下所示:
在这里插入图片描述
然后使用增强嵌入c作为第二阶段训练的监督。
控制文本标记的注意力。首先,我们获得对应字符的离线分割掩码作为监督信号。然后,我们鼓励为标记索引位置的每个字符绘制交叉注意力图,与二进制分割掩码对齐,公式如下:
在这里插入图片描述
在这里插入图片描述
通过降低损失,增加对各自字符相关像素的注意力,同时减少对不相关区域的注意力,实现了对字符标记的更有效控制。此外,由于token嵌入丰富了对应字符的视觉特征,这种注意力控制不仅深化了增强的语义空间和潜在像素去噪之间的联系,还提高了合成字符的质量。
在第一阶段Char-LDM中,重点放在了基于单个标题的图像生成质量上。然而,在可视化一系列故事方面,仍然存在超越文本到图像生成器能力的挑战。首先,故事可视化要求角色和背景之间的一致性,这是第一阶段增强未覆盖的方面。此外,冗长描述中包含he、she或they等参考术语,对于LDM来说,实现准确推理是一项重大挑战。相比之下,LLM能够熟练地推断出歧义文本所指的预期字符。为了解决这个问题,本文利用了LLM强大的推理能力,以消除这类引用的歧义。
在这里插入图片描述
为了使LLM能够基于先验上下文自回归地生成图像并解决模糊的引用,该模型需要具备以下能力:1) 处理图像;2) 生成图像;3) 隐含地推断所指的主体。
为了实现这些目标,模型通过学习将视觉特征映射到LLM输入空间的线性映射来理解图像。它通过将隐藏状态与Char-LDM所需的条件输入对齐,生成图像,即第一阶段Char-LDM的文本与视觉编码器融合嵌入的编码。这通过将字符的视觉特征融入到文本嵌入中来实现。这种字符增强的嵌入,以及因果语言建模 (CLM),将引导LLM进行参考输入的隐式推断,并生成正确的字符,如图2 (b)所示。
LLM的输入由交错的共指文本描述和具有灵活帧长n的故事框架组成。首先,从视觉嵌入和剪辑视觉中枢中提取特征,同时使用可训练的学习Mapper矩阵。此外,为了表示视觉输出,添加了额外的 [IMG] 标记,并将可训练矩阵 W 合并到LLM中。训练目标是最小化以先前交叉的图像/文本标记为条件生成 [IMG] 标记的负对数似然:
在这里插入图片描述
在这里插入图片描述
为了使LLM产生的[IMG]与LDM输入空间对齐,我们利用基于transformer的映射器LDM将[IMG]标记投影到具有可学习查询嵌入的第一阶段微调LDM的输入空间。训练目标是最小化Mapper的输出Gen Emb与LDM的增强条件文本表示之间的距离,表示为:
在这里插入图片描述
假设我们可以在没有引用标题编码的情况下访问原始嵌入文本。在这种情况下,使用增强模型的文本输入和每个视觉对象的编码器,生成了这种非参考文本,以增强字符的视觉特征,从而帮助LLM在语境中有效地消除歧义。
在推理过程中,该模型依次生成基于文本描述的故事可视化。首先处理初始帧的文本描述,专注于帧的生成,约束LLM仅生成特定的 [IMG] 标记。然后,将这些标记嵌入到第一阶段Char-LDM中,从而生成第一个帧。随后,LLM利用上下文历史,包括第一帧的文本描述、生成的第一帧以及第二帧的文本描述,作为输入。通过重复这个过程,逐步可视化整个故事。这种方法使得模型能够在不引用标题编码的情况下进行推理,而非参考文本的引入则有助于在生成过程中处理语境中的歧义。

测试代码

1.环境安装

# 创建并激活虚拟环境
conda env create -f environment.yaml
conda activate story# 安装外部包 LAVIS 用于文本-图像对齐评估
git clone https://github.com/salesforce/LAVIS.git
cd LAVIS
pip install -e .# 将 LAVIS 包中的 "lavis" 文件夹复制到 "eval" 文件夹中
cp -r lavis eval/lavis

2.数据下载

下载数据集并将放在 data/flintstone 和 data/pororo 下
FlintstonesSV:下载
PororoSV: 下载

3.训练

第一阶段:Char-LDM

# 使用脚本训练 Char-LDM
bash scripts/train_ldm.sh DATASET

在完成第一阶段训练后,执行以下步骤:

准备 CLIP 嵌入:

bash scripts/clip.sh DATASET CKPT_PATH

第二阶段:将 LLM 与 Char-LDM 对齐,您可以选择使用 OPT 或 Llama2:

bash scripts/train_llm.sh DATASET LLM_CKPT

这些脚本用于在两个训练阶段中训练模型。在第一阶段,使用train_ldm.sh脚本训练Char-LDM。然后,通过clip.sh脚本准备第一阶段后的 CLIP 嵌入。最后,在第二阶段,使用train_llm.sh脚本将 LLM 与 Char-LDM 对齐,可以选择使用 OPT 或 Llama2。

3.推理

# First Stage Evaluation
bash scripts/eval.sh DATASET 1st_CKPT_PATH# Second Stage Evaluation
bash scripts/eval_llm.sh DATASET 1st_CKPT_PATH 2nd_CKPT_PATH

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.1 关键点提取------Harris原理及代码

一、原理 该原理看了Harris角点检测原理详解-CSDN博客的博文,在这里写一遍是作为笔记,以供后参考。 1.什么是角点 角点就是图片中的一些突变的点,如下图所示。图中的点都是菱角分明的一些凸出来或凹进去的点。 我们可以直观的概括下角点所具…

广东盈致mes系统在注塑行业的应用

广东盈致MES系统在注塑行业的应用主要体现在以下几个方面: 生产计划与调度:盈致MES系统能够根据订单需求和生产计划,自动生成生产任务,并跟踪生产进度,确保按时完成生产任务。通过与注塑机的集成,系统可以自…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查?2、文件默认存储路径怎么改? 转自:https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook,确实好用啊!但安装Anaconda后,打开Jupyter …

【Pg数据库】删除数据库失败,提示有session正在连接

目录 问题现象原因分析处理方法1.断开所有连接2. 查找相关连接数据库的主机信息3. 再次删除 总结 问题现象 Navicat 删除 PostgreSQL 数据库时失败,提示:正在被其他用户访问(有session正在连接)如何处理? 如下所示&am…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向: Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错

文章目录 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错210.1 谓词下推引起的查询报错210.1.1 问题现象210.1.2 原因分析210.1.3 处理办法 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错 210.…

Zerosync:构建基于STARK的Bitcoin证明系统

1. 引言 前序博客: BitcoinSTARK: ZeroSync & Khepri Robin Linus、Tino Steffens、Lukas George 等人成立了一个名为 ZeroSync 协会(ZeroSync Association)的瑞士非营利组织,该组织将牵头开发比特币证明系统。ZeroSync 于…

uni-app app引入天地图

话不多说咸鱼来了 <template><view><div class"mapBox" style"width: 100%; height: 100vh;background: #ddc0c0;" id"mapId" ></div></view> </template> <script module"test" lang"r…

python统计分析——样本方差的分布

参考资料&#xff1a;用python动手学统计学 1、导入库 import numpy as np import pandas as pd import scipy as sp from scipy import statsfrom matplotlib import pyplot as plt import seaborn as sns 2、数据准备 建立一个平均数为4&#xff0c;标准差为0.8的正态分布…

http和https的区别是什么?https有什么优缺点?

HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。这个简单模型是早期Web成功的有功之臣&#xff0c;因为它…

【运行Python爬虫脚本示例】

主要内容&#xff1a;Python中的两个库的使用。 1、requests库&#xff1a;访问和获取网页内容&#xff0c; 2、beautifulsoup4库&#xff1a;解析网页内容。 一 python 爬取数据 1 使用requests库发送GET请求&#xff0c;并使用text属性获取网页内容。 然后可以对获取的网页…

Orion-14B-Chat-Plugin本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

数据结构-数组(详细讲解)

文章目录 数组数组的概述数组的图示一维数组二维数组 数组的定义一维数组的定义二维数组的定义 数组的取值赋值一维数组二维数组 数组的操作一维数组的操作索引实现指针实现 二位数组的操作矩阵转三元组矩阵的乘法 数组 数组的概述 概述&#xff1a;数组是一种线性数据结构&a…

游戏设计模式

单列模式 概念 单例模式是一种创建型设计模式&#xff0c;可以保证一个类只有一个实例&#xff0c;并提供一个访问该实例的全局节点。 优点 可以派生&#xff1a;在单例类的实例构造函数中可以设置以允许子类派生。受控访问&#xff1a;因为单例类封装他的唯一实例&#xf…

prism 10 for Mac v10.1.1.270激活版 医学绘图分析软件

GraphPad Prism 10 for Mac是一款专为科研工作者和数据分析师设计的绘图和数据可视化软件。以下是该软件的一些主要功能&#xff1a; 软件下载&#xff1a;prism 10 for Mac v10.1.1.270激活版 数据整理和导入&#xff1a;GraphPad Prism 10支持从多种数据源导入数据&#xff0…

Linux的bash命令语法

可用点 #!/bin/bash # 文件要以上面开始,.sh结尾的文件不需要# 赋权文件可执行权限 chmod x <fileName># 获取java jar包启动的进程id ps -ef | grep *.jar | grep -v grep | awk {print $2}shell变量 变量命令规则&#xff1a; 只能包含字母、数字、下划线&#xff1…

银行数据仓库体系实践(6)--调度系统

调度系统是数据仓库的重要组成部分&#xff0c;也是每个银行或公司一个基础软件或服务&#xff0c;需要在全行或全公司层面进行规划&#xff0c;在全行层面统一调度工具和规范&#xff0c;由于数据类系统调度作业较多&#xff0c;交易类系统批量优先级高&#xff0c;为不互相影…

uniapp对接微信APP支付返回requestPayment:fail [payment微信:-1]General errors错误-全网总结详解

一、问题描述 uniapp对接微信APP支付&#xff0c;本来是很简单的一件事&#xff0c;后端本来就是好的&#xff0c;只要填一些参数就行了&#xff0c;搞了我一晚上&#xff0c;主要卡在uniapp这边&#xff0c;拉起支付的时候&#xff0c;一直提示以下错误&#xff1a; {"er…

js数组/对象的深拷贝与浅拷贝

文章目录 一、js中的深拷贝和浅拷贝二、浅拷贝1、Object.assign()2、利用es6扩展运算符&#xff08;...&#xff09; 二、深拷贝1、JSON 序列化和反序列化2、js原生代码实现3、使用第三方库lodash等 四、总结 一、js中的深拷贝和浅拷贝 在JS中&#xff0c;深拷贝和浅拷贝是针对…

数学电路与电子工程1(MEE)—— 锁存器和触发器

1 逻辑综合 1.1 DCB/DEC转换器 下图是一个74HC42集成电路的逻辑图&#xff0c;它是一个二进制编码的十进制&#xff08;BCD to Decimal&#xff09;转换器&#xff0c;也称为DCB/DEC转换器。这种类型的IC通常用于将4位二进制数&#xff08;BCD&#xff09;转换为十进制输出。 …