EAST系列论文学习
EAST
Abstract
EAST提出了一种针对自然场景下文本检测的算法,直接预测完整图像中任意方向和四边形形状的单词或文本行,消除不必要的中间步骤(例如候选框聚合和单词划分),只需要单个神经网络。EAST算法的简洁性,让作者更集中于损失函数和神经网络结构的设计,在精度和效率上取得了很大提高。EAST的F-score为0.7820,13.2 F P S FPS FPS, 720 p 720p 720p分辨率。
Introduction
文本检测作为后续处理的前提,在整个文本信息提取和理解过程中起着至关重要的作用。文本检测的核心是设计特征来区分文本和背景。传统上通过手工设计特征来捕获场景文本的属性,而基于深度学习的方法直接从训练数据中学习有效的特征。
EAST提出一种双阶段的场景文本检测算法。该算法采用了一个FCN网络模型,直接产生单词或文本行级别的预测,排除了冗余和缓慢的中间步骤。其生成的文本预测可以是旋转矩形或四边形,然后经过非极大值抑制得到最终结果。
Methodology
EAST算法的关键组成是一个神经网络模型,该模型训练直接从整张图像预测文本实例的存在性以及几何形状。该网络采用FCN网络,适用于文本检测、输出单词,消除了中间步骤,如候选建议、文本区域形成和词划分。后处理步骤仅包括几何形状的阈值和NMS。
Pipeline
EAST算法遵循DenseBox的大体设计,将图像输入给FCN,生成多个像素级文本得分图和集合图形通道。
其中一个预测通道是一个得分图,其像素值在 [ 0 , 1 ] [0,1] [0,1]范围内。其余的通道表示从每个像素视图中包含单词的集合图形。分数代表在同一位置预测的几何形状的置信度。
EAST尝试了两种几何形状来进行文本区域表示,旋转矩形(RBOX)和四边形(QUAD),并为不同的形状设计了不同的损耗函数。然后对每个预测的区域进行阈值分类,超过阈值的几何图形认定有效。最后再经过NMS输出作为最终的结果。
Network Design
单词区域大小变化很大,不同大小的单词需要用到不同卷积层次的特征图,因此需要将不同层次的特征图融合起来。EAST采用了U-shape的思想来逐步合并特征图,同时保持上采样分支较小,最终形成了一个既可以利用不同层次特征图又可以保持较小计算成本的网络。
如图3,EAST可分为三个部分:特征提取主干,特征融合分支和输出层。主干可以在ImageNet上进行预训练,从主干中提取4个级别的特征映射,记为 f i f_i fi,其大小为输入图像的 1 / 32 , 1 / 16 , 1 / 8 和 1 / 4 1/32,1/16,1/8和1/4 1/32,1/16,1/8和1/4。
在特征融合分支中,EAST采用了逐步合并的方法,主要计算方法如下:
g i = { u n p o o l ( h i ) , i ≤ 3 c o n v 3 × 3 ( h i ) , i = 4 g_i=\left\{\begin{matrix} unpool(h_i) , i\leq 3\\ conv_{3\times3}(h_i),i=4 \end{matrix}\right. gi={unpool(hi),i≤3conv3×3(hi),i=4
h i = { f i , i = 1 c o n v 3 × 3 ( c o n v 1 × 1 ( [ g i − 1 ; f i ] ) ) , o t h e r w i s e h_i=\left\{\begin{matrix} f_i , i=1\\ conv_{3\times3}(conv_{1\times1}([g_{i-1};f_i])),otherwise \end{matrix}\right. hi={fi,i=1conv3×3(conv1×1([gi−1;fi])),otherwise
其中 g i g_i gi为合并基, h i h_i hi为合并后的特征图,算子 [ ⋅ ; ⋅ ] [\cdot;\cdot] [⋅;⋅]表示沿通道轴的串联。
在每个合并阶段,上一层的特征图首先经过一个反池化层,使其大小翻倍,然后与当前的特征图连接。然后,使用 1 × 1 1\times1 1×1的卷积层减少通道数量和计算量,在经过 3 × 3 3\times3 3×3的卷积层融合信息,最终产生合并输出。最终再经过一个 3 × 3 3\times3 3×3的卷积层输出。
完成特征图融合输出后,最终输出层包含若干个 1 × 1 1\times1 1×1的卷积操作,将32通道的特征图投射到单通道的得分图和多通道的几何形状图上(可以是RBOX也可以是QUAD)。
对于RBOX,几何图形由一个4通道的轴向包围盒和一个单通道的旋转角度组成。
对于QUAD,使用一个8通道的表示法,表示四个角点到图像角点的位移。
Label Generation
四边形的得分图生成
为了不失一般性,只考虑四边形的情况。得分图上四边形的面积是原版本的缩小版,如图4(a)。
对于一个四边形
Q
=
{
p
i
∣
i
∈
{
1
,
2
,
3
,
4
}
}
Q=\left \{ p_i|i\in\left \{ 1,2,3,4 \right \} \right \}
Q={pi∣i∈{1,2,3,4}},其中
p
i
=
{
x
i
,
y
i
}
p_i=\left\{x_i,y_i\right\}
pi={xi,yi}是四边形的顶点(顺时针)。为了缩小
Q
Q
Q,我们首先计算了每个顶点
p
i
p_i
pi的参考长度
r
i
r_i
ri:
r
i
=
m
i
n
(
D
(
p
i
,
p
(
i
m
o
d
4
)
+
1
)
,
D
(
p
i
,
p
(
(
i
+
2
)
m
o
d
4
)
+
1
)
)
r_i=min\begin{pmatrix} D(p_i,p_{(i mod 4)+1}),\\ D(p_i,p_{((i+2) mod 4)+1}) \end{pmatrix}
ri=min(D(pi,p(imod4)+1),D(pi,p((i+2)mod4)+1))
其中 D ( p i , p j ) D(p_i,p_j) D(pi,pj)是 p i p_i pi和 p j p_j pj之间的距离 L 2 L_2 L2。
首先缩减四边形的两条长边,然后是两条短边。对于每一对“相对”的边,用长度来比较长短。然后对于每条边,沿内缘向内移动
0.3
r
i
0.3r_i
0.3ri和
0.3
r
(
i
m
o
d
4
)
+
1
0.3r_{(imod4)+1}
0.3r(imod4)+1。
几何图生成
损失函数
损失函数定义如下: L = L s + λ g L g L=L_s+\lambda_gL_g L=Ls+λgLg
很明显, L s L_s Ls和 L g L_g Lg分别是得分图和几何图的损失, λ g \lambda_g λg是比重,EAST中设 λ g = 1 \lambda_g=1 λg=1。
得分图损失
为了简化训练过程,EAST使用了类平衡交叉熵,如:
L s = b a l a n c e d − x e n t ( Y ^ , Y ∗ ) = − β Y ∗ l o g Y ^ − ( 1 − β ) ( 1 − Y ∗ ) l o g ( 1 − Y ^ ) L_s=balanced-xent(\hat{Y},Y^*)=-\beta Y^*log\hat{Y}-(1-\beta)(1-Y^*)log(1-\hat{Y}) Ls=balanced−xent(Y^,Y∗)=−βY∗logY^−(1−β)(1−Y∗)log(1−Y^)
其中,
Y
^
=
F
s
\hat{Y}=F_s
Y^=Fs是得分图的预测,而
Y
∗
Y^*
Y∗是ground truth。参数
β
\beta
β是正样本与负样本之间的平衡因数,其计算方法为:
β
=
1
−
∑
y
∗
∈
Y
∗
y
∗
∣
Y
∗
∣
\beta=1-\frac{\sum_{y^*\in Y^*}y^*}{\left | Y^* \right |}
β=1−∣Y∗∣∑y∗∈Y∗y∗
几何图损失
场景文本检测的一个挑战是自然场景中文本大小变化很大。直接用 L 1 L_1 L1或 L 2 L_2 L2损失进行回归会引导损失偏差想更大更长的文本区域。由于EAST需要为不同大小的文本区域生成精确的文本几何预测,因此回归损失应该是尺度不变的。
RBOX
RBOX采用AABB格式(四边到图像边界的距离),采用IoU Loss(具有尺度不变性):
L
A
A
B
B
=
−
l
o
g
I
o
U
(
R
^
,
R
∗
)
=
−
l
o
g
∣
R
^
⋂
R
∗
∣
∣
R
^
⋃
R
∗
∣
L_{AABB}=-logIoU(\hat{R},R^*)=-log\frac{\left | \hat{R}\bigcap R^* \right |}{\left | \hat{R}\bigcup R^* \right |}
LAABB=−logIoU(R^,R∗)=−log∣∣∣R^⋃R∗∣∣∣∣∣∣R^⋂R∗∣∣∣
其中, R ^ \hat{R} R^表示预测的AABB几何边框, R ∗ R^* R∗是其相应的ground truth。
显而易见,交集
∣
R
^
⋂
R
∗
∣
\left | \hat{R}\bigcap R^* \right |
∣∣∣R^⋂R∗∣∣∣的宽高分别是:
w
i
=
m
i
n
(
d
^
2
,
d
2
∗
)
+
m
i
n
(
d
^
4
,
d
4
∗
)
w_i=min(\hat{d}_2,d_2^*)+min(\hat{d}_4,d_4^*)
wi=min(d^2,d2∗)+min(d^4,d4∗)
h
i
=
m
i
n
(
d
^
1
,
d
1
∗
)
+
m
i
n
(
d
^
3
,
d
3
∗
)
h_i=min(\hat{d}_1,d_1^*)+min(\hat{d}_3,d_3^*)
hi=min(d^1,d1∗)+min(d^3,d3∗)
其中, d 1 , d 2 , d 3 , d 4 d_1,d_2,d_3,d_4 d1,d2,d3,d4表示一个像素到对应矩形的上、右、下、左边界的距离。
并集面积计算为:
∣
R
^
⋃
R
∗
∣
=
∣
R
^
∣
+
∣
R
∗
∣
−
∣
R
^
⋂
R
∗
∣
\left | \hat{R}\bigcup R^* \right |=\left | \hat{R} \right |+\left | R^* \right |-\left | \hat{R}\bigcap R^* \right |
∣∣∣R^⋃R∗∣∣∣=∣∣∣R^∣∣∣+∣R∗∣−∣∣∣R^⋂R∗∣∣∣
旋转角度损失计算为:
L
θ
(
θ
^
,
θ
∗
)
=
1
−
c
o
s
(
θ
^
−
θ
∗
)
L_\theta(\hat{\theta},\theta^*)=1-cos(\hat{\theta}-\theta^*)
Lθ(θ^,θ∗)=1−cos(θ^−θ∗)
最终,总体的几何损失由AABB损失和角度损失加权求和得到:
L
g
=
L
A
A
B
B
+
λ
θ
L
θ
L_g=L_{AABB}+\lambda_\theta L_\theta
Lg=LAABB+λθLθ
EAST中设定 λ θ = 10 \lambda_ \theta=10 λθ=10。
注意,计算 L A A B B L_{AABB} LAABB与旋转角度无关。
QUAD
EAST通过增加了一个额外的标准化项扩展了
s
m
o
o
t
h
e
d
−
L
1
smoothed-L1
smoothed−L1损失。设
Q
Q
Q的所有坐标值都是一个有序集:
C
Q
=
{
x
1
,
y
1
,
x
2
,
y
2
,
x
3
,
y
3
,
x
4
,
y
4
}
C_Q=\left \{ x_1,y_1,x_2,y_2,x_3,y_3 ,x_4,y_4 \right \}
CQ={x1,y1,x2,y2,x3,y3,x4,y4}
则损失可以写成:
L
g
=
L
Q
U
A
D
(
Q
^
,
Q
∗
)
=
m
i
n
Q
~
∈
P
Q
∗
∑
c
i
∈
C
Q
,
c
i
~
∈
C
Q
~
s
m
o
o
t
h
e
d
L
1
(
c
i
−
c
~
i
)
8
×
N
Q
∗
L_g=L_{QUAD}\left ( \hat{Q},Q^* \right )=\underset{\tilde{Q}\in P_{Q^*}}{min}\sum_{\begin{matrix} c_i\in C_Q,\\ \tilde{c_i}\in C_{\tilde{Q}} \end{matrix}}\frac{smoothed_{L1}(c_i-\tilde{c}_i)}{8\times N_{Q^*}}
Lg=LQUAD(Q^,Q∗)=Q~∈PQ∗minci∈CQ,ci~∈CQ~∑8×NQ∗smoothedL1(ci−c~i)
其中,归一化项
N
Q
∗
N_{Q^*}
NQ∗是四边形的短边长度,由:
N
Q
∗
=
m
i
n
i
=
1
,
2
,
3
,
4
D
(
p
i
,
p
(
i
m
o
d
4
)
+
1
)
N_{Q^*}=\underset{i=1,2,3,4}{min}D(p_i,p_{(imod4)+1})
NQ∗=i=1,2,3,4minD(pi,p(imod4)+1)
而 P Q P_Q PQ是 Q ∗ Q^* Q∗的所有具有不同顶点顺序的等价四边形的集合。这是由于公共训练数据集中四边形的注释顺序不一致。
Training
EAST使用ADAM优化器进行端到端的训练。为了加快学习速度,统一从 512 × 512 512\times 512 512×512的图像中截取样本,形成size24的小批量。ADAM的学习速率从 1 e − 3 1e-3 1e−3开始,每27300个小批次衰减为 1 / 10 1/10 1/10,直至 1 e − 5 1e-5 1e−5。
Advanced East
Advanced East是基于EAST提出的改进算法,对于长文本的预测更加准确。因为EAST计算最终的顶点坐标是用所有像素点预测顶点的加权平均值,很难预测四边形另外一个边的两个顶点。
限制
检测器能够处理的最大文本实例大小与网络的接受域成正比。这限制了网络预测更长的文本区域(比如图像中的文本行)的能力。
此外,该算法可能会漏掉或给出不精确的预测垂直文本实例,因为它们只取ICDAR 2015训练集中的一小部分文本区域。
Advanced East 结构
对比EAST就不难看出主要差异就在输出层上。
回顾一下,EAST的输出是
(1)得分图,单通道,置信度,表示点在文本框内的概率;
(2)RBOX:4通道+1通道,分别是像素位置到矩形的顶部、右侧、底部、左侧的4个距离,以及文本框的旋转角度;
(3)QUAD:8通道,分别表示像素位置到四边形四个顶点的坐标偏移。
不管用RBOX或者QUAD都会有一个问题,以RBOX为例,在预测边框和顶点前,首先需要用得分图筛选出文本框内的点,EASR预测文本框的方法是,首先预测所有文本框内的点,然后预测每个文本框内点到文本框四边的距离以及旋转角度,最后再通过加权平均得到最终的文本框预测结果。在文本框较小时没问题,当文本很长时,用一端的点预测到文本框远端的距离就会出现较大误差,导致预测长文本时断裂或者预测不出。
而Advance East 的输出不同:
(1)得分图,和EAST一样,表示点在文本框内的概率;
(2)vertex code,2通道,第一个通道表示点是否是边界元素的置信度,第二个通道表示点是头/尾元素的概率(默认阈值0-0.1为头部元素,0.9-1为尾部元素);
(3)vertex geo,4通道,分别表示该点到左上和左下顶点(或右上和右下顶点)的偏移量。
这里要注意的是,Advanced East不再用所有点进行顶点预测了,头部元素点预测左上、左下顶点,尾部元素预测右上、右下顶点。
预测过程
预测过程的整体流程:
(1)根据得分图的输出确定文本框内部点(触发点);
(2)遍历所有触发点,将特征图中左右相邻的触发点合并形成若干region list;
(3)遍历所有region list,将特征图中上下相邻的region list合并成region group;(这两步的主要含义就是将触发点合并成一个触发区域,基本就是单个文本区域)
(4)遍历region group中的点,根据vertex code输出的值确定头/尾元素;
(5)每个region group中的头部(尾部)元素预测的vertex geo进行加权平均得到最终的文本框顶点。
确定文本框顶点的加权方式如下,n表示当前文本域内边界元素的数量:
q
u
a
d
(
p
v
)
=
∑
i
=
1
n
s
c
o
r
e
i
∗
p
v
i
∑
i
=
1
n
s
c
o
r
e
i
quad\left ( pv \right )=\frac{\sum_{i=1}^{n}score_i*pv_i}{\sum_{i=1}^{n}score_i}
quad(pv)=∑i=1nscorei∑i=1nscorei∗pvi
其中, p v i pv_i pvi是当前边界元素与预测的 x , y x,y x,y偏移量相加后的结果,也就是预测的顶点坐标;而 s c o r e i score_i scorei是当前边界元素的置信度。
这里要注意,特征图只有原图尺寸的1/4,需要进行对应:
p
x
=
(
x
+
0.5
)
∗
4
px=(x+0.5)*4
px=(x+0.5)∗4
p
y
=
(
y
+
0.5
)
∗
4
py=(y+0.5)*4
py=(y+0.5)∗4