文章目录
前言
在项目中测试过EAST文本检测模型后,发现效果不太好,在搜索了现有文本检测模型后,都说DBnet模型比较优,而且像PaddleOCR, EasyOCR等比较成熟的OCR文本检测与识别工具都有使用,所以今天开始学习这个模型并做下笔记,方便以后复习。
论文:Real-time Scene Text Detection with Differentiable Binarization
提示:以下是本篇文章正文内容,下面案例可供参考
摘要(Abstract)
最近,基于分割的场景文本检测方法非常流行,主要是因为分割的结果可以更准确地描述如弯曲文字这种任意形状的文本。然而,二值化的后处理过程对于基于分割的文本检测是很重要的,它将基于分割方法产生的概率图转变为文本框(或称为文本区域)。
论文提出可微分二值化的方法(Differentiable Binarization, DB),在基于分割的文本检测网络中 DB 实现了二值化处理。基于 DB 模块的分割网络可以自适应设置二值化阈值,不仅简化了后处理过程,也提升了文本检测的性能。
论文在5个benchmark 数据集上进行性能验证,在检测准确性和检测速度上获得SOTA(state-of-the-art)。
实验结果:
在MSRA-TD500数据集上,网络backbone = ResNet-18, F-score=82.8, 62 FPS(frames per second)
1. 介绍(Introduction)
近年来,由于图像或视频理解,可视化搜索,自动驾驶,盲人辅助等广泛应用,场景图像中文本阅读成为比较活跃的研究领域。
作为场景文本阅读的一个关键部分-场景文本检测,它的主要任务是定位文本框或者每一个文本实例区域,由于场景文本一般具有不同尺度和形状,比如水平的,多方向和弯曲文本,这些因素的存在让文本检测任务面临挑战。基于分割的场景文本检测备受关注,这种方法可以检测出任意形状的文本,这主要受益于这一方法是在像素级(pixel-level)进行预测并输出结果。然而,大多数基于分割的方法都要进行后处理(post processing),这主要是将像素级预测结果分组到要检测的文本实例中,这将在推理过程中带来额外的时间消耗,比如PSENet和Pixel embedding。
大多数文本检测模型都使用相似的后处理流水线,如图Fig.2所示(蓝色箭头)。
- 使用固定阈值将基于分割模型的输出结果-概率特征图进行阈值分割,生成二值图;
- 应用一些如聚类的启发式方法将像素分组到文本实例中。
如Fig.2 蓝色虚线所示,二值化过程仅存在于推理阶段,不包含在训练过程中。论文则将二值化方法加入到训练阶段进行联合优化(个人认为,将二值化过程加入训练过程中,是将二值化结果作为梯度更新的依据,这样使训练出来的网络预测结果更准确)。按照这种方法,图像中每个位置的阈值都可以被预测,用这个预测的阈值能够更准确地区分图像中地文本像素于非文本像素。然而,标准地二值化方法是不可微地(不可进行梯度更新),论文在基于分割地训练网络中应用可微的二值化近似函数(DB)。
论文的主要贡献是提出了可微分的DB模块,将二值化成为CNN网络中end-to-end 可训练的这样一个过程。论文通过将一个简单的语义分割网络与DB模块组合在一起,提出了一个性能鲁棒,运行速度快的场景文本检测器。
和之前基于分割的SOTA方法相比,论文提出的检测器有如下几点明显优势:
- 在5个场景文本benchmark数据集上有更好的性能,包括水平,多方向和弯曲文本;
- 比之前的方法更快,因为DB模块极大简化了后处理过程;
- 当使用轻量级backbone时,DB也能很好地工作,比如ResNet-18;
- 因为DB模块可以在推理阶段被移除并且不影响性能,因此在测试时没有多余的内存或时间消耗。
2. 相关工作(Related Work)
场景文本检测模型大致分为两类:基于回归的方法和基于分割的方法。
基于回归的方法:
基于回归方法的模型都是直接回归计算出包含文本实例的包围框(文本框),比如TextBoxes, TextBoxes++, DMPNet等都属于这一类模型。基于回归的方法通常偏爱简单的后处理方法比如非极大值抑制(NMS)。但是,这类方法通常在表示非常规形状文本的包围框上精度受限,比如弯曲文本。
基于分割的方法:
基于分割的方法通常是结合像素级预测(pixel-level)和后处理算法来获得包围框。
2016年 Zhang等人使用语义分割和基于最大稳定极值区域(MSER)算法进行多方向文本检测;…(这里省略其它模型和方法); PSENet和SAE为分割结果提出新的后处理算法,这导致推理速度更慢。然而,论文通过将二值化过程融入训练阶段,不仅提升了分割的性能(更好的分割结果),而且没有导致推理速度变慢。(个人认为,论文输出的概率图或二值图可直接判断像素是否为文本像素,不需要应用一些启发式方法来分组文本像素,不过还要通过后续阅读来确认)。
快速场景文本检测方法聚焦于精度和推理速度这两方面。TextBoxes, TextBoxes++,SegLink, RRD这些模型沿用了SSD检测框架实现了快速文本检测;EAST应用PVANet提高了检测速度。但是上述大部分模型无法处理非常规形状文本,比如弯曲文本。和之前快速场景文本检测器相比,论文提出的方法不仅运行速度快(推理速度)而且可以检测任意形状的文本实例。
3. 方法(Methodology)
论文提出的模型架构如图Fig.3所示:
模型运行过程如下所示:
- 将输入图像输入到模型backbone:特征金字塔模型;
- 金字塔模型每层输出的特征图都经过上采样得到相同宽高的特征图,然后将金字塔模型所有经过上采样后的特征图按照通道方向拼接产生特征图 F F F;
- 特征图 F F F被用来预测输出概率图 P P P和阈值图 T T T。
- 通过 P P P和 F F F可以计算出近似二值图 B ^ \hat{B} B^;
在模型训练阶段,对概率图,阈值图和近似二值图进行监督(supervision),并且概率图和近似二值图使用相同的监督(个人理解,这里的监督想要表达的应该是计算梯度值或者说是损失值)。
在模型推理阶段,可以让近似二值特征图或者概率特征图经过一个生成文本框的模块(box formulation boxes)来获得包围框。(这个生成文本框的模块要做哪些工作,这是影响推理速度的关键)
3.1 二值化(Binarization)
3.1 标准二值化
对分割网络输出的概率特征图 P ∈ R H × W P\in R^{H\times W} P∈RH×W,其中 H H H表示特征图的高度, W W W表示特征图的宽度。通常二值化过程如下公式所示:
其中, t t t表示预先定义的阈值, ( i , j ) (i,j) (i,j)表示特征图中像素的坐标。
3.2 可微分二值化
从公式(1)可以知道,标准二值化是不可微分的(阶跃函数,非线性函数),因此无法直接将二值化过程加入到分割网络中进行训练。为了解决这一问题,论文提出一种近似阶跃函数的二值化方法:
公式(2)中, B ^ \hat{B} B^表示近似二值图, T T T表示分割网络预测的阈值图, k k k表示放大因子,根据经验一般设为50。该近似阶跃函数性能近似阶跃函数,但是可微分,如图Fig.4所示。因此,可以在训练网络中进行优化。
该可微的二值化过程不仅能够帮助找出背景中的文本区域,也能分割出紧密结合的文本实例,Fig.7列出了一些例子。
借助梯度反向传播来解释为什么DB模块可以提高检测性能。这里以二值交叉熵损失为例。这里DB函数定义为 f ( x ) = 1 1 + e − k x f(x)=\frac{1}{1+e^{-kx}} f(x)=1+e