现有文档版面分析方法大致可分为两种:基于NLP的方法将版面分析任务看作是序列标签分类任务(sequence labeling),但是该类方法在版面建模上表现出不足,无法捕获空间信息;基于CV的方法则将版面分析看作是目标检测或分割任务(object detection or segmentation),该类方法的不足表现在(1)缺乏细粒度的语义、(2)简单的拼接方式、(3)未利用关系信息。如图1展示的VSR的motivation示意图,为解决上述各方法的局限性问题,本文提出一种融合视觉、文本、关系多模态信息的版式分析架构VSR (Vision, Semantic, Relation)。
图1 VSR的motivation示意图
1. 问题定义
版式分析任务既可当做序列标签分类,又可当做目标检测。主要区别在于部件候选(component candidates)的选择。对于基于NLP方法,即序列标签分类的定义,选择通过pdf解析或OCR识别得到text tokens;对于基于CV方法,即目标检测或分割的定义,选择通过目标检测网络如Mask RCNN得到的区域RoI。VSR主要围绕目标检测的定义展开,同时VSR也可以很直接地应用到基于NLP的方法上。
2. VSR架构
VSR架构如图2所示,主要包括三个模块:双流卷积网络(two-stream ConvNets)、多尺度自适应聚合模块、关系学习模块。首先,双流卷积网络提取视觉和语义特征;然后,相对于简单的拼接,多尺寸自适应聚合模块来得到视觉和语义双模态信息表示;接着,基于聚合的多模态信息表示,可以生成布局组件候选集;最后,关系学习模块来学习各组件候选间的关系,并生成最终结果。下面对各模块具体展开。
图2 VSR架构图
2.1 双流卷积网络
VSR采用双流卷积神经网络(本文采用的是ResNeXt-101)来分别提取图像视觉信息和文本语义信息。
视觉ConvNet
对于输入图片
V
0
=
R
H
×
W
×
3
V_{0}=\mathbb{R}^{H\times W\times 3}
V 0 = R H × W × 3 ,通过骨干CNN网络,得到视觉信息的多尺度特征图
{
V
2
,
V
3
,
V
4
,
V
5
}
\{V_{2},V_{3},V_{4},V_{5}\}
{ V 2 , V 3 , V 4 , V 5 } ,其中
V
i
∈
R
H
2
i
×
W
2
i
×
C
i
V
V_i\in \mathbb{R}^{\frac{H}{2^i}\times \frac{W}{2^i}\times C_{i}^{V}}
V i ∈ R 2 i H × 2 i W × C i V ,
H
H
H 和
W
W
W 分别是图片的高和宽,
C
i
V
C_{i}^{V}
C i V 是通道数。
语义ConvNet
VSR将文本转换为2D表示
S
0
=
R
H
×
W
×
C
0
S
S_{0}=\mathbb{R}^{H\times W\times C_{0}^{S}}
S 0 = R H × W × C 0 S , 其中
C
0
S
C_{0}^{S}
C 0 S 是初始通道维度(本文取64)。根据字符和语句两种粒度分别得到CharGrid和SentGrid:
C
h
a
r
G
r
i
d
i
j
=
{
E
c
(
c
k
)
i
f
(
i
,
j
)
∈
b
k
c
0
e
l
s
e
(1)
CharGrid_{ij}=\left\{\begin{matrix} E^{c}(c_k) & if (i,j)\in b_k^c\\ 0 & else \end{matrix}\right. \tag{1}
C h a r G r i d i j = { E c ( c k ) 0 i f ( i , j ) ∈ b k c e l s e ( 1 )
其中
c
k
c_k
c k 表示第
k
k
k 个字符,
b
k
c
=
(
x
0
;
y
0
;
x
1
;
y
1
)
b_k^c = (x_{0}; y_0; x_1; y_1)
b k c = ( x 0 ; y 0 ; x 1 ; y 1 ) 是其对应两点标注(左上角和右下角横纵坐标),
E
c
E^{c}
E c 是词向量映射操作。
S
e
n
t
G
r
i
d
i
j
=
{
E
s
(
s
k
)
i
f
(
i
,
j
)
∈
b
k
s
0
e
l
s
e
(2)
SentGrid_{ij}=\left\{\begin{matrix} E^{s}(s_k) & if (i,j)\in b_k^s\\ 0 & else \end{matrix}\right. \tag{2}
S e n t G r i d i j = { E s ( s k ) 0 i f ( i , j ) ∈ b k s e l s e ( 2 )
其中
s
k
s_k
s k 表示第
k
k
k 个语句,
b
k
s
=
(
x
0
;
y
0
;
x
1
;
y
1
)
b_k^s = (x_{0}; y_0; x_1; y_1)
b k s = ( x 0 ; y 0 ; x 1 ; y 1 ) 是其对应两点标注,
E
s
E^{s}
E s 是预训练的BERT模型。 对字符和语句两个粒度的语义信息进行融合,得到文本2D表示
S
0
S_{0}
S 0 :
S
0
=
L
a
y
e
r
N
o
r
m
(
C
h
a
r
G
r
i
d
+
S
e
n
t
G
r
i
d
)
(3)
S_{0} = LayerNorm(CharGrid+SentGrid) \tag{3}
S 0 = L a y e r N o r m ( C h a r G r i d + S e n t G r i d ) ( 3 )
将
S
0
S_{0}
S 0 输入到骨干CNN网络,得到文本信息的多尺度特征图
{
S
2
,
S
3
,
S
4
,
S
5
}
\{S_{2},S_{3},S_{4},S_{5}\}
{ S 2 , S 3 , S 4 , S 5 } ,与视觉信息的多尺度特征图
{
V
2
,
V
3
,
V
4
,
V
5
}
\{V_{2},V_{3},V_{4},V_{5}\}
{ V 2 , V 3 , V 4 , V 5 } 是同样的尺寸和维度。
2.2 多尺寸自适应聚合模块
在得到各模态的特征图表示后,通过一个卷积层得到attention map
A
M
i
AM_i
A M i ,再基于attention map对各模态特征进行聚合得到聚合特征图
F
M
i
FM_i
F M i :
A
M
i
=
h
(
g
[
V
i
,
S
i
]
)
(4)
AM_i = h(g[V_i, S_i]) \tag{4}
A M i = h ( g [ V i , S i ] ) ( 4 )
F
M
i
=
A
M
i
⊙
V
i
+
(
1
−
A
M
i
)
⊙
S
i
(5)
FM_i = AM_i\odot V_i + (1 - AM_i)\odot S_i \tag{5}
F M i = A M i ⊙ V i + ( 1 − A M i ) ⊙ S i ( 5 )
其中
g
g
g 是一个卷积核尺寸为
1
×
1
×
(
C
i
V
+
C
i
S
)
×
C
i
S
1\times 1\times (C_i^V + C_i^S)\times C_i^S
1 × 1 × ( C i V + C i S ) × C i S 的卷积层,
h
h
h 是非线性激活函数。随后
F
M
=
{
F
M
2
,
F
M
3
,
F
M
4
,
F
M
5
}
FM=\{FM_{2},FM_{3},FM_{4},FM_{5}\}
F M = { F M 2 , F M 3 , F M 4 , F M 5 } 经过特征金字塔网络FPN得到最终的多模态聚合特征。
2.3 关系学习模块
在得到FM后,可以通过RPN网络很容易得到ROI(Region of Interest)作为布局部件候选集。本文在实验阶段选择的是Mask RCNN,同时设置7个anchor比例
(
0.02
,
0.05
,
0.1
,
0.2
,
0.5
,
1.0
,
2.0
)
(0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0)
( 0 . 0 2 , 0 . 0 5 , 0 . 1 , 0 . 2 , 0 . 5 , 1 . 0 , 2 . 0 ) 得到部件候选集。如图3所示,根据各部件候选之间的关系,可以有如下作用:(1)利用空间位置关系,调整文本框坐标;(2)根据部件间的共现关系(比如表格和表格标题一般会同时出现)修正预测标签;(3)各component间不重叠的特性移除多余框。VSR中关系学习模块对各部件候选间的关系进行建模,并最终得到版面分析的结果。
图3 VSR关系学习模块作用示意图
将一篇文档作为一张图graph,而每个部件候选component candidate作为节点node。每个节点的特征表示由多模态特征表示和位置信息表示组成:
z
j
=
L
a
y
e
r
N
o
r
m
(
f
j
+
e
j
p
o
s
(
b
j
)
)
(6)
z_j = LayerNorm(f_j+e^{pos}_j(b_j)) \tag{6}
z j = L a y e r N o r m ( f j + e j p o s ( b j ) ) ( 6 )
其中
f
j
=
R
O
I
A
l
i
g
n
(
F
M
,
b
j
)
f_j=ROIAlign(FM, b_j)
f j = R O I A l i g n ( F M , b j ) ,而
e
j
p
o
s
(
b
j
)
e^{pos}_j(b_j)
e j p o s ( b j ) 是位置坐标的向量表示。 通过self-attention机制来学习关系:
Z
′
=
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
k
)
V
(7)
Z' = Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V \tag{7}
Z ′ = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( d k
Q K T ) V ( 7 )
其中
Q
,
K
,
V
Q,K,V
Q , K , V 都是由
Z
=
{
z
1
,
z
2
,
.
.
.
,
z
N
}
Z=\{z_1, z_2, ..., z_N\}
Z = { z 1 , z 2 , . . . , z N } 来表示,
Z
′
=
{
z
1
′
,
z
2
′
,
.
.
.
,
z
N
′
}
Z'=\{z'_1, z'_2, ..., z'_N\}
Z ′ = { z 1 ′ , z 2 ′ , . . . , z N ′ } 是经过self-attention后的输出结果。 计算节点即部件候选的分类概率:
p
~
j
c
=
s
o
f
t
m
a
x
(
L
i
n
e
a
r
c
l
s
(
z
j
′
)
)
(8)
\tilde{p}^c_j = softmax(Linear_{cls}(z'_j))\tag{8}
p ~ j c = s o f t m a x ( L i n e a r c l s ( z j ′ ) ) ( 8 )
计算节点即部件候选的边框坐标回归:
b
~
j
=
L
i
n
e
a
r
r
e
g
(
z
j
′
)
(9)
\tilde{b}_j= Linear_{reg}(z'_j) \tag{9}
b ~ j = L i n e a r r e g ( z j ′ ) ( 9 )
2.4 优化训练
序列标注的定义下:
采用分类交叉熵进行优化:
L
=
−
1
T
∑
j
=
1
T
y
j
l
o
g
(
p
~
j
)
(10)
\mathcal{L} = -\frac{1}{T}\sum_{j=1}^{T}y_jlog(\tilde{p}_j) \tag{10}
L = − T 1 j = 1 ∑ T y j l o g ( p ~ j ) ( 1 0 )
其中
T
T
T 是text token的个数,
y
j
y_j
y j 是序列标注的groundtruth。
目标检测的定义下:
优化损失函数计算:
L
=
L
D
E
T
+
λ
L
R
M
(11)
\mathcal{L} = \mathcal{L}_{DET} + \lambda \mathcal{L}_{RM} \tag{11}
L = L D E T + λ L R M ( 1 1 )
其中
L
D
E
T
\mathcal{L}_{DET}
L D E T 是候选生成阶段的损失,包括交叉熵(用于分类)和smooth L1(用于边框回归);
L
R
M
\mathcal{L}_{RM}
L R M 是关系学习模块的损失,同样包括交叉熵(用于分类)和smooth L1(用于边框回归)。本文实验中设置
λ
=
1
\lambda = 1
λ = 1 。
3. 实验结果
3.1 对比实验
VSR在三个开源数据集Article Regions,PubLayNet,DocBank上取得了最优结果。
3.2 消融实验
表5、表6、表7的实验结果分别验证了A.不同粒度的文本表示;B.双流卷积网络和聚合模块;C.关系学习模块三个部分的有效性。
4. 总结
VSR方法的三个重要部分如下: (1)文本语义用character和sentence两种粒度来表示; (2)采用two-stream convnet来分别提取视觉和语义特征,再通过attention将两个模态特征聚合,最后基于聚合特征得到component candidates; (3)GNN即Self attention来学习各component candidates间的关系。
评论(0)