EAST自然文本文本检测整理

EAST自然文本文本检测整理

EAST自然文本检测

传统的文本检测方法和一些基于深度学习的文本检测方法,大多是multi-stage,在训练时需要对多个stage调优,这势必会影响最终的模型效果,而且非常耗时.针对上述存在的问题,本文提出了端到端的文本检测方法,消除中间多个stage(如候选区域聚合,文本分词,后处理等),直接预测文本行.

下图给的是几个不同框架的检测pipeline:可以发现本文只包含两个stage
论文关键idea

提出了基于two-stage的文本检测方法:全卷积网络(FCN)和非极大值抑制(NMS),消除中间过程冗余,减少检测时间.该方法即可以检测单词级别,又可以检测文本行级别.检测的形状可以为任意形状的四边形:即可以是旋转矩形(下图中绿色的框),也可以是普通四边形(下图中蓝色的框)).采用了Locality-Aware NMS来对生成的几何进行过滤该方法在精度和速度方面都有一定的提升.

Pipeline
论文的思想非常简单,结合了DenseBox和Unet网络中的特性,具体流程如下:

先用一个通用的网络(论文中采用的是Pvanet,实际在使用的时候可以采用VGG16,Resnet等)作为base net ,用于特征提取基于上述主干特征提取网络,抽取不同level的feature map(它们的尺寸分别是inuput-image的 \frac{1}{32},\frac{1}{16},\frac{1}{8},\frac{1}{4} ),这样可以得到不同尺度的特征图.目的是解决文本行尺度变换剧烈的问题,ealy stage可用于预测小的文本行,late-stage可用于预测大的文本行.特征合并层,将抽取的特征进行merge.这里合并的规则采用了U-net的方法,合并规则:从特征提取网络的顶部特征按照相应的规则向下进行合并,这里描述可能不太好理解,具体参见下述的网络结构图网络输出层,包含文本得分和文本形状.根据不同文本形状(可分为RBOX和QUAD),输出也各不相同,具体参看网络结构图

实现细节
合并层中feature map的合并规则
具体的合并步骤如下:

特征提取网络层中抽取的最后层feature map被最先送入uppooling层(这里是将图像放大原先的2倍),然后与前一层的feature map进行concatenate,接着依次送入卷积核大小为ParseError: KaTeX parse error: Expected ‘EOF’, got ‘,’ at position 11: 1\times{1},̲3\times{3},卷积核的个数随着层递减,依次为128,64,32重复1-3的步骤2次将输出经过一个卷积核大小为3\times{3}3×3,核数为32个

具体的公式如下:
输出层的输出

对于检测形状为RBOX,则输出包含文本得分和文本形状(AABB boundingbox 和rotate angle),也就是一起有6个输出,这里AABB分别表示相对于top,right,bottom,left的偏移对于检测形状为QUAD,则输出包含文本得分和文本形状(8个相对于corner vertices的偏移),也就是一起有9个输出,其中QUAD有8个,分别为 (x_i,y_i),i\subset[1,2,3,4]

训练标签生成
QUAD的分数图生成
得分图上QUAD的正面积为原图的缩小版,缩小的规则如下:

对一个四边形Q={pi|i属于1,2,3,4},pi是按顺时针顺序排列的四边形的顶点。对于缩小的Q,我们首先计算ri:

r_{i}=min(D(p_{i},p_{(i mod 4)+1},D(p_{i},p_{(i-1) mod 4)+1})
D(pi,pj)是两个顶点pi和pj之间的L2距离。

我们首先收缩两个长点的边,再收缩两个短点的边。对于每对对边,我们通过比较平均长度值来确定长边。对于每个边 ,我们分别通过沿边赂内移动两个端点收缩它,分别为ParseError: KaTeX parse error: Expected ‘EOF’, got ‘,’ at position 9: 0.3r_{i},̲0.3r_{(i mod 4)…,这里论文中缩放的系数是0.3,具体可以根据你的实际任务设置.

QUAD分数图如下,这里其实就是上图红色四边形框的掩膜:
几何形状图生成

很多数据集(如ICDAR2015)是用QUAD的方式标注的,首先生成以最小面积覆盖区域的旋转矩形框。每个像素有一个正的分数值,我们计算它与文本框四边的距离,把它们放入四通道的RBOX 真值中。对于QUAD真值,8通道几何形状图每个像素的正分数值是它与四边形4个顶点的坐标偏移。

下图给出的是生成完的结果,绿色框表示生成的RBOX:
训练loss

loss由两部分组成:score map loss 和geometry loss
具体公式如下: L_{loss}=L_{s}+\lambda_{g}L_{g}Lloss​=Ls​+λg​Lg​

分数图损失(score map loss)

文本在自然场景中的尺寸变化极大。直接使用L1或者L2损失去回归文本区域将导致损失偏差朝更大更长.因此论文中采用IoU损失在RBOX回归的AABB部分,尺度归一化的smoothed-L1损失在QUAD回归,来保证几何形状的回归损失是尺度不变的.

针对RBOX loss,其损失函数公式为:

L_{g}=L_{AABB}+\lambda_{\theta}L_{\theta}=-logIoU(\hat{R},R^*)+\lambda_{\theta}(1-\cos(\hat{\theta}-\theta))

针对QUAD loss,其具体公式如下:

局部感知NMS(locality-aware NMS)

与通用目标检测相似,阈值化后的结果需要经过非极大值抑制(NMS)来得到最终的结果.由于本文中面临的是成千上万个几何体,如果用普通的NMS,其计算复杂度是O(n^2)O(n2),n是几何体的个数,这是不可接受的.

针对上述时间复杂度问题,本文提出了基于行合并几何体的方法,当然这是基于邻近几个几何体是高度相关的假设.注意:这里合并的四边形坐标是通过两个给定四边形的得分进行加权平均的,也就是说这里是
"平均"而不是"选择"几何体.

总结

在特征合并层,利用不同尺度的feature map,并通过相应的规则进行自顶向下的合并方式,可以检测不同尺度的文本行提供了文本的方向信息,可以检测各个方向的文本本文的方法在检测长文本的时候效果表现比较差,这主要是由网络的感受野决定的(感受也不够大)在检测曲线文本时,效果不太理想

转载:https://blog.csdn.net/qq_37340355/article/details/85916975

你可能感兴趣的:(Python)