An End-to-End Local Attention Based Model for Table Recognition(ICDAR 2023)

news2024/12/23 19:36:29

An End-to-End Local Attention Based Model for Table Recognition(ICDAR 2023)

一.前述

作者认为基于Transformer的表格识别模型很难处理大表格的识别,原因是受限于它的全局注意力global attention机制。

基于以上,作者提出了一种局部注意力local attention机制。作者也提出了一种端到端的基于局部注意力模型,去识别表格结构以及表格单元格内容。

所提出的方法主要由四个组成部分:

1)1个用于特征抽取的编码器;

2)3个解码器用于表格识别的3个子任务。

本方法在数据集PubTabNet与FinTabNet上取得了state-of-the-art。

二.概述

本文的主要贡献如下:

1.提出在编码器decoder中使用局部注意力local attention机制。

2.提出端到端的识别模型,便于训练和推理。

3.实验证明了局部注意力机制在表格识别中的有效性。

4.提出的方法在基准数据集上达到了state-of-the-art。

三.方法概述

1.局部注意力机制(Local Attention Mechanism)

一句话,局部注意力是利用窗口大小来使解码器更注重那些重要的tokens上。

(1).局部注意力的公式

以上公式是经典的transformer中的attention权重的计算。

为了实现局部注意力,文中定义了一个mask矩阵M,如上式,这M表示查询Q应该关注的键K的位置。当mask上的元素值1,表示注意力是活动的,如果是0表示不关注。

式中的w表示局部注意力窗口的大小。

上式是局部注意力最终的输出计算,括号内是逐元素相乘。

(2).mask多头注意力(Masked Multi-head Local Attention)

mask多头注意力通过不同的线性变换,对查询q,键k,值v映射h次,获得h个不同的表示(Q,K,V)。然后并行执行局部注意力,获得h个head输出值。

最后h个head的输出值串联起来,再经过一层线性变换,最终的公式如上所示。

(3).基于局部注意力编码层(Local Attention-Based Decoder Layer)

下图一目了然,无需再解析。

2.端到端模型

上图中的端到端模型主要由4个部分组成:基于CNN的特征抽取编码器;三个解码器,用于3个表格识别的子任务(表格结构识别、表格单元格检测以及表格单元格内容识别)。大体流程是:

A.输入一张表格图像

B.特征抽取编码成序列形式

C.序列特征输入到结构解码器structure decoder预测表格结构的token序列

D.当structure decoder产生表格单元格的token时,cell-bbox decoder和cell-content decoder就触动了,其使用structure decoder的隐状态来预测边框坐标以及单元格内容。

E.最后,每个单元格内容,被插入到结构token序列的相应单元格中,输出最终的表格表示。

(1).编码器(Encoder)

利用基于ResNet-31 backbone(对于每个残差块使用Multi-Aspect Global Context Attention)的网络模型抽取输入图像的特征

(输入编码器前图像要resize到520520),抽取的特征再经过一个位置编码层。最终输出固定大小的序列特征。输出的feature map的维度是6565

(2).结构解码器(Structure Decoder)

这部分由三层局部注意力解码器层后再跟一个线性层和一个softmax组成。文中説这里的局部注意力机制有助于结构解码器在预测一个结构token时更加注意其局部重要特征

(即更加注重邻居的tokens)。从图中可以看出三层的local attention的K和V向量都是来自编码层的输出。在训练时,输入的右移序列会经过embedding层和position层,

这里的输出作为Q向量,和前面的K,V一起进入局部注意力机制。推理时这里的输入是structure decoder的输出进行拼接。最后再经过线性层和softmax层,生成表格结构的token。

(3).单元格边框解码器(Cell-Bbox Decoder)

这部分由一个局部注意力解码层,一个线性层和一个sigmoid层组成。这部分会在structure decoder预测新的单元格时会被触发,它的输入一部分是由

structure decoder的隐状态作为Q向量,编码器的输出作为K和V向量,一起进入一个局部注意力机制,后跟一个线性层,经过sigmoid预测输出最终的4个单元格坐标。

(4).单元格内容解码器(Cell-Content Decoder)

这部分其实就是一个文本识别器,它由一个embedding层,一个position层,一个全局注意力层global attention-based decoder,后跟一个线性层和

softmax层组成(这里没有使用局部注意力,作者説是因为单元格里的内容远少于表格结构,所以利用全局注意力更容易学到重要特征)。当structure decoder

预测输出一个新的单元格时,cell-content decoder就触发了。它的输入一部分来自编码器的输出(作为K和V向量),一部分是右移的单元格里的内容序列

(经过embedding层和position位置编码,再加上相应对的单元格structure decoder的隐状态信息。)作为Q向量,最后经过一个线性层和一个softmax层,

预测输出单元格的文本内容。

(5).损失函数

上式中的ℒstruc. and ℒcont.是利用交叉熵cross-entropy分别实现的table结构识别损失和单元格内容预测损失,ℒbbox是利用L1 loss实现的单元格边框预测的损失。

𝜆1、𝜆2和𝜆3为权值超参数。

(6).相关参数设置

structure decoder和cell-bbox decoder所有的局部注意力local attention decoder层都是设置为8头,输入特征大小为512,前馈网络大小为2048。

所有的局部注意力机制的窗口大小window size设置为300。在解码过程中,structure token和cell token最大的序列长度分别是600和150。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单:Web前端开发精进秘籍》张鑫旭,一些摘要: HTML,这门语言的知识体系非常庞杂,涉…

Windows开发工具使用技巧全面指南

