文本检测分为基于分割和基于回归两种方法。其中,基于回归即在通用目标检测的基础上进行文本检测。
一、目标检测
目标检测就是在图像中检测出物体的存在、位置与类别。目标检测的主流算法分为两步法和一步法两种。
1、两步法
在两步法中,我们需要首先找出目标存在的区域,再将该区域的内容识别出来。我们也可以理解为从一张大图片中先截出各个目标的小图片(即通过RPN生成一系列作为样本的候选框),再对小图片做图像分类任务。但实际操作中,由于检测目标的存在位置与小图片的识别都需要多层卷积神经网络得到的语义信息,因此这两个任务可以共享一个骨干卷积神经网络,得到了卷积层语义特征后,再分别用于后续的子任务。
典型网络包括RCNN/Fast RCNN/Faster RCNN。
2、一步法
一步法不使用RPN进行初步检测,直接回归目标的分布概率和位置坐标,准确率低推理速度快。
一步法的典型网络包括YOLO/SSD/Retina-Net,一步法通过主干网络给出位置信息和目标类别
二、基于目标检测的文本检测算法
这一类算法在骨干卷积网络的基础上,增加卷积层提出text box proposal,再执行两个子任务:判断proposal对应于文本的概率和正样本proposal的位置。Text box proposal既可通过预设锚框的方式(如PRPN,TextBoxes++),也可通过直接预测的方式(如EAST,ABCNet)。相比于常规的目标检测,文本目标通常为长条形、具有较大的纵横比,而且可能存在旋转歪斜的情况。因此,此类算法通常使用扁平竖高的文本框、旋转文本框或者直接使用多边形文本框,从而可以判别歪斜的文本。
三、图像分割
图像分割任务的与目标检测非常类似,目的在于找出图片中的各种目标。然而不同之处在于,目标检测需要输出矩形目标框,而图像分割需要找出所有对应于相同目标的像素点。
图像分割任务同样需要卷积神经网络输出的深层语义特征,因此它通常也在骨干卷积网络的基础上,增加一个任务。以Mask RCNN为例,模型在识别网络增加一个子任务,用少量卷积层,对每一个目标类生成一个二值的mapping,判断每一个像素点是否属于该目标类。模型最后采用识别网络的识别结果类对应的mapping作为图像分割任务的输出。
四、基于图像分割的文本检测算法
该类算法的研究者认为,使用预设形状的文本框无法很好地描述某些特殊形状的文本(如纵横比过大或者弧形)。他们受图像分割工作的启发,另辟蹊径,先从像素层面做分类,判别每一个像素点是否属于一个文本目标和它与周围像素的连接情况,再将相邻像素结果整合为一个文本框。这种做法可以适应任何形状和角度的文本。
由于场景文字的大小形状的多样,使用基于分割的检测方法往往更好,但是大部分基于分割的方法需要复杂的后处理将像素级别的结果组合成文字行。
五、DBNet
引言
DBNet是基于分割的文本检测算法。基于分割算法的流程一般为:先通过网络输出文本分割的概率图,然后使用设定阈值将概率图转化为二值图,然后通过后处理得到检测结果(文本框坐标)。缺点在于阈值的选取非常关键。
DBNet 针对这个问题,提出可微分二值化的概念:即对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,将二值化这一步骤加入到网络里一起训练,生成鲁棒性更好的二值图,简化后处理。
1、DBNet算法整体架构
上图是 DBNet 模型网络结构示意图,主要分为 3 个模块:
- Backbone:该部分主要搭建MobileNetV3主体结构代码,其中需要注意的是,因为后边需要采用FPN结构,所以相比于原始的网络结构,这里搭建过程中获得了四个分支的输出,用于后续FPN结构
- Neck:该部分为FPN结构
- Head:将特征图 P 和 T 经过 DB 方法得到近似二值图。
经过上面三个模块,可以得到概率图、阈值图和近似二值图。在训练过程中,对这三个图进行监督学习,更新各个模块的参数。在推理过程中,直接使用概率图,然后使用固定阈值获取结果。
2、二值化
标准二值化:
在传统的图像分割算法中,我们获取概率图后,会使用标准二值化(Standard Binarize)方法进行处理,将低于阈值的像素点置0,高于阈值的像素点置1,公式如下
t是预先设置的阈值,(i, j)代表的是像素点坐标位置。标准二值化是不可微的,所以也就无法放入到网络中进行优化学习
可微二值化
可微二值化就是将标准二值化中的阶跃函数进行了近似,公式如下所示:
可微二值化本质上是一个 带系数 k 的 sigmoid 函数,取值范围为(0,1), k 是膨胀因子。 是指概率图像素点, 是指阈值图像素点。
标准二值化和可微二值化的对比如下图 (a) 所示,SB 曲线代表标准二值化,DB 代表可微二值化,可以看到曲线变得更为平滑,也就是可微:
3. 真实标签生成
DB 网络中,训练过程中网络有 3 个输出:概率图、阈值图和近似二值图:
- 概率图:图中每个像素点的值为该位置属于文本区域的概率。
- 阈值图:图中每个像素点的值为该位置的二值化阈值。
- 近似二值图:由概率图和阈值图通过 DB 算法计算得到,图中像素的值为 0 或 1。
概率图的标签 和阈值图标签,DB 网络参考 PSENet 中的方法,使用扩张和收缩的方式构建阈值图和概率图。在该方法中,对于一幅文字图像,文本区域的每个多边形使用一组线段 来进行描述, n 为线段个数。