ABCNet 论文阅读笔记

一、论文

《ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network》

二、代码

[ABCNet]:初始代码位置

[AdelaiDet]:最新代码位置,初始代码不再更新

三、创新点

之前的文本识别基本分两种类型:基于字符,基于分割。这些方法要么需要花费大量的精力去做字符级的数据标注,要么就是检测与识别分开,需要维护一个复杂的 pipeline。ABCNet 从数据标注、模型规模、推理速度等方面做出优化,主要的贡献有三点:

  1. 通过参数化的自适应贝塞尔曲线拟合任意形状的文本区域。因为文本检测肯定是必不可少的,而场景文本的形状变化多种多样,贝塞尔曲线拟合可以很好的应付这种变化,所需要的参数量固定而且比较少(三阶贝塞尔需要 8 个点)。
  2. 设计一个新的 BezierAlign 层来提取任意形状的文本特征。这个对齐跟目标检测中的对齐功能是一样的(MaskRCNN中的ROI-Align),找到了目标文本区域以后,需要提取区域里面的特征,该特征无需重复计算,直接从图像特征中抠出来就行。
  3. 优越的性能,速度实时,精度SOTA。

个人认为它的优越性主要体现在速度:创新点1所使用的自适应贝塞尔曲线拟合相比于传统的bbox表示方式,其计算开销几乎可以忽略;创新点2所设计的对齐层,它能精确提取文本特征,并且不会产生额外的计算开销,这也是对速度有益的。实际上检测中的文本拟合、识别中的特征对齐在之前的 text spotting 都有做,这也不是什么新思路,只是ABCNet所采用的的贝塞尔曲线效果更好、速度更快。

四、related work

文献 18 提出了第一个基于深度学习的端到端可训练的场景文本spot方法,该方法使用ROIPooling来将检测和识别的特征联合起来(其实就是对齐),但是它仅能识别水平文本。文献 19 是它的改进版本,提升了精度,但速度很慢。(这两篇文章都没有相关的开源代码)

文献 11 和文献 24(FOTS)提出了一个 anchor_free 的机制来提升训练和推理速度,为了能够从检测结果种提取矩形的特征,它们使用一个简单的采样逻辑,如:Text-Align-Sampling 和 RoI-Rotate,但这两种方法都不支持任意形状文本。(FOTS有开源代码,文献 11 没有)

