1. 介绍
在 Mask TextSpotter 中, 作者借鉴了 Mask R-CNN 的思想来生成对象的形状掩码, 从而使得 MTS 能 检测 任意形状的文本.
除此之外, 区别于以往的 sequence-to-sequence 识别方法, MTS 通过 semantic segmentation (语义分割) 和 spatial attention (空间注意力机制) 来解决不规则文本的 识别问题
2. 结构
Mask TextSpotter 由四部分组成:
- 特征金字塔网络 (FPN) 作为主干
- RPN 来生成文本建议 (text proposal)
- Fast R-CNN 进行 bounding boxes regression
- mask branch 进行文本实例分割, 字符分割, 和文本序列识别
2.1 数据流动
在训练阶段, 先由 RPN 产生文本建议, 然后文本建议的 RoI 特征被喂到 Fast R-CNN 和 mask branch 来生成 1. 文本候选框 2. 文本实例分割图 3. 字符分割图 4. 文本序列
2.2 主干
自然图像中的文本大小各不相同, 为了在所有大小的文本上构建语义特征图, 作者应用了 ResNet50 作为主干. FPN 使用了一个 top-dowm 架构来融合来自单一尺度输入的不同分辨率的特征.
???
2.3 RPN
RPN 就是用一系列不同大小和长宽比的锚框来产生文本候选框 (即文本建议). 再用 RoI Align 来提取文本候选框的特征.
2.4 Fast R-CNN
Fast R-CNN 包括了分类任务和回归任务. 它主要的功能就是为文本检测提供精准的锚点位置和锚框尺寸. 它接收从 RoI Align 产生的 7 × 7 分辨率的输入.
2.5 Mask Branch
Mask branch 的作用是对任意形状的文本进行检测和识别. 它有三个任务, 包括 1. 文本实例分割 2. 字符分割 3. 文本序列识别
将在 3. 和 4. 中展开论述.
3. Text Instance and Character Segmentation
如图所示, 固定为 16×64 尺寸的 RoI 特征通过四个卷积层 (每个卷积层包含 3×3 的滤波器) 和 一个反卷积层 (2×2 的滤波器和步长), 然后喂给两个模块.
一个单通道的文本实例图由卷积层产生, 不管这个文本实例的形状是如何, 通过卷积层都可以给出精确的文本区域定位.
在字符分割模块中, 字符分割图由特征图直接产生.
???
4. Spatial Attentional Module (SAM)
因为字符分割有一些缺陷: 1. 需要字符级别的标注 2. 需要一种专门设计的后处理算法来从分割图中产生文本序列 3.不能从分割图中得到字符的顺序
而 SAM 可以有效克服这些缺点. 空间注意力模块以端到端的方式从二维特征图中解码文本序列, 以表示更好的形状.
因此在文字识别部分除了有 字符分割模块 , 作者还加入了 SAM 模块. 字符分割模块在像素级别预测字符 — 一种像素投票算法, 它根据最终的文本序列结果对像素进行分组和排列. SAM 通过二维和端到端的方式预测序列的形状.
SAM 工作流程如图所示, 首先, 接受一个特征图, 通过双线性内插值 (bilinear interpolation) 将大小调整为固定形状. 然后, 依次通过 卷积层 - max pooling layer - 卷积层. 最后, RNNs 和 SAM 共同作用, 产生文字序列.