场景文本检测识别— ABCNet:Real-time Scene Text Spotting with Adaptive Bezier-Curve Network

提出Bezier曲线来自适应地拟合任意形状的文本,Bezier Align来提取任意形状文本特征,精度高速度快,达到实时。
CVPR2020
论文地址:https://arxiv.org/pdf/2002.10200.pdf
代码地址:https://github.com/aim-uofa/AdelaiDet

1. 总述

现有端到端文本检测方法要么基于字符(回归)要么基于分割,都需要复杂的网络结构,不适合实时应用,本文提出自适应Bezier曲线网络来进行文本的检测识别,在保证精度的同时达到了实时效果(比现有方法快10倍以上)。

本文的贡献有三个方面:

  • 1)首次通过参数化的Bezier曲线自适应地拟合任意形状的文本。
  • 2)设计了一个新的BezierAlign层来精确提取任意形状文本实例的卷积特征,与以往的方法相比,显著提高了精度。
  • 3)与标准的边界盒检测方法相比,Bezier曲线检测引入了可忽略的计算开销,从而使本文的方法在效率和精度上都具有优势。

与基于分割的对比:
在这里插入图片描述
基于分割的结果很容易受到邻近文本的影响。非参数的非结构化分割结果使其很难为后续的识别分支进行特征对齐。基于分割的结果通常需要复杂的后处理,影响了效率。利用参数化的Bezier曲线表示的ABCNet可以产生结构化的检测区域,从而可以使用BezierAlign采样过程自然地连接识别分支。

2. 总体结构

在这里插入图片描述
基础部分使用ResNet-50+FPN来提取基础特征。使用3阶Bezier曲线和BezierAlign来提取曲线序列特征(紫色点表示3阶Bezier曲线的控制点)。识别部分由6个卷积层,1个双向LSTM和1个全连接层组成,使用CTC Loss进行文本字符串(GT)对齐。整个检测部分类似于FOTS,是单阶段、Anchor-free的。

3. Bezier Curve

基于回归的方法比基于分割的方法更直接地解决任意形状文本检测,但是它需要复杂的参数化,鲁棒性较差。本文也采用回归方法,利用Bezier曲线来简化任意形状文本检测。

Bezier曲线表示一个参数曲线c(t),它以Bernstein多项式(伯恩斯坦多项式)为基础。Bezier曲线定义如等式所示:
在这里插入图片描述
在这里插入图片描述
其中n为Bezier曲线的阶数,(n, i)是二项式系数(计算为 C n i C_n ^i Cni)。由于b的指数是从0开始,因此支点个数=n+1。参数t从0到1的演变形成了整个曲线,对于曲线上的任意一点T(t),该点的坐标可以看作是所有支点坐标的加权平均,而权重就是上面方程里的B,它也叫伯恩斯坦多项式(Bernstein polynomials),它既和支点有关,也是t的函数。

下图中以3阶贝塞尔曲线为例,当t=0时,简单计算可知B0=1而B1=B2=B3=0,因此支点b0的权重为1而其他所有支点权重为0,对应于曲线在t=0时起始于b0;当t=1时,B0=B1=B2=0而B3=1,因此支点b3的权重为1而其他所有支点权重为0,对应于曲线在t=1时终止于b3。当t从0到1连续演变时,曲线上对应的点将逐渐由起始点b0向b1和b2靠近,最终终止在b3。
在这里插入图片描述以上是关于B和t定性的理解,而关于B和t定量的理解,可以参考Bezier曲线理解
下图取自这篇文章,依然以3阶贝塞尔曲线为例。对于曲线上的某一点T(t),其位置可以通过以下方式得到:

  • 首先找出每相邻的一对支点连线上的分点,使得分点左右连线部分的比值为t/(1-t),如此得到了S1, S2和S3;
  • 继续找出S1,S2,S3中每相邻两个点上的分点,使得分点左右连线部分的比值为t/(1-t),如此得到了T1,T2;
  • 继续找T1,T2上的分点,使得分点左右连线部分的比值为t/(1-t),如此得到了T。

