最新场景文字检测进展(含代码)


       关于场景文字检测的定义、应用、意义等科普性质的细节这里就不提了,本文是一篇相对比较专业的文章,如果非此领域的同学请绕行。本文主要探讨场景文字主流的方法,并提供了一些创新思路,以及一个基于文献[1]的场景文字检测系统(csdn上分享了该代码)。就我所知(半年前全面搜索过),十分完善的场景文字检测的代码网上是没有的,有的只是一些算法,或者比较过时的系统,本文的出现正是希望通过本人的一点努力填补这个空白,方便广大研究者能够更快入门,至少一开始研究就有一个基本框架。

 

      目前主流的方法主要有两类:基于区域(MSER,最大稳定极值区域)和基于像素点(SWT,笔划宽度变换)的方法。在文献[2]中提到:截止2011年,场景文字检测结果最好的是韩国人Chunghoon Kim基于MSER的方法,其查全率(recall)62.47%,查准率(precision)82.98%。遗憾的是,他的方法并没有写成论文,其算法也不得而知。

 

       当然,使用SWT是更普遍的情况,[1]即是基于SWT的。SWT方法最有代表性的有两篇文章,都出自微软研究院,一篇是SWT开山之作——Epshtein大神的文献[3],一篇是巅峰之作——华科Cong Yao的文献[4]Epshtein大神提出SWT算法,使得场景文字检测向前迈出一大步,其算法核心非常简单,大致是(1)将原图做Canny检测,Canny边缘图作为算法的输入图,对每一个Canny点进行一次SWT算法,见图1(2)SWT算法的一个前提是作者认为每个字符的笔划宽度是大致相同的,所以从一个Canny边缘点顺着梯度方向出发,如果能够找到梯度方向正好相反的点,且该点也是Canny边缘点,则认为该笔划宽度有效;(3)当检测完所有的Canny点时,有效的笔划宽度就构成了输出图,即文字检测图,可见图2。当然,理论上是这样,而实际上会出现很多虚警图,这些虚警通常是由于类文字物体得到的,如条环、窗户、砖块和网格等。我认为该算法是基于像素点的,是因为起始点是Canny边缘点,梯度方向和大小也是基于边缘点,而笔划宽度则是将两个对应的Canny边缘点间的线段连接起来。基于像素点有一个最严重的问题,就是容易受到噪声点或特殊点的影响。比方说图2,本来很好的结果,却由于伪笔划宽度带了一些问题,因此做完SWT变换,必须做一些处理或改进


  

(a)原图的梯度方向                      (b)局部放大图

梯度方向图


   
(a) 原图                (b)Canny 边缘图           (c)SWT

2. SWT过程图(具体算法见[3])


    Cong Yao的文章曾让我大为震惊,虽然我并未做仿真,也没有按照其思路进行研究,但是并不妨碍我推崇这篇文章。我没有做仿真的原因是,这篇文章的工作量太大,对于只有半年时间写论文的我来说时间不够。通常,看到这类文章就像寻着一个珍宝一样,时不时要拿出来鼓励一下自己,什么是真正的好文章?既有创新,又有工作量。可能是受Marios Anthimopoulos的启发,Cong Yao使用的分类器是RFs(Random Forests, 随机森林。在文献[5]中,Marios例举了RFs在文字检测中比BoostingSVMNNs好的两个优点。我在网上搜过RFs的代码,只有一个简化版的,本来RFs是一种判决树,输出的是概率,具体阈值可以人为设定,但是简化版的只给出01。另外,该论文使用contour shape,  edge shape 很新的描述子作为特征向量,说明作者对图像领域最新发展是很熟悉的。作者一共给了十来个特征向量,测试这些特征的工作量可想而知。当然,工作量归工作量,如果结果不行,那工作量也是白瞎,但是作者不负众望,对ICDAR的查全率为0.66,查准率为0.68,对OSTD(倾斜场景文字数据库,由文献[1]作者发布)的查全率为0.73,查准率为0.77


(a)p, e, c, o出现了伪笔划宽度   (b)E, A, G, S包含伪笔画宽度

3. SWT由于噪声点引起的伪笔划宽度


    2012年,Weilin Huang提出了SWT的变体——SFT[6],在SWT算法中添加了颜色信息。2014年,将由本人提出另一种SWT变体——GSWT,目前还在进一步实验中,但相信不久就能成文,准备发到PR上。

 

    本人曾做过两个有趣的小实验,有图供大家参考批评。

    一是研究图像梯度时,发现文字的梯度大小图有一个很明显的特征,就是一个文字的笔划对应的两个边缘的梯度大小是大致相等的。见图4

 

    二是,由于SWT受噪声点影响较大,所以可以通过滤波,将噪声点过滤掉再使用SWT算法,但是一般低通滤波器会使文字的边缘信息造成模糊,所以保持边缘平滑滤波器是一个完美选择。我在这方面的研究还不深入,但是做个一个很神奇的实验。灵感来自于Gastal写的文献[7]Adaptive Manifolds滤波器是一种新型的而且性能非常优越的保持边缘平滑滤波器。见图5

4. 对比原图和梯度大小图。上行为原图;下行为梯度大小图,颜色从蓝至红表示值增大。可以发现,每个字中笔划对应的两个边缘梯度大小是基本相等的。


  

(a)对原图进行文字检测         (b)对经过AM滤波后的图进行文字检测

5. 黄色框表示检测到的竖直文字区域,红色表示水平文字区域。可见,原图由于噪声的影响,结果很不准确,而后者能够准确检测。


    最后,提一下我发布的一个场景文字检测系统——TSDFNS(text string detection from natural scenes)——也许是很多人最想要的。但在这里,希望大家有时间能够读一读上面我提到的两个小实验,或许会对你在这个领域有写帮助。代码见TSDFNS


 

参考文献

[1] Chucai Yi, etc. Text string detection from natural scenes by structure-based partition and grouping. TIP, 2011.

[2] Asif Shahab, etc. ICDAR 2011 Robust Reading Competition Challenge 2: Reading Text in Scene Images. ICDAR, 2011.

[3] Boris Epshtein, etc. Detecting Text in Natural Scenes with Stroke Width Transform. CVPR, 2010.(为了致敬,特意将Epshtein标为粗体)

[4] Cong Yao, etc. Detecting texts of arbitrary orientation in natural images. CVPR, 2012.

[5] Marios Anthimopoulos, etc. Detection of artificial and scene text in images and video frames. PAA, 2011.

[6] Weilin Huang, etc. Text Localization in Natural Images using Stroke Feature Transform and Text Covariance Descriptors. ICCV, 2012.

[7] Eduardo S. L. Gastal, etc. Adaptive Manifolds for Real-Time High-Dimensional Filtering. SIGGRAPH, 2012.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSTM的财务因子预测选股模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值