一个人的文字检测

无痛的CTPN

2019-05-18  本文已影响2人  Ez_Life

CTPN算法背景

水平行文本

CTPN算法的提出,出于以下几点:

之所以有这样的想法,是因为基于通用目标检测的算法难以适应文字检测的场景,如上图中的文字,长度方面变化幅度很大。因此作者将文本在水平方向解耦,分成每一个小片,然后将文本行的检测转化为小片的检测,最后利用规则将属于同一水平行的小片组合成文本行。化繁为简。

CTPN创新点

RPN v.s. CTPN

CTPN的创新点主要由以下三点:

CTPN与RPN网络结构的差异

灵魂画手版本网络结构

如上图所示,作图为RPN,右图为CTPN的网络结构。可以看到,CTPN本身就是RPN,唯一不同的是加入了双向LSTM获取时序方向的信息,使得模型可以序列性的预测文本的小片。当然这里的不同之处主要有以下几点:

具体还需根据以下图进行理解:

具体网络结构

CTPN的整体结构:

标签构造

标签构造

如上图所示,给定一个文本的标注框,这里为(x, y, w, h)。作者沿着水平方向进行切分,偏移为16个像素。这样就得到了一系列的文本小片。这里左右标记为红色的小片,作者将他们(落在左右两端50像素以内的小片)作为side refinement时候的标签,用来约束网络对文本起始和终止点的矫正。至于这里取偏移为16的原因,是因为conv5的stride为16,相当于feature map中的一个像素对应标签的16的宽度。当然,这里关于感受野,conv5中的感受野为228x228,因此文本行anchor的高度最大不能超过228,如果超出则网络不能很好的进行预测。

网络输出

网络输出

其中,竖直方向坐标的构造如下面式子所示:

这里C为anchor的中心坐标,h为anchor的高度。上下两行分别对应预测值与anchor的相对位置,真值与anchor的相对位置。

边界anchor的矫正:

side refinement

除了所有的小片回归y, h;其中红色的anchor还需额外的回归水平坐标x,式子如下:

原理与上述竖直方向的计算方式类似,只针对处于边界的anchor进行计算。

后处理算法:文本线构造

文本线构造方法

文本线的图参考至知乎专栏https://zhuanlan.zhihu.com/p/34757009

小结

CTPN中的双向LSTM过于笨重,因此我们需要思考如何替代它。发现有人使用conv1x7替代双向LSTM,亲手实验了一下,以上是效果图。CTPN的算法虽然是2016的算法,但是其针对水平长行的检测现在也是工业级的,算法鲁棒。而这个算法也是文字检测领域对RPN的应用之一。CTPN就讲解这么多,具体还需要阅读论文,阅读代码。

代码链接以及文章链接如下:

https://arxiv.org/abs/1609.03605

https://github.com/tianzhi0549

https://github.com/eragonruan/text-detection-ctpn


欢迎关注微信公众号 10分钟深度学习,每天10分钟阅读深度学习


上一篇下一篇

猜你喜欢

热点阅读