文本检测-Psenet

1.简介

通常OCR中,文字检测都是由目标检测继承而来,目标检测大多都是基于先验框的(anchor base),近期出现的no-anchor模式本质上也是基于先验框的。anchor-base模式在目标检测衍生到OCR领域就有很多缺陷,比如:倾斜(或扭曲)文字检测不准、过长文字串检测不全、过短文字串容易遗漏、距离较近的无法分开等缺点。

目前文本检测领域主要有两种方法,一种是Anchor-based的方法,如下(b)所示,其主要问题是基于anchor的方法很难适用于形状不规则的文本。另一种是segmentation-based的方法,如下©所示,基于语义分割的方法,是从pixel的级别对像素进行分类,理论上来讲其可以检测不规则的文本,但是不容易将相邻的文本区分开来,从而可能会导致多个不同的文本区域被预测为一个。如下(d)是本文提出的PSENet(其本质也是一种改进版的基于语义分割的方法),由图可见,其可以很好的检测不规则的文本并能很好地将其区分开来。
在这里插入图片描述
先来总结一下本文的思路:PSENet具体采用的方式是首先预测每个文本行的不同尺度的kernels,这些kernels和原始文本行具有同样的形状,并且中心和原始文本行相同,但是在尺度上是逐渐递增的。最大的kernel就是原始文本行大小。之后对这些kernels采用PSE算法(基于BFS),首先从最小scale的kernel开始,逐步对它进行扩增到更大的kernel,最终扩增到原始文本行大小。而之所以这种方式能够区分文本行边缘像素,是因为对于最小scale的kernel,不同的文本行之间的间距很大,是可以完全分离开的。而在逐渐扩展的过程中是受上一级kernel监督的,因此即使扩增到原始文本行大小也能够将边缘像素区分开来。

2.模型概述

PSENet是一种新的实例分割网络,它有两方面的优势。 首先,psenet作为一种基于分割的方法,能够对任意形状的文本进行定位.其次,该模型提出了一种渐进的尺度扩展算法,该算法可以成功地识别相邻文本实例(该算法在下文会详细介绍)。
  在这里插入图片描述

3.整体框架

在这里插入图片描述
先backbone下采样得到四层的feature maps,再通过FPN对四层feature分别进行上采样2,4,8倍进行融合得到输出结果。
  如上图所示,网络有三个分割结果,分别是S1,S2,S3.首先利用最小的kernel生成的S1来区分四个文本实例,然后再逐步扩张成S2和S3。

4.label generation

产生不同尺寸的S1….Sn需要不同尺寸的labels
在这里插入图片描述
在这里插入图片描述
不同尺寸的labels生成如上图所示,缩放比例可以用下面公式计算得出:

5.渐进尺度扩张算法(Progressive Scale Expansion)

PSE算法的主要思想就是利用BFS(广度优先搜索)算法,逐渐扩展kernel(就是下图中的白色的部分,预测的文本行区域)的大小,最终扩增到原始文本行大小(如S3)。
在这里插入图片描述
假设用了3个不同尺度的kernel(如图a,e,f),其中S1(上图a)代表最小kernel的分割结果,它内部有四个连通域C={c1,c2,c3,c4},CC操作得到S1中的四个连通域,得图b(四个连通区域使用不同颜色标记)。现在我们已经得到了图b中的四个连通域(小kernel,不同文本行之间的margin很大,很容易区分开),且我们已知S2中的kernel是比S1中的kernel大的,也就是可以说S2中的kernel是包含S1中的kernel的。现在我们的任务就是将属于S2中的kernel的但不属于S1中的kernel的像素点(即图g左图中的灰色的部分,蓝色和橘色部分分别表示S1中的两个连通域)进行分配。如图所示,在灰色区域(S2的kernel范围)内,将b图所找到的连通域的每个pixel以BFS的方式,逐个向上下左右扩展,即相当于把S1中预测的文本行的区域逐渐变宽(或者换种说法:对于S2中kernel的每个像素点,把它们都分别分配给S1中的某个连通域)。这里还有一个问题,如图g右图所示,图中值为2的点为冲突点,例子中的两个连通域都可能扩展到这个pixel,论文中对这种冲突的解决方法就是“先到先得”原则,这对最后的结果没什么影响。后面的S3同理,最终我们抽取图d中不同颜色标注的连通区域作为最后的文本行检测结果。

渐进式扩展算法的伪代码见下图:
在这里插入图片描述
其中T、P代表中间结果,Q是一个队列,Neighbor(.)代表p的相邻像素。GroupByLabel(.)代表根据label对中间结果T进行合并。需要注意的是对于相邻连通区域,在边缘处合并时会产生冲突,因此采用先first-come-first-served的原则,将会产生冲突的像素只合并到一个kernel中去。
这里需要解释一下上图中画红线的部分,if的三个条件分别表示的是:q是p的邻居,q没有被打标签(还没有被扩展到),q是一个前景像素点(在当前的Si预测的kernel内,即扩展是仅在灰色区域内进行的)

6.损失函数

损失函数定义为:
在这里插入图片描述
损失函数分为两部分,其中Lc和Ls分别代表整个文本实例(Sn)和缩放后文本实例(S1 -> Sn-1)的损失,而λ用于平衡Lc和Ls,这里设置为0.7。
通常文本实例可能只占自然场景很小的一部分,因此如果采用二进制交叉熵损失会造成预测结果更加偏向于非文本区域。这里我们采用dice coefficient损失函数:
在这里插入图片描述
在这里插入图片描述

7.Experiment Results

Implementation Details
All the networks are optimized by using stochastic gradientdescent (SGD).Thedata augmentationfor training data is listed as follows: 1) the images are rescaled with ratio {0.5, 1.0, 2.0, 3.0} randomly; 2) the images are horizon- tally flipped and rotated in the range [−10◦, 10◦] randomly; 3) 640 × 640 random samples are cropped from the trans- formed images.
在这里插入图片描述
在这里插入图片描述OCR中的模型YOLO、CTPN、PSENet。对于这三个模型的感受是,YOLO和CTPN的检测速度较快,PSENet的检测速度稍慢,YOLO对于长文本或短文本的很容易出现缺损或丢失的情况,CPTN在长短文本方面效果好一些,但是文本对齐效果不理想,PSENet在检测效果方面是碾压了前两者的。PSENet不仅适应任意角度的文本检测,而且对近距离文本分割效果更好。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值