ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network 自适应 Bezier 曲线网络实时场景文本识别

Paper : https://arxiv.org/abs/2002.10200v2
Code : https://github.com/aim-uofa/AdelaiDet
Code : https://github.com/Yuliang-Liu/bezier_curve_text_spotting
作者交流报告会:https://www.bilibili.com/video/BV1W54y1D7ap?p=8

基于 FPN 的 Anchor-Free 的文本检测模块,连接检测和识别的采样模块,轻量级的识别模块。

使用参数化的 Bezier 曲线 自适应的拟合任意形状的文本

  1. 为了在图像中准确定位定向的和弯曲的场景文本,首次使用 Bezier 曲线引入了一种新的简洁的弯曲场景文本的参数化表示形式。 与标准边界框表示相比,它引入的计算开销可忽略不计。

  2. 提出了一种采样方法,也称为 BezierAlign,用于精确的特征对齐,因此识别分支可以自然地连接到整个结构。 通过共享主干特征,可以将识别分支设计为轻型结构。

  3. 方法的简单性使其可以实时执行推理。 ABCNet 在两个具有挑战性的数据集 Total-Text 和 CTW1500 上实现了最先进的性能,展示了有效性和效率上的优势

在这里插入图片描述

Bezier Curve Detection

c(t)=i=0nbiBi,n(t),0t1,(1) c(t) = \sum_{i=0}^n b_i B_{i, n}(t), 0 \leq t \leq 1, \tag{1}

nn 代表角度,bib_i 代表第 ii 个控制点,Bi,n(t)B_{i,n}(t) 代表伯恩斯坦基本多项式(Bernstein):
Bi,n(t)=(ni)ti(1t)ni,i=0,,n,(2) B_{i,n}(t) = \begin{pmatrix} n \\ i\end{pmatrix} t^i (1-t)^{n-i}, i=0,\dots, n, \tag{2}
其中 (ni)\begin{pmatrix} n \\ i\end{pmatrix} 是一个二项式系数。为了用 Bezier 曲线拟合一个文本的多边形形状,从存在的数据集和实际场景中观察了多边形形状的场景文本,发现使用三次的 Bezier 曲线可以有效的拟合不同种类的多边形形状的场景文本。

基于三次 Bezier 曲线,可以把多边形场景文本的检测简化为一个使用 8 个控制点的边框回归。有四个控制点的直文本是多边形场景文本的典型情况。为了保持一致,我们在每个长边的三分点上插入了另外两个控制点。
Δx=bixxmin,Δy=biyymin,(3) \Delta_x = b_{ix} - x_{min}, \Delta_y = b_{iy} - y_{min}, \tag{3}
xmin,yminx_{min}, y_{min} 分别代表四个顶点的最小 xx 和最小 yy 。在检测部分,使用一个有16通道的卷积层学习 Δx\Delta_xΔy\Delta_y

Bezier Ground Truth Generation

给定曲线边框标注点 {pi}i=1n\{p_i\}_{i=1}^npip_i 代表第 ii 个标注点,主要目标是获得公式(1)(1) 中三次 Bezier 曲线的最优参数。可以简单地应用标准最小二乘法:

[B0,3(t0)B3,3(t0)B0,3(t1)B3,3(t1)B0,3(tm)B3,3(tm)][bx0by0bx1by1bx2by2bx3by3]=[px0py0px1py1pxmpym](4) \begin{bmatrix} B_{0, 3}(t_0) & \dots & B_{3,3}(t_0) \\ B_{0, 3}(t_1) & \dots & B_{3,3}(t_1) \\ \vdots & \ddots & \vdots\\ B_{0, 3}(t_m) & \dots & B_{3,3}(t_m) \end{bmatrix} \begin{bmatrix} b_{x_0} & b_{y_0} \\ b_{x_1} & b_{y_1} \\ b_{x_2} & b_{y_2} \\ b_{x_3} & b_{y_3} \end{bmatrix} = \begin{bmatrix} p_{x_0} & p_{y_0} \\ p_{x_1} & p_{y_1} \\ \vdots & \vdots \\ p_{x_m} & p_{y_m} \end{bmatrix} \tag{4}

以下图为例,右边一项是标注点,中间一项是要求的贝塞尔曲线的控制点。为了求解控制点,需要算出系数 t ,t 通过折线段的累计长度与七个点的折线段的周长的比值来确定,根据贝塞尔的公式可以求得所有的伯恩斯坦多项式的值,又由于方程的个数大于解的个数,可以通过最小二乘法反解出四个控制点的座标值。

其中 mm 是曲线边框的标注点的数量。Total-Text 和 CTW1500 ,mm 分别是 5 和 7 。tt 是通过使用累积长度与多边形周长之比来计算的。根据公式 (1)(4)(1) (4) ,把原始多边形标注转变为参数化的 Bezier 曲线。直接使用第一个和最后一个标注点作为第一和最后一个控制点。基于结构化后的 Bezier 曲线边框,可以在没有剧烈变形的情况下很容易地通过 BezierAlign 把曲线文本转为水平文本。
在这里插入图片描述

BezierAlign

给定输入特征图和 Bezier 曲线控制点,我们同时处理大小为 hout×wouth_{out}×w_{out} 的矩形输出特征图的所有输出像素。

以位置 (giw,gih)(g_{iw}, g_{ih}) 处的像素 gig_i 为例,可以通过以下公式计算 tt
t=giwwout t = \frac{g_{iw}}{w_{out}}
然后使用 tt 和公式 (1)(1) 计算 Bezier 曲线的上边界点 tptp 和下边界点 bpbp,使用 tptpbpbp ,可以通过公式 (6)(6) 计算出索引采样点 opop 的位置:
op=bpgihhout+tp(1gihhout) op = bp \cdot \frac{g_{ih}}{h_{out}} + tp \cdot (1 - \frac{g_{ih}}{h_{out}})
通过 opop 的位置,我们可以轻松地应用双线性插值来计算结果。

Recognition branch

与主干网络共享特征图,设计了一个轻量级的识别分支
在这里插入图片描述在 TotalText上的结果:

在这里插入图片描述在 CTW1500 上的结果:
在这里插入图片描述文本截取的对比:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章