机器学习与数据挖掘

基于深度学习的文本检测综述及开源代码

2019-04-17  本文已影响220人  _从前从前_

最近一直在研究文本检测方向的内容,把最近看的论文整理一下。近期有时间会把所有的写完,写一个综述。

  1. 基于文本框的坐标回归的方法
  1. 基于语义分割后进行实例分割的方法
  1. 端到端的文本检测识别
  1. 待刷

一、EAST

论文关键idea

Pipeline

Structure of our text detection FCN.png

标签生成过程

标签生成过程.png

(a)文本框(黄色虚线)和缩小的文本框(绿色实线)
(b)Text score map,正样本区域,会进行shrink,在ICDAR2015上的系数为0.3。
(c)RBOX生成过程,粉色代表四边形最小外接矩形,蓝色、绿色、黄色、红色分别为距粉色文本框的上、右、下、左的距离,淡蓝色为角度。
(d) 每个像素到矩形边界的4个通道距离。
(e)旋转角度。

Locality-Aware NMS

如果使用传统的NMS,复杂度为O(n^2),过于复杂。
在文本检测中,附近像素点预测的几何图形是高度相关的,可以逐行使用NMS进行合并(猜测是由于文本朝向大多数为横向),再对每一行合并的结果再使用NMS进行合并。合并区域的所有像素点的预测值采用加权平均,不同于普通NMS的丢弃,可以充分利用每一个像素点的预测值。

缺点

由于感受野的限制,对于长文本的的检测效果较差。

个人总结

EAST通过FCN网络将不同尺度的特征图融合,增强了特征图的信息表达,最后在Pixel上直接回归出带角度的框,根据文本检测的特点提出局部感知NMS加快后置处理的速度并且充分利用了每一个预测结果。整个算法过程优雅简洁,之前的文本检测都是基于目标检测框架,通过设置适合文本大小的Anchors(Textbox)或者CTPN的后连接。而EAST却巧妙利用了语义分割的思想,打开了文字检测的新大门。

二、Advanced EAST

无论文,算法来自于ICPR比赛,主要针对于EAST对长文本检测差进行改进。

网络结构

作者发现EAST对长文本检测差主要受到感受野的限制,于是对于RBOX不再预测距文本框上下左右的距离,而是将Text score map分为文本头部、中部和尾部三部分。


网络结构.png Advanced EAST原理图.png

输出层分别是1位score map, 是否在文本框内;2位vertex code,是否属于文本框边界像素以及是头还是尾;4位geo,是边界像素可以预测的2个顶点坐标。其中所有像素构成了文本框形状,然后只用边界像素去预测回归顶点坐标。边界像素定义为黄色和绿色框内部所有像素,是用所有的边界像素预测值的加权平均来预测头或尾的短边两端的两个顶点。头和尾部分边界像素分别预测2个顶点,最后得到4个顶点坐标。

后置处理

1由预测矩阵根据配置阈值得出激活像素集合
2.左右邻接像素集合生成region list集合
3.上下邻接region list组成region group(文本框激活区域)集合
4.遍历每个region group,生成其头和尾边界像素集合,
5.根据头和尾边界像素预测的到顶点Delta值与该边界像素坐标值计算顶点坐标,每个顶点的所有预测值的加权平均值作为最后的预测坐标值,并输出score


后置处理.png

实测图

在作者预训练的736的权重下对营业执照进行预测,对长文本的检测效果变好,但是对密集文本的效果变差,感觉作者的后置处理的逻辑还有优化的空间。


image.png
image.png

个人总结

Advanced EAST是基于EAST对于长文本检测表现差的痛点进行改进,通过将文本区域切割成头、中、尾,其中头尾预测角点,减少了预测长文本时的困难度。但是并没有从根本上去解决长文本预测问题,因为在像素点分类时,依旧需要判断是否是头或尾,还是需要用到整个文本区域的信息。因此长文本预测问题仅在回归框的维度上解决了,在分类维度上依旧存在。并且新提出的NMS,虽然相对于局部感知NMS的复杂度更低,稀疏文本上表现较好,但是对于密集文本效果较差,对于后置处理还需要进行优化。

三、PixelLink

论文关键idea

Pipeline

论文中给出了两种网络结构:PixelLink+VGG16 2s和PixelLink+VGG16 4s ,下图的网络结构为PixelLink+VGG16 2s。
对于PixelLink+VGG16 2s网络结构:其融合的特征层包括:{conv2_2, conv3_3, conv4_3, conv5_3, fc_7},得到的特征图分辨率为原图的二分之一 。
对于PixelLink+VGG16 4s网络结构:其融合的特征层包括:{conv3_3,conv4_3, conv5_3, fc_7},得到的特征图分辨率为原图的四分之一 。

标签生成过程

像素连接规则

对于预测的像素和链接,可以分别对它们应用两个不同的阈值。即筛选出正像素和正链接,然后使用正向链接将正像素组合在一起,从而产生CC的集合,每个CC代表检测到的文本实例,实现了实例分割。值得注意的是,给定两个相邻的正像素,它们的连接是由它们两个预测的,并且当两个连接预测中的一个或两个都为正时它们应该连接。连接的规则采用的是Disjoint set data structure(并查集)的方法。

提取边界框

通过OpenCV(2014)中的minAreaRect的函数将语义分割得到的CC组件进行实例分割,包含CC的最小外接矩形(带角度)。没有再进行边框回归,这也是和SegLink等回归方法的关键区别:PixelLink是直接从分割结果中提取bbox,而SegLink采用的是边框回归。
下图表示输入样本和提取边界框的过程。虚线框中的八个热图代表八个方向上的链接预测。


