LayoutLMv2:视觉丰富文档理解的多模态预训练

news2024/11/16 6:01:41

文本和布局的预训练由于其有效的模型架构和大规模未标记扫描/数字出生文档的优势,在各种视觉丰富的文档理解任务中被证明是有效的。我们提出了具有新的预训练任务的LayoutLMv2架构,以在单个多模态框架中对文本、布局和图像之间的交互进行建模。具体而言,LayoutLMv2采用双流多模态Transformer编码器,不仅使用了现有的掩模视觉语言建模任务,还使用了新的文本-图像对齐和文本-图像匹配任务,从而更好地捕捉了预训练阶段的跨模态交互。同时,在Transformer架构中集成了空间感知自关注机制,使模型能够充分理解不同文本块之间的相对位置关系。实验结果表明,LayoutLMv2在FUNSD(0.7895→0.8420)、CORD(0.9493→0.9601)、SROIE(0.9524→0.9781)、klester - nda(0.8340→0.8520)、RVL-CDIP(0.9443→0.9564)、DocVQA(0.7295→0.8672)等多种下游视觉丰富的文档理解任务上取得了比LayoutLM更好的结果。我们在https://aka.ms /layoutlmv2上公开了模型和代码。

可视化丰富的文档理解(VrDU,Visually-rich Document Understanding)旨在分析扫描/数字生成的业务文档(发票图像,PDF格式的表单等),其中结构化信息可以自动提取和组织用于许多业务应用程序。与传统的信息提取任务不同,VrDU任务不仅依赖于文本信息,还依赖于视觉和布局信息,这些信息对于视觉丰富的文档至关重要。不同类型的文档表明感兴趣的文本字段位于文档中的不同位置,这通常由每种类型的样式和格式以及文档内容决定。因此,为了准确地识别感兴趣的文本字段,不可避免地要利用视觉丰富文档的跨模态特性,在单个框架中,文本、视觉和布局信息应该被端到端地联合建模和学习。

VrDU的最新进展主要有两个方向。第一个方向通常建立在文本和视觉/布局/样式信息之间的浅层融合上(Yang et al., 2017;Liu et al., 2019;Sarkhel and Nandi, 2019;Yu et al., 2020;Majumder et al., 2020;Wei et al., 2020;Zhang等人,2020)。这些方法分别利用预训练的NLP和CV模型,并将来自多种模式的信息结合起来进行监督学习。虽然已经取得了良好的性能,但是一种文档类型的领域知识不能轻易地转移到另一种文档类型,因此一旦文档类型发生变化,这些模型通常需要重新训练。因此,不能充分利用一般文档布局(左右布局中的键值对、网格布局中的表等)中的局部不变性。为此,第二个方向依赖于来自不同领域的大量未标记文档的文本、视觉和布局信息之间的深度融合,其中预训练技术在以端到端方式学习跨模态交互方面发挥重要作用(Lockard et al., 2020;Xu et al., 2020)。通过这种方式,预训练的模型吸收了来自不同文档类型的跨模态知识,其中保留了这些布局和样式之间的局部不变性。此外,当需要将模型转移到具有不同文档格式的另一个领域时,仅需要少量标记的样本就足以对通用模型进行微调,以达到最先进的精度。因此,本文提出的模型遵循第二个方向,我们探索如何进一步改进VrDU任务的预训练策略。

在本文中,我们提出了LayoutLM的改进版本(Xu et al., 2020),即LayoutLMv2。与传统的LayoutLM模型在微调阶段结合视觉嵌入不同,我们在LayoutLMv2中利用Transformer架构在预训练阶段整合视觉信息学习视觉信息和文本信息之间的跨模态交互。此外,受一维相对位置表示的启发(Shaw et al., 2018;拉斐尔等人,2020;Bao等人,2020),我们提出了LayoutLMv2的空间感知自注意机制,该机制涉及令牌对的二维相对位置表示。与LayoutLM用来对页面布局建模的绝对二维位置嵌入不同,相对位置嵌入明确地为上下文空间建模提供了更广阔的视角。对于预训练策略,除了屏蔽视觉语言建模之外,我们还为LayoutLMv2使用了两个新的训练目标。首先是本文提出的文本-图像对齐策略,该策略将文本行和相应的图像区域对齐。第二种是在之前的视觉语言预训练模型中流行的文本-图像匹配策略(Tan and Bansal, 2019;Lu et al., 2019;Su et al., 2020;Chen et al., 2020;Sun et al., 2019),其中模型学习文档图像和文本内容是否相关

