代码地址:
1. 概述
由于分割网络的结果可以准确描述诸如扭曲文本的场景,因而基于分割的自然场景文本检测方法变得流行起来。基于分割的方法其中关键的步骤是其后处理部分,这步中将分割的结果转换为文本框或是文本区域。这篇文章的文本检测方法也是基于分割的,但是通过提出Differenttiable Binarization module(DB module)来简化分割后处理步骤(加了一个边的预测),并且可以设定自适应阈值来提升网络性能。文章的方法在现有5个数据上在检测精度与速度上均表现为state-of-art。在换用轻量级的backbone(ResNet-18)之后可以将检测帧率提升到62FPS,其与其它一些文本检测算法的性能与速率关系见图1所示。
文章方法与其它一些方法的对比:

传统意义上基于分割的文本检测算法其流程如图2中的蓝色箭头所示。在传统方法中得到分割结果之后采用一个固定的阈值得到二值化的分割图,之后采用诸如像素聚类的启发式算法得到文本区域。

而文章的检测算法流程是图2中红色箭头所示的,其中不同的地方也是这篇文章核心的一点就是在阈值选取上,通过网络去预测图片每个位置处的阈值,而不是采用一个固定的值,这样就可以很好将背景与前景分离出来。但是这样的操作会给训练带来梯度不可微的情况,对此对于二值化提出了一个叫做Differentiable Binarization来解决不可微的问题。
在解决了阈值可微的为题之后,文章将分割算法与DB module组合起来构建了一个快速且鲁棒的文本检测器,这个方法的亮点表现在:
- 1)在几个开源的数据集上对于水平、倾斜、扭曲的文本表现出了更好的检测性能;
- 2)由于不需要繁琐的后处理,直接使用DB module产生适应的阈值使得网络提速很多,并且DB module能够生成更加鲁棒的分割二值图;
- 3)DB module在轻量级的backbone(ResNet-18)也具有很好的性能;
- 4)DB module在做inference的时候可以直接移除,而不会损失性能,因而减少了这部分的时间与资源消耗;
2. 方法设计
2.1 网络结构
文章的网络结构见图3所示,输入的图像经过不同stage的采样之后获得不同大小的特征图,之后这些由这些特征图构建特征金字塔,从而构建出统一尺度(相比原图像stride=4)的特征图
F
F
F,之后这个特征图用于预测分割概率图
P
P
P与阈值图
T
T
T,之后将
P
,
T
P,T
P,T结合得到估计的二值图
B
^
\hat{B}
B^。在训练的时候
P
,
B
P,B
P,B是使用同样的表现作训练,而
T
T
T会使用单独的阈值图作训练。

2.2 二值化操作
标准二值化(Standard Binarization,SB)
对于分割特征图
P
∈
R
H
∗
W
P\in R^{H*W}
P∈RH∗W,使用下面的方式进行二值化处理:

可微的二值化(Differentiable Binarization,DB)
由于公式1中的二值方法不是可微的,因而就不能在分割网络中随着训练的过程进行优化,为了解决这个问题文章提出了一个函数来近似这个二值化过程,既是:
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。这个函数的曲线与标准二值方法曲线具有较高的近似度,而且还是可微的,如图4左边图所示,右边的两幅图是其正负标签的导数曲线。通过这样的方式可以帮助文本区域从背景区域抽离,还可以帮助文本之间摆脱粘连的情况。

DB的函数可以定义为:
f
(
x
)
=
1
1
+
e
−
k
x
,
x
=
P
i
,
j
−
T
i
,
j
f(x)=\frac{1}{1+e^{-kx}},x=P_{i,j}-T_{i,j}
f(x)=1+e−kx1,x=Pi,j−Ti,j
因而对于正负标签的损失可以描述为:

因而对应对
x
x
x求导得到:

从上式中可以看到:
- 1)梯度被 k k k进行了放大;
- 2)正负样本的优化是具有不同的尺度的,在 f ( x ) f(x) f(x)趋近与0的时候梯度值会变得很大(结合图4©),有利于产生更有利于区分的预测。
自适应阈值与膨胀卷积
在图6中展示了阈值图对于检测的影响,就算没有阈值图的监督,阈值图也可以很好区分文本的边界。

此外,为了增加网络的感受野,文章在backbone的stage3、stage4、stage5使用了deformable卷积。
2.3 标注生成
分割训练标签生成:
在训练标签的生成过程中借鉴了PSENet的方法,使用标签收缩的方式进行,这里对于收缩的offset
D
D
D使用下面的计算方式得到:
D
=
A
(
1
−
r
2
)
L
D=\frac{A(1-r^2)}{L}
D=LA(1−r2)
其中,
A
A
A是多边形区域的面积,
r
=
0.4
r=0.4
r=0.4,
L
L
L是多边形的周长。
其标注过程见下图5所示:

阈值图训练标签生成:
在上述对文本区域进行膨胀之后(
G
d
G_d
Gd)与原来的文本区域收缩之后的结果(
G
s
G_s
Gs)做差可以得到一个gap区域,那么阈值图按照文章的描述可以定义为:gap区域与原文本多边形区域mask(表示为
G
G
G)的最近距离。
2.4 网络的损失函数
网络的损失函数定义为:
L
=
L
s
+
α
∗
L
b
+
β
∗
L
t
L=L_s+\alpha * L_b+\beta * L_t
L=Ls+α∗Lb+β∗Lt
上面三个损失分量分别是分割概率损失、二值图损失、阈值图损失,
α
=
1.0
,
β
=
10.0
\alpha=1.0,\beta=10.0
α=1.0,β=10.0。
其中,对于
L
s
,
L
b
L_s,L_b
Ls,Lb使用的交叉熵损失函数:
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∑yilogxi+(1−yi)log(1−xi)
并且为了样本均衡这里使用了困难样本挖掘,保持正负样本的比例为1:3。
对于阈值图的损失
L
t
L_t
Lt使用的是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∗∣
3. 实验结果
3.1 消融实验
DB与膨胀卷积的影响:

阈值监督的影响:

3.2 性能比较
CTW1500:

ICDAR 2015:

MSRA-TD500与MLT-2017:

DBNet是一种基于分割的文本检测方法,通过Differentiable Binarization模块实现自适应阈值预测,简化后处理步骤。该方法在多个数据集上达到最优的检测精度和速度,尤其在处理扭曲文本时表现出色。网络结构包含可微二值化操作和自适应阈值,训练中使用阈值图损失函数,实现在轻量级backbone上仍保持高性能。
419

被折叠的 条评论
为什么被折叠?