这是对3阶贝塞尔曲线的操作,对于更高阶的贝塞尔曲线,重复迭代这一过程直到得到最后的一个点即可。
在这里插入图片描述
而这一迭代过程最终得到的各点权重就是前述的伯恩斯坦多项式B:
在这里插入图片描述

作者通过实验证明3阶Bezier曲线就足以拟合现实中不同类型的任意形状的场景文本。正常的边框回归的边框是4个点,本文的在两个长边上各加两个点,一共8个点,3阶Bezier曲线将文本检测简化为一个8个点的边框回归。具体来说首先根据Bezier曲线将原始GT标注转为Bezier曲线格式的GT标注再进行回归。检测head需要16个通道的卷积层来学习8个点的 Δ x \Delta_{x} Δx Δ y \Delta_{y} Δy,这几乎是cost-free的,不影响检测速度。
在这里插入图片描述
其中 b i x b_{ix} bix b i y b_{iy} biy是Bezier曲线控制点, x m i n x_{min} xmin y m i n y_{min} ymin分别表示4个顶点的最小x和y值。预测相对距离的优点是它与Bezier曲线控制点是否超出图像边界无关。
在这里插入图片描述

将原始GT标注转为Bezier曲线格式的GT标注:

使用最小二乘法来获取3阶Bezier曲线的控制点:
在这里插入图片描述
这里m表示曲线边界的注释点数。对于Total-Text和CTW1500,m分别为5和7。t通过使用累积长度与折线周长的比率计算,即每个p点对应的t就是多边形上路径长度的占比,例如p1对应的t1=从p0到p1的长度/整个边即从p0到p6的长度。

根据Bezier曲线定义方程和本方程(最小二乘法)将原多段线注释转换为参数化的Bezier曲线。

直接将第一个和最后一个注释点分别用作第一个(b0)和最后一个(b4)控制点。下图右边的为Bezier曲线拟合的结果,b1和b2点拟合上边那条曲线,下面那两个点拟合下边的曲线。可以看到,Bezier曲线拟合的结果(绿色)看着比原GT效果更好。而且使用生成的Bezier曲线和BezierAlign来扭曲结果并不会发生剧烈的形变。
在这里插入图片描述

4. BezierAlign

从RoI扩展而来,但是采样网格不是矩形。任意形状网格的每一列都与文本的Bezier曲线边界正交。采样点的宽度和高度分别为等距间隔,并对坐标进行双线性插值。

具体的操作过程有以下几个步骤:

  • (1)对于识别窗口中的任一格点(右侧红点),先计算出其到窗口左侧的距离与整个窗口宽度的比例t;
  • (2)对于原目标框,找出其上下边Bezier曲线参数方程对应参数值为t的位置,即tp与bp(左侧红色空心点);
  • (3)计算窗口中格点到窗口底部的距离与整个窗口高度的比例;
  • (4)按照这个比例对从bp到tp的线段进行分割,得到最终对应点(左侧红点)。得到对应点后,我们即可通过二维插值求解该处的特征值。
    在这里插入图片描述
    下面是一个对比:
    在这里插入图片描述
    可以看到Bezier Align方法能准确的贴合文本区域而不引入大量的无效背景信息。

5. 实验

(1)Scene text spotting results on Total-Text
在这里插入图片描述
(2)End-to-end scene text spotting results on CTW1500
在这里插入图片描述
(3)Ablation study for BezierAlign
在这里插入图片描述
(4)Ablation study of the number of sampling points of BezierAlign
在这里插入图片描述

参考:
[1] https://zhuanlan.zhihu.com/p/146276834
[2] https://zhuanlan.zhihu.com/p/116096473

猜你喜欢

转载自blog.csdn.net/haha0825/article/details/111310587