文章被收录于ICCV2019
[论文地址]:http://openaccess.thecvf.com/content_ICCV_2019/html/Feng_TextDragon_An_End-to-End_Framework_for_Arbitrary_Shaped_Text_Spotting_ICCV_2019_paper.html
[代码地址]:暂未找到
本文提出一种用来制造文本检测与识别关系的可微运算RoISlide,使模型成为端到端模型。本文在两个弯曲文本数据集CTW1500和Total-Text上的表现达到最佳,在常规文本数据集ICDAR2015上达到了具有竞争力的结果。
目前,文本检测的现有方法大多数是通过两步实现:文本检测与文本识别。这样的方式具有时间成本高和忽略了文本检测与识别之间的联系这两个缺点。
本文提出的TextDragon灵感来源于TextSnake[32],TextSnake文本检测的方式是使用一系列的局部单元,因此可以实现任意形状的文本检测。但是其在训练过程中需要字符级别的标签,一些数据集并没有提供此类标签,因此可能需要耗费大量人工成本。
本文为了实现任意形状文本的检测,使用了一系列局部四边形来定位复杂的文本。
如图2所示,RoISlide连接了检测与识别模块,用于从特征图中提取特征和纠正任意形状文本区域,从而减少了字符大小与方向的变化。之后,经过校正的文本特征输入到CNN和Connectionist Temporal Classification(CTC)中来生成最终的结果。此外,TextDragon是第一个可训练的端到端的实现任意形状文本检测的模型,且仅仅使用单词级别或行级别的标签就可以完成检测任务。
三大贡献:
(1) TextDragon端到端模型提出
(2) 可微的RoISlide将识别与检测统一到一起
(3) 仅仅使用单词/行级别标注完成训练
Liu等人[31]集成了递归的横向和纵向偏移连接以检测弯曲的文本,该文本由14个顶点多边形描述。
Wang等人[46]提出了一种基于循环神经网络的自适应文本边界的方法,实现了任意形状文本的检测。
Long等人[32]提出了一系列以对称轴为中心的可重叠的圆盘来检测弯曲文本。但是圆盘并不方便与之后的识别器进行组合使用。
基于深度学习的方法是通过CNN来提取特征,然后用循环神经网络来生成顺序标签[42],但是这样的方式只是考虑了文本的一维性,并不适合弯曲文本检测。
Shi等人[39]和Liu等人[28]引入空间注意力机制来对弯曲文本进行姿态调整。Cheng等人[5]将特征输入至注意力机制的解码器中,从而完成不规则文本检测。
Li等人[25]提出了一种专注于水平文本检测与识别的端到端方法。
Liu等人[29]提出了一种可微运算RoIRotate,它通过从特征图中提取定向文本。Patel等人[35]提出了一种针对多语言的端到端的方法。以上方法均只支持常规文本的检测。
基于Mask-RCNN [11],Lyu等人[33]提出了一种通过文字实例分割方式来实现弯曲文本检测与识别的方法,但其需要字符级别标注。
本文方法:通过主干网络从图像中抽取特征,然后使用文本检测器来描述一系列基于中心线定位的四边形文本。然后使用RoISlide从特征图中沿着中心线抽取特征,其中的局部转换网络将每一个四边形中的特征转化为校正后的特征。最后,使用CNN来对每一个四边形的特征进行分类,使用CTC解码器解码出最终的文本序列。
为了解决不同尺度文字识别的问题,本文采用多层特征图融合,将融合特征图上采样至原图像的1/4大小。
输出模块包括:Centerline Segmentation和Local Box Regression。
Centerline Segmentation: 中心线分割的主要目的是,找到文本的中心线。主要方法是将文本的中心线附近的像素预测为1,其余像素预测为0(也就是非文本区域)。为了解决中心线区域像素与非文本像素个数不均衡的问题,本文参考了[40],采用**online hard example mining(OHEM)**方法。
损失函数: L s e g = 1 ∣ S ∣ ∑ s ∈ S L ( p s , p s ∗ ) = 1 ∣ S ∣ ∑ s ∈ S ( − p s ∗ log p s − ( 1 − p s ∗ ) log ( 1 − p s ) ) L_{s e g}=\frac{1}{|S|} \sum_{s \in S} L\left(p_{s}, p_{s}^{*}\right) =\frac{1}{|S|} \sum_{s \in S}\left(-p_{s}^{*} \log p_{s}-\left(1-p_{s}^{*}\right) \log \left(1-p_{s}\right)\right) Lseg=∣S∣1∑s∈SL(ps,ps∗)=∣S∣1∑s∈S(−ps∗logps−(1−ps∗)log(1−ps))
其中 ∣ S ∣ |S| ∣S∣表示由OHEM选中的元素的个数, p s p_s ps为网络对该点的二分类结果, p s ∗ p_s^* ps∗为ground truth, p s ∗ ∈ { 0 , 1 } p_{s}^{*} \in\{0,1\} ps∗∈{0,1}。
Local Box Regression: 这一步操作主要是得到bounding box。每一个box由两个参数表示,一个是高度,另一个是角度,如图3所示。
损失函数:
[ L B L θ ] = 1 ∣ P ∣ ∑ i ∈ P Smooth L 1 [ B i − B i ∗ θ i − θ i ∗ ] L r e g = L B + λ θ L θ \left[\begin{array}{c}L_{B} \\ L_{\theta}\end{array}\right]=\frac{1}{|P|} \sum_{i \in P} \operatorname{Smooth}_{L_{1}}\left[\begin{array}{c}B_{i}-B_{i}^{*} \\ \theta_{i}-\theta_{i}^{*}\end{array}\right]\\ L_{r e g}=L_{B}+\lambda_{\theta} L_{\theta} [LBLθ]=∣P∣1i∈P∑SmoothL1[Bi−Bi∗θi−θi∗]Lreg=LB+λθLθ
其中, P P P为正样本区域(文本中心线区域), B i B_i Bi和 θ i {\theta}_i θi代表所预测得到的box和角度, B i ∗ B_i^* Bi∗和 θ i ∗ \theta_i^* θi∗代表ground-truth, λ i \lambda_i λi是超参(本文实验取10),本文选择SmoothL1损失[36]是因为它对对象形状变化具有鲁棒性。
本文提出的RoISlide是通过按顺序变换每一个局部四边形,从而将全部的文本特征间接地变换为轴对称的特征。主要分为以下两步:1.首先,我们排列沿文本中心线分布的四边形。 2.使用了Local Transform Network(LTN),以滑动方式将从每个四边形裁剪的特征图转换为已校正的特征图。经过这两步,特征图变为了有序方形特征图,如图4。
本文采用了一系列的卷积层来代替[45][46]的LSTM。具体操作见表1。
文字识别主要包含两个操作:文字分类器和转录层。分类器用于将上一步输入的方形特征图转化为文本的概率,转录层则将概率映射为英文字符。
其中,在转录层中,本文使用了CTC解码器[9],CTC目的是将概率分布转化为文本序列。
文字识别的损失函数为: L r e c = − 1 M ∑ m = 1 M log p ( y ∣ X ) L_{r e c}=-\frac{1}{M} \sum_{m=1}^{M} \log p(y | X) Lrec=−M1∑m=1Mlogp(y∣X)
则整个端到端训练的损失函数为: L = L s e g + λ r e g L r e g + λ r e c L r e c L=L_{s e g}+\lambda_{r e g} L_{r e g}+\lambda_{r e c} L_{r e c} L=Lseg+λregLreg+λrecLrec,其中 λ r e c \lambda_{rec} λrec和 λ r e g \lambda_{reg} λreg是超参。
分组:本文根据几何关系进行分组。
排序:1.检测同组中的box整体是水平的还是垂直的。
采样:对于边界生成,本文只需对有序框进行均匀采样以形成多边形的顶点。然后,通过顺序连接顶点来生成文本边界。
识别:执行RoISlide和CTC。
端到端 vs. 非端到端:图6中可看出,端到端训练可以提升非显著文本的检测率。
RoISlide vs. RoIRotate:表2和3和图6(c,d)中可看出,RoIRotate[29]不适合弯曲文本检测,RoISlide和RoIRotate对于常规文本有着相似的效果。
Spotting with vs. without LSTM:基于CNN的文本识别器比LSTM快4倍。
列出博文中引用原文的部分文献