我们选择了六个公开可用的基准数据集作为下游任务,以评估预训练的LayoutLMv2模型的性能,它们是用于表单理解的fundd数据集(Jaume等人,2019),用于收据理解的CORD数据集(Park等人,2019)和SROIE数据集(Huang等人,2019),用于复杂布局的长文档理解的Kleister-NDA数据集(Grali ' nski等人,2020),用于RVL-CDIP数据集(Harley等人,2019)。2015)用于文档图像分类,以及DocVQA数据集(Mathew et al., 2021)用于文档图像的视觉问答。实验结果表明,LayoutLMv2模型显著优于强基线(包括普通LayoutLM),并在所有这些任务中获得了最新的结果。本文的贡献总结如下:•我们提出了一个多模态Transformer模型来集成文档文本、布局和可视化信息

2方法

在本节中,我们将介绍LayoutLMv2的模型架构和多模态预训练任务,如图1所示。

2.1模型架构

2.1模型架构我们构建了一个多模态的Transformer架构作为LayoutLMv2的主干,它以文本、视觉和布局信息作为输入,建立深度的跨模态交互。我们还在模型体系结构中引入了空间感知自关注机制,以便更好地对文档布局进行建模。模型的详细描述如下。

Text Embedding 按照通常的做法,我们使用WordPiece (Wu et al., 2016)对OCR文本序列进行标记,并将每个标记分配给特定的片段si∈{[A], [B]}。然后,我们在序列的开头添加[CLS],在每个文本片段的末尾添加[SEP]。额外的[PAD]标记被附加到末尾,以便最终序列的长度正好是最大序列长度L.最终文本嵌入是三个嵌入的总和。令牌(token)嵌入表示令牌本身,一维位置嵌入表示令牌索引,段嵌入用于区分不同的文本段。形式上,我们有第i次(0≤i < L)文本嵌入。Token embedding rep-resents the token itself, 1D positional embedding represents the token index, and segment embed-ding is used to distinguish different text segments.Formally, we have the i-th (0 ≤ i < L) text em-bedding

视觉嵌入 虽然我们需要的所有信息都包含在页面图像中,但该模型很难在整个页面的单个信息丰富的表示中捕获详细特征。因此,我们利用基于cnn的视觉编码器的输出特征映射,它将页面图像转换为固定长度的序列我们使用ResNeXt-FPN (Xie et al., 2017;Lin et al., 2017)架构作为视觉编码器的主干,其参数可以通过反向传播更新。给定文档页面图像I,将其大小调整为224 × 224,然后输入视觉主干。然后将输出的特征图平均池化为固定大小,宽度为W,高度为h。然后将其平展为可视化嵌入序列lengthW×H。该序列被命名为VisTokEmb(I)。然后对每个视觉标记嵌入应用线性投影层,使其维度与文本嵌入统一。于基于cnn的视觉主干无法捕获位置信息,我们还在这些视觉标记嵌入中添加了一维位置嵌入一维位置嵌入与文本嵌入层共享。对于片段嵌入,我们将所有的视觉标记附加到视觉片段上[C]。第i个(0≤i < WH)视觉嵌入可以表示为

布局嵌入 布局嵌入层用于从OCR结果中嵌入以轴线对齐的令牌边界框表示的空间布局信息,其中识别框的宽度和高度以及角坐标。遵循LayoutLM,我们将所有坐标归一化并离散为[0,1000]范围内的整数,并使用两个嵌入层分别嵌入x轴特征和y轴特征。给定第i个(0≤i < WH L)文本/视觉标记boxi = (xmin, xmax, ymin, ymax, width, height)的归一化边界框,布局嵌入层将6个边界框特征连接起来,构建一个标记级二维位置嵌入,即布局嵌入

注意,cnn进行了局部变换,因此视觉标记嵌入可以一个接一个地映射回图像区域,既没有重叠也没有遗漏。在计算边界框时,可视标记可以视为均匀划分的网格。空边界框boxPAD =(0,0,0,0,0,0)附加到特殊令牌[CLS], [SEP]和[PAD]。

具有空间感知自注意机制的多模态编码器, vWH−1}和文本嵌入{0,…, tL−1}进行统一序列,通过添加布局嵌入融合空间信息,得到第i(0≤i < WH L)层输入Multi-modal Encoder with Spatial-Aware Self-Attention Mechanism The encoder concate-nates visual embeddings {v0, ..., vWH−1} and text embeddings {t0, ..., tL−1} to a unified sequence and fuses spatial information by adding the layout embeddings to get the i-th (0 ≤ i < WH + L) first layer input

