Abstract
《Real-time Scene Text Detection with Differentiable Binarization》提出了一种基于分割(实例分割)的场景文本检测算法,能够处理曲线文本。
基于分割的检测的关键在于二值化的后处理,它将分割方法生成的概率图转换为文本的边框。本文提出了一个名为可微二值化(Differentiable Binarization,DB)的模块,可以在分割网络中执行二值化过程。结合DB模块进行优化,分割网络可以自适应调整二值化阈值,简化了后处理过程,并提高了文本检测性能。DB算法的性能改善在轻量级骨干的情况下尤为明显。
Introduction
场景文本检测是场景文本读取的关键步骤,目标是定位每个文本实例的边框或区域。以往的场景文本检测以方框检测为主(包括斜框),如EAST,而基于分割的检测算法则对各种文本形状的适应性更强。但是分割的算法大多需要复杂的后处理算法,将像素级的预测结果分组为各个文本实例。以两种最新的场景文本检测方法为例,PSENet(Wang et al. 2019a)提出了逐步尺度扩展的后处理方法来提高检测精度;(Tian et al. 2019)则使用像素嵌入的方法,基于分割结果对像素进行聚类,需要计算像素之间的特征距离。
现有的文本检测方法多采用如下图所示的后处理方法(蓝色箭头),首先对分割网络生成的概率图(像素属于文本区域的概率)设置固定阈值,将原图转换为二值图像;然后使用像素聚类等启发式技术将像素分组到文本实例中。
DB算法(红色箭头)是将二值化操作插入分割网络中进行联合优化,通过这种方法,自适应地预测图像中每个位置的阈值,可以将像素与前景和背景完全区分开。
但是,标准的二值化函数是不可微的,无法插入分割网络。本文提出了一种近似二值化函数(可微二值化,DB),将其与分割网络联合训练时是完全可微的。
本文的主要贡献是提出了可微分的DB模块,使得在CNN中进行端到端的二值化过程是可训练的。结合简单的语义分割网络和DB模块,提出了一种场景文本检测器。与之前最先进的基于分割的方法相比有几个突出的优势:
(1)在场景文本检测(水平、倾斜、弯曲)中取得了更好的表现; (2)简化了后处理步骤,算法执行速度显著加快(实时性更高); (3)在轻量级骨干网络上提升效果更明显,也就是说,更适合用于内存小的移动设备; (4)DB模块可以在推断阶段去掉也不会影响性能,所以测试阶段不需要额外的内存/时间成本,训练/测试速度可以更快。
Related Work
目前场景文本检测方法大致可分两类:基于回归的,和基于分割的。
基于回归的方法
基于回归的方法就是直接回归文本实例边界框的方法,不过其也有直接回归边界和像素级回归。基于回归的方法通常采用简单的后处理算法(比如NMS),但是其中大多数都仅限于表示不规则形状(如曲线形状)的精确边界盒。
基于分割的方法
基于分割的方法需要先进行像素级的预测,再结合后处理算法来得到边界框。但是后处理算法比较复杂,一般会导致运算速度降低,但是本文是通过将二值化过程加入到训练阶段来提高分割效果,不会降低推理速度。
Methodology
本文提出的方法的体系结构如图所示。首先,将输入图像输入到特征金字塔骨干汇总,其次,对金字塔特征进行相同尺度的上采样并级联得到特征
F
F
F。
然后,利用特征
F
F
F预测概率图
P
P
P和阈值图
T
T
T,再利用
P
P
P和
F
F
F计算近似二进制映射图
B
^
\hat{B}
B^。在训练阶段,将监督应用于概率图、阈值图和近似二值图,其中概率图和近似二值图共享同一个监督。在推理阶段,通过框式公式模块从近似二值映射或概率映射中快速得到文本包围盒。
二值化
标准二值化
分割网络生成一个概率图
P
∈
R
H
×
W
P\in {R^{H\times W}}
P∈RH×W,然后需要将其转换为二值图
P
∈
R
H
×
W
P\in {R^{H\times W}}
P∈RH×W,其中像素值为1的认为是文本区域。通常,该二值化过程可以被描述为:
B
(
i
,
j
)
=
{
1
i
f
P
i
,
j
≥
t
0
o
t
h
e
r
w
i
s
e
B_{(i,j)}=\left\{\begin{matrix} 1 & if P_{i,j}\geq t\\ 0 & otherwise \end{matrix}\right.
B(i,j)?={10?ifPi,j?≥totherwise?
其中
t
t
t是预定义的阈值,
(
i
,
j
)
(i,j)
(i,j)表示图上的坐标点。
可微二值化
标准二值化是不可微的,因此,在训练阶段不能随分割网络一起进行优化。为了解决这个问题,本文提出了用一个近似的阶跃函数进行二值化:
B
^
i
,
j
=
1
1
+
e
?
k
(
P
i
,
j
?
T
i
,
j
)
{\hat{B}_{i,j}}=\frac{1}{1+e^{-k(P_{i,j}-T_{i,j})}}
B^i,j?=1+e?k(Pi,j??Ti,j?)1?
其中
B
^
\hat{B}
B^是近似二值图,
T
T
T是通过网络学到的自适应阈值图,
k
k
k表示放大因子,根据经验
k
设
为
50
k设为50
k设为50。这个近似二值函数与标准二值函数的表现相似,但是他是可微的,因此可以在训练阶段与分割网络一同优化。
采用自适应阈值的可微二值化方法不仅可以从背景中区分文本区域,而且可以分离出连接紧密的文本实例。
DB方法能够提高性能的原因可以用梯度的反向传播来解释,以二元交叉熵损失为例。
根据上文提到的DB函数
f
(
x
)
=
1
1
+
e
?
k
x
f(x)=\frac{1}{1+e^{-kx}}
f(x)=1+e?kx1?,其中
x
=
P
i
,
j
?
T
i
,
j
x=P_{i,j}-T_{i,j}
x=Pi,j??Ti,j?,其对正负标签的损失
l
+
l_{+}
l+?和
l
?
l_{-}
l??为:
l
+
=
?
l
o
g
1
1
+
e
?
k
x
l_{+}=-log\frac{1}{1+e^{-kx}}
l+?=?log1+e?kx1?
l
+
=
?
l
o
g
(
1
?
1
1
+
e
?
k
x
)
l_{+}=-log(1-\frac{1}{1+e^{-kx}})
l+?=?log(1?1+e?kx1?)
用链式法则计算损失的导数:
?
l
+
?
x
=
?
k
f
(
x
)
e
?
k
x
\frac{\partial l_{+}}{\partial x}=-kf\left ( x \right )e^{-kx}
?x?l+??=?kf(x)e?kx
?
l
?
?
x
=
k
f
(
x
)
\frac{\partial l_{-}}{\partial x}=kf(x)
?x?l???=kf(x)
可以从图4中看出: (1)梯度通过放大系数
k
k
k得到了增强; (2)梯度放大对于多数错误预测的区域(
x
<
0
x<0
x<0 for
L
+
L_{+}
L+?;
x
>
0
x>0
x>0 for
L
?
L_{-}
L??)非常显著,便于优化预测。
另外,因为
x
=
P
i
,
j
?
T
i
,
j
x=P_{i,j}-T_{i,j}
x=Pi,j??Ti,j?,
P
P
P的梯度受到
T
T
T的影响,并在前景和背景之间进行缩放。
自适应阈值
图6显示了有/无监督的阈值图,即使没有对阈值图的监督,阈值图也会突出文本边界区域,这表明,类边界阈值图对最终结果是有利的。为了便于使用,本文使用了(Xue,Lu, and Zhan 2018)得出的文本边界图来分割文本实例,而我们的阈值图用作二值化的阈值。
可变形卷积
可变形卷积(Die et al. 2017; Zhu et al. 2019)可以为模型提供一个灵活的接受域,这尤其有利于极端宽高比的文本实例。紧接其后,调制可变形卷积在ResNet-18和ResNet-50的所有
3
×
3
3\times 3
3×3的卷积层上得到了应用。
标签生成
概率图的标签生成受到PSENet(Wang et al. 2019a)启发,给定一个文本图像,其文本区域的每个多边形都由一组线段描述:
G
=
{
S
k
}
k
=
1
n
G=\left \{ S_k \right \}^n_{k=1}
G={Sk?}k=1n?
n
n
n是顶点个数,顶点数在不同的数据集中可能不同。然后使用Vatti裁剪算法(Vati 1992)收缩多边形
G
G
G生成
G
s
G_s
Gs?。收缩的偏移量
D
D
D由原多边形的周长
L
L
L和面积
A
A
A计算得出:
D
=
A
(
1
?
r
2
)
L
D=\frac{A\left ( 1-r^2 \right )}{L}
D=LA(1?r2)? 其中
r
r
r是收缩率,根据经验设为0.4。
相似地,我们可以为阈值映射生成标签,首先,使用相同的偏移量
D
D
D将文本多边形
G
G
G扩张至
G
d
G_d
Gd?,这样
G
s
G_s
Gs?和
G
d
G_d
Gd?之间的间隔就是文本区域的边界,通过计算
G
G
G中最接近的部分的距离来生成阈值映射的标签。
优化
损失函数
L
L
L可以被表述为概率图的损失
L
s
L_s
Ls?,二值图的损失
L
b
L_b
Lb?,以及阈值图的损失
L
t
L_t
Lt?这三者的加权和:
L
=
L
s
+
α
×
L
b
+
β
×
L
t
L=L_s+\alpha \times L_b + \beta \times L_t
L=Ls?+α×Lb?+β×Lt? 根据损失的数值,
α
=
1.0
\alpha = 1.0
α=1.0,
β
=
10
\beta=10
β=10。
L
s
L_s
Ls?和
L
b
L_b
Lb?都使用二元交叉熵损失(binary cross-entropy loss,BCE)。为了克服正负样本数不平衡的问题,BCE损失使用了难例挖掘(hard negative mining)。
hard negative mining,难例挖掘,hard negative即困难负样本,指那些容易被网络预测为正样本的proposal,即假阳性(false positive),如roi里有二分之一个目标时,虽然它仍是负样本,却容易被判断为正样本,这块roi即为hard negative,训练hard negative对提升网络的分类性能具有极大帮助,因为它相当于一个错题集。
L
s
=
L
b
=
∑
i
∈
S
l
y
i
l
o
g
x
i
+
(
1
?
y
i
)
l
o
g
(
1
?
x
i
)
L_s=L_b=\sum_{i\in S_l}y_ilogx_i+(1-y_i)log(1-x_i)
Ls?=Lb?=i∈Sl?∑?yi?logxi?+(1?yi?)log(1?xi?)
S
l
S_l
Sl?是正负比为1:3的采样集合。
L
t
L_t
Lt?则通过计算扩展文本区域
G
d
G_d
Gd?中的预测和标签的
L
1
L1
L1距离和得到,即:
L
t
=
∑
i
∈
R
d
∣
y
i
?
?
x
i
?
∣
L_t=\sum_{i\in R_d}|y_i^*-x_i^*|
Lt?=i∈Rd?∑?∣yi???xi??∣ 其中,
R
d
R_d
Rd?是膨胀多边形
G
d
G_d
Gd?内像素的索引集;
y
?
y^*
y?是阈值图的标签。
在推理阶段,概率图或者近似二值图都可以用来生成文本边界框,产生的结果几乎相同。为了提高效率,只用概率图,这样阈值图就不需要了。包围盒的形成过程包含三个步骤: (1)首先使用固定阈值(0.2)对概率图/近似二值图进行二值化,得到二值图; (2)从二值图中获取连接区域(收缩文本区域); (3)使用偏移量
D
′
D'
D′对收缩文本区域进行扩张,
D
′
=
A
′
×
r
′
L
′
D'= \frac {A'\times r'} {L'}
D′=L′A′×r′?。
其中,
A
′
A'
A′是收缩区域的面积,
L
′
L'
L′是收缩区域的周长,
r
′
r'
r′根据经验设为1.5。
Experiments
数据集
实施细节
对于所有模型,首先使用Synth Text数据集进行100k的迭代训练。然后,在相应的真实数据集上进行1200epochs的微调。训练batch size设为16,使用多元学习率策略。
数据增强方面,使用了正负10度的随机旋转、随机裁剪、随机翻转。处理后的图片都被统一变换为
640
×
640
640\times 640
640×640。
推理阶段,保持测试图像的宽高比,并通过为每个数据集设置合适的高度来调整输入图像的大小。推理时间代价包括模型前向时间代价和后处理时间代价,后处理的时间成本约为推理时间的30%。
消融实验(Ablation Study)
Ablation Study,消融实验,比如,你同时提出了A、B两个模块,提高了训练效果,但是,你无法证明,A、B两个模块都产生了效果。消融实验的核心是控制变量,只增加A模块;只增加B模块;增加AB模块,分别看实验效果,从而证明AB模块都产生了作用。
本文在MSRA-TD500数据集和CTW 1500数据集上进行消融实验,来证明DB、可变形卷积、以及不同骨干网络的有效性。实验结果如下表所示。
可微二值化(DB)
从上表可以看出,DB方法显著提高了训练效果,而且DB方法可以在推理阶段被舍去,所以推理速度与没有DB模块是一样的。
可变形卷积(DConv)
DConv带来了少量提升以及一些额外的时间成本。
阈值图监督
尽管有无监督的阈值图外观上很相似,但是监督还是可以带来性能增益(较小)。
骨干网络(Backbone)
ResNet-50网络的表现比ResNet-18略好(2%左右),但是时间成本大约是两倍。
Conclusion
本文提出了一个新的框架来检验任意形状的场景文本,其中包括在分割网络中提出的可微二值化(DB)。实验证明,我们的方法(ResNet-50骨干)在五个标准的场景文本基准测试中,在速度和准确性方面始终优于最先进的方法。特别是,即使使用轻量级主干(ResNet-18),我们的方法也可以在所有测试数据集上取得具有竞争力的性能,并具有实时推理速度。将来,我们有兴趣扩展我们的方法来进行端到端文本识别。
|