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.hqwc.cn/news/439774.html

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

相关文章

谷歌人工智能视频生成器-LUMIERE(未开源)

Google重磅发布视频生成模型Lumiere 据说后续会开源 亮点1.支持文本到视频与图像到视频 亮点2.画风迁移 亮点3.运动蒙版 亮点4.视频编辑 亮点5.视频修复 谷歌视频模型可以生成80帧的片段!不仅画质好、质量高,而且时长更长。 视频局部编辑 这项功能可以…

【旋转角度(CW/CCW)的累加计算】

1,需求 旋转角度(CW/CCW)的累加计算 2,代码实现 class AngleProcess:def __init__(self, is_cw, period360):self.is_cw is_cwself.period periodself.half_period period / 2self.init_angle_0_and_circle_num()def check_i…

麒麟系统—— openKylin 安装 redis

麒麟系统—— openKylin 安装 redis 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载安装文件三、解压安装解压安装 四、配置与运行修改配置文件以配置文件运行 五、加入到服务中最终:介绍配置的其他参数使用 Redis是一种开源的、基于内存的高速缓存…

python字典JSON 和csv文件

JSON与Python字典 Python中的字典与JSON非常类似而且支持嵌套结构。Json通过key取值的过程和python字典通过索引取值过程完全一致。JavaScript数据类型(值)对应的Python数据类型(值) JSONPythonobjectdictarraylist/tuplestring…

SQL基础知识整理--干货!常见的SQL面试题:经典50例!

SQL基础知识整理 select 查询结果,如: [学号,平均成绩:组函数avg(成绩)]from 从哪张表中查找数据,如:[涉及到成绩:成绩表score]where 查询条件,如:[b.课程号’0003′ and b.成绩>80]group by 分组,如:[…

【React】在项目中使用阿里图标库

文章目录 打开阿里图标库 》 选择相应图标项目 选择Symbol格式,并复制链接 基于antd新建一个JS文件 MyIcon.js,并绑定上面复制的链接 import { createFromIconfontCN } from ant-design/icons;// 图标有更新时,需更新下面图标链接 export…

关于虚拟机ubuntu系统无法上网问题

一、虚拟机的连接方式 1、查看自己虚拟机的网络连接方式 选择虚拟机->右键设置->网络适配器 2、拓展——虚拟机的三种网络模式 2.1 首先安装虚拟机后,可以看到主机网络适配器多2张网卡 2.2 在VMware虚拟机中查看网络设置 点击菜单栏编辑 -> 虚拟网络…

websocket 通信协议

websocket是什么 答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 意思就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息 属于服务器推送技术的一种. 为什么需要websocket? 疑问?…

Exchange:清理日志文件

准备脚本: 准备清理日志文件的脚本 # Set execution policy if not set $ExecutionPolicy Get-ExecutionPolicy if ($ExecutionPolicy -ne "RemoteSigned") {Set-ExecutionPolicy RemoteSigned -Force }# Cleanup logs older than the set of days in …

数据结构奇妙旅程之七大排序

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

vue实践:构建高效的电子签名功能

前言 在现代数字化时代,电子签名成为了一种方便、高效且安全的签署文件的方式。本文将介绍电子签名的原理和实现方法,帮助你快速掌握这一重要的工具。 电子签名是什么? 电子签名是一种数字化的签名方式,用于验证和确认电子文档、…

85.网游逆向分析与插件开发-物品使用-物品使用的逆向分析与C++代码的封装

内容参考于:易道云信息技术研究院VIP课 上一个内容:项目需求与需求拆解-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:453dd83d54140d2e1ee65c9…