就是文本嵌入和视觉嵌入加上布局嵌入

按照Transformer的架构,我们用一堆多头自关注层和一个前馈网络来构建我们的多模态编码器。然而,原始的自注意机制只能隐式地捕获输入标记与绝对位置提示之间的关系。为了有效地对文档布局中的局部不变性进行建模,需要显式地插入相对位置信息。因此,我们将空间意识自注意机制引入自注意层。为简单起见,下面的描述是针对单个自关注层中的单个头部,头部的大小为隐藏,投影矩阵为WQ, WK, WV。原始的自注意机制通过投影两个向量并计算注意分数来捕获查询xi和键xj之间的相关性

考虑到位置的大范围,我们将语义相对位置和空间相对位置建模为偏置项,以避免添加过多的参数。类似的实践已被证明在纯文本Transformer架构上是有效的(rafael等人,2020;Bao et al., 2020)。设b(1D), b(2Dx), b(2Dy)分别表示可学习的1D和2D相对位置偏差。这种偏差在注意头之间是不同的,但在所有编码器层中是共享的。假设(xi, yi)锚定第i个边界框的左上角坐标,我们得到空间感知注意力得分

最后,将输出向量表示为所有投影值向量相对于标准化的空间感知注意力得分的加权平均值

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

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

相关文章

JVM:SpringBoot TomcatEmbeddedWebappClassLoader

文章目录 一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系 一、介绍 TomcatEmbeddedWebappClassLoader 是 Spring Boot 在其内嵌 Tomcat 容器中使用的一个类加载器&#xff08;ClassLoader&#xff09;。在 Spring Boot 应用中&#…

【漏洞复现】方正全媒体采编系统——binary.do——SQL注入

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 方正全媒体采编系统&#xff08;FZMediaEditor&#xff09;是一…

华为交换机如何恢复出厂设置

华为交换机如何恢复出厂设置 用consol线连接交换机的consol口和笔记本相连打开securt-CRT软件&#xff0c;CRT软件设置如下图&#xff1a; 3.reset save然后输入Y 4.重启交换机 重启等待两分钟左右

数据结构:链表相关题目

链表反转 LeetCode地址&#xff1a;LCR 024. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 头插法&#xff1a; class Solution {public ListNode reverseList(ListNode head) {ListNode h1 new ListNode(-1);while(head!null){ListNode index new ListNode(head.val…

同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC]

文章目录 同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC] 0x01 前言 免责声…

批量制作word表格

问题背景 将excel表中的成绩内容制作为成绩单&#xff0c;每页对应一个学员的成绩&#xff0c;方便打印 代码实现 ## 导入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 读取 Excel 内容 df pd.read_e…

FastAPI 学习之路(四十四)WebSockets

