概述
基于神经网络模型和大数据集的发展,文本检测也受到了广泛关注。但是现有的文本检测方法受限于对文本行的表示方法,例如使用坐标轴对齐的矩形、或者旋转矩形,或者四边形对文本行进行表示,当遇到一些形状更灵活的文本行,例如弧形文本,如下图所示,这样的表示方法便无能为力。而弧形文本在日常生活中又经常出现。
一方面,文本检测很重要,在场景理解、物品搜索、自动驾驶等方面都可以有广泛的应用;另一方面由于颜色、尺度、宽高比等方面的差异,文字检测相对于普通目标检测又有很多不同的地方,因此需要特别设计和研究。
方法
现有的基于深度学习的文本检测方法,大致可以分为基于回归和基于分割两大类。基于回归的方法基于 SSD 或者 Faster-RCNN 等修改而来;基于分割的方法基于 FCN 等修改而来。但是这些方法大多缺乏对任意形状文本实例的检测能力。
文本实例表征
如下图所示,文章提出了一种新的称作 TextSnake 的适用任意形状文本实例的表示方法。TextSnack 将文本实例用一系列重叠的小圆环表示,这些圆环都处于一个中心线上,包含中心
c
c
c、半径
r
r
r 和方向值
θ
θ
θ。圆盘的这些属性信息可以被用来恢复这些文本实例为一个矩形,便于输入到后期的文本识别模型。
整体流程
整体流程如下图所示,使用一个 FCN 结构的模型对文字区域(Text Region,TR)、文本中心线(Text Center Line,TCL)、半径
r
r
r、
c
o
s
θ
cos θ
cosθ 及
s
i
n
θ
sin θ
sinθ 值进行预测。
网络结构
网络整体结构基于 FPN 和 U-Net,最后输出和输入图像分辨率一致的特征图
h
×
w
×
7
h×w×7
h×w×7,其中 4 个通道预测 TR 和 TCL,另外 3 个通道分别预测
r
r
r,
c
o
s
θ
cos θ
cosθ 和
s
i
n
θ
sin θ
sinθ。
推理流程
经过网络输出可以得到 TR 和 TCL,对这两个得分图使用阈值 T t c l T_{tcl} Ttcl 和 T t r T_{tr} Ttr 进行阈值化,随后 TCL 和 TR 的公共区域就是最终的 TCL 区域。基于互斥集算法,能将这些分离的 TCL 区域分为不同的文本实例。
随后基于这些分割出来的文本实例和圆盘属性值,设计了一个 striding algorithm
,流程如下图所示。
- 首先,随机选择一个像素作为起始点并进行中心化;
- 然后,搜索方向朝着两个相反的方向进行,不断进行搜索以及中心化;
- 最终得到两个中心序列,将这个序列进行组合得到最终的文本实例;
- 将文本实例进行矫正,将弧形文本实例矫正为矩形文本行,送入识别网络进行识别。
其中各个步骤的详细图示如下图所示:
- Centralizing:对于 TCL 上的一个点,根据模型预测的几何属性图,可以获取它在 TCL 上面的切线和法线,法线再 TCL 区域中的中点就是中心点;
- Striding:基于当前点,使用半径 r r r 和角度 θ θ θ 值,获取下一个圆环中心点坐标,并同样使用 Centralizing 进行中心化;
- Sliding:重复前两步,圆环覆盖的地方就是预测的文本实例位置。
标签生成
标签生成流程如下图所示。对于一个文本实例标注:
- 首先确定左右两个端点,确定它们的方法,就是对于这样两个端点 AH 和 DE,有 M ( e i , i + 1 ) = c o s ⟨ e i + 1 , i + 2 , e i − 1 , i ⟩ M\lparen e_{i,i+1}\rparen=cos\langle e_{i+1,i+2},e_{i-1,i}\rangle M(ei,i+1)=cos⟨ei+1,i+2,ei−1,i⟩ 趋近于 -1;
- 然后分别在上下边采样相等数目的边界点;
- 计算这些对应边界点的中点,作为初始的 TCL 点;
- 收缩 TCL 两端 1 2 r e n d \frac{1}{2}r_{end} 21rend长度,使得 TCL 完全处于 TR 内部,并使得相邻文本实例容易被区分;
- 将 TCL 区域扩展 1 5 r \frac{1}{5}r 51r 半径长度,单个的点将被认为是噪声做处理。
- 对 TCL 中每个点计算 r r r 和 θ \theta θ: r r r 是对应点到边界的距离, θ \theta θ 通过直线拟合进行计算。
对于 TCL 区域之外的点,对应的几何属性都被直接设置为 0。
训练损失函数
损失函数如下所示。其中
L
c
l
s
L_{cls}
Lcls 代表 TCL 和 TR 的分类交叉熵损失。
L
r
e
g
L_{reg}
Lreg 代表
r
,
c
o
s
(
θ
)
,
s
i
n
(
θ
)
r, cos\lparen\theta\rparen,sin\lparen\theta\rparen
r,cos(θ),sin(θ) 的 Smooth-L1 回归损失。损失比例值全部设置为 1。
数据集及指标
数据集
模型在 5 个数据集上进行了实验:
- SynthText。是一个大尺度合成数据集,包含 800K 幅图片。图片将文字渲染到自然图像中,这些文字有不同的字体、大小、颜色以及方向,比较真实。在这个数据集上对模型进行 1 个 epoch 的预训练,然后在其余数据集上进行微调;
- TotalText。包含 1255 张训练图像,300 张测试图像。里面包含水平、多方向及弧形文本;
- CTW1500。主要包含弧形文本,包括 1000 张训练集,500 张测试集。文字实例使用 14 个点进行标注;
- ICDAR 2015。数据集作为 Challenge 4 of the 2015 Robust Reading Competition 被提出。图像通过 Google Glasses 获取,包含小、模糊以及各种方向的文本实例。包含 1000 张训练图像和 500 张测试图像;
- MSRA-TD500。这是一个包含多语种、长文本行数据集,包含 300 张训练图像和 200 张测试图像。
数据增强
使用的数据增强方法包括:
- random rotate
- crop
- noise、blur、lightness are randomly adjusted
最终确保经过增强后的文字仍然清晰可读。
指标
在 TotalText 数据集上的结果:
在 CTW 1500 上的结果:
在 ICDAR 2015 上的结果:
在 MSRA-TD500 上面的结果:
总的来讲,基于这个提出的文本实例表征方法,由于对各种形状文本行的支持,在各个数据集上性能都获得了质的提升。但是方法对一些几何属性还进行了预测,后处理也相对复杂,实际可以考虑后续新近提出的文本检测方法。