研究意义
? 当前的文档识别技术,在文字识别、表格识别、公式识别、段落识别等都有较多研究,这些技术的组合,组成了最终的文档识别全流程。但在文档中,仍存在一类表达形式——流程图。由于流程图的结构多变、形式多样、连接关系可能比较复杂等原因,对流程图识别的工作还比较少。但同样作为文档中重要的一部分,在一些场景下,对流程图的识别将显著提升文档识别的最终效果。 ? 基于此,我们对流程图的识别进行了一些调研,并基于此进行了一些有益的的尝试。在这里我们将简要介绍一篇我们调研过程中遇到的一篇相对比较有代表性的文献《Arrow R-CNN for Flowchart Recognition》(Arrow-RCNN),其基于 Fast-RCNN 架构,提出通过输出三个分支,对流程图中的流程图框及连接关系进行预测。 ? 流程图的元素包括各种不同形状的流程节点框(它们的形状决定了它们的含义)、也包括流程图节点框之间的连接关系,这些连接关系组建了最终的流程图的拓扑结构。 ? 为了解决流程图识别这一问题,Arrow-RCNN 在Faster-RCNN 的基础上,增加一个关键点预测分支,利用这个分支对最终的连接关系进行预测。总体结构如下图所示。据作者说,这也是第一篇利用深度学习进行流程图结构识别的文献。
网络结构
? 文章的主要贡献在于多分支的检测头的设计。通过输入基网络输出的 7×7×256 特征,经过全连层输出到三个分支。网络头结构示意图如下。
关键点编码
? 文章默认每个连接线包括一个带箭头的点和一个不带箭头的点,因此使用一个 4-d 向量对一个连接线上的两个点进行表征。同时,为了便于进行回归,基于连接线 box 对连接点坐标间归一化,如下式所示:
损失函数
? 关键点回归及边框回归均使用 smooth L1 损失:
? 最终的总损失是分类、边框回归、关键点回归三者的综合:
关键点分配
? 得到输出的关键点(连接点)之后,需要将这些关键点分配到不同的节点框。这里作者直接将关键点分配到距离最近的那个节点框。由于检测框是水平矩形,这个距离也很好计算。
识别结果举例
? 作者举例,相对复杂的结构也能做到正确识别。
可能的改进点
? 文章提出了一个新颖的架构尝试解决流程图识别的问题,从现实的流程图情况来看,仍然存在一些改进点:
- 基网络可以更新到性能更强的网络;
- 检测头和关键点回归头都可以用更新的方法,包括更新的损失函数;
- 多损失比例的问题;
- 现实中,流程图的节点可能是多输入多输出的,需要进行支持;
- 流程图的连接线可能有交叉、连接线可能也很长、连接线有实现虚线等不同类型、连接点有带箭头或者不带箭头等多种类型,需要视情况进行支持;
- 从美观的角度来说,最后还需要对节点框、连接线等进行对齐,这一系列后处理也是一个比较复杂的事情。
|