SwinTextSpotter: Scene Text Spotting via Better Synergy between Text Detection and Text Recognition
Abstract
- 近年来,端到端场景文本识别因成功挖掘了场景文本检测与识别的内在协同作用而备受关注。然而,最近的先进方法通常仅通过共享主干网络来结合检测和识别,这并不直接利用两个任务之间的特征交互。在本文中,我们提出了一种新的端到端场景文本识别框架,称为 SwinTextSpotter。使用带有动态头的 Transformer 编码器作为检测器,我们使用一种新颖的识别转换机制将这两个任务统一起来,以通过识别损失明确引导文本定位。这种简单的设计产生了一个简洁的框架,它既不需要额外的校正模块,也不需要对任意形状的文本进行字符级注释。在多方向数据集 RoIC13 和 ICDAR 2015、任意形状数据集 Total-Text 和 CTW1500 以及多语言数据集 ReCTS(中文)和 VinText(越南语)上进行的定性和定量实验表明,SwinTextSpotter 明显优于现有方法。代码可在 https://github.com/mxin262/SwinTextSpotter 上找到。
- 论文地址:[2203.10209] SwinTextSpotter: Scene Text Spotting via Better Synergy between Text Detection and Text Recognition
- 传统的场景文本识别方法将detection和recognition视为两个分立的任务,采用的方法是先定位,再剪裁,将剪裁好的图像喂进recognizer来对文字序列进行预测。这类方法的局限性在于:两个任务间的误差积累,detection的不精确严重影响recognition的表现
- SwinTextSpotter 是一个端到端的场景文本检测和识别框架,通过 Recognition Conversion (RC) 机制将文本检测和识别任务紧密结合,实现了更好的协同效应。利用 Transformer 和 set-prediction 方案来实现端到端的场景文本检测和识别,通过 RC 机制将检测和识别的特征进行交互,从而提高整体性能。Recognition Conversion,突破了传统模型只在主干网络中共享特征的方法,通过RC,识别损失的梯度不仅被回传给主干网络,还被回传给了proposal feature,proposal feature同时被detector和recognizer优化,使得detector和recognizer之间可以更好的耦合,达到了协同工作的目的,获得了更加理想的识别结果。
Introduction
-
场景文本识别旨在检测和识别自然图像中的整个单词或句子,由于其在自动驾驶 、智能导航 和关键实体识别 等领域的广泛应用而引起了广泛关注。传统的场景文本识别方法将检测和识别视为两个独立的任务,采用的流水线首先在输入图像上定位和裁剪文本区域,然后通过将裁剪区域输入文本识别器来预测文本序列。这样的流水线可能存在一些局限性,例如 (1) 这两个任务之间的错误累积,例如不精确的检测结果可能严重阻碍文本识别的性能;(2) 分别优化这两个任务可能无法最大化文本识别的最终性能;(3) 内存消耗大且推理效率低下。
-
因此,许多方法 尝试在端到端系统中解决文本识别问题,即在统一架构中联合优化检测和识别。识别器可以通过消除假阳性检测结果来提高检测器的性能 。反过来,即使检测不准确,识别器仍然可以通过特征图的大感受野正确预测文本序列 。另一个优点是,与模型与数据耦合的级联管道相比,端到端系统更易于维护和迁移到新领域,因此需要大量的工程工作 。
-
然而,现有的端到端场景文本识别系统大多存在两个局限性 。首先,如果检测仅仅基于输入特征中的视觉信息,检测器很容易受到背景噪声的干扰,导致检测结果不一致,如图 (a) 所示。同一图像中文本之间的交互是消除背景噪声影响的关键因素,因为同一个单词的不同字符可能包含很强的相似性,比如背景和文本样式。使用 Transformer 可以学习到文本实例之间丰富的交互。例如,Yu 等 使用 Transformer 使文本在语义层面相互交互。Fang 等 和 Wang 等 进一步采用 Transformer 来建模文本之间的视觉关系。其次,通过共享主干,检测和识别之间的交互不够,因为识别损失既不能优化检测器,识别器也没有利用检测特征。为了共同提高检测和识别效果,Mask TextSpotter 设计了一个字符分割图,可在同一分支中同时优化检测和识别结果;ABCNet v2 提出了自适应端到端训练 (AET) 策略,使用检测结果提取识别特征,而不仅仅是使用基本事实;ARTS 通过使用可微分的空间变换网络 (STN) 将损失从识别分支反向传播到检测分支,提高了端到端文本识别的性能。然而,这三种方法都假设检测器在结构上提出文本特征,例如按阅读顺序。此后,文本识别的整体性能受检测器的限制。
-
我们提出了 SwinTextSpotter,一个基于 Transformer 的端到端可训练框架,旨在实现文本检测和识别之间的更好协同。为了更好地区分拥挤场景中密集分散的文本实例,我们在 SwinTextSpotter 中使用 Transformer 和两级自注意机制,模拟文本实例之间的交互。针对任意形状场景文本识别的挑战,我们将文本检测任务视为集合预测问题,因此采用基于查询的文本检测器。我们进一步提出了识别转换 (RC),它通过结合检测特征来隐式地引导识别头。RC 可以将识别信息反向传播到检测器并抑制特征中的背景噪声以进行识别,从而实现检测器和识别器的联合优化。
-
在提出的 RC 的支持下,SwinTextSpotter 拥有一个简洁的框架,无需以前用于改进识别器的字符级注释和纠正模块。SwinTextSpotter 在检测和识别方面都表现出色。如图 (b) 所示,SwinTextSpotter 的检测器可以准确定位困难样本。 另一方面,更准确的检测特征可以改进识别器,并实现更快的收敛和更好的性能,如图 © 所示。
-
-
识别转换的有效性。所提出的识别转换明确地指导了检测,从而提高了文本识别性能。
-
-
我们对六个基准进行了广泛的实验,包括多方向数据集 RoIC13 和 ICDAR 2015 、任意形状数据集 Total-Text 和 SCUT-CTW1500 ,以及多语言数据集 ReCTS(中文) 和 VinText(越南语)。结果证明了 SwinTextSpotter 的卓越性能:(1)SwinTextSpotter 在 SCUT-CTW1500 和 Total-Text 上的检测任务中实现了 88.0% 的 F 度量,大大超过了以前的方法;(2)在 ReCTs 数据集的文本识别任务中,SwinTextSpotter 在 1-NED 方面的表现显著优于 ABCNet v2 9.8%。 此外,在不使用 ReCT 上的字符级注释的情况下,SwinTextSpotter 的表现优于使用此类注释的先前最先进的方法 MaskTextSpotter 和 AE TextSpotter ;(3)与 MaskTextSpotter v3 相比,SwinTextSpotter 对 RoIC13 数据集上极端旋转实例表现出更好的鲁棒性。这项工作的主要贡献总结如下。
- SwinTextSpotter 开创性地证明了 Transformer 和集合预测方案在端到端场景文本识别中的有效性。
- SwinTextSpotter 采用识别转换来发挥文本检测和识别的协同作用。
- SwinTextSpotter 是一个简洁的框架,不需要字符级注释,也不需要专门设计的用于识别任意形状文本的校正模块。
- SwinTextSpotter 在多个公共场景文本基准测试中实现了最先进的性能。
-
核心思想是通过Recognition Conversion (RC) 机制实现检测与识别的深度协同。传统方法通常仅在共享主干网络时简单结合两任务,而RC通过将识别损失反向传播到检测器,显式引导文本定位,同时抑制背景噪声。其创新点包括:
- Transformer与集合预测:采用Swin Transformer作为主干网络,结合查询式检测器(类似Sparse R-CNN),将检测视为集合预测问题。
- 两阶段自注意力机制:在识别器中结合局部细粒度与全局粗粒度特征,增强对不规则文本的建模能力。
- 无字符标注与矫正模块:通过RC直接优化检测与识别,无需依赖字符级标注或复杂矫正模块(如TPS、BezierAlign)。
Related Work
-
独立场景文本识别。在过去的几十年中,深度学习方法的出现极大地促进了场景文本识别的发展。Wang 等人 使用基于滑动窗口的检测器来检测字符,然后对每个字符进行分类。Bissacco 等人 结合 DNN 和 HOG 特征,并使用字符分类构建文本提取系统。Liao 等人 提出了以两阶段方式结合单次检测器和文本识别器 的 TextBoxes。然而,上述方法将检测和识别视为独立的任务,而两个任务之间没有信息交换。
-
端到端文本识别。最近,研究人员尝试将检测和识别结合到一个系统中。Li 等人 将检测和识别统一到一个端到端可训练场景文本识别框架中。FOTS 使用单阶段检测器生成旋转框,并采用 RoIRotate 将定向文本特征采样到水平网格中以连接检测和识别。He 等人 提出了一个使用基于注意的识别器的类似框架。
-
对于任意形状场景文本识别任务,Mask TextSpotter 系列 通过使用字符分割分支来提高识别器的性能,无需显式校正即可解决问题。 TextDragon 通过 RoISlide 将两个任务结合起来,RoISlide 是一种将文本实例的预测段转换为水平特征的技术。Wang 等人 采用 Thin-Plate-Spline 变换来校正特征。 ABCNet 及其改进版本 ABCNet v2 使用 BezierAlign 将任意形状的文本转换为规则文本。这些方法通过使用校正模块将检测和识别统一到端到端可训练系统中,取得了巨大进步。秦等人 提出 RoI Masking 来提取任意形状文本识别的特征。与 [Towards unconstrained end-to-end text spotting] 类似,PAN++ 基于更快的检测器 。 AE TextSpotter 使用识别结果通过语言模型来指导检测。 虽然通过共享骨干网络显著提高了文本识别的性能,但上述方法既没有将识别损失反向传播到检测器,也没有在识别器中使用检测特征。 因此,检测器和识别器仍然相对独立,无需联合优化。最近,Zhong 等人 [Arts: Eliminating inconsistency between text detection and recognition with auto-rectification text spotter] 提出了 ARTS,它使用空间变换网络 (STN) 将识别损失的梯度传递给检测器,展示了文本识别中检测和识别之间的协同作用。
Methodology
-
SwinTextSpotter 的整体架构如下图 所示,由四个部分组成:(1)基于 Swin-Transformer 的主干;(2)基于查询的文本检测器;(3)用于连接文本检测器和识别器的识别转换模块;(4)基于注意机制的识别器。
-
-
所提出的 SwinTextSpotter 的框架。灰色箭头表示从图像中提取特征。绿色箭头和橙色箭头分别表示检测阶段和识别阶段。检测头的输出在 K 个阶段中进行细化。第 K 个阶段的输出检测作为识别阶段的输入。
-
-
如上图 中绿色箭头所示,在检测的第一阶段,我们首先随机初始化可训练参数为边界框 b b o x 0 bbox_0 bbox0 和提议特征 f 0 p r o p f ^{prop}_0 f0prop 。 为了使提议特征包含全局信息,我们使用全局平均池化提取图像特征并将它们添加到 f 0 p r o p f ^{prop}_0 f0prop 中。然后我们使用 b b o x 0 bbox_0 bbox0 提取 RoI 特征。RoI 特征和 f 0 p r o p f ^{prop}_0 f0prop 被输入到具有动态头的 Transformer 编码器中。Transformer 编码器的输出被平坦化并形成提议特征 f 1 p r o p f ^{prop}_1 f1prop ,其将被输入到检测头以输出检测结果。边界框 b b o x k − 1 bbox_{k−1} bboxk−1 和提议特征 f k − 1 p r o p f ^{prop}_{k-1} fk−1prop 将作为后面第 k 阶段检测的输入。提议特征 f k p r o p f ^{prop}_k fkprop 通过将 RoI 特征与之前的 f k − 1 p r o p f ^{prop}_{k-1} fk−1prop 融合来反复更新自身,这使得提议特征保留了来自前几个阶段的信息。我们对总共 K 个阶段重复这种改进,类似于基于查询的检测器中的迭代结构。这种设计可以在尺寸和长宽比方面实现更稳健的检测 。第 3.2 节将介绍检测器的更多细节。
-
由于识别阶段(橙色箭头)对分辨率的要求比检测阶段更高,我们使用最后的检测阶段的输出框 b b o x K bbox_K bboxK 来获取分辨率是检测阶段四倍的 RoI 特征。为了与提议特征融合时特征的分辨率与检测器保持一致,我们对RoI特征进行下采样,得到三个大小依次递减的特征图,分别记为 { a 1 ; a 2 ; a 3 } \{a_1;a_2;a_3\} {a1;a2;a3}。然后我们通过融合最小的a3和提议特征 f K p r o p f^{prop}_K fKprop 得到检测特征 f d e t f_{det} fdet。识别阶段的检测特征 f d e t f_{det} fdet 包含了之前所有的检测信息。最后将 { a 1 ; a 2 ; a 3 } \{a_1;a_2;a_3\} {a1;a2;a3} 和检测特征 f d e t f_{det} fdet 送入识别转换和识别器生成识别结果。有关识别转换和识别器的更多细节分别在第3.3节和第3.4节中介绍。
-
模型设计的组成部分及作用
-
Dilated Swin-Transformer:作为骨干网络,提取图像特征,增强感受野,捕获文本实例之间的长距离依赖关系。在 Swin-Transformer 中引入了扩张卷积,提高了对文本区域的特征提取能力。在Swin-Transformer中插入扩张卷积层(增大感受野)和残差结构,解决文本行中字符间距较大时的特征关联问题。
-
Query-Based Detector:基于查询的文本检测器,将检测任务视为集合预测问题。使用可学习的提案框和提案特征,通过多阶段的细化过程,提高了对不同尺度和宽高比文本的检测能力。类似Sparse R-CNN,使用可学习的提议框(
bbox₀
)和特征(f₀^prop
)。通过6阶段迭代优化,每阶段利用Transformer编码器和动态头更新提议框与特征。通过Transformer编码和上采样生成掩码{M₁, M₂, M₃}
,加权融合特征后输入识别器。 -
Recognition Conversion (RC):将检测特征注入到识别阶段,抑制背景噪声,提高识别特征的区分度。通过 Transformer 编码器和上采样结构生成文本区域的掩码,并将这些掩码应用于识别特征,使识别器更专注于文本区域。检测特征
f^det
和多尺度特征{a₁, a₂, a₃}
。-
d₁ = TrE(f^det) # Transformer编码 d₂ = Eₐ(d₁) + a₂ # 上采样与特征相加 d₃ = Eₐ(d₂) + a₁ Mᵢ = Sigmoid(dᵢ) # 生成掩码 r₁ = M₁ ⊙ a₃ # 掩码加权 r₂ = M₂ ⊙ (Eₐ(r₁) + a₂) r₃ = M₃ ⊙ (Eₐ(r₂) + a₁) # 最终识别特征
-
-
Recognizer:对经过 RC 处理的特征进行序列建模,预测文本序列。采用双级自注意力机制(TLSAM),结合局部和全局的自注意力,有效提取细粒度特征。
-
-
Transformer与自注意力:
Attention(Q, K, V) = softmax(QKᵀ/√d_k)V
,建模全局上下文。集合预测与二分图匹配:使用匈牙利算法匹配预测与GT,最小化匹配损失。识别Beam Search或贪心解码生成文本序列。
Dilated Swin-Transformer
- 普通卷积以固定大小(例如 3×3)在局部进行操作,这导致连接远程特征的效率较低。然而,对于文本识别,对不同文本之间的关系进行建模至关重要,因为来自同一图像的场景文本具有很强的相似性,例如它们的背景和文本样式。考虑到全局建模能力和计算效率,我们选择带有特征金字塔网络(FPN)的 SwinTransformer 作为我们的主干。考虑到一行文本中单词之间存在空白,感受野应该足够大以帮助区分相邻文本是否属于同一文本行。为了实现这样的感受野,如下图 所示,我们在原始的 Swin-Transformer 中加入了两个扩张卷积层、一个普通卷积层和一个残差结构,这也将 CNN 的性质引入了 Transformer 。
-
-
设计的扩张 Swin-Transformer 的图示。 DC 指的是两个扩张卷积层、一个 vanilla 卷积层和一个残差结构。
-
A Query Based Detector
-
我们使用基于查询的检测器来检测文本。基于 Sparse R-CNN 的基于查询的检测器建立在 ISTR 之上,它将检测视为一个集合预测问题。我们的检测器使用一组可学习的提议框(替代 RPN 中的大量候选框)和一组可学习的提议特征(表示对象的高级语义向量)。该检测器根据经验设计为具有六个查询阶段。借助带动态头的 Transformer 编码器,后面的阶段可以访问前面阶段存储在提议特征中的信息 。通过多阶段的细化,该检测器可应用于任何规模的文本。
-
下图 显示了第 k 阶段检测头的架构。第 k −1 阶段的提议特征表示为 f k − 1 p r o p ∈ R N ; d f^{prop}_ {k−1}\in \R^{N;d} fk−1prop∈RN;d。在第 k 阶段,前一阶段产生的提议特征 f k − 1 p r o p f^{prop}_{k−1} fk−1prop 被输入到自注意力模块 MSAk 中,以对关系进行建模并生成两组卷积参数。因此,前几个阶段的检测信息被嵌入到卷积中。以先前的提议特征为条件的卷积用于编码 RoI 特征。使用 RoIAlign ,通过前一个阶段的检测结果 b b o x k − 1 bbox_{k-1} bboxk−1 提取 RoI 特征。卷积的输出特征被输入到线性投影层以产生下一阶段的 f k p r o p f ^{prop}_k fkprop 。随后将 f k p r o p f ^{prop}_k fkprop 输入预测头以生成 bboxk 和 maskk。为了减少计算量,通过主成分分析将二维掩码转换为一维掩码向量,因此 maskk 是一维向量。
-
-
检测中第 k 个阶段的说明。 f k − 1 p r o p f^{prop}_{k−1} fk−1prop 是上一个阶段输出的提议特征。MSAk 指的是第 k 个阶段的多头注意力。 f k p r o p f^{prop}_k fkprop 将作为下一个阶段的输入。
-
-
当k=1时, b b o x 0 bbox_0 bbox0 和 f 0 p r o p f^{prop}_0 f0prop 是随机初始化的参数,是第一阶段的输入,在训练过程中,这些参数通过反向传播进行更新,学习文本高级语义特征的归纳偏差。我们将文本检测任务视为集合预测问题。正式地,我们使用二分匹配来匹配预测和基本事实。匹配成本变为:
-
L m a t c h = λ c l s ⋅ L c l s + λ L 1 ⋅ L L 1 + λ g i o u ⋅ L g i o u + λ m a s k ⋅ L m a s k L_{match} = λ_{cls}·L_{cls}+λ_{L1}·L_{L1}+λ_{giou}·L_{giou}+λ_{mask}·L_{mask} Lmatch=λcls⋅Lcls+λL1⋅LL1+λgiou⋅Lgiou+λmask⋅Lmask
-
其中 λ 是用于平衡损失的超参数。 Lcls 是焦点损失 。回归边界框的损失是 L1 损失 LL1 和广义 IoU 损失 Lgiou 。我们按照 [Istr: End-to-end instance segmentation with transformers] 计算掩码损失 Lmask,它计算预测掩码和地面实况之间的余弦相似度。检测损失与匹配成本相似,但我们使用 L2 损失和骰子损失来代替 [Istr] 中的余弦相似度。
-
Recognition Conversion
-
为了更好地协调检测和识别,我们提出了识别转换(RC),将检测头的特征空间注入识别阶段,如下图 所示。RC 由 Transformer 编码器 和四个上采样结构组成。RC 的输入是检测特征 f d e t f_{det} fdet 和三个下采样特征 { a 1 ; a 2 ; a 3 } \{a_1;a_2;a_3\} {a1;a2;a3}。
-
检测特征被送入Transformer编码器 T r E ( ) T rE() TrE(),使前面检测阶段的信息与 a3 进一步融合。然后通过上采样操作Eu() 和Sigmoid函数 φ() 的堆叠,生成针对文本区域的三个掩码 { M 1 ; M 2 ; M 3 } \{M_1;M_2;M_3\} {M1;M2;M3}:
-
-
利用掩码 { M 1 ; M 2 ; M 3 } \{M_1;M_2;M_3\} {M1;M2;M3}和输入特征 { a 1 ; a 2 ; a 3 } \{a_1;a_2;a_3\} {a1;a2;a3},我们根据以下流程进一步有效地整合这些特征:
-
-
其中 { r 1 ; r 2 ; r 3 } \{r_1;r_2;r_3\} {r1;r2;r3}表示识别特征。r3 是下图 中的融合特征,最终以最高分辨率发送到识别器。如图 中的蓝色虚线所示,识别损失 L r e g L_{reg} Lreg 的梯度可以反向传播到检测特征,从而使 RC 能够通过识别监督隐式地改进检测头。
-
-
识别转换的详细结构。
-
-
一般来说,为了抑制背景,融合特征会乘以检测头预测的 maskK(在 Lmask 的监督下)。然而,由于检测框不够紧密,背景噪声仍然会留在特征图中。这个问题可以通过提出的 RC 来缓解,因为 RC 使用检测特征来生成紧密的掩码来抑制背景噪声,除了检测损失之外,还受到识别损失的监督。如上图 右上角所示,M3 比 maskK 抑制了更多的背景噪声,其中 M3 在文本区域的激活程度较高,在背景中的激活程度较低。因此,RC 生成的掩码 { M 1 ; M 2 ; M 3 } \{M_1;M_2;M_3\} {M1;M2;M3}将应用于识别特征 { r 1 ; r 2 ; r 3 } \{r_1;r_2;r_3\} {r1;r2;r3},使识别器更容易集中在文本区域。
-
有了 RC,识别损失的梯度不仅会回流到骨干网络,还会流向提议特征。通过检测监督和识别监督的优化,提议特征可以更好地编码文本的高级语义信息。因此,提出的 RC 可以激励检测和识别之间的协调。
-
class RecognitionConversion(nn.Module): def __init__(self, d_model=256): super().__init__() self.encoder = nn.TransformerEncoderLayer(d_model, nhead=8) self.upsample = nn.Upsample(scale_factor=2, mode='bilinear') def forward(self, f_det, a1, a2, a3): d1 = self.encoder(f_det) d2 = self.upsample(d1) + a2 d3 = self.upsample(d2) + a1 M1 = torch.sigmoid(d1) M2 = torch.sigmoid(d2) M3 = torch.sigmoid(d3) r1 = M1 * a3 r2 = M2 * (self.upsample(r1) + a2) r3 = M3 * (self.upsample(r2) + a1) return r3
Recognizer
-
在特征图上应用 RC 后,背景噪声得到有效抑制,从而可以更精确地限制文本区域。这使得我们仅使用序列识别网络即可获得良好的识别结果,而无需使用 TPS 、RoISlide 、Bezier-Align 等校正模块或 MaskTextSpotter 中使用的字符级分割分支。为了增强细粒度特征提取和序列建模,我们采用受 [Focal self-attention for local-global interactions in vision transformers] 启发的双层自注意机制作为识别编码器。双层自注意机制 (TLSAM) 包含针对局部邻域区域和全局区域的细粒度和粗粒度自注意机制。 因此,它可以有效地提取细粒度特征,同时保持全局建模能力。至于解码器,我们只需遵循 MaskTextSpotter 并使用空间注意模块 (SAM) 。识别损失如下:
-
L r e g = − 1 T ∑ k = 1 T l o g p ( y i ) L_{reg}=-\frac1T\sum^T_{k=1}logp(y_i) Lreg=−T1k=1∑Tlogp(yi)
-
其中 T 是序列的最大长度,p(yi) 是序列的概率。
-
-
Transformer 编码器:利用自注意力机制捕获文本实例之间的长距离依赖关系,增强特征表示能力。动态头:生成基于先前提案特征的卷积参数,使检测器能够适应不同尺度的文本。Recognition Conversion:通过生成文本区域的掩码,抑制背景噪声,提高识别特征的区分度。双级自注意力机制:结合局部和全局的自注意力,有效提取细粒度特征,增强序列建模能力。
-
文本检测和识别的后处理:对于文本检测:非极大值抑制 (NMS)去除重复的检测框,保留最优的检测结果。对检测到的文本区域进行微调,提高定位精度。对于文本识别:使用语言模型对识别结果进行优化,提高文本序列的准确性。根据具体应用场景,对识别结果进行格式化处理,如去除特殊字符、纠正拼写错误等。
-
检测损失:**分类损失 (Lcls)**使用 Focal Loss,减少易分类样本的影响,聚焦于难分类样本。**回归损失 (LL1 和 Lgiou)**使用 L1 损失和广义 IoU 损失,回归边界框坐标。**掩码损失 (Lmask)**计算预测掩码与真实掩码之间的余弦相似度。
-
识别损失:**序列预测损失 (Lreg)**使用交叉熵损失,计算预测文本序列与真实文本序列之间的差异。Beam Search或贪心解码生成文本序列。
-
模型设计简洁,不需要字符级注释和专门的校正模块,具有良好的泛化能力和鲁棒性。SwinTextSpotter 在多个公共基准测试中表现出色,特别是在任意形状文本和多语言文本的检测和识别任务中。
-
两阶段自注意力编码器
-
class TLSAM(nn.Module): def __init__(self, d_model=256): super().__init__() # 局部注意力(窗口内) self.local_attn = nn.MultiheadAttention(d_model, num_heads=8, window_size=5) # 全局注意力 self.global_attn = nn.MultiheadAttention(d_model, num_heads=8) def forward(self, x): local_feat = self.local_attn(x, x, x)[0] global_feat = self.global_attn(local_feat, local_feat, local_feat)[0] return global_feat
-
Experiments
- 我们在各种场景文本基准数据集上进行了实验,包括多方向场景文本基准数据集 RoIC13 和 ICDAR 2015 、多语言数据集 ReCTS 和 Vintext ,以及两个任意形状的场景文本基准数据集 Total-Text 和 SCUT-CTW 1500 。在 Total-Text 上进行了消融研究,以验证我们提出的方法的每个组件。
Implementation Details
- 我们遵循 [Mango: A mask attention guided one-stage scene text spotter] 中的训练策略。首先,在 Curved SynthText 、ICDAR-MLT 和相应数据集上对模型进行预训练,进行 450K 次迭代。初始化学习率为 2:5 × 10−5,在第 380K 次迭代时降至 2:5×10−6,在第 420K 次迭代时降至 2:5×10−7。然后,我们在 Total-Text、ICDAR 2013 和 ICDARMLT 上对预训练模型进行 80K 次迭代联合训练,在 60K 时衰减为十分之一。最后,我们在相应的数据集上对联合训练的模型进行微调。在中文和越南语上训练模型。
- 我们提取 4 个特征图,分辨率分别为输入图像的 1/4、1/8、1/16、1/32,用于文本检测和识别。 我们使用 8 的图像批量大小来训练模型。使用以下数据增强策略:(1) 随机缩放;(2) 随机旋转;(3) 随机裁剪。训练期间还应用了其他策略,例如随机亮度、对比度和饱和度。
Datasets
- 我们使用以下数据集:Curved SynthText 是任意形状场景文本的合成数据集。它包含 94,723 张多方向文本图像和 54,327 张弯曲文本图像。ICDAR 2013 是 2013 年提出的场景文本数据集。它包含 229 张训练图像和 233 张测试图像。ICDAR 2015 于 2015 年建立。 它包含 1,000 张训练图像和 500 张测试图像。ICDAR 2017 是一个多语言文本数据集。它包含 7,200 张训练图像和 1,800 张验证图像。我们只选择包含英文文本的图像进行训练。ICDAR19 ArT 是任意形状文本的数据集。它包含 5,603 张训练图像。ICDAR19 LSVT 是一个包含 30,000 张训练图像的大量中文数据集。Total-Text 是任意形状场景文本的基准。它包含 1,255 张训练图像和 300 张测试图像。单词级多边形框作为注释提供。SCUT-CTW1500 是一个文本行级任意形状场景文本数据集。 它包含 1,000 张训练图像和 500 张测试图像。 与 Total-Text 相比,该数据集包含更密集和更长的文本。ReCTS 包含 20,000 张训练图像和 5,000 张测试图像。它还提供字符级边界框,但我们的方法未使用这些边界框。VinText 是最近提出的越南语文本数据集。它包含 1,200 张训练图像和 500 张测试图像。
Comparisons with State-of-the-Art methods
-
除特殊情况外,表中所有数值均为百分比。多方向和多语言数据集。我们首先在 ICDAR 2015 上进行实验,展示了 SwinTextSpotter 在方向场景文本上的优势。下表显示,SwinTextSpotter 在 ICDAR 2015 上取得了最佳强词典结果,而无需使用 ABCNet v2 和 MaskTextSpotter v3 使用的字符级注释。
-
-
ICDAR 2015 上的端到端识别结果。“S”、“W”和“G”分别代表使用“强”、“弱”和“通用”词典进行识别。
-
-
我们还在 RoIC13 数据集上进行了实验,以验证 SwinTextSpotter 的旋转稳健性。端到端识别结果如下表 所示。无论是在旋转角度 45° 数据集中还是在旋转角度 60° 数据集中,SwinTextSpotter 都可以在 H 均值度量方面达到最佳水平。
-
-
RoIC13 上的端到端识别结果。P、R、H 分别代表准确率、召回率和 Hmean。
-
-
我们的方法在旋转角度 45° 时的 H 均值明显优于 Mask TextSpotter v3 1.5%,在旋转角度 60° 时明显优于 1.3%。除了英语,我们还在中文数据集 ReCTS 和越南语数据集 VinText 上进行了实验,以验证 SwinTextSpotter 的通用性。如下表 所示,对于 ReCTS,我们的方法在 1-NED 上比仅进行单词级标注的 ABCNet v2 高出 9.8%。SwinTextSpotter 的 1NED 比需要额外字符级标注的 SOTA 方法 AE-TextSpotter 高 0.7%。
-
-
ReCTS 上的端到端文本识别结果和检测结果。
-
-
对于 VinText,端到端结果如下表 所示,“D” 表示使用字典进行识别器的训练。SwinTextSpotter 在 VinText 上的表现也优于以前的方法,表明我们方法具有泛化能力。值得注意的是,对于上述任务,我们不使用字典来训练识别器,就像ABCNet+D和Mask TextSpotter v3+D一样。
-
-
VinText 上的端到端文本识别结果。ABCNet+D 意味着将 [Dictionary-guided scene text recognition] 中提出的方法添加到 ABCNet。Mask Textspotter v3+D 也是如此。
-
-
这三个基准的定性结果如下图 ©(d)(e)(f) 所示。
-
-
我们的方法的可视化结果。白色文本代表正确结果;红色文本代表错误结果;蓝色文本表示文本实例的 GT 被标记为“不关心”。屏幕上的最佳视图。
-
-
不规则文本。我们在两个任意形状的场景文本数据集(Total-Text 和 SCUT-CTW1500)上进行了检测和端到端场景文本识别任务的实验。在文本检测任务中,表 5 和表 6 中的结果表明,SwinTextSpotter 在两个数据集上都可以达到 88% 的 H 均值,在 Total-Text 和 SCUT-CTW1500 上分别比之前最先进的方法高出 1.0% 和 3.3%。对于端到端场景文本识别任务,根据表 5,SwinTextSpotter 在 TotalText 上的表现明显优于之前的方法,F 测量值为 74.3%,比 ABCNet v2 高 3.9%,比 MANGO 高 1.4%。
-
-
端到端文本识别结果和 Total-Text 上的检测结果。SwinTextSpotter-Res 表示使用带有 FPN 的 ResNet50 作为骨干。“None”表示不使用词典。“Full”表示我们使用测试集中出现的所有单词。
-
-
此外,为了与以前的方法进行公平比较,我们用 ResNet-50 替换了 Dilated SwinTransformer 主干,性能仍然与最佳结果相当(我们的方法为 72.4%,MANGO 为 72.9%)。然而,在 SCUT-CTW1500 上,如表 6 所示,虽然我们的方法可以在文本检测上取得最佳性能,但端到端文本识别结果仍然存在差距。我们将在第 4.5 节中讨论和分析这种现象。一些定性结果如上文图 (a)(b) 所示。
-
-
端到端文本识别结果和 SCUT-CTW1500 上的检测结果。“None”表示不使用词典。“Full”表示我们使用测试集中出现的所有单词。
-
Ablation Studies
-
为了评估所提出的组件的有效性,我们对 Total-Text 进行了消融研究。ResNet50 用作基线主干。在消融研究中,我们仅在 Curved SynthText、ICDAR-MLT 和相应数据集上训练 SwinTextSpotter 的不同变体,作为第 4.1 节中描述的第一阶段。
-
识别转换。如下表 所示,使用 RC,检测和端到端场景文本识别的结果分别可以提高 3.0% 和 6.9%。RC 大大提高了检测器和识别器的性能。这主要是因为 RC 可以为文本区域生成更具判别性的特征,从而提高文本识别的性能,从而使文本检测器受益。
-
-
未进行微调的 Total-Text 消融研究。使用 ResNet-50 作为基线主干。TLSAM 代表两级自注意力机制
-
-
扩张型 Swin-Transformer。我们还比较了不同骨干模型的性能。使用 SwinTransformer 的模型在端到端结果上比 ResNet-50 提高了 2.9%,但在检测方面没有任何改进。将扩张卷积合并到 SwinTransformer 中可以进一步将检测提高 0.7%,在端到端结果上提高 0.5%。
-
两级自注意力机制。在上表中,我们进一步进行了实验以探索细粒度特征的影响。扩张型 Swin-Transformer 在捕获细粒度特征方面表现不佳,而两级自注意力机制可以有效弥补这一不足。两级自注意力机制对细粒度特征的增强可以分别使文本检测和端到端文本识别结果提高 0.8% 和 0.9%。
Limitation and Discussion
- 长任意形状文本。我们知道,长任意形状文本需要高分辨率特征图才能识别。当特征图变大时,识别器中的注意力图也会扩大。 较大的注意力图可能会导致识别器不匹配,从而导致 SCUT-CTW1500 上的端到端文本识别性能较低。长任意形状的数据量有限。我们的识别解码器需要比 1D-Attention 和 CTC 更多的训练数据,因此它还没有得到很好的训练。然而,表 6 中显示的 1-NED 结果和“完整”结果缩小了我们的方法与 ABCNet v2 之间的差距,这表明错误主要发生在个别字符中。
Conclusion
- 在本文中,我们提出了 SwinTextSpotter。据我们所知,SwinTextSpotter 是首次使用基于 Transformer 的方法和集合预测方案进行端到端场景文本识别的成功尝试。该模型的核心思想是将文本识别作为检测的一部分,它将检测和识别紧密耦合,而不是仅在主干中共享信息。所提出的识别转换通过使检测结果相对于识别损失可微分,实现了识别特征中的背景噪声抑制。这种设计通过删除校正模块大大简化了文本识别器框架,并实现了检测和识别模块的联合优化,而无需字符级注释即可获得更好的识别性能。在公共基准上进行的大量实验表明,SwinTextSpotter 可以在任意形状文本和多语言文本的端到端场景文本识别中实现卓越的性能。