本次分享主要是讲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. 该方法在精度和速度方面都有一定的提升。
恩,现在我们看一下整个算法的流程是怎样的,以及如何实现了作者所说的三个贡献:
如图,
其中,(a)、(b)、(c)、(d)都是几种常见stat-of-the-art的文本检测过程,算法思想遵循之前two-stage的方法,一般都需要先提出候选框,过滤后对剩下的候选框要进行回归操作得出更精细的边框信息,然后再合并候选框等。对比后发现,EAST算法大大简化了流程,只用到了FCN实现像素级别预测,然后使用NMS(非极大值抑制)合并预测后的信息即可实现多角度的文本检测,因此可以应对更为复杂的场景,而且也不限制是否是水平的文本行方向。
由于上次课程我们讲过 FCN,已知FCN的框架图:
以预测效果最好的8*upsample的特征融合方式来看,按箭头指示方向从上至下的顺序,它是先融合pool4和pool5,然后把输出后的结果再反卷积增大两倍尺寸后和pool3融合(选择逐点相加的方式融合)实现高低层特征跳跃结构融合的,比较容易理解。那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特征信息的输出作预测,
最终输出以下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由两部分组成:score map loss 和geometry loss,具体公式如下:
之前一些做检测的文章采用的是经典的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.2.1 RBOX loss
直接使用L1或者L2损失去回归文本区域将导致损失偏差朝更大更长.因此论文中采用IoU损失在RBOX回归的AABB部分,其损失函数公式为:
其中带*标志的是真实值,带^标志的是预测值。因此几何形状损失是:
文本在自然场景中的尺寸变化极大。在QUAD回归时使用尺度归一化的smoothed-L1损失,来保证几何形状的回归损失是尺度不变的.
针对QUAD loss,其损失函数公式为:
其具体公式如下:
其中Q是顺时针方向(从左上开始)4个点 (x,y) 坐标值。
简化训练过程,最终总的Loss具体公式如下:
至此,整个算法网络的设计流程和训练时的Loss设计基本已完成。
该算法EAST做文本检测的优点:
1. FCN直接预测结果,消除中间过程冗余,减少检测时间
2. 在特征合并层,利用不同尺度的feature map,并通过相应的规则进行自顶向下的合并方式,可以检测不同尺度的文本行
3. 提供了文本的方向信息,可以检测各个方向的文本
4. 本文的方法在检测长文本的时候效果表现比较差,这主要是由网络的感受野决定的(感受也不够大)
缺点:
1. EAST等直接预测一个文本实例的方法容易受特征的局限,进而导致最终长距离无法稳定预测
2. 在检测曲线文本时,效果不太理想
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。