《SPCNet:Scene Text Detection with Supervised Pyramid Context Network》论文笔记
代码地址(unofficial):SPCNet
1. 概述
导读:这篇文章是在Mask RCNN的基础上进行改进得到的新文本检测算法。其具体改进体现在引入TCM(Text Context Module)与Re-Score Module。前者帮助补充与获取原Mask RCNN的proposal中缺失的全局信息,减少误检。后者通过TCM模块中的语义信息映射的得分与原Mask RCNN的分类置信度混合,帮助提升文本置信度的可信度与准确性。性能方面,其在ICDAR 2013、ICDAR 2015与ICDAR 2017 MLT数据集上的F-measure分别为92.1%、74.1%与82.9%。
这篇文章改进自Mask RCNN,而单纯的将Mask RCNN迁移到文本检测任务中,会面临如下的问题:
- 1)**缺少上下文信息:**由于Mask RCNN是在proposal出来的区域内进行instance Segmentation 这样是无法很好考虑到proposal区域与周围区域的关系,也无法使用周围区域的信息来帮助排除错误的检测,这就使得文本检测的错误率较高;
- 2)分类置信度的不准确:在Mask RCNN中将分类置信度作为检测结果的分数,但是proposal的区域是矩形,在文本检测的时候可能会存在较多的背景等无关区域,这就使得置信度很低;
下面的图1是文章提出的Re-Score方法与传统分类置信度方法的对比,可以看出文章提出的新的置信度计算方法更为准确。
这篇文章的主要贡献可以归纳为如下2个方面:
- 1)提出了TCM与Re_Score Module,有效减少误检情况;
- 2)提出了有效监测任意形状文本的检测器;
2. 方法设计
2.1 网络结构
文章的网络结构如下图2所示:
从上图中可以看出文章采用的backbone是FPN,在FPN的每一层上使用TCM模块作为文本特征增强,右边的两个小图分别是RCNN&Mask头与TCM模块的结构。
2.2 TCM模块
TCM模块有两个子模块构成,分别是PAM(Pyramid Attention Module)和PFM(Pyramid Fusion Module),这两个子模块组合在一起有效增强了文本信息的表达。
PAM子模块
这个模块设计的思路来自于SSTD,它的分割部分是由2个 3 ∗ 3 3*3 3∗3的卷积与1个 1 ∗ 1 1*1 1∗1的卷积(输出为2个channel,前景与背景)构成,例如,输入图像是 512 ∗ 512 512*512 512∗512的,那么stage2上的特征图就是 S 2 ∈ R 128 ∗ 128 ∗ 256 S_2\in R^{128*128*256} S2∈R128∗128∗256的。之后在输出2个channel的数据上做chanel-wise的softmax操作,其过程可以描述为:
m a p = T C M ( S 2 ) map=TCM(S_2) map=TCM(S2)
s a l i e n c y _ m a p = e S o f t m a x ( m a p ) saliency\_map=e^{Softmax(map)} saliency_map=eSoftmax(map)
softmax之后的信息会被映射到256的channel上与原输入特征做点乘:
s a l i e n c y _ m a p ∗ = B r o a d c a s t ( s a l i e n c y _ m a p ) saliency\_map^*=Broadcast(saliency\_map) saliency_map∗=Broadcast(saliency_map)
S 2 ∗ = s a l i e n c y _ m a p ∗ ⊙ S 2 S_2^*=saliency\_map^*\odot S_2 S2∗=saliency_map∗⊙S2
其操作部分就是下图中的黄色块儿代表的部分。
PFM子模块
这部分是将使用分割结果增强的文本特征与原输入特征进行融合,从而兼容背景与文本区域的特征,其表达为:
G T F = C o n v 3 ∗ 3 ( S 2 ) GTF=Conv_{3*3}(S_2) GTF=Conv3∗3(S2)
S 2 ^ = S 2 ∗ + G T F \hat{S_2}=S_2^*+GTF S2^=S2∗+GTF
对应就是上面图的绿色部分。
2.3 Re-Score Module
这部分是将RCNN头的分类置信度与TCM中的分割置信度组合起来得到的新的检测区域评估置信度,不同来源的两个部分其对应关系如下图所示:
对于2分类的文本检测任务,其RCNN头的分类置信度为 C S = { S i 0 c s , S i 1 c s } CS=\{S_{i0}^{cs},S_{i1}^{cs}\} CS={ Si0cs,Si1cs},而TCM中的分割置信度表示为 I S = { S i 0 i s , S i 1 i s } IS=\{S_{i0}^{is},S_{i1}^{is}\} IS={ Si0is,Si1is},之后通过Softmax操作计算总的置信度:
s i = e ( S i 0 c s + S i 1 c s ) e ( S i 0 c s + S i 1 c s ) + e ( S i 0 i s + S i 1 i s ) s_i=\frac{e^{(S_{i0}^{cs}+S_{i1}^{cs})}}{e^{(S_{i0}^{cs}+S_{i1}^{cs})}+e^{(S_{i0}^{is}+S_{i1}^{is})}} si=e(Si0cs+Si1cs)+e(Si0is+Si1is)e(Si0cs+Si1cs)
而对应的IS区域是对应分割输出结果区域的均值,其计算为:
s i 1 i s = ∑ j p i j N s_{i1}^{is}=\frac{\sum_j{p_i^j}}{N} si1is=N∑jpij
2.4 网络损失函数
这里网络的损失函数定义为(具体权值配比文中没找到-_-||):
L = L r p n + λ 1 ⋅ L c l s + λ 2 ⋅ L b o x + λ 3 ⋅ L m a s k + λ 4 ⋅ L g t s L=L_{rpn}+\lambda_1\cdot L_{cls}+\lambda_2\cdot L_{box}+\lambda_3\cdot L_{mask}+\lambda_4\cdot L_{gts} L=Lrpn+λ1⋅Lcls+λ2⋅Lbox+λ3⋅Lmask+λ4⋅Lgts
前面的4项损失是原Mask RCNN自带的,最后的一项就是对应的分割损失(Softmax Loss):
L g t s = 1 N ∑ i − l o g ( e p j ∑ j e p j ) L_{gts}=\frac{1}{N}\sum_i{-log(\frac{e^{p_j}}{\sum_j{e^{p_j}}})} Lgts=N1i∑−log(∑jepjepj)
3. 实验结果
ICDAR 2017:
ICDAR 2015&2013:
消融实验:
还没有评论,来说两句吧...