Vary 的代码和模型均已开源,还给出了供大家试玩的网页 demo。感兴趣的小伙伴可以去试试
主页:https://varybase.github.io/
部分内容参考:https://mp.weixin.qq.com/s/Sg_yHAVVN-yAYT61SNKvCA
预备知识
CLIP
官网:https://openai.com/research/clip (要了解的建议看这个,篇幅少点,论文中大量篇幅是介绍实验的)
论文:https://arxiv.org/abs/2103.00020
代码:https://github.com/openai/CLIP
Qwen-7B
通义千问
官网:https://github.com/QwenLM/Qwen
技术报告:https://arxiv.org/abs/2309.16609
Vicuna-7B
官网:https://lmsys.org/blog/2023-03-30-vicuna/
简介
目前的多模态大模型几乎都是用 CLIP 作为 Vision Encoder 或者说视觉词表。确实,在 400M 图像文本对训练的 CLIP 有很强的视觉文本对齐能力,可以覆盖多数日常任务下的图像编码。但是对于密集和细粒度感知任务,比如文档级别的 OCR、Chart 理解,特别是在非英文场景,CLIP 表现出了明显的编码低效和 out-of-vocabulary 问题。
受语言的 LLMs 启发,纯 NLP 大模型(如 LLaMA)从英文到中文(外语)时因为原始词表编码中文效率低,必须要扩大 text 词表。那么对于现在基于 CLIP 视觉词表的多模大模型也是一样的,遇到 “foreign language image”,如一页论文密密麻麻的文字,很难高效地将图片 token 化,Vary 提出就是解决这一问题,在不 overwrite 原有词表前提下,高效扩充视觉词表。
Vary 表现出了很大的潜力和极高的上限,OCR 可以不再需要冗长的 pipline,直接端到端输出,且可以按用户的 prompt 输出不同的格式如 Latex、Word、Markdown。通过 LLM 极强的语言先验,这种架构还可以避免 OCR 中的易错字,比如“杠杆”和“杜杆”等, 对于模糊文档,也有望在语言先验的帮助下实现更强的 OCR 效果。
模型
不同于现有方法直接用现成的 CLIP 词表,Vary 分两个阶段:第一阶段先用一个很小的 Decoder-only 网络用自回归方式帮助产生一个强大的新视觉词表,此阶段为 Vary-tiny;然后在第二阶段融合新词表和 CLIP 词表,从而高效的训练多模大模型拥有新 feature,此阶段为 Vary-base。Vary 的训练方法和模型结构如下图:
具体来说,Vary-tiny主要由一个词汇网络和一个微小的 OPT-125M 组成。在两个模块之间,使用一个线性层来对齐通道尺寸。在Vary-tiny 中没有文本输入分支,因为它主要关注细粒度感知。希望新的视觉词汇网络能够在处理人工图像,即文档和图表方面表现出色,以弥补CLIP的不足。同时,也期望在输入自然图像时,它不会成为CLIP的噪声。因此,在生成过程中,本文将人工文档和图表数据作为正样本,将自然图像作为负样本来训练 Vary-tiny。在完成上述过程后,本问题提取词汇网络并将其添加到一个大型模型中以构建Vary-base。如上图下半部分所示,新旧词汇网络具有独立的输入嵌入层,并在LLM之前进行集成。在此阶段,冻结新旧视觉词汇网络的权值,解冻其他模块的权值。
产生新视觉词表
新词汇网络
本文使用 SAM 预训练的 ViTDet 图像编码器作为 Vary 新词汇网络的主要部分。由于 SAM-base 的输入分辨率为(1024×1024),而输出步幅为 16,所以最后一层的特征维度的为(64×64×256),无法与 CLIP-L 的输出(N×C为256×1024)对齐。因此,本文在SAM 初始化网络的最后一层后面添加了两个卷积层,如下图所示。第一个卷积层的核大小为 3,目的是将特征变为 32×32×512。第二个卷积层的设置与第一个相同,可以进一步将输出变为 16×16×1024。之后,再将输出特征展平为 256×1024,以对齐 CLIP-VIT的图像 token 的维度。
数据
文档数据。 本文选择高分辨率文档图像-文本对作为新视觉词汇预训练的主要正样本,因为密集OCR可以有效验证模型的细粒度图像感知能力。因为目前还没有公开的中英文文档数据集,所以本文创建了自己的数据集。首先从 arXiv 和 CC-MAIN-2021-31-PDFUNTRUNCATED 上的开放获取文章中收集 pdf 格式的文档作为英文部分,从互联网上的电子书中收集中文部分。然后使用PyMuPDF 的 fitz 提取每个 pdf 页面中的文本信息,同时通过 pdf2image 将每个页面转换为 PNG 图像。在此过程中,本文分别构建了 1M 个中文文档和 1M 个英文文档图像-文本对进行训练。
图表数据。 目前的 LVLMs 并不擅长图表理解,尤其是中文图表,所以本文把图表数据作为另一个需要融合进新词汇表的主要知识。对于图表图像-文本对,本文使用渲染方式。选择 matplotlib 和 pyecharts 作为渲染工具。对于 matplotlib 风格的图表,构建了 250k 的中英文版本。而对于pyecharts,分别为中文和英文创建了 50万 个pyecharts。此外,将每个图表的文本 gt 转换为 python- dictionary 形式。图表中使用的文本,例如标题、x轴和y轴,是从互联网上下载的自然语言处理(NLP)语料库中随机选择的。
负的自然图像。对于CLIP-VIT擅长的自然图像数据,需要保证新引入的词汇不会产生噪声。因此,本文构建了负的自然图像-文本对,以使新词汇网络在看到自然图像时能够正确编码。我们从 COCO 数据集中提取了 120k 张图像,每张图像对应一个文本。文本部分从以下句子中随机抽取: “It’s an image of nature”; “Here’s a nature picture”; “It’s a nature photo”; “This is a natural image”; “That’s a shot from nature”
输入格式
本文用图像-文本对 对 var -tiny 的所有参数进行自回归训练。输入格式遵循流行的LVLMs,图像 token 与文本 token 拼接。具体来说,本文使用两个特殊的标记“”和“”来标识图像 token 输入到 OPT-125M(4096个标记)的输入的位置。在训练过程中,Vary-tiny的输出仅为文本,并将“”视为eos token。
融合新视觉词表
Vary-base结构
在完成词汇网络的训练后,将它用于 Vary -base中。具体来说,将新的视觉词汇表与原始的 CLIP-VIT 并行。这两个视觉词汇表都有一个单独的输入嵌入层,即一个简单的线性。线性的输入通道为 1024,输出通道为 2048,保证了拼接后的图像 token 通道为4096,这与LLM (Qwen-7B 或 Vicuna-7B )的输入完全一致。
数据
LATEX渲染文档。 除了在训练词汇表时收集的文档数据外,还需要数据具有一定的格式,例如支持公式和表格。首先,在 arxiv 上收集了一些 .tex 源文件,然后使用正则表达式提取表、数学公式和纯文本。最后,用 pdflatex 准备的新模板重新渲染这些内容。收集了 10 多个模板来执行批处理渲染。此外,将每个文档页面的文本 gt 转换为 mathpix markdown 样式,以统一格式。通过这个过程,获得了 50 万英文页面和 40 万中文页面。如下图所示。
语义关联图渲染。 之前通过批量渲染图表数据来训练新的词汇网络。然而,由于渲染图表中的文本(标题、x轴值和y轴值)是随机生成的,所以它们相关性较低。这个问题在词汇表生成过程中不是问题,只希望新的词汇表能够有效地压缩视觉信息。但是在 Vary-base 的训练阶段,由于 LLM 的解冻,希望使用更高质量(强相关内容)的数据进行训练。因此,本文使用 GPT-4 使用相关语料库生成一些图表,然后利用高质量语料库添加渲染 200k 图表数据进行 Vary-base 训练。
通用数据。 训练 Vary-base 和流行的 LVLMs 一样,例如LLaVA,包括预训练和监督微调阶段。与 LLaVA 不同的是,本文冻结了所有的词汇网络,并解冻了输入嵌入层和 LLM,这更像是一个纯 LLM 的预训练设置。然后使用自然的图像-文本对数据让 Var-base 学习一些通用概念。图像-文本对从 LAION-COCO 中随机抽取,数量为 400 万。在监督微调阶段,使用 LLaVA-80k 或 LLaVA-CC665k 以及 DocVQA 和 ChartQA 的训练集作为微调数据集。
对话格式
当我们使用 Vicuna- 7b 作为LLM时,对话格式遵循 Vicuna v1,即 USER: “”“文本输入 ”assistant:“文本输出”。由于 Vicuna 对汉语的效果不好,所以选择 Qwen-7B 作为处理汉语的 LLM。当使用 Qwen-7B 时,按照 LLaVA-MPT 设计对话风格,描述为: <|im_start|> 用户: “文本输入”<|im_end|> <|im_start|>助手:“文本输出”<|im_end|>。
模型输出结果示例
英文OCR
中文OCR
输出Markdown/Latex格式
输出无线表格
图表解释
自然图像的解释
文章来源:https://www.toymoban.com/news/detail-773584.html
结论
实际在Demo上简单体验了一下,对于实际场景中的图像 输出 OCR 结果或者 恢复表格结构,都不太好。大概是模型训练使用的数据大多数是论文或者简单的文字图片,所以对一些实际场景中的业务图片支持并不太好。所以目前这个模型仅仅在一个初级阶段,Vary 是一个具有很大的潜力和极高的上限的大模型。还需要不断的完善,对于 OCR 或者表格解析来说,还是目前的 pipeline 的效果更好。
不过,本篇论文提供了一个很好的思路,可以通过额外训练一个新的词汇网络,并且不影响已经在大量数据上训练过的大模型的本身的效果,结合两者训练出一个满足实际场景的大模型。文章来源地址https://www.toymoban.com/news/detail-773584.html
到了这里,关于Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models ----论文阅读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!