论文阅读笔记
去年在ECCV上发表的《Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting》这篇文章,在好几个公众号上都看到过,而且称是史上最强的端到端文本识别模型。这次借着刚刚开始读论文的机会,打算好好的读下这篇文章。有可能的话,自己水平够的话,就尽量复现下。
该内容采用: 摘录重点部分+提出问题的方式,来阅读该篇论文。 后面会逐一的解答提出来的的问题。
make decision
- 论文名称:Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting
中文翻译过来就是 用于鲁棒场景文本识别的分割建议网络, 这表明该网络针对复杂场景下的不同文本有更强的鲁棒性
- 作者:Minghui Liao, Guan Pang, Jing Huang, Tal Hassner, Xiang Bai
- 机构:华中科技大学;Facebook AI
- 是否精读:是
- 做出决定日期:2021-4-10
step1:提出读过摘要后的问题
RPN在很大程度上依赖于手工设计的anchors(这样操作对于处理极端长宽比以及不规则的文本实例时存在困难),而且它的目标建议框用轴向对齐的矩形来表示(对于密集文本,会存在一个目标建议框会存在多个相邻实例),基于以上问题作者团队提出了Mask TestSpotter v3,很明显,作者提出的分割建议网络(Segmentation Proposal Network, SPN)就是解决RPN存在的问题,SPN是*的anchor,可以准确的表示任意形状的目标建议框。
- Q1: SPN中的 masked RoI features 中的masked是怎么理解的?他是怎样解耦SPN产生的精确建议框相邻的文本实例的?
step2:读Introduction
引言开头介绍端到端场景文本识别定义,说白了就是 文本检测和文本识别两种任务的结合。
然后介绍了场景文本检测的三大挑战:文本不同方向,极端纵横比和不同形状。各个鲁棒性是精确的场景文本定位是必须的,这也是为什么题目会有鲁棒性robust这个单词。
又提到了Mask TextSpotter的v1,v2版本,虽然他们可以处理不同方向和不同形状的分散文本实例,但是他们都是采用RPN来生成目标建议框。存在摘要里所说的两大缺点。
这里展示了基于RPN和基于SPN两种生成目标建议框的对比, 很明显,spn生成的目标建议框更准确。作者就是将SPN引入到Mask TextSpotter v2中,提出了Mask TextSpotter v3。
- Q2: SPN具体是怎么工作的呢?它相比于RPN结构上有什么不同?
在引言的最后,作者总结了他们的贡献主要有三方面:
- 提出了SPN分割提案网络结构,这是首个端到端可训练文本识别的任意形状目标建议框生成器
- 提出了将多边形建议框应用于RoI特征的hard RoI masking
- 所提出的Mask TextSpotter v3网络显著提高了旋转,长宽比和形状的鲁棒性。
- Q3: hard RoI masking 是如何理解的?怎样实现的?
step3:读 Conclusion
还是在强调在三大挑战中具有鲁棒性。在不同选中角度的ICDAR 2013数据集,和具有长文本行的MARA-TD500数据集和具有不同文本形状的总文本数据集上,对Mask TextSpotter v3的旋转、纵横比和形状变化具有鲁棒性。而且,在IC15数据集上的结果表明,本文提出的TextSpotter v3对小文本实例的检测和识别也具有鲁棒性。
step4:读 Related works
场景文本检测能够分为两类:two-stage和end-to-end,然后分别介绍了这两类领域中现阶段的相关算法。
然后开始介绍Mask TextSpotter v1是第一款端到端可训练的任意形状场景文本识别的方法。它是基于Mask RCNN的检测模块和用于识别的字符分割模块组成。Mask TextSpotter v2 通过应用空间注意模块进行识别,缓解了在Mask TextSpotter v1中存在的字符级标注问题,显著提高了性能。
- Q4:之前没有接触过,在这里弱弱提一问,Mask RCNN的是什么样的网络结构?
- Q5:Mask TextSpotter v2 中的空间注意模块,是怎么样组成的?
最后介绍了基于分割的场景文本检测框器,与以往的基于分割的场景文本检测器采用多个额外模块进行检测任务相比,作者的方法侧重于使用分割网络生成建议框,以实现端到端场景文本识别模型
step5:读 Methodology
从第一段我们得知 Mask TextSpotter v3由 backbone为resNet-50,用于生成目标建议框的SPN、用于refining proposals的Fast-RCNN,用于准确检测的文本实例分割模块、用于识别的字符分割模块和用于识别的空间注意模块组成。如下图所示,它为目标建议框提供了多边形表示,并消除了RoI特征的附加特征,从而实现了准确的检测和识别结果
- Q6: 该网络是怎样对目标建议框提供了多边形表示,并消除了RoI特征的附加特征的
图中F代表的是为了进行分割的融合特征图,
- Q7:其实从上图中看的不是很清楚, 该模型的各个模块无法准确的对应到图中。
3.1 Segmentation proposal network
SPN采用U-net结构,使其对尺度具有鲁棒性。 与基于FPN(特征金字塔)的RPN从多个阶段产生不同尺度的目标建议框不同, SPN从 segmentation masks 产生目标建议框,从连接了各种尺度的特征映射的融合特征映射F中进行预测。
F的大小为(H和W为原图像的高度和宽度)
H
4
×
W
4
\frac{H}{4} ×\frac{W}{4}
4H×4W
然后使用F做文本区域的预测,得到预测文本分割图S
预测文本分割图S的大小为(其取值范围为0~1)
1
×
H
×
W
1 × H × W
1×H×W
为了分类相邻的文本实例,基于分割的场景文本检测器通常会收缩文本区域。作者采用Vatti裁剪算法,通过裁剪d个像素来缩小文本区域。
其中偏移对象d可以确定为
d
=
A
(
1
−
r
2
)
L
d =\frac{ A(1 - r^2)}{L}
d=LA(1−r2)
A:代表文本区域的多边形的区域面积
L:代表文本区域的多边形的周长
r :收缩比, 文中根据经验设置为0.4
上图展示了分割标签的生成,左边:红色和绿色的多边形分别表示原始标注区域和缩小区域,右边: 为分割标签,黑色区域为0,白色区域为1。
接下来是建议框生成部分了:
给定了一个文本分割图S, 其值的范围为[0,1],首先将S进行二值化为一个二值映射B(这里需要注意的是B与S和输入图像的大小相同),然后将连通区域分组到二进制图B中,这些连通区域可以被认为是收缩的文本区域,文本分割标签已经收缩,可以使用Vatti算法对
d
^
\hat{d}
d^像素进行反裁剪,其中
d
^
\hat{d}
d^的计算公式为
d
^
=
A
^
×
r
^
L
^
\hat{d} =\hat{A}×\frac{\hat{r}}{\hat{L}}
d^=A^×L^r^
其中
A
^
\hat{A}
A^和
L
^
\hat{L}
L^表示预测的收缩文本区域的面积和周长。根据收缩比的值,将
r
^
\hat{r}
r^设置为3.0。
即使用DB(Real-time scene text detection with differentiable binarization,AAAI 2020)二值化得到多个文本区域,然后将连通的区域作为一个文本实例的收缩(这里是关键!),对其进行一定系数的膨胀操作,即得到了文本Proposal。
如上所述,SPN产生的目标建议框proposals可以精确的表示为多边形,即文本区域的轮廓。因此,SPN为具有极端长宽比和密集定向/不规则形状文本实例的文本行生成合适的建议框
- Q8:这里有一个不懂的地方就是为什么要缩小文本区域?得到收缩的文本区域后,为什么要进行反裁剪(膨胀操作)?该操作完了之后,为什么可以精确的表示为多边形?
3.2 Hard RoI masking
因为传统的RoI Align操作只支持轴向对齐的矩形边框,因此我们使用最小的,轴向对齐的多边形建议框来生成RoI特征,以保持RoI Align操作的简单性
- Q9: RoI Align操作是什么?轴向对齐又是什么意思?
在作者的方案中,精确的多边形的表示 被设计用来做proposals,因此,我们可以直接通过我们提出的hard RoI masking将proposal转换为RoI特征,
- Q10: hard RoI masking怎样将proposal转换为RoI特征的?
hard RoI masking将RoI特征与二值多边形mask相乘来抑制背景噪音和相邻文本实例,多边形mask M表示一个轴对齐的矩形二值图,在多边形区域均为1,在多边形区域外均为0。
其具体操作实现为:
假设
R
0
R_0
R0是RoI特征,M是多边形mask,他们的大小都是
32
×
32
32\times32
32×32,则masked RoI特征R可表示为
R
=
R
0
×
M
R=R_0\times M
R=R0×M
其中的乘法表示元素乘法。
采用hard RoI masking操作后,在我们的 masked RoI特征中抑制了背景区域或者相邻文本实例,显著降低了检测和识别的难度和错误。
3.3 Detection and recognition
作者之所以会改进Mask TextSpotter v2是因为第一该网络是当时最先进,具有竞争优势的检测识别模型,第二由于该网络是基于RPN的场景文本识别模型中最具代表性的方法,作者可以对比,验证V3中SPN具有有效性和鲁棒性。
在检测环节中,将hard RoI masking生成的 masked RoI特征输入到 Fast R-cnn模块以进一步细化定位,输入到**文本分割模块(the text instance segmentation)来进行精确分割. 然后采用字符分割模块(character segmentation module)和空间注意模块(spatial attention module)**进行识别。
3.4 Optimization
该损失函数由于有些东西没有接触过,看不懂,先贴出来,以后慢慢研究。
step6: 总结反思
经过对这篇论文仔细研读,对其网络架构有了一定的了解,以及其各个模块上有何特性有了认识。
首先是图片输入进来以后进入SPN模块,生成proposal,然后在进入Hard RoI masking模块,对背景噪声或临近的文本实例进行抑制,最后进行检测和识别。(这只是现阶段的理解,而且理解的不是很深,有些问题还是没有搞懂,)
- Q11: RoI特征是怎么出来的
- A11: 由多边形proposal生成的,
接下来是对文中问题的整理,
- Q1: SPN中的 masked RoI features 中的masked是怎么理解的?他是怎样解耦SPN产生的精确建议框相邻的文本实例的?
- Q2: SPN具体是怎么工作的呢?它相比于RPN结构上有什么不同?
- Q3:hard RoI masking 是如何理解的?怎样实现的?
- Q4:之前没有接触过,在这里弱弱提一问,Mask RCNN的是什么样的网络结构?
- Q5:Mask TextSpotter v2 中的空间注意模块,是怎么样组成的?
- Q6: 该网络是怎样对目标建议框提供了多边形表示,并消除了RoI特征的附加特征的
- Q7:其实从上图中看的不是很清楚, 该模型的各个模块无法准确的对应到图中。
- Q8:这里有一个不懂的地方就是为什么要缩小文本区域?得到收缩的文本区域后,为什么要进行反裁剪(膨胀操作)?该操作完了之后,为什么可以精确的表示为多边形?
- Q9: RoI Align操作是什么?轴向对齐又是什么意思?
- Q10: hard RoI masking怎样将proposal转换为RoI特征的?
- Q11:resnet-50 是在网络中的哪里出现的?
暂存问题,明天解决。