我们之前的分析都是基于http的请求&#xff0c;那么如果是websockets可以支持吗&#xff0c;答案是可以的&#xff0c;我们来看下是如何实现的。 from fastapi import WebSocket, FastAPI from fastapi.responses import HTMLResponseapp FastAPI()html """&…

mindspore打卡23天之基于MobileNetv2的垃圾分类函数式自动微分

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…

第11章 规划过程组(三)(11.11规划成本管理)

第11章 规划过程组&#xff08;三&#xff09;11.11规划成本管理&#xff0c;在第三版教材第403~404页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;成本管理概述 1、成本的类型&#xff08;重要知识点&#xff09; 直接成本 如项目团队差旅费、工资、项目使用的…

动态规划算法专题四--子数组系列问题

目录 题十八 最大子数组和 1、算法解析 1、确定状态&#xff1a; 2、状态转移方程&#xff1a; 3、初始化&#xff1a; 4、填表顺序&#xff1a; 5、返回值&#xff1a; 2、代码 题十九 环形子数组的最大和 1、算法解析 1、确定状态&#xff1a; 2、状态转移方程&…

浅析Kafka-Stream消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

OpenCV:python图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

前言 仅供个人学习用&#xff0c;如果对各位朋友有参考价值&#xff0c;给个赞或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 参数说明 parameters center&#xff1a;旋转中心坐标&#xff0c;是一个元组参数(col, row) angle&#xff1a;旋转角度…

Kafka基础组件图推演

文章目录 1. Controller Broker保障机制 2. 组件架构1. Log Manager2. Replication Manager3. SocketServer4. NetworkServer5. ZKClient 1. Controller Broker Kafka集群中有一个Controller Broker&#xff0c;负责元数据管理和协调。 Kafka使用Zookeeper作为集群元数据的存储…

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色&#xff0c;尤其是在客户端上传图片时。原始图片往往体积庞大&#xff0c;直接上传不仅消耗大量带宽资源&#xff0c;还可能导致上传速度缓慢&#xff0c;严重影响用户体验。因此&#xff0c;在图片上传至服务器前对其进行压缩处…

【安全设备】入侵检测

一、什么是入侵检测 入侵检测是一种网络安全技术&#xff0c;用于监测和识别对计算机系统或网络的恶意使用行为或未经授权的访问。入侵检测系统&#xff08;IDS&#xff09;是实现这一目标的技术手段&#xff0c;其主要目的是确保计算机系统的安全&#xff0c;通过及时发现并报…

Renesas R7FA8D1BH (Cortex®-M85) 控制DS18B20

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置 2.1 硬件接口电路 2.2 FSB配置DS18B20的IO 2.3 生成Keil工程文件 3 DS18B20驱动代码 3.1 DS18B20介绍 3.2 DS18B20驱动实现 3.2.1 IO状态定义 3.2.2 读IO状态函数 3.2.3…

谷粒商城实战笔记-27-分布式组件-SpringCloud-Gateway-创建测试API网关

本节的主要内容是创建网关模块&#xff0c;将网关注册到Nacos&#xff0c;并配置路由进行测试。 一&#xff0c;创建网关模块 右键工程New->Module&#xff0c;创建新模块&#xff0c;模块名称 gulimall-gateway。 填充各种信息。 选中Gateway依赖。 点击Create创建模块。…

uni-app iOS上架相关App store App store connect 云打包有次数限制

相册权限 uni-app云打包免费有次数 切换一个账号继续

C语言 | Leetcode C语言题解之第230题二叉搜索树中第K小的元素

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int search_num(struct TreeNode* root, int k, int *result, int num) {if(num k 1){retu…

JAVA之(static关键字、final关键字、抽象类、接口)

JAVA之&#xff08;static关键字、final关键字&#xff09; 一、 static关键字1、静态变量2、静态方法3、 静态代码块4、例子 二、final关键字1、final修饰类2、 final修饰方法3、修饰变量 三、抽象类1、 抽象类 四、接口 一、 static关键字 1、静态变量 private static Stri…