文本检测算法----DB、DBNet
Real-time Scene Text Detection with Differentiable Binarization
1. 摘要
1.1 存在的问题
最近,对于曲形文本的检测任务,基于分割的算法比基于回归的算法表现更好,但之前基于分割的算法,都需要进行手动设计二值化的后处理算法,将分割生成的概率图转换为文本的包围框。
1.2 创新点
提出了 Differentiable Binarization (DB),它可以在分割网络中执行二值化过程,可以自适应地设置二值化阈值,不仅简化了后处理,而且提高了文本检测的性能。
1.3 取得的成绩
在5个基准数据集上取得了最佳准确性和速度,代码地址:DB
2. 算法
整体的网络结构如图3所示,首先输入图片经过特征金字塔backbone,接着,金字塔特征上采样到输出与原图相同尺寸的特征图 F F F,然后,特征图 F F F用来同时预测概率图 P P P和阈值图 T T T,由 F F F和 T T T计算后近似得到二值图 B ^ \hat B B^。
在训练阶段,对概率图、阈值图和近似二值图进行监督,其中概率图和近似二值图共用一个监督。在推理过程中,通过一个box公式化模块,可以很容易地从近似二值图或概率图中得到文本包围框。
2.1 二值化
2.1.1 标准二值化
通常的分割网络,输出特征图
P
⊂
R
H
×
W
P \subset R^{H×W}
P⊂RH×W,H和W是特征图的高和宽,像素值为1代表是文本区域,像素值为其他则表示不是文本区域,通常这类二值化处理过程可以描述为:
t
t
t代表阈值,
i
,
j
i,j
i,j代表坐标。
2.1.2 可微二值化 Differentiable binarization(DB)
公式1是不可微的,随意没法直接用于训练,本文提出可微的二值化函数,如下:
B
^
\hat B
B^就是近似二值图,
T
T
T代表从网络中学习得到的自适应阈值,
k
k
k是放大因子,通常设置
k
k
k为50,这个近似的二值化函数的表现类似于标准的二值化函数,如图4所示,但是因为可微,所以可以直接用于网络训练,基于自适应阈值的可微二值化不仅可以帮助区分文本区域和背景,而且可以将连接紧密的文本实例分离出来。
DB提高了性能表现可以从梯度的反向传播中证实,假如使用二值交叉熵损失函数,定义
f
(
x
)
=
1
1
+
e
−
k
x
f(x)={1 \over {1+e^-kx}}
f(x)=1+e−kx1 作为DB函数,
x
=
P
i
,
j
−
T
i
,
j
x={P_i,j}-{T_i,j}
x=Pi,j−Ti,j,
l
+
l_+
l+表示正样本的
l
o
s
s
loss
loss,
l
−
l_-
l−表示负样本的
l
o
s
s
loss
loss:
求导得到:
l
+
l_+
l+和
l
−
l_-
l−在图4中也有表示,从以上可以得到
- 梯度由放大因子k增大
- 梯度放大对大多数错误预测区域都有显著影响(x < 0 for L+; x > 0 for 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影响
2.2 自适应阈值
阈值map使用流程如图2所示,使用阈值map和不适用阈值map的效果对比如图6所示,从图6©中可以看到,即使没用带监督的阈值map,阈值map也会突出显示文本边界区域,这说明边界型阈值map对最终结果是有利的。所以,本文在阈值map上选择监督训练,已达到更好的表现
2.3 可变形卷积Deformable convolution
可变形卷积可以提供模型一个灵活的感受野,这对于不同纵横比的文本很有利,本文应用可变形卷积,使用3×3卷积核在ResNet-18或者ResNet-50的conv3,conv4,conv5层。
2.4 标签的生成
概率图的标签生成方式类似于PSENet(可参考了解PSENet)。
给定一张图片,文本区域标注的多边形可以描述为:
n
n
n是每个文本框的标注点总数,在不同数据中可能不同(ICDAR2015中是4,CTW1500中是16),然后使用Vatti裁剪算法1收缩
G
G
G到
G
s
G_s
Gs,从原始多边形的周长L和面积A计算收缩的偏移量D计算方式为:
r
r
r代表收缩比例,一般设置为0.4.
阈值map的标签生成方式与其类似,首先使用相同的偏移量 D D D,对文本多边形 G G G进行膨胀,然后将 G s G_s Gs和 G d G_d Gd之间的间隙作为文本区域的边界,通过计算到 G G G中最近的片段的距离来生成阈值map的标签(意思就是,阈值map附近一定距离的标签是1,其他的都为0)
2.5 损失函数
损失函数为概率map的loss、二值map的loss和阈值map的loss之和,
L
s
L_s
Ls是概率map的loss,
L
b
L_b
Lb是二值map的loss,,
α
\alpha
α和
β
\beta
β分别设置为1.0和10,对于
L
s
L_s
Ls和
L
b
L_b
Lb使用二值交叉熵loss(BCE),为了解决正负样本不均衡问题,使用hard negative mining。
S
l
S_l
Sl设计样本集,其中正阳样本和负样本比例是1:3.
L
t
L_t
Lt计算方式为扩展文本多边形
G
d
G_d
Gd内预测结果和标签之间的
L
1
L1
L1距离之和:
R
d
R_d
Rd是在膨胀
G
d
G_d
Gd内像素的索引,
y
∗
y^*
y∗是阈值map的标签。
在模型预测的时候,可以使用概率map或近似二进制map来生成文本边界框,他俩产生的结果几乎相同。为了提高效率,使用概率map而去除阈值map分支。
box处理分三个步骤:
- 概率map或者近似二值map先使用一个固定的阈值(0.2)进行二值化处理,得到二值化图
- 从二值图中得到连通区域(即收缩文本区域);
- 同样用Vatti裁剪算法1,使用偏移量
D
‘
D^`
D‘去膨胀连通区域,
D
‘
D^`
D‘计算方式为:
A ‘ A^` A‘是收缩区域面积, L ‘ L^` L‘是收缩区域周长, r ‘ r^` r‘设置为1.5。
3. 实验
3.1 数据集
- SynthText:从8k个背景图中生成了800k张图片,这些数据用来预训练模型
- MLT-2017:多语言数据集,包含9种语言,有7200张训练集,1800张验证集,和9000张测试集,本文使用训练集和验证集来微调网络
- ICDAR 2015
- MSRA-TD500
- CTW1500
- Total-Text
3.2 训练、测试细节
3.2.1 训练细节
所有的模型,现在SynthText进行预训练100k次迭代。然后微调真是数据样本1200个epochs,batch size设置为16,学习率设置为 ( 1 − i t e r m a x _ i t e r ) p o w e r (1 - {iter \over max\_iter})^{power} (1−max_iteriter)power,初始学习率为0.007, p o w e r power power为0.9,权重书剑0.0001,momentum为0.9。
数据增强:
- 随机角度旋转(-10°-10°)
- 随机裁剪
- 随机翻转
所有的图片都resize到640×640
3.2.2 测试细节
通过为每个数据集设置适当的高度来输入图像。推理速度在批大小为1的情况下进行测试,在单个线程中使用单个1080ti GPU。推理时间成本包括模型前向时间成本和后处理时间成本。后处理时间成本约为推理时间的30%。
3.3 测试结果
4. 结论
本文提出了一个新的框架来检测任意形状的场景文本,包括在分割网络中提出的可微二值化过程 (DB),实验证明,该方法(ResNet-50主干网)在五个标准场景文本基准测试中,在速度和准确性方面一直优于目前最先进的方法。特别的,即使使用轻量级主干网(ResNet-18),该方法也可以在所有测试数据集上以实时推理速度获得具有竞争力的性能。