论文题目: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曲线得到的文字区域,为不规则形状,现在希望将其映射到右图,形成一个规则的矩形,好后续送入识别网络中进行识别。
- 对于想获得的Align图上的任一点gi,定义,将t值分别带入到before中上下两条贝塞尔曲线的公式中,得到对应的tp点和bp点。
- 求得点gi距离上边界和整个Align矩形的高度的比值,根据该比值在直线tp-bp上确定点op的位置,即。
这样就确定了点op和gi的一一对应关系,利用双线性插值,可根据特征图上op的值来求得特征对齐后gi的值。
理论上before图和Align图的高度应该是相同的。
识别分支
一个简化的CRNN模型,包括6个卷积,1个双向LSTM和1个全连接层。
在训练过程中,识别分支直接使用贝塞尔GT标签来提取文字区域特征,它仅和检测分支共享参数而不使用检测分支预测的贝塞尔结果,因此检测分支不会影响识别分支。
实验结果
参考文档
[1] 贝塞尔曲线(Bezier Curve)原理及公式推导
[4] Scene Text Spotting:Adaptive Bezier-Curve Network
[5] 论文推荐| [CVPR 2020 Oral] ABCNet:基于自适应贝塞尔曲线的实时端到端自然场景文字检测及识别网络(附代码)