论文链接:https://arxiv.org/pdf/2201.11438.pdf
代码:https://github.com/biswassanket/DocSegTr
出处:西班牙巴塞罗那自治大学
目的:要理解复杂布局的文档首先就需要进行信息提取。本文目的就是通过实例级别分割获得不同的文章目标(different document objects),如:标题,章节,图片,表格等;
(效果图1)
本文亮点:文中提出一个 Document Image Segmentation Transformer(DocSegTr),用于复杂布局元素的实例级分割;
关键词:文档布局分析,实例级别分割,transformer,信息抽取
作者方法来源:
1)不再依赖box,参考文献【43】(solov2),产生动态实例掩码(dynamic instance mask);
2)因为transform在文档理解【1,5,25】和自然语言处理【9,41】强大的能力,所以作者使用transformers作为全局文字聚合模块,transformer的self-attention通过聚合位置和特征信息能够处理长期语义依赖;
3)解决重叠问题,参考【6】;
4)CNN相较于其他方法可以很好的提取局部特征,所以网络结构中加入CNN backbone;
5)考虑到self-attention的计算复杂度和存储开销问题,所以使用了【41】中的twin-attention;
贡献有三点:
- 提出了文档图像分割Transformer(Document image Segmentation Transformer,DocSegTr),该方法是一个端对端的实例级别的分割方法,可以有效的分析和分割布局复杂的文档。且该方法是第一个bottom-up实例级别文档分割方法,有效的结合了CNN和transformer方法,且没有使用box做目标检测;
- DocSegTr中将self-attention用twin attention替代,与Maskrcnn相比提升了计算效率,节省了内存空间;
- DocSegTr在文档数据集PubLayNet 数据上获得了89.4%AP;
2.Related Work
对于文档的信息提取需要对本页中不同布局组件之间进行空间理解和关系推理,例如:表格,文本块(段落),图,标题等等。从基于规则启发性的文档布局分割到最近的基于深度学习的文档目标检测(DOD, Document Object Detection)大量的工作是为了解决页内的目标定位。本章节,作者回顾了很多不同的方法;
2.1 基于规则启发式的文档布局分析
基于规则启发式的文档布局分割主要有三种模式:top-down,bottom-up 和hybird方法,bottom-up方法【2,31,34】使用像素作为基本组件,通过类似分组和合并的方式形成大的同种类的区域;top-down方法【20,23,29】是将整个文档划分为不同的区域,直到最终定义出标准的列或模块。bottom-up方法更加灵巧,适用于不同布局的文档,但是计算复杂;top-down 计算效率高,但是却只能处理特定版面的文档,例如基于曼哈顿布局的文档;因此,hybird方法【38,40】混合以上二者的优点,产生更好的结果;在深度学习时代以前,基于规则的分割技巧【7,10,37】对于表格检测也是影响深远;
2.2 文档目标检测
基于深度学习的发展,CNN成为了文档布局分割的主要方法。主要是通过Faster-RCNN【32】,Mask-RCNN【14】和Retinanet【26】这类自然场景检测方法对文档布局进行分割。DeepDeSRT【36】是第一个最为流行的用于处理文档中(如:扫描图和数据图片)表格检测和结构识别的目标检测方法;该方法是在将文档输入Faster-RCNN模型之前,对文档应用了一种新的图像变换策略;之后,FCNNs【13】用于在页面上检测大量的目标内容(表格和图)。Oliviera等人【30】使用了一个基于FCNN的相似框架在历史文献上进行逐个像素级别的分割。Saha等人【35】基于transfer learning的Faster-RCNN主干在数据集ICDAR POD(page object Detection)2017【11】上检测表格,图和数学公式获得了很好的结果。最近一个新的跨区域的文档目标检测(DOD)基准在【24】中建立,该基准使用了区域自适应策略,用于DOD中解决区域变换问题;
2.3 Transformers用于文档分析系统
自然语言模型获得更好的结果是因为self-attention和positional embedding机制,在Vaswani等人【41】提出了最原始的transformers。之后,BERT【9】语言模型用于多模态最新的视觉文档理解任务(VDU),比如扫描菜单和发票中的实体识别(entity recognition)和键值对(key-value pair)信息提取。LayoutLM【46】就联合学习文档图片的文档,布局和视觉特征,BERT模型作为基线(BERT-like model baseline),在VDU任务中获得了最佳效果;最近在VDU中的研究【1,22,25】使用了transformers,使用了在文档,布局和图像区域的预训练用于解决VDU任务,如表格理解【19】,菜谱理解【18】,和文档视觉QA(question, answering)【28】。
受transformers在文档理解和文档分析突破的影响,作者首先提出了端对端的文档图像分割transformer,在实例级别分割上获得了很好的效果【47】。作者也将本文的结果和之前的研究结果【4】进行了比较;
3 方法
为了完成实例级别的文档布局分割,一个混合CNN基于transformer(DocSegTr)被提出来,用于识别出不同布局的元素(段落,表,图,标题等)和它们之间的长期依赖。DocSegTr是一个端对端的分割算法,它将特征图分割成patches,然后在patches上预测文章内容,DocSegTr有三部分组成:1)一个有特征金字塔(FPN)的CNN主干用于提取输入文档图片的突出的,特定的低维和近邻元素;2)一个transformer用于广泛和语义推理,transformer兼并了functional heads用于预测语义的类别,和卷积kernel中的kernel head(这个操作是为了展开多尺度特征增加位置信息(positional embedding));3)一个Layerwise Feature Aggregation module(分层特征聚合模块)通过在特征图和相关的卷积核之间通过动态卷积活动创作最后的一层操作(the last division cover);产生的结构如图1
3.1 文档分割Transformer(DocSegTr)
DocSegTr包含三个模块:self-attention机制:处理长期依赖;transformer层和一个Functional head用于实例级分割中的mask预测;
Attention机制:self-attention模块在Transformer中是很重要的一个部分,用于学习全局特征(catches full-document setting)和学习文档不同特征信息之间的关系。但是在【41】中提出的最原始的self-attention计算和存储都相当复杂,耗费时间。为了解决这个问题,作者使用【12】中的孪生注意力(twin-attention)分解了原始的注意力矩阵,twin-attention就是传统注意力的稀疏表示。twin-attention首先单独计算每一列的结果。这样有助于减少水平尺度的语境推理。然后通过计算每一行的相似注意力在竖着的尺度进行相似的操作;最终结果就是行和列注意力(分别为垂直尺度和水平尺度)有序连接形成全局注意力模块,沿着两个不同的维度(全局和局部)覆盖了所有重要的特征信息;
在实例级别分割任务中,假设FPN的每一层的特征图谱为,DocSegTr首先将特征图谱划分为个块(patches),然后通过垂直方向和水平防线将这些patches堆叠为固定的组件(components)。然后将位置信息(position embedding)嵌入到components中保留位置信息,这些行列的位置信息(position embeding)用于自注意力机制当中;为了确保这两个模块(行和列的注意力矩阵)和多头注意力一起工作,作者使用了跨多层连接(防止梯度消失),在twin-attention中所有的子层中会产生相同的的输出。这个方法可以减少内存消耗,减少计算复杂度;原始的self-attention的内存和计算复杂度从降到;
Transformer Layer:本章节中,作者展示了三个特定的transformer层回顾基础结构(如图1)中的encoder。1)第一个transformer和【41】中的一样,包含两个组件:层归一化后【3】一个多头注意力单元和层归一化后的多层感知机(MLP)。此外,使用残差连接【15】两个模块。最终transformer层K个序列关联的结果就是多维特征序列,确保了下面functional heads能够做出预测;
在DocSegTr中,原始的transformer层【41】得到使用,同时多头注意力被替换为twin attention,twin attention不仅仅帮助建模了全局特征依赖(在两个不同的尺度),同时twin attention稀疏性也减少了计算量;
Functional Heads:从transformer中获得的结果序列送入到两个functional head。category head包括多层感知机(MLP)分类层去产生个结果;是类别数量。它就是产生的文档实例分类结果(如:标题,图,段落)。
kernel head也是由一个线性层组成,产生个张量,代表卷积核,b代表的是参数量。这里的结果最终用于预测mask,使用focal loss【26】作为文本实例预测loss;
3.2 使用掩膜特征产生实例级别的分割
本章节中介绍DocSegTr中使用的分割策略。首先体现了全局特征和局部特征在实例分割中优势。然后分析了输入文档布局是怎样产生的掩膜预测结果。
Mask Feature Generation:为了产生文档实例级别的掩膜特征,最直接的方法就是在特征图上进行不同尺寸的预测【8,21】。然而,时间成本和存储成本都比较复杂。为了克服这个问题,作者提出了分层特征聚合模块(a Layerwise Feature Aggregator Module,LFAM)结合每一个FPN的多尺度特征和transformer特征输出结合后的mask 特征;拥有位置信息的低精度特征和transformer特征在P5进行融合,然后依次产生P4-P2的特征,最终将分层特征多尺度的全局特征和局部特征进行编码,将P2-P5结果最终concat连接,并使用Pointwise conv(增加通道数)和upsample操作生成最终的mask预测结果为h*w;
Instance Mask Prediction:对于文档最终的mask预测,DocSegTr中通过对特征图进行动态卷积操作后每一个patch会产生mask,受【43】启发做动态预测策略。预测卷积核的kernel head中的大小,每一个kernel负责相关patch产生mask。细节操作如下式:
*代表卷积操作,代表最终产生的Mask,大小为,b值的大小有kernel大小决定,最终的mask结果由Matrix NMS【16】产生,使用Dice Loss【42】;