Few Could Be Better Than All:Feature Sampling and Grouping for Scene Text Detection

前言

作者提出了一个简单的基于transformer的文本检测模型,该模型仅使用少量的feature进行文本检测,减少了背景干扰及计算量。在所有尺度的feature map上选取少量feature后,将其输入transformer中学习feature之间的关系,并将他们分成不同的组,每个组代表一个文本,并进一步计算文本位置。该模型不需要NMS等复杂的后处理,且性能达到了SOTA

论文: Few Could Be Better Than All:Feature Sampling and Grouping for Scene Text Detection

背景

传统的CNN检测算法依赖NMS等复杂的后处理,最近发展势头较好的基于Transformer的方法如DETR,对较小的目标检测性能较差且计算复杂高,如果使用分辨率较高的feature,会带来背景干扰并增加计算复杂度。作者认为,现有transformer方法计算所有像素之间的相关性是不必要的,因此,本文的算法首先选取和文本高度相关的特征,然后使用transformer来学习特征之间的关系,并将其进行分组,得益于transformer强大的注意力机制,每个分组能够正确关联到一个文本上,相比以往的算法,有如下优势:

  • 减少冗余的背景信息,提高效率
  • 使用transformer可以将特征正确分组,减少后处理
  • 特征采样和分组是端到端进行的,可以对检测性能进行联合优化

框架

结构

backbone为R50+FPN,首先对每个层次的特征经过Coord Conv + deformable pooling后进一步下采样到更小的scales(1/8,1/16,1/321/8,1/16,1/32),然后经过若干卷积层得到前景score map,然后从每个scale上选取top-NkN_k个特征,进行gather后形成一个特征序列,维度为(kNk,C)(\sum_k{N_k},C) ,然后进行特征分组

进行分组前,特征序列首先和位置编码进行concat,然后通过transforer encoder来学习特征点之间的关系,并隐式地将来自同一个文本的feature进行聚类,最后通过不同的head输出坐标及置信度信息

特征采样

多尺度特征提取:首先通过CoordConv在不同尺度的feature map上进行卷积:

f^k=Conv(fkCk)\widehat{f}_k=\operatorname{Conv}\left(f_k \oplus C_k\right)

fkf_k为Res50+FPN中不同尺度(1/4,1/8,1/161/4,1/8,1/16)的特征,CkRHk×Wk×2C_k \in \mathbb{R}^{H_k \times W_k \times 2}为归一化的坐标,经过卷积后,使用deformable ROI pooling对f^k\widehat{f}_k进行下采样,将特征进一步降低到更小的scale(1/8,1/16,1/321/8,1/16,1/32) ,得到f~k\tilde{f}_k

最后,作者构建了一个由卷积层和Sigmoid函数组成的打分网络来获得score map,即SkS_k,该网络每个尺度上的输出由二维高斯分布进行监督,来确保每个文本中心区域的分数最高

S={SkRHk×WkSk=S(f~k),k=0,1,2}\mathbf{S}=\left\{S_k \in \mathbb{R}^{H_k^{\prime} \times W_k^{\prime}} \mid S_k=\mathbb{S}\left(\tilde{f}_k\right), k=0,1,2\right\}

特征采样:得到score map后,在每个尺度上对score map进行排序,并对top-NkN_k个得分最高的f~k\tilde{f}_k进行采样,得到F\overline{\mathbf{F}}

F=[fˉnRCn=0,1,,N]\overline{\mathbf{F}}=\left[\bar{f}_n \in \mathbb{R}^C \mid n=0,1, \ldots, N\right]

最终,大量的feature最终减少到与文本强相关的部分前景特征

特征聚类

为了保留采样特征的位置信息,首先将特征上和位置编码进行concat,然后通过transformer encoder的注意力机制来隐式的聚类特征

Atth(F^)=softmax(Q(F^)K(F^)TC)V(F^)\operatorname{Atth}(\widehat{\mathbf{F}})=\operatorname{softmax}\left(\frac{Q(\widehat{\mathbf{F}}) K(\widehat{\mathbf{F}})^T}{\sqrt{C^{\prime}}}\right) V(\widehat{\mathbf{F}})