目录 目录 Visual Studio 功能概述 使用技巧 快捷键表 Visual Studio Code 功能概述 常用扩展 使用技巧 PowerShell 功能概述 常用命令 脚本编写技巧 Git for Windows 功能概述 集成技巧 常用命令表 调试工具 Visual Studio调试器 使用技巧 WinDbg 使用技…

828华为云征文|部署音乐流媒体服务器 mStream

828华为云征文|部署音乐流媒体服务器 mStream 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 mStream3.1 mStream 介绍3.2 mStream 部署3.3 mStream 使用 四、…

UE4完整教程 UE4简介 UE4学习攻略及文件格式

开头附上工作招聘面试必备问题噢~~包括综合面试题、无领导小组面试题资源文件免费!全文干货。 UE4简介学习攻略UE4Demo代码面试内容资源-CSDN文库https://download.csdn.net/download/m0_72216164/89825102 工作招聘无领导小组面试全攻略最常见面试题(第一部分)共有17章+可…

PCL 点云模型滤波(圆形)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 生成点云数据 2.1.2 模型滤波函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总&#xf…

「JavaScript深入」彻底理解JS中的闭包

JavaScript深入 — 闭包 一、概念二、示例三、实用的闭包四、用闭包模拟私有方法五、一个常见错误:在循环中创建闭包🌰 另一个经典例子-定时器与闭包 六、优劣好处坏处解决 七、图解闭包八、应用 💪封装私有变量函数工厂异步操作中的回调函数…

css中背景色、背景图的使用

1、同时使用背景色、背景图片 参考链接:链接 以下样式,背景色在图片下方(缺点:图片不透明时,背景色会被完全遮挡。) .header {height: 100%;width: 100%;background-color: #000;background-image: url(/static/images/back.pn…

云原生之运维监控实践-使用Prometheus与Grafana实现对MySQL和Redis服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

数据结构之手搓顺序表(顺序表的增删查改)

目录 文章目录 前言 一、什么是顺序表? 二、动态顺序表的实现 1.头文件定义 2.实现顺序表的初始化 3.检查顺序表空间容量是否足够,不够就增容 4.顺序表的销毁 5.顺序表的打印 6.顺序表的尾插 7.顺序表的头插 8.顺序表的头删 9.顺序表的尾删 10.顺序…

LeetCode题练习与总结:二叉树的所有路径--257

一、题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2->5","1->…

RabbitMQ基本原理

一、基本结构 所有中间件技术都是基于 TCP/IP 协议基础之上进行构建新的协议规范,RabbitMQ遵循的是AMQP协议(Advanced Message Queuing Protocol - 高级消息队列协议)。 生产者发送消息流程: 1、生产者和Broker建立TCP连接&#…

国庆同欢,祖国昌盛!肌肉纤维启发,水凝胶如何重构聚合物

在这个国庆佳节,我们共同感受祖国的繁荣昌盛,同时也迎来了知识的探索之旅。今天来了解聚合物架构的重构的研究——《Hydrogel‐Reactive‐Microenvironment Powering Reconfiguration of Polymer Architectures》发表于《Advanced Science》。材料科学不…

【数据结构与算法】算法和算法分析

文章目录 一.算法1.定义2.描述 二.算法与程序三.算法特性四.算法效率的度量4.1算法时间事前分析法算法时间复杂度的渐进表示法分析算法时间复杂度的基本方法 4.2算法空间 数据的逻辑结构映像到内存就是数据的存储结构,针对数据的逻辑结构可以选择多种存储结构。数据…

Kotlin:2.0.0 的新特性

一、概述 kotlin 2.0.0版本英文官方文档 The Kotlin 2.0.0 release is out and the new Kotlin K2 compiler is Stable! Additionally, here are some other highlights: Kotlin 2.0.0发布了,新的Kotlin K2编译器已经稳定了。此外,以下是其他一些亮点: …

Linux操作系统中dubbo

1、简介 dubbo框架是做微服务通信的,是由阿里巴巴开发,后捐赠给阿帕奇基金会。 2、与OpenFeign的区别 dubbo是采用RPC协议实现微服务通信,OpenFeign是采用Http请求的方式实现的。 OpenFeign 最简单的,就是Spring公司开发的&am…

TinyAP:使用TinyML对抗Wi-Fi攻击的智能接入点

论文标题: 英文:TinyAP: An intelligent Access Point to combat Wi-Fi attacks using TinyML中文:TinyAP:使用TinyML对抗Wi-Fi攻击的智能接入点 作者信息: Anand Agrawal 和 Rajib Ranjan Maiti,来自印…

C语言常用标准库 -- 5.<time.h>

目录 引言 5. C标准库--time.h 5.1 简介 5.2 常量与宏 5.3 库变量 5.4 库宏 5.5 库函数 5.6 注意事项 🌈你好呀!我是 程序猿 🌌 2024感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,…

线程池面试集

目录 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优雅的停止一个线程? 线程池的核心线程数、最大线程数该如何设置? 如何理解Java并发中的可见性、原子性、有序性? Java死锁如何避免? 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优…

【docker学习】Linux系统离线方式安装docker环境方法

centos7-linux安装docker(离线方式) 下载docker的安装文件 https://download.docker.com/linux/static/stable/x86_64/ 下载的是:docker-18.06.3-ce.tgz 这个压缩文件 将docker-18.06.3-ce.tgz文件上传到centos7-linux系统上,用ftp工具上传即可 解压…

《RabbitMQ篇》基本概念介绍

MQ功能 解耦 MQ允许不同系统或组件之间松散耦合。发送者和接收者不需要直接连接,从而提高了系统的灵活性和可维护性。异步处理 使用MQ可以实现异步消息传递,发送者可以将消息放入队列后立即返回,不必等待接收者处理。这提高了系统的响应速度…