概述
尽管文字检测识别已经取得了很大进展,但自然场景下的文字检测识别,一方面由于受到包括文字样式多变、宽高比、字体大小风格、拍摄视角、形状等问题的影响,这些检测识别方法在实际场景下的应用仍然没有得到很好的解决;另一方面,这些端到端的方法要么是基于分割,这需要复杂的后处理,要么需要字符级别的标注信息。
方法
提出方法的整体架构如下图所示。主要的改进,是提出使用贝塞尔曲线对包括弧形文本在内的各种形状的文本框直接进行回归拟合,并提出 Bezier Align 算法,使得各种形状的文本实例可以输入到后续的一个轻量化分类识别层直接输出识别结果。
贝塞尔曲线检测
一条 3 阶贝塞尔曲线示意图如下所示。3 阶贝塞尔曲线足以覆盖日常中常见的大部分文本实例情况。对于一个 3 阶贝塞尔曲线,需要有 4 个控制点,因此对于一个弧形文本行上下两条边 8 个控制点,网络最后输出 16 个通道分别预测出
Δ
x
\Delta_x
Δx 和
Δ
y
\Delta_y
Δy 坐标。同时在进行控制点坐标回归时也不是直接回归坐标值,而是和四个顶点坐标的相对距离
Δ
x
=
b
i
x
−
x
m
i
n
,
Δ
y
=
b
i
y
−
y
m
i
n
\Delta_x=b_{ix}-x_{min},\Delta_y=b_{iy}-y_{min}
Δx=bix−xmin,Δy=biy−ymin。相比四边形或者多边形的回归,这里的控制点回归并没有增加太多计算量。
贝塞尔标注生成
由于需要网络拟合贝塞尔曲线控制点,因此先生成贝塞尔格式的标注。
给定
m
m
m 个原始标注点,通过最小二乘完成对而塞尔曲线的拟合。和原始标注信息相比,拟合后的标注更加平滑,和文字区域贴边效果更好。
贝塞尔合成数据集
由于现存的 SynText 数据集包含的都是四边形框,因此合成了一批各种形状的合成数据用来做模型预训练。合成使用 COCO-Text 中没文字的图片作为背景,在此基础上完成对文字的渲染。一些合成图片的效果如下图所示:
贝塞尔对齐
为了端到端训练,需要将特征图送入识别网络层,需要进行特征对齐,也就是需要在特征图上选取出固定大小的区域送入识别网络层完成对字符的分类识别。这里提出的 Bezier Align 和水平采样或者四边形采样相比,可以更好地提取弧形文本框的特征,因此会大大提升后续字符识别的精度。而 Bezier Align 的方法,首先根据控制点计算贝塞尔曲线上下边曲线,随后采用双线性插值的方法,获取到固定识别分类层输入大小的特征图。
识别分支
由于和检测网络共用特征并且前面的 Bezier Align 方法较好地对齐了特征图,因此识别分支可以设计得相对轻量化。如下表所示,识别分支包含 6 个卷积层、1个 LSTM 层和 1 个全两层,最后输出
n
c
l
a
s
s
=
97
n_{class}=97
nclass=97 个通道。使用 CTC 损失作为文字识别损失。同时在训练阶段直接使用 GT 标注提取 RoI 特征,也可以降低训练的难度。
实验及指标
在 TotalText 数据集上的指标如下表所示,在精度和速度上都有提升。
在 CTW1500 数据集上的效果如下所示: