【学习总结】Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks

推荐学习理由:2018年11月云从科技提出的Pixel-Anchor,结合anchor-based和pixel-based的检测方法的特性,取长补短,并解决了长文本的检测,在FMeasure上,ICDAR2015获得了87.68,在ICDAR2017 MLT获得了74.54。

参考:

https://arxiv.org/abs/1811.07432

https://blog.csdn.net/zhangwl27/article/details/88389102

https://blog.csdn.net/u011489887/article/details/84790464

https://www.jianshu.com/p/8db0ec29aaab

https://zhuanlan.zhihu.com/p/51977978

https://www.cnblogs.com/Allen-rg/p/9993236.html

一、整体介绍

文本检测方法有两类:1、像素级语义分割的pixel-based方法,采用文本像素分割拥有高准确率,但对于小文本由于像素特征稀疏召回率低2、通用目标检测(使用锚点)的anchor-based方法,对于文本尺寸不敏感,有高的召回率,但对于密集大角度的文本面临“anchor匹配困难”问题,准确率低于基于像素的方法。基于以上的分析,提出了Pixel-Anchor,主干网络使用ResNet-50提取的特征,后接2个共享分支,将pixel-based和anchor-based方法的优势组合,anchor-based模块仅仅保留小的和长的anchors,同时在pixel-based模块删除小的检测框。使用pixel-based模块得到的分割heat map送到anchor-based模块中,以作为注意力监督模块,从而提高anchor-based模块的准确率。pixel-based模块使用fpn和aspp(详见deeplab)作为encoder-decoder去做语义分割,aspp是一种low-cost的方式来扩大感受野。anchor-based模块使用ssd作为基础框架,并提出adapter predictor layer(apl)去更好的检测尺度和宽高比变化大的文本区域。最后通过fusion nms得到最终的结果。Pixel-Anchor在ICDAR2015数据上,960*1728分辨率的图片上获得0.8768的F-score和10 FPS

二、网络结构:

主干网络ResNet-50,将resnet50的最后一个block的stride设置为1,并引入atrous卷积来维持感受野,最后的特征图为原图的1/16,从主干网络中提取1/4、1/8、和1/16的特征图,在pixel-based模块和anchor-based模块共享。其中pixel-based得到的分割heat map作为注意力机制送入anchor-based。后接融合的NMS。

 

2.1、pixel-based模块

大多数pixel-based的文本检测器如EAST和Pixel-Link用FPN作为编码-解码模块。为了增加网络的感受野,将FPN和ASPP操作组合在一起作为编码-解码结构(ASPP模块在deeplab中被提出,它使用不同rate的atrous卷积构成金字塔结构来增大感受野),同时修改了ASPP的膨胀率,用{3, 6, 9, 12, 15, 18}替换了DeepLabv3+中的{6, 12, 18}来获得更好的感受野。在解码阶段,编码特征首先用因子为2倍双线性插值进行上采样,然后和来自网络主干的相应低一级的特征拼接concat。解码特征图同时保留了高的空间分辨率以及语义信息。pixel-based模块概览如图5所示。

pixel-based的模块的输出由两个模块组成部分:旋转盒子和注意力热图。这个旋转框(RBOX)预测器包含6个通道(类似EAST)。第一通道计算每一个像素为正文本的概率,以下4个通道预测其与文本边界的顶部、底部、左侧、右侧的距离,最后一个通道预测文本边界框的方向。注意热图包含指示每个像素作为文本的概率的一个通道,并将被送入the anchor-based module。对于RBOX预测器,为了区分非常接近文本实例,使用“缩小多边形”方法(类似FOTS)。仅收缩部分原文区域被认为是文本区域,而包围盒与收缩多边形之间的区域被忽略。对于注意热图不使用“缩小多边形”方法,所有原始文本区域被认为是正文本区域。

采用online hard example mining(OHEM)计算像素分类损失。(OHEM常用来进行困难样本挖掘。对于文字区域的分割,存在样本的不平衡,文字区域往往占比比较小,背景占比比较大。同时,对于一张图中的多个文本,小的文本区域的损失往往被大文本区域损失覆盖;而且还有一种情况,背景中存在难以区分的样本,这些背景容易导致模型将类似的文本区域分为背景。因此加入OHEM,可以对这部分背景信息进行挖掘,同时在训练过程中正负样本进行均衡,避免了类别不均衡的问题。)对于每个图像,512 hard negative non-text pixels,512 random negative non-text pixels,所有正文本像素被选择用于分类培训。像素分类损失函数如下:

这里| •|表示在几何中正样本文本像素点的数量,H(pi, pi*)表示第i个像素的预测标签pi和它的ground truth标签pi*的交叉熵loss。

计算文本边界框回归loss时也应用了OHEM,和FOTS相同。­­从每张图中选择了128个hard positive text pixels 和128 个random positive text pixels用来回归训练。用Ωloc来表示用来文本框回归训练所选的像素集合,文本框回归的loss函数可表示为:

第一部分IoU(Ri, Ri*)是第i个像素的预测文本边界框Ri,和它的ground truth Ri*之间的IoU loss,第二部分是预测的角度θi和ground truth的角度θi*的角度loss,λθ是平衡IoU loss和angle loss的一个权值,在实验中设为10。Npos是正样本文本像素点的个数。

