Paper : https://arxiv.org/abs/1911.08947v2
Code : https://github.com/MhLiao/DB
https://github.com/WenmuZhou/DBNet.pytorch
速度很快!
传统的基于分割的文本检测的后处理方法比较复杂,提出的差分二值化不仅可以简化后处理还可以增强文本检测的性能。
- 在5个基准集上实现了比较好的表现
- 比先前的方法更快,DB可以提供一个二值化图,简化了后处理
- 使用轻量级的主干也可以表现好,在ResNet-18主干网络上增强了检测性能
- 在推理阶段,可以移除DB,不影响性能
Standard binarization
给定一个分割网络产生的概率图
P
∈
R
H
×
W
P \in R^{H × W}
P∈RH×W,
H
,
W
H,W
H,W 表示图的高和宽,把它转换成二值图
P
∈
R
H
×
W
P \in R^{H×W}
P∈RH×W,像素值为1代表是有效的文本区域。通常,是这么处理的:
B
i
,
j
=
{
1
if
P
i
,
j
>= t
,
0
otherwise
.
B_{i,j} = \begin{cases} 1 & \text{if $P_{i,j}$ >= t}, \\ 0 & \text{otherwise}. \end{cases}
Bi,j={10if Pi,j >= t,otherwise.
其中
t
t
t 是定义好的阈值,
(
i
,
j
)
(i,j)
(i,j) 表示图中对应的点。
Differentiable binarization
标准的二值化是不能微分的,因此,在训练过程中不能在分割网络中进行优化,我们提出使用近似阶跃函数执行二值化:
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 是放大因子,凭经验设置为 50 。近似二值化函数和标准的二值化函数是相似的,但是可微,所以在训练时可以优化。有自适应阈值的可微二值化不仅可以帮助区分文本区域,也可以把相邻比较近的文本实例分开。
DB 提升性能可以通过梯度的反向传播解释。以二进制交叉熵作为例子。定义
f
(
x
)
=
1
1
+
e
−
k
x
f(x) = \frac{1}{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
−
l_-
l− 为:
l
+
=
−
log
1
1
+
e
−
k
x
l
−
=
−
log
(
1
−
1
1
+
e
−
k
x
)
\begin{aligned} & l_+ = - \log \frac{1}{1+e^{-kx}} \\ & l_- = - \log (1-\frac{1}{1+e^{-kx}} ) \end{aligned}
l+=−log1+e−kx1l−=−log(1−1+e−kx1)
可以计算出损失的微分:
∂
l
+
∂
x
=
−
k
f
(
x
)
e
−
k
x
∂
l
−
∂
x
=
k
f
(
x
)
\begin{aligned} & \frac{\partial l_+}{\partial x} = -k f(x) e^{-kx} \\ & \frac{\partial l_-}{\partial x} = k f(x) \end{aligned}
∂x∂l+=−kf(x)e−kx∂x∂l−=kf(x)
l
+
l_+
l+ 和
l
−
l_-
l− 的导数如下图。从微分中我们可以看出:(1)梯度通过放大因子 k 增大; (2)对于大多数错误预测的区域(对于
l
+
l_+
l+,
x
<
0
x <0
x<0;对于
l
−
l_-
l−,
x
>
0
x>0
x>0),梯度的放大非常重要,从而有助于优化并有助于产生更好的预测。 此外,当
x
=
P
i
,
j
−
T
i
,
j
x = P_{i,j}-T_{i,j}
x=Pi,j−Ti,j 时,P 的梯度通过 T 在前景和背景之间影响并重新缩放。
Adaptive threshold
从外观上看,阈值图 (threshold map) 与的文本边框图相似。 但是,阈值图的动机和用法与文本边框图不同。 在下图中显示了带有/不带有监督的阈值图。即使没有监督阈值图,阈值图也会突出显示文本边框区域。 这表明类似边界的阈值图有利于最终结果。 因此,我们在阈值图上应用了类似边界的监督,以提供更好的指导。文中的阈值图用作二值化的阈值。
Deformable convolution
可变形卷积可以为模型提供灵活的感受野,这对极端长宽比的文本实例特别有利。 在 ResNet-18 或 ResNet-50 主干中的 conv3,conv4和conv5阶段的所有3×3卷积层中应用了可调节的可变形卷积。
Label generation
概率图 probability map: 使用维特比剪切算法把多边形缩小来生成,缩小的偏移
D
D
D 是使用原始多边形的周长
L
L
L 和 面积
A
A
A 来计算算的:
D
=
A
(
1
−
r
2
)
L
D = \frac{A(1-r^2)}{L}
D=LA(1−r2)
r
r
r 是缩小比例,根据经验设置为 0.4
阈值图 threshold map: 同样的流程生成扩张多边形,相同的偏移 D D D,把概率图和阈值图之间的间隔作为文本区域的边,阈值图的 label 可以通过计算与原始多边形最近的部分的距离
Optimization
损失函数
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 × L_b + \beta × L_t
L=Ls+α×Lb+β×Lt
其中
α
,
β
\alpha, \beta
α,β 分别设置为 1.0 和 10
L
s
L_s
Ls 和
L
b
L_b
Lb 使用二进制交叉熵损失(BCE),为了克服正负样本数量的不平衡, BCE 通过采样硬负样本使用了 hard negative mining
L
s
=
L
b
=
∑
i
∈
S
y
i
log
x
i
+
(
1
−
y
i
)
log
(
1
−
x
i
)
L_s = L_b = \sum_{i \in S}y_i \log x_i + (1- y _i) \log(1 - x_i)
Ls=Lb=i∈S∑yilogxi+(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∗ 是阈值图的label
推理阶段,可以使用概率图或者近似二进制图生成文本边框,产生大致一样的结果。为了更高效,使用概率图,因为阈值分支可以被移除。框信息处理包括3步:
-
首先使用固定的阈值(0.2)把概率图或者近似二进制图二值化得到二值图;
-
从二值图中获得连续的区域(缩小的文本区域);
-
使用维特比算法计算的偏移 D ′ D' D′ 将缩小的区域膨胀
D ′ = A ′ × r ′ L ′ D' = \frac{A' × r'}{L'} D′=L′A′×r′
A ′ A' A′ 是缩小多边形的面积, L ′ L' L′ 是缩小多边形的周长, r ′ r' r′ 设置为 1.5