文献 30(MaskTextSpotter,华科白翔老师团队,ECCV2018)提出了一个MaskTextSpotter 方法,它巧妙的利用了 mask-RCNN 和字符级别的标注来 spot 字符和文本实例。该方法极大地提升了任意形状场景文本spot的性能,然而字符级别的标注极其昂贵,使用合成数据很难拟合真实场景。文献 20 是它的改进版本(TPAMI2019),有效避免了字符级别标注的依赖,但它依赖于区域候选网络,因此推理速度比较慢。(有开源代码

文献 36(Text-Net)能够产生出矩形的 bbox,然后将 bbox 送入识别分支进行文本识别。尽管该方法能够识别任意形状文本,但是由于来自于矩形框,文本识别精度受限。(没有开源代码)

文献 33 提出了一个使用 ROI Masking 的方法来处理任意形状文本区域,然而,该方法的结果会被外部像素轻易影响。除此之外,分割分支增加了计算消耗,另外,还引入了多边形拟合,对结果进行平滑处理的附加时间消耗。(没有开源码代码)

文献 23(CharNet,ICCV2019)第一次使用单阶段任意形状场景文本spot方法,但是需要字符级的标注数据进行训练。(有开源代码

文献 43 (TextDragon,ICCV2019)提出了一种水平抽样方法 RoISlide ,它利用文本实例的预测片段中的融合特征,对任意形状的长文本具有鲁棒性。(没有开源代码)

五、算法解析
1、Bezier Curve Detection

首先,在文本检测部分,相比较于分割的方法而言,基于回归的方法能够更加直接地处理任意形状的文本。

其次,之前基于回归的方法需要设置复杂的参数来拟合文本边界,对于多类型、多变化的文本而言它缺乏鲁棒性,也不一定有效。

因此,ABCNet 提出使用 Bezier 曲线拟合的方式,通过观察大量开源数据集和真实场景中的文本特点,发现使用三次贝塞尔曲线即可有效拟合任意形状文本。

image-20201111115209627

所以,最终文本检测所需要的拟合点就只有8个(上下边)!点的位置用相对距离 ( Δ x ,   Δ y ) (\Delta x,\ \Delta y) (Δx, Δy) 来表示。在 detection_head 内部,仅需要一个带有输出通道为 16 的卷积层来学习 Δ x \Delta x Δx Δ y \Delta y Δy,这几乎没有计算开销,而且结果仍然准确。

文章还解释了如何从 CTW1500 的多边形标注产生贝塞尔曲线标注的方式,原理就是通过最小二乘法来计算贝塞尔曲线参数,还有用贝塞尔曲线标注合成数据。

2、Bezier Align

为了完成端到端训练,先前的算法提出了多种采样方法(特征对齐)来连接识别分支,采样方法就代表着一个网络中的区域剪切过程。然而,先前基于分割的采样方法,如 ROIPooling、RoI Rotate、Text-Align-Sampling,或者 RoI Transform 都不能准确对齐任意形状的文本特征。通过探索利用贝塞尔曲线来表示任意形状的 bbox,ABCNet 提出了 Bezier-Align 来进行特征采样。

Bezier-Align 从RoIAlign 扩展得来,不同的是:Bezier-Align 的采样区域是不规则的,每个任意形状的列网格都正交于文本的贝塞尔曲线边界,采样点在宽度和高度上都是等间距的,使用各自的 coordinates 进行双线性插值。具体如下图所示。

image-20201111143233456

通俗一点来说,BezierAlign 首先在上下两边的贝塞尔曲线上进行等分,然后按顺序将上下两边的等分点连接,在连接线段上做双线性插值,得到所有采样的特征点形成一个固定大小的特征图。这种方式相比前面两种水平采样、四边形采样而言,采样特征点更加精确,同时几乎不占用额外的计算开销。

ABCNet 的识别分支包含 6 个卷积层,一个双线性 LSTM 层和一个全链接层,这也就是 CRNN 的简化结构。基于输出的分类分数(全分类概率矩阵),使用经典的 CTC-loss 来做字符对齐。在训练阶段,直接使用生成的 Bezier 曲线标注数据提取 ROI 特征,这样可以保证检测分支不影响识别分支,但同时也需要一个约束检测的 loss。在推理阶段,ROI区域被 Bezier Curve Detection 中描述的 Bezier 曲线的输出所代替。

image-20201111151140928

六、实验

论文的 Backbone 设计遵循先前的文章,ResNet-50 结合 Feature Pyramid Network (FPN)。对于检测分支,在输入图像的 1/8、1/16、1/32、1/64 和 1/128 分辨率的5个特征图上使用 ROI-Align;对于识别分支,则在1/4、1/8和1/16大小的三个特征图上进行 BezierAlign(???)。

训练数据集包含开源可用的单词级别的标注,包含 150k 的合成数据和 15k 的COCO-Text中过滤出的数据、7k 的ICDAR-MLT数据,预训练模型完成后会微调到目标数据集。除此之外,还进行了若干数据增强操作,例如随机在 500-800 之间选择短边长度,并且保证长边的长度小于1333;随机裁剪,保证裁剪的长度大于原始图片大小的一半,并且需要保证所有文本区域不可以被裁剪,对于特殊case,不进行裁剪。

训练GPU是Tesla V100,batch_size 给到 32,最大迭代次数为 150k;初始学习率是0.01,在第70k步减少到0.001,第120k个迭代减少到0.0001。整个训练过程耗时3天。

1、采样点数量的选择

采样点指的是 BezierAlign 时特征点的采样,如何确定上下边的等分数量、连接线的插值数量?下表给出了结论,即上下边 32 等分、连接线 7 次插值可以满足精度和速度上的双重需求。

image-20201111145445727

2、对齐方式的有效性

理论上 BezierAlign 是最好的,实际上也验证了理论结果,具体如下表所示,BezierAlign 精度是最高的。

image-20201111145825925

3、文本检测的高效率

运用 Bezier Curve Detection 没有引入额外的计算开销,这从下表所示的速度对比可以看出来(但也不具备速度优势)。

image-20201111150214799

4、性能上的优势

下表是在 Total-Text 数据集上的性能比较,可以看到 ABCNet 兼具精度和速度上的优势。

image-20201111150316689

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值