所以,对于pixel-based模块,loss可以表示为:

这里αp是平衡分类loss和定位loss的权值,在实验中设为1.0

2.2、anchor-based模块

对于anchor-based模块,作者对ssd框架做了修改,下图是网络结构图:

这里使用resnet50的1/4和1/16的feature map和pixel-based模块共享backbone,另外在1/32后面又增加了几层卷积来得到更多的语义信息,为了避免生成太小的feature map,后面使用的是atrous卷积。这里采用1/4而未像ssd一样使用1/8 feature map是为了能检测更多的小文本。在feat1中,pixel-based模块作为attention监督模块被引入其中,从而增加feat1层的语义信息。需要注意这里对attention heat map先做指数操作,然后再和feat1进行相乘。文中提出这样做的原因可以将正例的概率映射到[1,e]之间,这样就能在保留背景信息的同时增大检测信息,另外也能将误检的小样本给排除掉。

之后作者提出了一个Adaptive Predictor Layer(APL)的结构,如上图左边所示,这些anchor分别根据宽高比划分到不同的组中,共分为五组:

a) 方型anchor, 宽高比=1:1,卷积核大小为3*3

b) 中型水平anchor,宽高比={1:2,1:3,1:5,1:7},卷积核大小为3*5

c) 中型垂直anchor,宽高比={2:1,3:1,5:1,7:1},卷积核大小为5*3

d) 长型水平anchor,宽高比={1:15,1:25,1:35},卷积核大小为1*n

e) 长型垂直anchor,宽高比={15:1,25:1,35:1},卷积核大小为n*1

对于上面的长型anchor,不同feature map有不同的参数n,其中feat1没有长型anchor,而feat2到feat6中n分别被设置为{33,29,15,15,15}。通过APL,能够更好地匹配不同宽高比的文本。

为了能够检测比较稠密的文本,这里模仿textboxes++(仅在竖直方向)在水平和竖直方向上都添加了anchor,具体方式为对于方型anchor,在水平方向和垂直方向上都进行添加。对于水平anchor只在垂直方向添加,对于垂直anchor只在水平方向添加。另外对于不同feature map添加的anchor上数量也不相同。其中对于中型anchor,在feat1到feat6上密度分别为{1,2,3,4,3,2},对于长型anchor,在feat2到feat6上密度分别为{4,4,6,4,3}(文中好像没有提到方型anchor的密度)。下图是在竖直方向上添加的一个例子:

在anchor的设定上,如果anchor和ground truth框的最小外接框之间的iou大于0.5,则被设定为正anchor,如果小于0.5,则被设定为负anchor(背景)。输出为9个channel,其中第一个channel为每个anchor被认为是正样本的概率,另外八个代表一个anchor到文本框四个坐标的偏移。

作者仍然采用ohem去训练分类损失,并把正负样本的比例设置为1:3。Ωa表示用于分类训练的anchor集合(负样本和正样本),分类loss表示如下:

这里| •|是在这个集合中正样本的数量,H(pipi*)表示第i个anchor标签预测值pi和它的gt标签值pi*之间的交叉熵。

相对于anchors的预测文本四边形坐标偏移量的回归loss如公式:

这里pos(Ωa) 是Ωa的正样本部分, SL(lili*)表示对于第i个anchor,预测偏移坐标li和ground truth li*之间的smooth L1 loss。

因此,对于anchor-based模块,loss可以表示为:

αa是平衡分类loss和定位loss的权值,在实验中为了快速收敛设为了0.2。

三、模型训练

在训练阶段,整个网络是用adam优化器来端对端训练的,模型的loss可以表示为:

在推理阶段,提出融合NMS来获得最终的检测结果。用anchor-based模块检测小文本和长文本,用pixel-based模块检测中等大小的文本。在anchor-based模块的APL中,对anchors进行修剪。1/4特征图上的所有anchors(在anchor-based部分中提到的类别a、b和c)和在其他特征图上的所有长anchors(在anchor-based部分中提到的类别d和e)都被保留下来。因为在1/4特征图上的anchors(一般都是小尺寸的)通常没有足够的空间来包含两个大角度的文本实例,同时长的anchors仅仅可以匹配小角度的文本实例,这样“Anchor Matching Dilemma”就会更少发生。在pixel-based模块,当文本框的MBR的最小尺寸小于10个像素,MBR的宽高比不在[1:15,15:1]范围内,过滤掉该预测结果。最终,收集所有保留的候选文本框,然后用一个类似于TextBoxes++的级联NMS来获得最终的检测结果。首先在预测文本四边形的最小外接矩形上使用一个相对高的IOU阈值(如0.5)的NMS。在MBRS上的这个操作更小的耗时同时删除大部分候选框。然后用比较耗时的NMS在文本四边形上,用比较低的IOU阈值(如0.2)来保留候选框。因为来自anchor-based模块和pixel-based模块的候选文本框存在重叠,将anchor-based模块检测出的文本框的分数加1,当执行NMS时,那些文本框有更高的优先级

PS:【附赠彩蛋】

阅读到最后的朋友,送上作者在github发的一段文字

https://github.com/Yuanhang8605/pixel-anchor-link-and-text-detector-experience

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值