image.png

分割后的过滤

由于PixelLink尝试通过链接将像素组合在一起,因此不可避免地会带来一些噪点预测,因此后过滤步骤是必要的。简单而有效的解决方案是通过检测框的简单几何特征进行过滤,例如宽度,高度,面积和高宽比等。在ICDAR2015中,作者过滤了短边小于10个像素点,面积小于300的文本实例。(不同的数据集需要调整不同的策略)

整个后处理过程

网络对每个像素点输出了18个预测值,分别是文本/非文本以及八个领域正链接/负链接,使用两个阈值对其进行过滤,得到正像素及其正链接。通过像素连接规则,将像素点连成若干个CC组件,再使用minAreaRect得到不同CC组件的外接矩形作为其预测文本框。最后使用后过滤规则消除部分噪音区域。然有些词在文本/非文本预测中难以分离,但它们可以通过链接预测分离。

PixelLink的优势

PixelLink作为一种基于分割的方法,与基于回归的方法相比有几个优势:

PixelLink的不同tricks效果分析

不同tricks效果.png

个人总结

个人非常喜欢这边论文,实验做的非常全,从各个维度各个tricks去评估了算法。
PixelLIink,使用pixel分类进行语义分割,link链接进行实例分割,不同于以往的边框回归的方法,降低了对感受野的要求以及预测神经元的任务复杂度,相比于其他方法不需要大数据集,更少的训练步数,就能得到具有竞争力的结果。

但是,缺点也很明显。

改进方面可以找一个和EAST对感受野折中的方法。

四、PSENET

论文关键idea

Pipeline

论文中对网络结构交代的并不是和清楚,我看了源码之后整理了一下。
backbone是Resnet网络(这里将蓝色特征图用{C5,C4,C3,C2}对应{P5,P4,P3,P2}),采用了FPN结构。

Pipeline.png

渐进尺度扩展算法

假如n=3,我们可以得到三个分割结果S1,S2,S3,首先使用S1(最小内核)的分割结果进行初始化,得到四个联通的CC组件{C1(深蓝色),C2(绿色),C3(红色),C4(天蓝色)}。基于最小内核完成了实例分割,将紧密的文本实例分开。然后我们通过合并S2的结果得到图(c),再合并S3的结果得到图(d)。合并过程如图(g)所示。扩展基于广度搜索算法,该算法从多个核的像素开始,然后迭代地合并相邻的文本像素。注意,在展开过程中可能存在冲突的像素,如图3(g)中的红色框所示。在我们的实践中处理冲突的原则是,混淆的像素只能在先到先得的基础上由一个单一内核合并。 由于“渐进的”扩展过程,这些边界冲突不会影响最终检测和性能。


渐进尺度扩展算法.png

标签生成过程

PSENet产生具有不同内核规模的分割结果{S1,S2,S3,S4,S5,S6},因此,它需要相应的Ground Truth。使用 Vatti clipping algorithm 把图(a)中的原始蓝色区域Pn缩减di个像素得到红色区域Pi,图(b)代表原始的文本实例mask区域,图(c)表示依次缩减得到的S1,S2,S3对应的G1,G2,G3。


标签生成过程.png

实测图

默认参数。仅在ICDAR2015上进行训练,预测结果断框明显(需要调整m,m越大越难区分紧密文本,m越小越容易断框)


实测图.png

个人总结

作者也是基于实例分割去完成文本检测,但是基于实例分割方法的痛点就是对紧密文本的区分能力弱,作者没有使用link的思想在语义分割的基础上完成实例分割(pixel-link使用link去分割密集文本),而是使用最小内核的思想完成实例分割,再用渐进式的方法使用不同内核补充实例分割区域。对于弯曲文本的效果远优于其他算法。但是需要合理的选择超参数,不用数据集需要调整不同的n,m值(这两个值可以去看下论文)。

五、SegLink

论文关键idea

Pipeline

Pipeline.png
网络输出维度.png
Link.png

Combining Segments with Links

Algorithm1.png

个人总结

感觉文章主要是对CTPN的改进,采用了多尺度的SSD作为backbone,加入了角度预测,没有使用CTPN简单的后连接规则,而是选择在网络中加入Link的思想,由网络去判断框与框是否需要进行连接。可以较好的处理长文本,由于加入了link对密集文本也有一定的区分能力。
缺点:

六、Textboxes

论文关键idea

anchors.png

Pipeline

Pipeline.png

标签生成过程和损失函数

这部分和SSD完全一致。

多尺度预测

虽然在anchors尺寸和卷积核尺寸上针对文本检测进行了改进和优化,但是在检测长文本行(即超过了默认框的最大比例)还是会出现检测不到的情况。针对这个问题,论文提出在预测时将原图片放缩到不同的大小,分别为 300X300,700X700,300X700,500X700,1600X1600(宽X高)。注意在训练时使用的是300X300。

个人总结

七、Textboxes++

论文主要是针对Textboxes进行改进,最大的提升是可以预测旋转文本框。其他方面的改进比较小,有兴趣可以看看原始论文看看作者的工作。在此不再赘述。

Pipeline

依旧是SSD结果作为backbone。


Pipeline.png

如何处理带角度框

对于黄色实线为真实框,我们先求其最小外接水平矩形得到绿色实线框,黑色虚线框和绿色虚线框均为预设置的anchors,计算和绿色实线框IOU最大的预设框即绿色虚线框,回归其四个点坐标至真实框(红色箭头)。


image.png

个人总结

上一篇 下一篇

猜你喜欢

热点阅读