一、文本识别领域研究现状
目前的文字识别主要有两方面的研究。首先是传统的文字识别,也就是文档中的文字识别,主要是OCR技术,其技术已经比较成熟,效果也比较稳定。另一方面是基于场景的文字识别,也就是图片中的文字识别,即将图片里的文字转化成人类可以理解的语言。这个过程需要实现以下目标:获得图片中文字出现的位置,包括文本的起始位置、结束位置和上下高度;将所在位置的图片所包含的文本数据转化成人们可以理解的信息。这整个过程就是文字识别。
深度学习之所以能够比较成功地运用于场景理解,是因为拥有一个含有大量文字标注的数据集。但是将训练好的模型直接应用在文字识别上是行不通的,关键的问题在于文字和一般的场景物体相比具有特殊性。用传统的数据集来训练文字并不可行,文字标注也非常困难,因为文字形状的变化、颜色的变化、空间位置的变化难以完全预料。如何解决上述问题呢?答案就是合成数据。所谓合成数据,就是在一张图片中的某些区域添加文本,并加以不同的变化,比如字体的变化、颜色的变化、位置的变化等等。将通过上述方法得到的合成数据作为数据集,就可以训练一个网络。这样做的效果可能不好,但是可以通过其他方法进行改善。
二、TextBoxes:基于神经网络的文本检测
如报告开始所述,文本识别需要完成两个任务,一个任务是检测文字所在区域(Scene Text Detection),另外一个任务是对文本区域进行识别(Scene Text Recognition)。本篇论文将重点集中于第一个任务。
在这项工作中,检测任务的训练集有80万张图片,识别任务的训练集有900万个合成数据。训练好的模型在ICDAR场景下的检测识别精度可以达到90%以上,是目前最好的结果。文章提出的网络达到了这样的目标:模型能够直接产生文字包,并判断文字包中是否确实含有文字,如果没有就将该文字包舍去。
在TextBoxes网络中,每一层都会计算相应的卷积,并计算其响应及判别,在最后会将所有监督信息融合在一起,得到相应结果。得到的结果需要进行非极大值抑制处理以舍弃重复结果。在网络初始化过程中,需要按照一定的技巧设定default box,以把文字更好地呈现出来。另外一个重点是卷积核的设置,一般的卷积核是正方形形状的,但是在文字之中,卷积核的长应大于宽。通过以上技巧可以使网络效果提高非常多。
下图是一些实例,可以看到词间空隙,字体变化,光照变化,复杂背景等情况都能有效识别。这里有一个很重要的技巧,就是即使在检测的时候出现错误也没有关系,因为可以用最后识别的结果把一些错误去除。这是因为文字的特性跟一般问题不同,它输出的是一个序列,其正确结果惟一。如果结果是一个合理的单词,就可以把它作为一个正确的结果,否则就可以把它作为一个错误的结果去掉。
结合了检测任务和识别任务以后的结果分为Spotting和Recognition两部分。Spotting仅仅关注能否尽可能精确地定位文本框,而end-to-end Recognition不仅要看文本检测的效果,而且要看识别的结果是否正确。TextBoxes的所有指标都领先于其他算法。
三、CRNN: 端到端的场景文本识别
上述工作主要介绍了文本检测的相关工作,并没有涉及到文本识别的内容。下面介绍文本识别的相关工作:CRNN。CRNN的构成借鉴了语音识别里的递归神经网络(RNN)。在RNN中,如果输入一个序列,比如一段字符串或一段语音,会得到上下文相关的建模,而文字也可以类似地看待。但是检测到的文字区域本身还是图像,所以需要进行特征提取转化成序列。将所得序列交给递归神经网络,最后转化成可理解单词,如英文字符或数字。这么看就非常地简单和直接, RNN这个模型做了两件事情,一个是判定上下文的关系,另外一个是序列的输出。
图中的50/1k表示字典大小,none表示没有字典。显然有字典的时候结果更好,没有字典效果差些,但也很不错。总体来说CRNN比传统的方法以及其他深度学习算法都要优越。
需要注意的是,在不同字体,特殊字符,模糊文本以及有阴影的情况下,如果用传统方法来做识别,还是很困难的,但是由神经网络来做,都可以做的很好。这说明神经网络对变化的文字信号有非常好的识别效果,能给很多识别任务的性能带来明显的提升,因此可以满足一些实际需求,这也是为什么很多企业把文字识别作为重点研究方向的一个原因。另外还有一些识别错误的情况,但是如果人眼都看不清楚,也不能强神经网络所难。
CRNN方法的一些性能是值得注意的。首先训练CRNN不需要对文字字符进行切割,另外字典不是必须的——尽管有字典的时候切割效果会好一点,此外CRNN的模型与传统的神经网络相比要小得多。
四、鲁棒的场景文本识别
神经网络对有形变的文字的处理效果并不好,如果在其前面加一个形变纠正算法,使文字变成理想的样子,效果一定会有提升。那要怎么实现呢?首先网络模型要有文本切割能力,可以把非水平方向的文字进行切割;另外要有方向变化能力,可以把宽度不一致的文字变得平衡一点;最后要有取平能力,可以将有弧度的文字拉平直。
当训练好的模型做识别任务时,发现常规情况下的改善并不明显,这是因为这些图片还是比较好的,无法体现纠正算法的有效性。如果将数据集更改为两个专门做图像变化的和取形变化的数据集,会发现其效果明显优于已有方法。
五、文本识别在不同场景下的应用
纯粹的文字识别应用范围并不广泛,但是如果将文字作为线索,就可以应用在不同的场景。图片中的房子如果单看外形难以确定其用途,但是如果有文字信息,就不是什么难事了。再比如,所有的网络图片、视频都会有标签,如果将标签与场景结合,是可以分析出很多有效的东西。所以从很多方面看,文字识别都是一个趋势。但是目前做场景的人远多于做文字识别的人,如果把这两个相结合,会有更大的突破。总而言之,多特征融合是大的趋势,把文本特征和图像特征这两个特征不同的表达融合在一起,图像和文字都能发挥很大的作用,这里面还有很多东西值得探索。
对于低质量的视频图像怎么去做识别、检索、理解,也是需要讨论的。实际应用中会遇到很差的视频或图像,在这种情况下如何去识别,也是研究的趋势。这就是为什么图象识别准确率这么高,但是实际应用不多的原因:实际情况相当复杂。
下面结合具体的示例来介绍文本识别的一些应用。
1、以图搜题
以图搜题的目标是根据图片中的文字,将题库中匹配的题目找出来。相关公司的算法识别度已经很高。为什么他们可以做的很好呢?因为他做的是刚需,人人都能应用,他的用户是稳定的。
2、号码牌检测
一次马拉松比赛可以获得十几万张图片,要从这么多照片里找到包含特定参赛者的照片,是很困难的。如果人工识别,需要耗费很长的时间,但是如果将照片上传到服务器,通过深度学习进行分类,就不那么困难了。另外如果需要在比赛过程中定位一个人,根据人脸去寻找是相对较难的,因为人脸是有表情变化的,身体姿态也在不断的变化,但是如果按照号码牌来寻找就比较简单了。
六、总结与展望
未来的趋势是以文字为源头,把所有通过文字、视频、图像得到的任务信息进行整合,然后进行后续的其他任务,比如自然语言处理、舆情分析、图像理解等等。换句话说,未来的趋势就是利用多元融合、多元学习完成一个复杂的任务。
Q&A
提问:如果不对图片中的文本进行切割,怎样建立序列?怎样才能预测有多少个字?
白老师:这是一个很好的问题。事实上我们在训练的时候是把文字缩放到一个高度上,长度不变,从高度上去规划,所以序列的长度是可以变化的。最后输出的结果首先是可以克服长度的变化,另外我们的算法可以把重复识别合并。所以可以允许长度有一定的弹性变化。
提问:现在文本的校正效果是否不是很理想?
白老师:校正还是比较困难的。传统的校正方法都是处理一些情况还好的图像,深度学习网络的目标是希望各种情况都能识别出来,并对它进行相应的调整。但是当然我认为当前仍然属于探索的阶段,里面包含了很多的不确定性。