ernie-layout笔记

news2024/11/18 15:27:20

1: 识别文档中文字以及准确的对这些文字排序是必须的一步骤

     采用 OCR技术识别文字以及对应的图像坐标信息,光栅扫描以生成输入序列按照从左到右,从上到下的顺序;但是以上方法针对复杂的结构就会出现问题;因此文章使用了Document-Parase方法来解析文档使用的是Layot-Parser工具箱:

···https://github.com/Layout-Parser/layout-parser

基于OCR识别的文字以及对应的坐标,first 识别文档的元素(paragraphs,lists,tables,fugures)然后使用特殊的算法识别所在不同文档元素的字符之间的逻辑关系,从而获得准确的阅读顺序;

   Text Embedding.:与正常的bert输入一致不再叙述

   

 Visual Embedding:

       不仔细深究,其实也比较简单,就是把图像resize到224 通过Faseter-Rcnn转化为一个feature-map特征=[W,H,256],实际代码可以使用resnet模型替代,实际代码W==H=7,最终通过flatten以及映射层转化为与text相同维度,然后增加一维positon以及token type embedding

position  embedding就是模型最终输出的feature-map(7*7)对应的位置信息,源代码细看

 Layout Embedding. 

       这是本篇的核心之一,对于每一个字符 增加其对应得坐标信息,转化为对应的embedding加入到字符特征中去,坐标全部转到【0,1000】中去;这个容易理解,但目前有疑问不懂得是visual对应的bbox信息获取,令人费解,谁懂可以在评论告诉我,谢谢;

具体实现如下步骤:

          

首先以1000为间隔,获取image_feature_pool_shape[1]=7个数列表,

tmp= [0   , 1000, 2000, 3000, 4000, 5000, 6000, 7000]然偶整除获得7的倍数获得结果为:

[0   , 142 , 285 , 428 , 571 , 714 , 857 , 1000]从结果来看,7个x坐标恰巧落在0--1000范围内,所以猜测这样缩放feature-map 7*7 坐标到0-1000范围内,与字符坐标对应。同理visual_bbox_y的取值范围为[0   , 142 , 285 , 428 , 571 , 714 , 857 , 1000],最终通过各种变换把7*7的feature-map坐标映射到0-1000范围内visual_bbox.shape=[2, 49, 4],而 4个数值分别表示每一个feature-map的左上角坐标以及右下角的坐标,为了通俗易懂,举例:first 的feature-map 坐标为 [0  , 0  , 142, 142] ,第二个feature-map坐标为[142, 0  , 285, 142],我们画图来表示这两个位置,大家就理解了

由于我对图像方面相对较弱所以讲解稍微详细写便于理解,正好与所生成的坐标一致,说明理解是正确的。

然后分别把对应的两个坐标信息以及对应的宽高转化为embedding,具体的作者是分别水平的和垂直的信息分别embedding然后相加的

具体代码实现分别把所有整型坐标信息映射为hidden-size的embedding 

embeddings = visual_embeddings + position_embeddings + x1 + y1 + x2 + y2 + w + h

得到最终的embedding信息;然后把visual的embedding拼接到每一个token对应的embeddeding信息中

 

对应的代码为 final_emb = paddle.concat([text_layout_emb, visual_emb], axis=1)

Multi-modal Transformer、

    本次模型使用了DeBERTa的相对距离算法,具体的一维为例:

也就是在2k范围内有效,具体的在坐标表示为:

 我们引入三个相对position 的embedding表分别表示1Dposition和2D x轴y轴的position,然后映射为相对位置的voctor在处理attention计算时,把原始的attention的权重分离为4个部分,包含了1D/2D和content特征:

 对应的权重scores获取表示为:

 具体实现:

  rel_pos_mat = position_ids.unsqueeze(-2) - position_ids.unsqueeze(-1)首先形成相对位置矩阵

relative_position_bucket函数实现起来相对复杂,但是最终实现的结果为公式5,所以可以直接使用函数实现,而不需要知道怎么实现。最终获取相对位置的权重信息,shape-=【batch_size,num_heads,seq_len,seq_len】,相对来说论文模型结构比较不错,很好的融合了文档图像信息。

 

 

 

 

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

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

相关文章

Spring源码核心剖析 | 京东云技术团队

前言 SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只是在AOP的基础上将能力集成到SpringIOC中,使其作为bean的一种&#xff…

算法程序设计 之 循环赛日程表(2/8)

一、实验目的: 理解并掌握分治算法的基本思想和设计步骤。 二、实验内容 设有n个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2&#xff0…

HOOPS Web SDK 2023 Crack

在 HOOPS WEB 平台上释放 3D 的力量 HOOPS Web 平台加速 Web 应用程序开发,提供先进的 3D Web 可视化、准确快速的 CAD 数据访问和 3D 数据发布软件开发工具包 (SDK)。 构建 3D WEB 应用程序 借助 HOOPS Web 平台,快速构建适用于…

值得收藏的 10个 Android 手机恢复丢失文件的工具榜单

尽管我们尽可能避免这种情况,但有时我们还是会不小心删除 Android 设备上的重要文件。无论是照片、视频、文档还是任何其他形式的数据,数据丢失都会带来巨大的痛苦。不幸的是,Android 设备没有内置恢复工具。但是,有一些第三方恢复…

里程碑式突破!关键的薛定谔猫编码能带来更好的量子比特

