DBNet:Real-time Scene Text Detection with Differentiable Binarization —— 论文阅读笔记

Paper : https://arxiv.org/abs/1911.08947v2
Code : https://github.com/MhLiao/DB
https://github.com/WenmuZhou/DBNet.pytorch

速度很快!

传统的基于分割的文本检测的后处理方法比较复杂,提出的差分二值化不仅可以简化后处理还可以增强文本检测的性能。

  1. 在5个基准集上实现了比较好的表现
  2. 比先前的方法更快,DB可以提供一个二值化图,简化了后处理
  3. 使用轻量级的主干也可以表现好,在ResNet-18主干网络上增强了检测性能
  4. 在推理阶段,可以移除DB,不影响性能

在这里插入图片描述

Standard binarization

给定一个分割网络产生的概率图 P ∈ R H × W P \in R^{H × W} PRH×W H , W H,W H,W 表示图的高和宽,把它转换成二值图 P ∈ R H × W P \in R^{H×W} PRH×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+ek(Pi,jTi,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+ekx1 作为 DB 函数,其中 x = P i , j − T i , j x = P_{i,j} - T_{i,j} x=Pi,jTi,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+ekx1l=log(11+ekx1)
可以计算出损失的微分:
∂ 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} xl+=kf(x)ekxxl=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,jTi,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(1r2)
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=iSyilogxi+(1yi)log(1xi)
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=iRdyixi
其中 R d R_d Rd 是膨胀多边形 G d G_d Gd 内的所有像素的索引, y ∗ y^* y 是阈值图的label

推理阶段,可以使用概率图或者近似二进制图生成文本边框,产生大致一样的结果。为了更高效,使用概率图,因为阈值分支可以被移除。框信息处理包括3步:

  1. 首先使用固定的阈值(0.2)把概率图或者近似二进制图二值化得到二值图;

  2. 从二值图中获得连续的区域(缩小的文本区域);

  3. 使用维特比算法计算的偏移 D ′ D' D 将缩小的区域膨胀
    D ′ = A ′ × r ′ L ′ D' = \frac{A' × r'}{L'} D=LA×r
    A ′ A' A 是缩小多边形的面积, L ′ L' L 是缩小多边形的周长, r ′ r' r 设置为 1.5

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_38007695/article/details/112236790