多种文本检测算法性能对比及算法介绍
(https://blog.csdn.net/qq_39707285/article/details/108754444)
现存的算法大致可以分为两类,character-based和segmentation-based,这两种方法都比较耗时,例如字符级别的标注或者复杂的网络设计,这些都不适合用于实时的应用。
本文提出了 **Adaptive Bezier-Curve Network(ABCNet)**用于解决这些问题:
ABCNet是一个端到端的可训练的文本检测+识别网络,主体网络如图3所示,主要组成模块是 Bezier Curve Detection 和 BezierAlign。
首先简单了解下Bezier curve 参考链接*
相比与基于分割的方法,基于回归的检测算法能够直接的预测任意形状的文本,但是之前的回归算法需要复杂的参数化预测来适应文本边界,这样就导致缺少高效性和鲁棒性。
为了继续使用基于回归的方法,本文采用贝塞尔曲线 Bezier curve去简化算法,并适用于任意形状的文本检测。用曲线c(t)表示Bezier曲线,它使用Bernstein多项式作为其基础,公式定义为:
n表示级别, b i b_i bi表示第i个控制点, B i , n ( t ) B_{i,n}(t) Bi,n(t) 表示Bernstein偏执多项式,如公式2所示:
当n=3时, B i , n ( t ) B_{i,n}(t) Bi,n(t) 计算如下:
( n i ) \binom{n}{i} (in) 是一个二项式系数,从现有的数据集和现实世界中对任意形状的场景文本进行了全面的观察,并通过实验证明了一条三次Bezier曲线(即n=3)可以很好地拟合不同类型的任意形状场景文本,如图4展示了三次贝塞尔曲线。
基于三次Bezier曲线,可以将任意形状的场景文本检测简化为一个共有八个控制点的边界盒回归,需要注意的是,具有四个控制点(四个顶点)的直文本是任意变形场景文本的典型情况。为了保持一致性,我们在每个长边的三个点上加上两个控制点。
为了让网络学习控制点的坐标,首先生成2.1.1中描述的Bezier曲线GT,然后用回归方法对目标进行回归,对于每一个文本实例,使用一下计算方式,
x m i n x_{min} xmin和 y m i n y_{min} ymin分别是四个顶点的最小最大左边,预测相对距离的优点是它与Bezier曲线控制点是否超出图像边界无关。通过链接detection head,只需要一个卷积网络,输出16个通道,就可以学习∆x和∆y,这几乎没什么计算资源消耗,但结果仍然很准确,待会在第3部分详细讲解。
这一节猪样讲如何通过文本标注结果生成Bezier曲线对应的GT。用 p i ( n i = 1 ) {p_i \binom n{i=1}} pi(i=1n)表示文本标注边界, p i p_i pi代表第i个标注点,然后利用公式1生成Bezier曲线 c ( t ) c(t) c(t),使用下面的公式4辅助计算:
m表示标注的点个数,对于Total-Text和CTW1500数据集,m的值分别为5和7,t时累积长度与多段线周长的比率,通过公式1和4,可以转化最初的标注结果为Bezier曲线,结果如图5所示,从图中可以看出,生成的结果比原始的标注结果更加好。更多的结果如图7所示。
另外基于Bezier曲线bounding box,可以使用BezierAlign(在2.2节中讲)直接将其转换为水平形式,而没有明显的形变。
对于端到端的文本识别网络来说,大量的自由合成数据总是必不可少的,现存的 SynText dataset包含800k张样本,但这些样本都是四边形,本文使用 VGG synthetic method 1合成了15万个合成数据集(94723个图像包含大部分的直文本,54327个图像包含大部分的曲线文本),生成样本样例如图8所示。
为了达到端到端的训练,需要利用采样方法选择感兴趣区域的特征,有效地输出固定大小的特征图,类似于RoI Pooling和RoIAlign。
本文利用紧凑型Bezier曲线边界盒的参数化特性,提出了一种用于特征采样的 BezierAlign方法,BezierAlign是从RoIAlign中扩展来的,与RoIAlign不同的BezierAlign采样的形状不是矩形的,相反,任意形状网格的每一列都与文本的Bezier曲线边界正交,采样点的宽度和高度分别为等距间隔,并对坐标进行双线性插值。
通常,给出一个特征图和Bezier曲线控制点,就可以输出形状为 h o u t h_{out} hout× w o u t w_{out} wout的矩形特征映射的所有像素,从输出特征图中去一个像素 g i g_i gi,坐标为( g i w g_{iw} giw, g i h g_{ih} gih),使用如下公式5就可以计算出t:
得到t之后,利用公式1,就可以计算出Bezier曲线上边界tp和Bezier曲线下边界bp点,利用tp和bp,可以用方程6对采样点op进行线性指数化:
利用op的位置,就可以很容易地应用双线性插值来计算结果。图7中显示了其他采样方法和BezierAlign之间的比较。
Recognition branch
利用共享的backbone特征和BezierAlign,设计了一款轻量型的识别分支,如表1所示,总共包含6个卷积层,1个Bi-LSTM层和1个全连接层,使用CTC loss。
在训练的时候,直接使用生成的Bezier曲线GT去提取RoI特征,因此,检测分支不会影响识别分支;在推理测试过程中,RoI被替换为预测出的Bezier曲线点,具体见2.1节。
backbone使用 ResNet50和 FPN,检测分支部分,在5个特征图上使用 RoIAlign,这些特征图的分辨率分别为输入图像的1/8、1/16、1/32、1/64和1/128;对于识别分支,在三个尺寸分别为1/4、1/8和1/16的特征图上进行BezierAlign。
预训练的数据是从公开的英语单词级数据集中收集的,包括第2.1.2节中描述的150k个合成数据、15k个从COCO-Text中过滤的图片和7k个 ICDAR-MLT数据。
预训练之后,在目标数据集中对其进行微调,另外,也使用了数据增强,例如,随机尺度,短边随机560-800选择,长边小于1333,随机裁剪(确保裁剪面积大于原始图片尺寸的一半,确保没有文本被裁剪)。
从表3中,可以看出 BezierAlign对性能提升影响很大。
表4中对采样点数量对端到端结果的影响进行敏感性分析,从结果可以看出,采样点的数目会显著影响最终的性能和效率,实验发现(7,32)在F-measure和FPS之间达到了最佳的折中,后续实验的设置都使用该设置。
Qualitative Results.
ABCNet的部分识别结果如图10所示,从图中可以看出对任意形状的文本的检测识别效果都很好,而且也可以处理直文本,图中也出现了一些错误,主要是由于错误地识别了其中一个字符。
提出了 ABCNet,一种使用Bezier曲线进行任意形状场景文本定位的实时端到端方法,利用参数化Bezier曲线重构任意形状的场景文本,ABCNet可以用Bezier曲线检测任意形状的场景文本,与标准bounding box检测相比,计算量可以忽略不计。有了这些规则的Bezier曲线边界框,就可以自然地通过一个新的BezierAlign层连接一个轻量级的识别分支。
此外,通过使用Bezier曲线合成数据集和公开的数据,在两个任意形状的场景文本基准(Total text和CTW1500)上进行的实验表明,ABCNet可以达到最先进的性能,也比以前的方法快得多。
Ankush Gupta, Andrea Vedaldi, and Andrew Zisserman.Synthetic data for text localisation in natural images. In Proc. IEEE Conf. Comp. Vis. Patt. Recogn., pages 2315–2324, 2016. ↩︎