赞
踩
属于分割类文本检测算法。其基于对模型预测出的特征图进行复制筛选的朴素思想,创新提出使用模型预测其阈值特征图,利用两者获得二值图,从而获取文本位置信息。其流程如下图:
可以发现其能够处理不规则的文本,那么具体是怎么实现的呢?
上图是整体网络流程,其基本架构为Backbone + FPN + DB Head,并不复杂,可能会造成疑惑的的有以下几点:
以下为DBNet的FPN推理模块:
第一步:其中in*_conv为conv 1x1的卷积,主要作用为特征映射与修改channel
第二步:通过upsampling将特征图扩大2被与上一尺度的特征相加
第三步:使用p*_conv对第二步中得到的特征图进行特征映射,其中p*_conv为conv 3x3卷积,p=1
第四步:将第三步中获取的所有特征(p*)使用cat 操作
以下为DBHead的流程图:
可以发现,模型输出包括两个部分:probablity map 与 threshold map两个部分,模型通过这两个部分可以获得binary map。这里是借鉴了图像二值化的思想(这个在下面单独介绍),在训练时,通过该方法,使得梯度可以传播;推理时,则直接输出probality map(可通过设定的thresh 参数进行二值化处理,在通过轮廓确定最小外接框)。以下为DB Head 的推理代码
DBNet 损失函数由三部分组成,其在论文中的定义如下:
其分别对应DBNet 的三个特征图,在原文中,Ls与Lb都使用BCE loss ,Lb则使用L1 loss,在Paddleocr的实现中,Lb的损失函数改为了dice loss。如下图:
概率图标签生成
其中概率图(probablity map)与二值图(binary map)是使用了PSENet的方法生成的掩码(通过计算文本轮廓的缩放距离,通过以下公式计算
D
=
A
∗
(
1
−
r
)
L
D=\frac{A*(1-r)}{L}
D=LA∗(1−r),其中A为轮廓面积,L为轮廓周长,计算得到D后,将轮廓缩小D个像素),
paddleoc中实现代码如下:
其输出有两个,表示原本轮廓点的二值图shrink_mask以及缩放后的二值图shrink_map
阈值图标签生成
按如下步骤执行
以下为轮廓内点计算到最近边界的距离实现
下面是绘制的阈值标签的可视化图。
该算法为百度自研算法,已在paddleocr开源。用于任意形状的文本检测,主要解决了一下两个问题:
模型提出了一个基于分割的one-shot的任意文件检测器,它将高层次的目标知识和低层次的像素信息融合在一个镜头中,以高精度和高效的方式检测任意形状的场景文本。那么是如何实现的呢?模型在图像的高层特征中,提取出四种文本属性,分别为:文本中心线(TCL)、文本边界偏移(TBO)、文本中心偏移(TCO)、文本顶点偏移(TVO)。
在这篇文章中,我们提取文本区域的中心线TCL特征图,并且使用回归几何特征来重建文本实例的精确表示。回归几何特征如TBO,表示TCL特征中的每个像素与其对应的上下边界的对应点的偏移量。更加精确的说,如下图描述的那样,表达规则主要分为两步:文本中心点采样和边界点提取。首先我们在文本中心线从左到右等距采样n个点。通过进一步的运算,我们可以根据TCL中的采样点,在TBO中同一位置确定出相应的边界点对儿。把所有的点按照顺时针的方向链接起来,我们能够获得一个完整的文本多边形表示。与其将n设置为固定的数量,我们通过中心线长度与边界偏移对的平均偏移长度之比来自适应的设置n。几个在弯曲文本数据集上的实验证明了我们的方法对于任意形状的文本实例是有效和灵活的。
那如何获取模型需求的4种特征呢?文本实例分割的第一步是利用TCL和TVO特征图检测出候选文本四边形。类似EAST算法,我们将TCL特征图二值化,所有的像素值在[0, 1]之间,给定一个阈值,使用TVO特征图提供的四个顶点偏移来恢复相应的四边形边界。当然,NMS被用于抑制过度的候选框。最终的四边形候选框展示在下图中。这些候选四边形可以被认为依赖高级知识。文本实例分割中的第二个也是最后一个步骤是将二进制TCL特征图中的映射文本区域聚类成为文本实例。如下图3c所示,TCO特征图是指向边界框中心TCL中像素的的偏移量的像素级预测。我们假设属于同一文本实例的TCL特征图中的像素指向同一个对象级别的中心(候选文本框四边形),通过将响应像素分配给第一步中生成的四边形框,将TCL映射聚类成多个文本实例。下图4d为TBO特征提取,与TCO不同的是,参照物从四边形中心变为四边形的四个角点。此外,我们不关心第一步生成的文本框是否完全包围输入图像的文本区域,并且预测框之外的像素将大部分分配给相应的文本实例。因为集成了高级别目标知识和低级别的像素信息,候选的后处理聚类TCL特征图中的每个像素到它所匹配的最佳文本实例。并且能够帮助不仅仅分隔近距离的文本实例,也能够在处理长文本时减少文本实例的分割问题。
PGNet为端到端的文本识别模型,可处理不规则文本。其模型流程如上图所示。描述如下:
CRNN的模型结构为:backbone + Encode + CTC Head,这里的backbone 使用的为ResNet, Encode 使用的为Sequence Encode,模型输出使用的是CTC结构。
下图为CRNN的编码器paddleocr 代码实现
以下为CTC Head 结构 paddleocr 代码实现
CTC loss :
原理推导可在下面链接查看
CTC 原理介绍:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。