简介
本文介绍的是发表在 C V P R 2017 {\rm CVPR\ 2017} CVPR 2017的一篇关于文本检测的文章。 E A S T {\rm EAST} EAST是两阶段的文本检测模型,具有简单高效等的特点,是当前主流的文本检测模型之一。 E A S T {\rm EAST} EAST在同期的 I C D A R 2015 {\rm ICDAR\ 2015} ICDAR 2015、 C O C O {\rm COCO} COCO- T e x t {\rm Text} Text和 M S R A {\rm MSRA} MSRA- T D 500 {\rm TD500} TD500数据集上达到了 S O T A {\rm SOTA} SOTA。论文原文 源码
0. Abstract
当前,基于深度学习的文本检测算法获得了巨大的进展。但是,在面对具有挑战性的场景时仍不能表现出令人满意的结果,这是因为当前大多数模型的性能受到多个阶段的共同作用。论文提出一种简单高效的自然场景文本识别算法,它能够应对任意朝向和形状的文本,且不需要候选聚合和单词分区等操作。 E A S T {\rm EAST} EAST在多项公开数据集上获得了 S O T A {\rm SOTA} SOTA。
论文贡献:(一)提出一个简单高效的两阶段文本检测模型;(二) E A S T {\rm EAST} EAST可以实现字符级和文本级的检测。
1. Introduction
近年来,提取和理解自然场景中的文本信息成为了研究的热点。文本检测在文本信息提取和理解中扮演了重要的角色,它是后续操作的先决条件。文本检测算法的核心是基于文本特征从背景图像中提取出文本区域,发展过程从传统手工提取特征到基于深度学习的特征提取。但是,当前大多数的文本检测算法由多个阶段组成,这会带来计算量的增加和陷入次优解。论文提出一种简单高效的文本检测算法,算法整体仅含有两个步骤,直接通过 F C N {\rm FCN} FCN产生单词和文本级的预测结果。预测结果可以包含旋转矩形框或任意四边形,然后通过非极大值抑制得到最终的预测结果。相比于当前的文本检测算法, E A S T {\rm EAST} EAST的速度更快、精度更高。
2. Related Work
传统的文本检测和文本识别方法依赖于手工提取特征。
S
W
T
{\rm SWT}
SWT和
M
S
E
R
{\rm MSER}
MSER基于边缘检测和极值区域检测得到候选区域。
F
A
S
T
e
x
t
{\rm FASText}
FASText基于笔画提取的快速关键点检测器,构建一个快速的文本检测系统。但是,传统方法在处理低分辨率、几何形变等场景时均落后于深度学习。当前,基于深度学习的文本检测算法成为研究主流。相关文章可以从论文的相关工作部分找到。但是,当前基于深度学习的文本检测模型的一大共性是由多个阶段组成,当某个阶段出现假阳性的检测结果时会影响最终的检测结果。同时,引入多个阶段会带来计算量的增加。论文基于
F
C
N
{\rm FCN}
FCN涉及了一个两阶段的文本检测算法,可以实现端到端的训练。模型结构对比如下图:
3. Methodology
3.1 Pipeline
如上图,最左边部分是轻量级骨干网络 P V A N e t {\rm PVANet} PVANet;中间是特征融合分支;最右边部分是 E A S T {\rm EAST} EAST的输出。输出共包含三个部分:得分图, R B O X {\rm RBOX} RBOX用于处理文本区域的几何形变和 Q U A D {\rm QUAD} QUAD用于预测四边形文本区域的四个顶点。其中, R B O X {\rm RBOX} RBOX主要用于处理旋转的四边形; Q U A D {\rm QUAD} QUAD用于处理透视变换后的四边形。
3.2 Network Design
在设计网络时,必须考虑以下因素:使用浅层特征预测小文本区域,使用深层特征预测大文本区域。因此,预测所用的特征图必须包含上下文信息。如上图,依次将 32 、 16 、 8 、 4 {\rm 32、16、8、4} 32、16、8、4倍下采样的特征图表示为 f i f_i fi。然后,采用以下规则合并特征图。 g i = { u p p o o l ( h i ) i f i ≤ 3 c o n v 3 × 3 ( h i ) i f i = 4 (1) g_i=\begin{cases} {\rm uppool}(h_i)& \ \ {\rm if}\ \ \ i\le3\\ {\rm conv}_{3×3}(h_i)& \ \ {\rm if}\ \ \ i=4 \end{cases}\tag{1} gi={uppool(hi)conv3×3(hi) if i≤3 if i=4(1)
h i = { f i i f 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 (2) h_i=\begin{cases} f_i& \ \ {\rm if}\ \ \ i=1\\ {\rm conv}_{3×3}({\rm conv}_{1×1}([g_{i-1};f_i]))& \ \ {\rm otherwise} \end{cases}\tag{2} hi={ficonv3×3(conv1×1([gi−1;fi])) if i=1 otherwise(2)
在输出部分,得分图的通道数为 1 1 1,表示当前文本区域的置信度; R B O X {\rm RBOX} RBOX的通道数为 5 5 5,分别表示旋转角度和轴对齐的边界框(来自于 A A B B {\rm AABB} AABB); Q U A D {\rm QUAD} QUAD的通道数为 8 8 8,表示对于四边形四个顶点的水平坐标偏移。
3.3 Label Generation
3.3.1 Score Map Generation for Quadrangle
不失一般性,论文只针对四边形区域计算损失。这里并不是针对整个四边形区域计算损失,而是使用原四边形的缩小版本,这里主要考虑减小标注时的误差,也减少了文本区域边缘的背景信息的干扰。其中缩小规则如下。对于四边形 Q = { p i ∣ i ∈ { 1 , 2 , 3 , 4 } } {\bold Q}=\{p_i|i\in\{1,2,3,4\}\} Q={pi∣i∈{1,2,3,4}},其中 p i p_i pi为四边形顺时针方向的四个顶点。然后计算每个点 p i p_i pi的参考长度: r i = min ( D ( p i , p ( i m o d 4 ) + 1 ) , D ( p i , p ( ( i + 3 ) m o d 4 ) + 1 ) ) (3) r_i=\min({\rm D}(p_i,p_{(i\ {\rm mod}\ 4)+1}),{\rm D}(p_i,p_{((i+3)\ {\rm mod}\ 4)+1}))\tag{3} ri=min(D(pi,p(i mod 4)+1),D(pi,p((i+3) mod 4)+1))(3)
其中,
D
(
p
i
,
p
j
)
{\rm D}(p_i,p_j)
D(pi,pj)表示
p
i
p_i
pi和
p
j
p_j
pj之间的
L
2
L_2
L2距离。具体地,首先缩小四边形较长的两条边,然后再缩放较短的两条边。长短边的定义是根据相对边长度的平均值而定。对于每条边
⟨
p
i
,
p
(
i
m
o
d
4
)
+
1
⟩
\langle p_i,p_{(i\ {\rm mod}\ 4)+1} \rangle
⟨pi,p(i mod 4)+1⟩,将它的两个端点分别向内移动
0.3
r
i
0.3r_i
0.3ri和
0.3
r
(
i
m
o
d
4
)
+
1
0.3r_{(i\ {\rm mod}\ 4)+1}
0.3r(i mod 4)+1。即下图中的将黄色虚线的标注框缩小为绿色框,同时生成后一幅图中的掩膜作为训练标签。
3.3.2 Geometry Map Generation
前面提到, R B O X {\rm RBOX} RBOX的输出有 5 5 5个通道,分别表示几何位置和旋转角度。如上图首先生成一个最小的外接矩形框包围文本区域,即上图中的粉色框。输出的四个通道的值分别表示正得分像素到框边界的距离,一个通道的值表示相对于水平的旋转角度。对于 Q U A D {\rm QUAD} QUAD,直接计算相对于真实框的顶点偏移。
3.4 Loss Functions
L = L s + λ g L g (4) L=L_s+\lambda_gL_g\tag{4} L=Ls+λgLg(4)
其中, L s L_s Ls和 L g L_g Lg分别表示得分图和几何位置的损失, λ g \lambda_g λg是平衡系数。
3.4.1 Loss for Score Map
论文引入类平衡交叉熵损失函数: L s = b a l a n c e d x e n t ( Y ^ , Y ∗ ) = β Y ∗ log ( Y ^ ) − ( 1 − β ) ( 1 − Y ∗ ) log ( 1 − Y ^ ) (5) \begin{aligned}L_s & ={\rm balanced\ xent({\hat{\bold Y}},{\bold Y}^*)} \\& =\beta{\bold Y}^*\log({\hat{\bold Y}})-(1-\beta)(1-{\bold Y}^*)\log(1-{{\hat{\bold Y}}}) \end{aligned}\tag{5} Ls=balanced xent(Y^,Y∗)=βY∗log(Y^)−(1−β)(1−Y∗)log(1−Y^)(5)
其中, Y ^ = F s {\hat{\bold Y}=F_s} Y^=Fs表示预测的得分图, Y ∗ {\bold Y}^* Y∗表示真实图, β \beta β是平衡因子,其计算如下。 β = 1 − ∑ y ∗ ∈ Y ∗ y ∗ ∣ Y ∗ ∣ (6) \beta=1-\frac{\sum_{y^*\in{\bold Y}^*}y^*}{|{\bold Y}^*|}\tag{6} β=1−∣Y∗∣∑y∗∈Y∗y∗(6)
3.4.2 Loss for Geometries
文本检测的一大挑战是自然场景图片的尺寸变化大,直接使用 L 1 L_1 L1或 L 2 L_2 L2作为损失函数将会使模型倾向于处理长文本区域。 R C N N {\rm RCNN} RCNN提出使用偏移作为回归目标解决了目标尺寸多变的问题。而论文在 R B O X {\rm RBOX} RBOX处基于 A A B B {\rm AABB} AABB的 I o U {\rm IoU} IoU损失和在 Q U A D {\rm QUAD} QUAD处基于标准化 S m o o t h L 1 {\rm SmoothL1} SmoothL1损失。
RBOX
L A A B B = − log I o U ( R ^ , R ∗ ) = − log ∣ R ^ ∩ R ∗ ∣ ∣ R ^ ∪ R ∗ ∣ (7) L_{AABB}=-\log\ {\rm IoU}({\hat{\bold R}},{\bold R}^*)=-\log\frac{|{\hat{\bold R}}\cap{\bold R}^*|}{|{\hat{\bold R}}\cup{\bold R}^*|}\tag{7} LAABB=−log IoU(R^,R∗)=−log∣R^∪R∗∣∣R^∩R∗∣(7)
其中, R ^ {\hat{\bold R}} R^和 R ∗ {\bold R}^* R∗分别是 A A B B {\rm AABB} AABB中的预测值和真实值。显然, ∣ R ^ ∩ R ∗ ∣ |{\hat{\bold R}}\cap{\bold R}^*| ∣R^∩R∗∣的宽和高为: w i = min ( d ^ 2 , d 2 ∗ ) + min ( d ^ 4 , d 4 ∗ ) h i = min ( d ^ 1 , d 1 ∗ ) + min ( d ^ 3 , d 3 ∗ ) (8) w_i=\min(\hat{d}_2,d^*_2)+\min(\hat{d}_4,d^*_4)\\ h_i=\min(\hat{d}_1,d^*_1)+\min(\hat{d}_3,d^*_3)\tag{8} wi=min(d^2,d2∗)+min(d^4,d4∗)hi=min(d^1,d1∗)+min(d^3,d3∗)(8)
其中, d ∗ d_* d∗表示像素点到框边界的距离。 ∣ R ^ ∪ R ∗ ∣ = ∣ R ^ ∣ + ∣ R ∗ ∣ − ∣ R ^ ∩ R ∗ ∣ (9) |{\hat{\bold R}}\cup{\bold R}^*|=|\hat{\bold R}|+|{\bold R}^*|-|{\hat{\bold R}}\cap{\bold R}^*|\tag{9} ∣R^∪R∗∣=∣R^∣+∣R∗∣−∣R^∩R∗∣(9)
关于旋转角度的损失: L θ ( θ ^ , θ ∗ ) = 1 − cos ( θ ^ − θ ∗ ) (10) L_{\theta}(\hat{\theta},\theta^*)=1-\cos(\hat{\theta}-\theta^*)\tag{10} Lθ(θ^,θ∗)=1−cos(θ^−θ∗)(10)
其中, θ ^ \hat{\theta} θ^和 θ ∗ \theta^* θ∗分别表示预测值和真实值。最后, R B O X {\rm RBOX} RBOX的总损失为: L g = L A A B B + λ θ L θ (11) L_g=L_{AABB}+\lambda_{\theta}L_{\theta}\tag{11} Lg=LAABB+λθLθ(11)
QUAD
四个顶点的集合: C Q = { x 1 , y 1 , x 2 , y 2 , . . . , x 4 , y 4 } (12) {\rm C}_{\bold Q}=\{x_1,y_1,x_2,y_2,...,x_4,y_4\}\tag{12} CQ={x1,y1,x2,y2,...,x4,y4}(12)
则损失函数定义为: L g = L Q U A D ( Q ^ , Q ∗ ) = min 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 ∗ (13) \begin{aligned}L_g&=L_{QUAD}(\hat{\bold Q},{\bold Q}^*)\\ &=\min_{\bold {\tilde Q}\in P_{\bold Q}^*}\sum_{c_i\in{\rm C}_{\bold Q}, {\tilde c}_i\in{\rm C}_{\bold {\tilde Q}}} \end{aligned}\frac{{\rm smoothed}_{L1}(c_i-{\tilde c}_i)}{8×N_{\bold Q}^*}\tag{13} Lg=LQUAD(Q^,Q∗)=Q~∈PQ∗minci∈CQ,c~i∈CQ~∑8×NQ∗smoothedL1(ci−c~i)(13)
其中,正则化因子 N Q ∗ {\rm N_{\bold Q^*}} NQ∗是四边形的最短边长度。 N Q ∗ = min i = 1 4 D ( p i , p ( i m o d 4 ) + 1 ) (14) N_{\bold Q^*}=\min_{i=1}^4D({p_i,p_{(i\ {\rm mod}\ 4)+1})}\tag{14} NQ∗=i=1min4D(pi,p(i mod 4)+1)(14)
3.5 Locality-Aware NMS
在后处理阶段,通常会使用
N
M
S
{\rm NMS}
NMS,而原始的
N
M
S
{\rm NMS}
NMS的算法时间复杂度为
O
(
n
2
)
O(n^2)
O(n2)。为了提高模型的运行速度,论文根据文本检测任务的特点,提出位置感知
N
M
S
{\rm NMS}
NMS。具体地,鉴于邻近像素的几何性高度相关,论文提出的做法是逐行合并几何体同时合并同一行的几何体,即迭代地从第一行合并至最后一行。对于图像中的某一行文本来说,算法的时间复杂度为
O
(
n
)
O(n)
O(n)。算法整体流程如下:
4. Experiments
5. Conclusion
由前面的介绍可知, E A S T {\rm EAST} EAST类似于一个一阶段目标检测算法。在结构设计时,考虑了各种角度的文本区域,并通过不同的输出分支处理不同的情境。但是,由于 E A S T {\rm EAST} EAST没有使用 R N N {\rm RNN} RNN判断检测区域是否具有上下文信息。举个极端的例子,加入待检测图中的文本区域很宽,占据整幅图的宽度。这样,在 E A S T {\rm EAST} EAST中由于感受野大小的限制,并不能很精确地检测出整个长文本。所以,后面有对 E A S T {\rm EAST} EAST的改进工作 A d v a n c e d E A S T {\rm AdvancedEAST} AdvancedEAST。它改变输出分支,以预测文本区域的头尾来得到最后的检测结果。
参考
- Zhou X, Yao C, Wen H, et al. East: an efficient and accurate scene text detector[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017: 5551-5560.