​ 薛定谔的猫编码插图(图片来源:网络) 来自瑞士洛桑联邦理工学院(EPFL)的科学家提出了一种突破性的量子计算容错方案,称为“关键的薛定谔猫编码”。这种新颖的系统在混合状态下运行,具有强大的…

容灾与备份区别、灾备技术、容灾体系规划

1.容灾备份的区别 容灾 (Disaster Tolerance):就是在上述的灾难发生时,在保证生产系统的数据尽量少丢失的情况下,保持生存系统的业务不间断地运行。 容错 (Fault Tolerance):指在计…

激光显示技术路线之争:超级全色激光技术ALPD5.0更先进

5月以来,智能投影市场爆发的激光显示技术路线之争愈演愈烈,各厂家带领自有的技术路线你方唱罢我登场,犹如一出愈演愈烈的大戏,吸引了业内外各界的目光。 从极米在5月10日2023春季新品发布会上率先向三色激光技术发难,再到坚果投影首席产品官在朋友圈发文炮轰极米的技术路线,随…

MarkDown常用功能

快捷键 撤销:Ctrl/Command Z 重做:Ctrl/Command Y 加粗:Ctrl/Command B 斜体:Ctrl/Command I 标题:Ctrl/Command Shift H 无序列表:Ctrl/Command Shift U 有序列表:Ctrl/Command Shif…

【二叉树part01】| 二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代遍历

目录 ✿二叉树的递归遍历❀ ☞LeetCode144.前序遍历 ☞LeetCode145.二叉树的后序遍历 ☞LeetCode94.二叉树的中序遍历 ✿二叉树的迭代遍历❀ ☞LeetCode144.前序遍历 ☞LeetCode145.二叉树的后序遍历 ☞LeetCode94.二叉树的中序遍历 ✿二叉树的统一迭代遍历❀ ☞Lee…

CTFshow-pwn入门-前置基础pwn32-pwn34

FORTIFY_SOURCE FORTIFY_SOURCE(源码增强),这个其实有点类似与Windows中用新版Visual Studio进行开发的时候,当你用一些危险函数比如strcpy、sprintf、strcat,编译器会提示你用xx_s加强版函数。 FORTIFY_SOURCE本质上一种检查和替换机制&am…

算法程序设计 之 矩阵连乘(3/8)

一、实验目的: 理解动态规划算法的基本思想和设计步骤; 掌握动态规划算法的典型应用范例——矩阵连乘。 二、实验内容 矩阵连乘 给定n个可乘的数字矩阵A1,…,An,以及矩阵的阶p0* p1, p1* p2,…, pn-1* pn,求给定矩阵链的最优计算次序使得所需…

JavaWeb之文件的上传和下载

文章目录 文件的上传基本介绍文件上传的HTTP协议的说明commons-fileupload.jar 常用API介绍说明fileupload类库的使用 文件的下载基本介绍和使用说明中文名乱码问题解决方案 文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的…

使用spacy做分词的示例

下载数据: aws s3 cp s3://applied-nlp-book/data/ data --recursive --no-sign-request aws s3 cp s3://applied-nlp-book/models/ag_dataset/ models/ag_dataset --recursive --no-sign-request 上面第一份数据接近1GB,第二份接近3GB; 示…

买了一年CSDN年VIP,用着实在太爽

买一年CSDN的年VIP有多爽及使用攻略! 一、前言 这段时间,一旦打开CSDN就不断的弹出618活动,在电脑网上打开,一股白嫖之的气息吹来,让人直接忍不住剁手 最后经过近5天的挣扎,我还是受不了CSDN的蛊惑&#…

【工具分享】批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题

在工作中我们经常要对图片进行批量转换PDF,由于文件量比较多,目录比较深,工作量比较大比较耗时费力,今天我们分享的主要解决以下问题: 1、单张图片的转换PDF:一张图临时转一下 2、多张图片转换成PDF&…

(二叉树) 1382. 将二叉搜索树变平衡 ——【Leetcode每日一题】

❓1382. 将二叉搜索树变平衡 难度:中等 给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。 如果一棵二叉搜索树中,每个节点…

whistle 使用介绍

什么是 whistle 来自 whistle 官网:http://wproxy.org/whistle/ 的介绍: whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP…

在 Python 中对日期和时间进行排序

文章目录 在 Python 中对日期和时间进行排序Python 中的日期时间模块sorted() 方法 使用 sorted() 方法对日期进行排序使用 sorted() 方法对时间进行排序使用 sorted() 方法对日期和时间进行排序总结 Python 是全世界程序员都在使用的一种高级解释型编程语言。 它最著名的是面向…

C++指针对象和异常(10)

异常(exception) 为什么有异常 异常在C用于错误处理,C语言中一般使用返回值表示错误,C对错误处理进行了扩展,统一使用异常机制来处理程序中发生的错误。 C的异常处理包括两个部分 ----- 抛出异常和捕获异常,如果抛出的异常被捕…

BW生成HANA视图权限配置

目录 1 操作步骤1.1 SAP HANA端1、创建用户2、常规信息3、配置角色4、配置系统权限5、配置对象权限 1.2 BW端1、SM30配置数据库连接参数2、SU01创建账户(与SAP HANA数据库账户名一致)3、使用RS2HANA_VIEW查看配置Assignment TypeDB Connection NameLimit…