【论文阅读】ABCNet(CVPR2020)

论文题目:ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network

论文地址:https://arxiv.org/abs/2105.03620

代码地址:https://github.com/aim-uofa/AdelaiDet

https://github.com/Yuliang-Liu/bezier_curve_text_spotting

文章贡献:

首次采用参数化贝塞尔曲线自适应拟合多方向或弯曲文本,其增加的参数量可忽略不计,但提高了预测精度和推理效率。

论文动机

该文章提出的ABCNet属于端到端的文本识别网络,检测和识别同时进行,通过贝塞尔曲线,可以实现对多方向和弯曲文本的识别。

不同于以往同类方法,要么需要字符级的标注成本,要么网络模型复杂,要么推理速度不行。该网络可实现实时文本识别,速度快,为轻量级网络,但同时拥有竞争性的精度。

网络结构

整个网络结构可以分为,骨干网络特征提取分支,贝塞尔检测分支,BezierAlign特征对齐,识别分支。

其中骨干网络使用resnet50+FPN,检测分支在5种不同大小(1/8,1/16,1/32,1/64,1/128)的特征图上进行RoIAlign,识别分支对3种不同大小(1/4,1/8,1/16)的特征图进行BezierAlign。

贝塞尔曲线[1]

Bezier曲线是曲线表示的最基本概念,它适用于曲线文本的参数化。

一阶

2个点,1条线,一阶贝塞尔曲线相当于是一条线段:

其中,公式里P0和P1同步表示为x或y坐标。

t=0时B(0)=P0,t=1时B(1)=P1,相当于是B(t)表示的是一个从P0出发到P1的线段,线段长度由t来控制。

定义公式的证明:

对于给定点P0P1,根据相似三角形,在x方向有: 

同理,在y方向有:

则:

二阶

3个点,2条线,二阶贝塞尔曲线是在2条相交线中间弯曲形成的曲线:

直观理解:

t=AD/BE的这个比例值,t由0到1,找到所有的t值对应的F点,将A、C、Fi...连接起来,变成一条曲线。

公式:

公式证明:

 

 跟一阶一样,在直线P0-A-P1上,有:,即

直线P1-B-P2和直线A-C-B同理,有:

就是 中间的点=(1-t)*起始点+t*终点。

将AB带入C中,有:

三阶

 

 n阶

其中(n i)为组合C(n,i),有C(n,0)=1,C(n,1)=n,....

由此可得递归形式:

 

贝塞尔曲线检测 

由贝塞尔曲线的n阶公式可得:

 

其中C(t)表示曲线,bi表示第i个控制点。

通常认为一个三阶贝塞尔曲线可以表示自然场景中所有的文本曲线,即上式中n=3:

上图中b1-b4是三阶贝塞尔曲线的4个控制点,绿线是控制多边形,黑线是其对应的贝塞尔曲线。 因此所有弯曲文本可以简化为8个控制点的 bounding box regression,而对于一般的矩形文本4个点的情况,将在两条长边上各加入2个点。

具体来说,对于弯曲文本,2条长边使用2个贝塞尔曲线,而2条短边依然使用直线相连:

上图中曲线l1为点b1-b4对应的贝塞尔曲线,l2对应b5-b8。短边为b1b5和b4b8相连。

标签生成

生成曲线的前提是获得控制点的坐标,为了让网络学习到坐标,首先要制作贝塞尔的GT标签,然后进行回归。

由于贝塞尔的控制点可能超出图像边界(上图中实际文本为绿色框范围,而红色的控制点远高于文本范围),因此回归的值使用相对距离:

x_min和y_min表示原本弯曲文本的所有坐标点标签中最小的x坐标值和最小的y坐标值,(bix,biy)为第i个控制点的坐标,共8个控制点。

对于弯曲文本的转化,下图中左边为原本弯曲文本的标注信息点pm,需要转化坐标为右图的点bn: 

对于每条曲线边,根据最小二乘法:

m表示的是曲线上原始标注点的数量,图示中为7。t是折线的累计长度与周长之比,如t0=0,t1=len(P0P1)/len(P0-P1-...-P6)..。

则根据和式4以及原始标注信息pm,可以求得我们需要的bn信息。这相当于是根据原来的标注点,求得2条贝塞尔曲线,使其能够尽可能的接近所有的点。

其中,原始标注信息的第一个点p0和最后一个点p6,将直接作为控制点的b0和b3。

对于矩形文本的转化,原始标注为4个点坐标p0-p3,现在线段p0p1和p2p3各取2个三分点b0-b3,组成贝塞尔的8个点的标注信息: 

BezierAlign 

根据检测网络获取到的检测框是不规则的,为了实现端到端的训练,需要对文本特征进行对齐。直观的理解,即将下图中绿色框内的弯曲文本,拉直成下面矩形的样子:

下图展示了不同文本框的采样,BezierAlign得到的结果中不包含多余的背景信息

首先需明确,弯曲网格的每一列都与文本的贝塞尔曲线边界正交,即图7(c)中,点排列均是垂直于两条曲边的。且采样点的宽度和高度均为等距,因此可用双线性差值将其变为标准矩形。

具体操作

下图中,左图为由Bezier曲线得到的文字区域,为不规则形状,现在希望将其映射到右图,形成一个规则的矩形,好后续送入识别网络中进行识别。

 

  1. 对于想获得的Align图上的任一点gi,定义,将t值分别带入到before中上下两条贝塞尔曲线的公式中,得到对应的tp点和bp点。
  2. 求得点gi距离上边界和整个Align矩形的高度的比值,根据该比值在直线tp-bp上确定点op的位置,即

这样就确定了点op和gi的一一对应关系,利用双线性插值,可根据特征图上op的值来求得特征对齐后gi的值。

理论上before图和Align图的高度应该是相同的。 

识别分支

一个简化的CRNN模型,包括6个卷积,1个双向LSTM和1个全连接层。

在训练过程中,识别分支直接使用贝塞尔GT标签来提取文字区域特征,它仅和检测分支共享参数而不使用检测分支预测的贝塞尔结果,因此检测分支不会影响识别分支。

实验结果

参考文档

[1] 贝塞尔曲线(Bezier Curve)原理及公式推导

[2] 贝塞尔(Bézier)曲线-之一

[3] 自然场景文本检测识别 - ABCNet

[4] Scene Text Spotting:Adaptive Bezier-Curve Network

[5] 论文推荐| [CVPR 2020 Oral] ABCNet:基于自适应贝塞尔曲线的实时端到端自然场景文字检测及识别网络(附代码)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值