前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >05. OCR学习路径之文本检测(下)EAST算法简介

05. OCR学习路径之文本检测(下)EAST算法简介

原创
作者头像
Aalto
修改2019-11-22 17:18:13
2.7K0
修改2019-11-22 17:18:13
举报
文章被收录于专栏:晓说AI

前言

本次分享主要是讲EAST这篇文章,按照之前的计划是分享两种文本检测思路,即one-stage和two-stage的。已经分享的有《03.OCR学习路径之文本检测(中)CTPN算法简介》里已经说过two-stage实现文本检测这个经典算法,上次课也讲了《04.OCR学习路径之文本检测(4)FCN算法简介》,并且还up了4个视频课程在B站(B站链接:https://www.bilibili.com/video/av73805100),因此承接上一次FCN,我们这次课主要讲文本检测的第二类方法,one-stage的思路。

OS:上面一段话有广告的嫌疑。

本文主要讲one-stage的文本检测思路,并筛选出效果比较好的具有代表性的文章是EAST: An Efficient and Accurate Scene Text Detector

代码部分已开源,感兴趣的话可以自己去实现一下:https://github.com/argman/EAST

一、算法简介

有人说EAST是two-stage的方法,因为该方法运用到:全卷积网络(FCN)和非极大值抑制(NMS)这两项计算,但是我认为这应该算是one-stage的范畴内的,因为NMS在CTPN或者faster-RCNN中也有用到的,那岂不是成了three-stage了?NMS只能算作是一种对输出结果的后处理吧。

作者在文中说自己做了三个方面的贡献:

1. 使用FCN(上次课有说过的)实现直接的预测 ;

2. 该方法可以检测单词级别行和文本行级别.检测的形状可以为任意形状的四边形,旋转的(RBOX)或者水平的矩形框(QUAD)。并采用Locality-Aware NMS来对生成的几何进行过滤;

3. 该方法在精度和速度方面都有一定的提升。

恩,现在我们看一下整个算法的流程是怎样的,以及如何实现了作者所说的三个贡献:

如图,

几种经典算法的pipeline
几种经典算法的pipeline

其中,(a)、(b)、(c)、(d)都是几种常见stat-of-the-art的文本检测过程,算法思想遵循之前two-stage的方法,一般都需要先提出候选框,过滤后对剩下的候选框要进行回归操作得出更精细的边框信息,然后再合并候选框等。对比后发现,EAST算法大大简化了流程,只用到了FCN实现像素级别预测,然后使用NMS(非极大值抑制)合并预测后的信息即可实现多角度的文本检测,因此可以应对更为复杂的场景,而且也不限制是否是水平的文本行方向。

1.1 采用FCN

由于上次课程我们讲过 FCN,已知FCN的框架图:

FCN算法框架图
FCN算法框架图

以预测效果最好的8*upsample的特征融合方式来看,按箭头指示方向从上至下的顺序,它是先融合pool4和pool5,然后把输出后的结果再反卷积增大两倍尺寸后和pool3融合(选择逐点相加的方式融合)实现高低层特征跳跃结构融合的,比较容易理解。那EAST是如何使用FCN的实现利用多层信息,论文已给出详细的框架图:

EAST里使用的FCN结构
EAST里使用的FCN结构

由此可见,该方法分三个阶段:特征提取,特征融合,预测结果的输出层。只不过,本文跟FCN融合特征的思想还不完全一样,而本文的融合方式是concatenation along the channel axis,是拼接在一起,不是相加,使得特征更“厚”更“深”。其次,上采样的方式不一样,FCN是Deconv的方式,这里是unpooling,总之就是每一次unpooling可以让高层特征信息的size放大两倍。

文中涉及到一个公式,比较绕人,作者想把简单的事情使用公式化描述,但是好像更有迷惑性了(至少对于我而言是如此),暂且不管:

特征融合操作表达式
特征融合操作表达式

其实思想和FCN一样,上面已说过,一个是unpooling,一个拼接concatenation。

再看最后一层的特征图这里定义为f1,有点逆常规的命名思路,暂且跟随作者的思想来看这个结构,f1-f4的feature map尺寸分别是原图尺寸的1/32, 1/16, 1/8, 1/4。

最终用融合后的g4特征信息的输出作预测,

1.1 Out layer的输出

最终输出以下5部分的信息,分别是:

· score map:检测框的置信度,1个参数;

· text boxes:对于检测形状为RBOX,检测框的位置(x, y, w, h),4个参数;

· text rotation angle:对于检测形状为RBOX,检测框的旋转角度,1个参数;

· text quadrangle coordinates:对于检测形状为QUAD,则输出任意四边形检测框的位置坐标,(x1, y1), (x2, y2), (x3, y3), (x4, y4),8个参数。

为此设计Loss,下一章详细展开。

二、训练loss

loss由两部分组成:score map loss 和geometry loss,具体公式如下:

2.1分数图损失(Loss for Score Map)

之前一些做检测的文章采用的是经典的cross-entropy loss,即交叉熵损失函数。但是本论文稍作改变,变成class balanced cross entropy,

对比cross entropy loss的公式:

H(y,y^)=−∑i y_i loge(y^i)

论文中采用的是类平衡交叉熵,用于解决训练数据类别不平衡的问题,公式如下:

其中Y∧是score map,Y*是ground truth。

β是balance factor,平衡正、负样本的。

因此通过平衡采样和hard negative mining(一种增加复杂负样本的方法)技术解决训练样本中目标物体分布不平衡的问题,因为训练过程中,有些干扰性较强的负样本就称为Hard negtive,增加此类样本可以提高模型的精度,但是实际上这类样本比较少,因此才需要在训练的过程中使用hard negative mining方法来增加此类负样本的占比。

2.1几何形状损失(geometry loss)

2.2.1 RBOX loss

直接使用L1或者L2损失去回归文本区域将导致损失偏差朝更大更长.因此论文中采用IoU损失在RBOX回归的AABB部分,其损失函数公式为:

其中带*标志的是真实值,带^标志的是预测值。因此几何形状损失是:

2.2.2 四边形框损失(QUAD loss)

文本在自然场景中的尺寸变化极大。在QUAD回归时使用尺度归一化的smoothed-L1损失,来保证几何形状的回归损失是尺度不变的.

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

其具体公式如下:

其中Q是顺时针方向(从左上开始)4个点 (x,y) 坐标值。

简化训练过程,最终总的Loss具体公式如下:

L=Ls+λgLg

至此,整个算法网络的设计流程和训练时的Loss设计基本已完成。

三、总结

该算法EAST做文本检测的优点:

1. FCN直接预测结果,消除中间过程冗余,减少检测时间

2. 在特征合并层,利用不同尺度的feature map,并通过相应的规则进行自顶向下的合并方式,可以检测不同尺度的文本行

3. 提供了文本的方向信息,可以检测各个方向的文本

4. 本文的方法在检测长文本的时候效果表现比较差,这主要是由网络的感受野决定的(感受也不够大)

缺点:

1. EAST等直接预测一个文本实例的方法容易受特征的局限,进而导致最终长距离无法稳定预测

2. 在检测曲线文本时,效果不太理想

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 一、算法简介
      • 1.1 Out layer的输出
    • 二、训练loss
      • 2.1分数图损失(Loss for Score Map)
    • 三、总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档