其中,F^RN×C\widehat{\mathbf{F}} \in \mathbb{R}^{N \times C'}为加入位置编码的特征,CC'为通道数。计算atten时的复杂度由O((HW)2C)O((HW)^2C')显著降低到O(N2C)O(N^2C')。输出的特征经过2个head,分别预测坐标以及是否为文本的置信度

优化函数

目标函数由三部分组成,检测loss、分类loss、以及特征选择loss,与DETR类似,预测结果和GT通过匈牙利算法进行匹配

L=λcL^class +λdL^det +λfLfs\mathcal{L}=\lambda_c \widehat{\mathcal{L}}_{\text {class }}+\lambda_d \widehat{\mathcal{L}}_{\text {det }}+\lambda_f \mathcal{L}_{f s}

分类loss:使用CE loss

L^class =1Nx[g^xlog(p^x)+(1g^x)log(1p^x)]\widehat{\mathcal{L}}_{\text {class }}=\frac{1}{N} \sum_x-\left[\widehat{g}_x \cdot \log \left(\widehat{p}_x\right)+\left(1-\widehat{g}_x\right) \cdot \log \left(1-\widehat{p}_x\right)\right]

检测loss:使用GWD loss来更好的平衡不同尺度文本的检测loss,由于尺度变化较大,最小的文本对loss贡献几乎没有,因此本文使用loss调整为:

L^det =1Nrx(11τ+f(d2(u^xt^x,t^xt^x)))\widehat{\mathcal{L}}_{\text {det }}=\frac{1}{N_r} \sum_x\left(1-\frac{1}{\tau+f\left(d^2\left(\frac{\widehat{u}_x}{\left|\widehat{t}_x\right|}, \frac{\widehat{t}_x}{\left|\widehat{t}_x\right|}\right)\right)}\right)

其中u^x\widehat{u}_x为预测框,t^x\widehat{t}_x为GT框,\left| * \right|为求面积操作,ff为非线性函数。如果预测任意形状的文本,则预测贝塞尔函数的控制点(2个head分别预测上下曲线),否则预测bbox

特征选择loss:为score map和目标高斯分布间的smooth L1 loss

Lfs=1NfkL1smooth {Sk,Skt},k=0,1,2,\mathcal{L}_{f s}=\frac{1}{N_f} \sum_k L 1_{\text {smooth }}\left\{S_k, S_k^t\right\}, k=0,1,2,

实验

数据集评测

多方向文本检测:在IC15和MSRA-TD500数据集上测试文本检测性能,与DETR类的算法相比,本文算法性能提升很大(83.7%->89.1%),与其他CNN类算法相比,在f-measure上也有1.7%的提升

弯曲文本检测:在Total-Text和CTW1500数据集上测试性能,较之前的SOTA提升约0.2%,由于预测的是贝塞尔曲线,在弯曲文本检测上,较现有的DETR类方法更加准确

多语言文本检测:在MLT和MTWI数据集上测试文本检测在不同语言上的表现,相比SOTA算法,在P/R/F指标上都有所提升

特征采样实验

为了验证特征采样的影响,作者做了一组消融实验:

  • 如#1、#2、#5所示,使用3个scale的feature,性能会大幅优于使用2个或1个scale时的性能
  • 如#3、#4、#5、#5所示,增加采样点数量,性能首先会提升,然后就趋于饱和,这是由于较少的采样点数没有采集到足够的特征,但较多采样点会引入噪声
  • 作者还测试了一种动态采样的方法,即将所有scale的feature按分数排序,取前25%作为采样点,但性能相比#5和#6没有较大提升,证明模型对超过#5中数量的采样点并不敏感
  • 如果将所有的feature输入encoder,会出现显存溢出的问题,即计算复杂度太高

与Transformer类的检测算法对比

首先作者和几个DETR类的算法在SynthText数据集上进行收敛速度的对比,发现本文的算法收敛速度远快于DETR。与另外2个算法相比,收敛速度领先不多,但性能要更好。

在经过fine-tuning后,本文算法在IC15和MLT17上获得了最好的性能

在IC15上测试FLOPS,本文的算法FLOPS更低且推理速度更快

Transformer结构

将transformer中的层替换为Swin Transformer层后,在IC15和MLT17上的性能有所提升

旋转目标检测

在DOTA数据集上测试本文算法的旋转目标检测的性能,在one-stage类算法中,本文的模型取得最好的性能,经过multi-scale测试后,本文模型取得了和SOTA相近的性能

限制

本文算法对存在重叠的文本检测效果不好,尽管encoder可以较好的学习feature间的attention,但重叠文本的feature关系较难学习,造成检测失败