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 = 0 n b i B i , n ( t ) , 0 ≤ t ≤ 1 , (1) c(t) = \sum_{i=0}^n b_i B_{i, n}(t), 0 \leq t \leq 1, \tag{1} c(t)=i=0nbiBi,n(t),0t1,(1)

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

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

Bezier Ground Truth Generation

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

[ B 0 , 3 ( t 0 ) … B 3 , 3 ( t 0 ) B 0 , 3 ( t 1 ) … B 3 , 3 ( t 1 ) ⋮ ⋱ ⋮ B 0 , 3 ( t m ) … B 3 , 3 ( t m ) ] [ b x 0 b y 0 b x 1 b y 1 b x 2 b y 2 b x 3 b y 3 ] = [ p x 0 p y 0 p x 1 p y 1 ⋮ ⋮ p x m p y m ] (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} B0,3(t0)B0,3(t1)B0,3(tm)B3,3(t0)B3,3(t1)B3,3(tm)bx0bx1bx2bx3by0by1by2by3=px0px1pxmpy0py1pym(4)

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

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

BezierAlign

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

以位置 ( g i w , g i h ) (g_{iw}, g_{ih}) (giw,gih) 处的像素 g i g_i gi 为例,可以通过以下公式计算 t t t
t = g i w w o u t t = \frac{g_{iw}}{w_{out}} t=woutgiw
然后使用 t t t 和公式 ( 1 ) (1) (1) 计算 Bezier 曲线的上边界点 t p tp tp 和下边界点 b p bp bp,使用 t p tp tp b p bp bp ,可以通过公式 ( 6 ) (6) (6) 计算出索引采样点 o p op op 的位置:
o p = b p ⋅ g i h h o u t + t p ⋅ ( 1 − g i h h o u t ) op = bp \cdot \frac{g_{ih}}{h_{out}} + tp \cdot (1 - \frac{g_{ih}}{h_{out}}) op=bphoutgih+tp(1houtgih)
通过 o p op op 的位置,我们可以轻松地应用双线性插值来计算结果。

Recognition branch

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharlesWu123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值