编者按:李白的《秋浦歌》中有这样一句诗:“题诗留万古,绿字锦苔生”,描绘了天执笔、地做纸、苔为墨,挥毫题字的豪迈场景,也展示了自然场景中文本类型的多样性;而另两句“古壁剥旧题”,“废寺失题名”,则暗示了场景噪声对文本的影响。这几段描写共同衍生出了现代计算机视觉领域中的一个挑战,即复杂开放场景中的文本理解。
本文中,来自华中科技大学的白翔教授,将针对场景中文字类型多样、场景复杂多变、以及场景噪声等问题,带着大家通过深度神经网络,在开放场景中实现准确的文本理解。
文末,大讲堂特别提供文中提到所有文章的下载链接。
![](https://image.jiqizhixin.com/uploads/editor/71e08413-0900-4bcd-9bc1-2a511a89e655/1529481881452.png)
![](https://image.jiqizhixin.com/uploads/editor/cd39a006-c0f7-4a96-ba73-048a35708623/1529481881566.png)
本次报告是关于场景文本理解的。众所周知,深度学习已在图像视频方面显示了巨大的能力,且在文本分析领域也取得了一些有意义的进步,我也在尝试将深度学习用于文本相关工作。
文本理解目前主要有两个方面的工作,一个是传统的文本理解,它往往只需识别文档中的文本;而另一个场景文字理解,需要将照片或视频中的文字识别出来,它包含文本检测和文本识别两个步骤:
首先是对存在文字区域的定位(Text Detection),即找到单词或文本行的边界框(bounding box);然后对定位的区域内容进行识别(Text Recognition),即预测边界框中每一个字符的类标签。将这两步合在一起就能达到最终目的:端到端的文本识别。
![](https://image.jiqizhixin.com/uploads/editor/ac4794d9-c734-4ca9-811c-46fcf1eca73c/1529481881179.png)
我的报告分为五个部分。首先,回顾近来用于场景文本理解的深度学习方法;然后介绍我们在场景文本检测和识别方面的最新工作;最后介绍一些场景文本理解的应用和我对领域趋势的认识。
背景
![](https://image.jiqizhixin.com/uploads/editor/2b06424b-c969-479b-94f7-8c70ea6b41b0/1529481882051.png)
相比于文件图片,自然场景图片中文字的分布更加稀疏和分散,其具有多方向且多语种的特性。
![](https://image.jiqizhixin.com/uploads/editor/1b662582-ec28-416b-b38d-93cb7ac818c0/1529481881944.png)
在2016年以前,大多数场景文本检测工作有三个步骤:首先,利用手工设计特征生成候选框;然后,利用二分类卷积神经网络或随机树来进行文本/非文本区域的分类,即过滤掉误检的候选框;最后,利用CNN来修正区域定位,以得到较精确的回归结果。
![](https://image.jiqizhixin.com/uploads/editor/96419430-46c3-46b9-a088-468cbf3b573a/1529481881822.png)
在2016年以后,文本检测工作逐渐受到深度神经网络的影响,可以大致分为三类:
其一是基于分割的思想,通过分割网络提取文本区域,然后采取一些后处理方法获取边界框。代表性的工作是发表在CVPR2016的“Multi-oriented text detection with fully convolutional networks”;
其二是基于候选框的思想,直接用一个神经网络来检测文本边界框。代表性的工作是发表在CVPR2016的“Synthetic data for text localization in natural images”;
其三是混合思想,它采用多任务学习的框架,结合了分割和边界框检测的方法。代表性的工作是发表在ICCV2017的“Deep Direct Regression for Multi-Oriented Scene Text Detection”。
![](https://image.jiqizhixin.com/uploads/editor/880d5ba8-833f-40d4-b04a-8eaa12c8b59d/1529481882438.png)
场景文字识别大致分为两类思路:其一是从单词或字符层面入手,设计单词分类器或字符分类器,将每一个单词或字符作为一类目标,进行多类别分类任务。
而近来循环神经网络大放异彩,它可以将文本识别看作一个序列标签问题,并能够直接输出标签序列。因此,第二种思路从序列层面入手,将文本看作一个字符序列,通过设计序列特征提取器,结合循环神经网络(RNN)和CTC模型(Connectionist temporal classification),将文本序列作为一个整体进行识别。
![](https://image.jiqizhixin.com/uploads/editor/ab0d7c5c-326c-4b2b-8dae-cdad0d772a6e/1529481882526.png)
从“场景文本理解”相关文章在2017年顶会中统计数据来看,超过80%的文章聚焦多方向文字检测,而对场景文本识别和端到端识别的关注度相对较低,且大多数文章集中于解决英文文本问题。
![](https://image.jiqizhixin.com/uploads/editor/07ae0320-1d06-4ca4-af26-e8e5cf1ac66a/1529481882622.png)
实际上,拉丁文和非拉丁文是截然不同的。我们在此以英文(拉丁文)和中文(非拉丁文)举例,前者相邻单词间通常有一个空格,而后者没有明显的视觉划分,因此中文的单词划分只能借助语义信息指导。考虑到此差异性,如果设计一个同时适用于拉丁文和非拉丁文的文本理解系统,可采用基于文本行的检测和序列标签方法。
![](https://image.jiqizhixin.com/uploads/editor/3c75aed0-fa91-47d1-8035-9417b8711ba5/1529481882780.png)
区别于普通的物体和英文单词,文本行具有更大的高宽比,对于普通的卷积核,文本行不能被完全覆盖。这意味着现有基于深度学习的目标检测方法并不能很好适用于场景文本检测。
![](https://image.jiqizhixin.com/uploads/editor/09487a2e-2399-4ce8-8b63-6e3604b6d29a/1529481883118.png)
上表展示了在ICDAR 2013、ICDAR 2015、RCTW 2017数据集上检测达到的最好F值结果。即便使用更多的训练数据,中文数据集上的表现也要明显低于英文数据集,这是因为中文文本行相对英文有更大的比例变化。这里中文场景文本RCTW数据集来自于我们最近组织的ICDAR(International Conference on Document Analysis and Recognition)比赛,RCTW数据集包含很多长文本数据。
![](https://image.jiqizhixin.com/uploads/editor/12a623ff-8f3a-4114-bf2b-5a3c546dc307/1529481882896.png)
在非拉丁文本检测中,为了克服长文本行的较大比例变化,我们引入一些策略:首先改变卷积核尺度,比如使用长条形卷积核;然后为了增大感受野范围,我们采用类似于inception的模块,组合不同卷积核产生的特征图。此外,使用基于部分的模型也是一种很好的选择,但这就需要把文本行中相邻的部分进行分组。
场景文字检测
Proposal-based method
![](https://image.jiqizhixin.com/uploads/editor/e8e00fa4-b57e-4baa-8189-4792697f055b/1529481883198.png)
这里主要介绍两个场景文本检测思想,一个是基于候选区域的方法(TextBoxes);另一个是基于部件的方法(SegLink),通过检测部件后将其连接起来。首先介绍TextBoxes:
![](https://image.jiqizhixin.com/uploads/editor/371ccc0e-d248-485c-98fa-1ecbe02dba4e/1529481883303.png)
在引入我们的算法之前,首先回顾一下基于CNN的检测方法:SSD(Single Shot detector )。SSD开始在深度特征图上初始化一些默认的方框,这里我们以4*4和2*2的特征图举例。然后默认框将被分类且被分配一个检测分值,同时,默认的方框被回归到一个确切的位置。默认框和回归结果都是矩形的,用中心点和宽高可以将其表示。
![](https://image.jiqizhixin.com/uploads/editor/61f88aee-d722-48b9-8b80-3bcfe10d024d/1529481882995.png)
TextBoxes方法采用SSD作为基础框架,首先在设计默认框(Default Box)时,采取多比例大小的框(包含长条形状的框)。TextBoxes方法对SSD的卷积核也进行了改进,因为文本行往往比普通物体更长,常用卷积核并不能和文本行很好匹配,因此这里将1*1或3*3的卷积核更换为适合文字的长条形卷积核。
![](https://image.jiqizhixin.com/uploads/editor/3f3ea126-e5f1-4006-85d6-f590bd48b95f/1529481883468.png)
由上表可以看出,TextBoxes明显优于SSD并且在ICDAR2013数据集上达到了state-of-the-arts的效果,这个数据集主要由包含水平文本的图片构成。
![](https://image.jiqizhixin.com/uploads/editor/afc32ff9-1a3c-4f31-8d69-1d1f4e2cc8d3/1529481883575.png)
而现实图片中的文本往往不是水平的,也就是说,文本的边界框是多边形而不总是矩形的,因此我们添加了一个分支来回归多边形坐标,进一步优化TextBoxes以适用于多方向文本。
![](https://image.jiqizhixin.com/uploads/editor/c6bca98c-f7d6-453a-a365-41cb44fb6c5b/1529481884050.png)
我们在ICDAR2015数据集上验证了我们的算法,实验表明,TextBoxes++达到了state-of-the-art的性能。
![](https://image.jiqizhixin.com/uploads/editor/67c4bb4f-7436-4e15-92b2-399e3bea096a/1529481884151.png)
为了进一步扩大卷积神经网络的感受野,我们使用联结多种特征图的inception模块,举个例子,上图的inception模块整合了3*3、1*5、5*1三种不同卷积核产生的特征图。
![](https://image.jiqizhixin.com/uploads/editor/e3d1aa92-fb55-4f0a-8bb3-ac1a8d7329e4/1529481884232.png)
为了验证inception模块的有效性,我们在RCTW 2017的一个数据子集上进行测试,这个数据集主要包含一些长条形文本图片,结果表明inception 模块有效提高了长条文本检测准确率。
![](https://image.jiqizhixin.com/uploads/editor/ff94104d-f492-4559-82ca-49524200fb33/1529481886190.png)
我们也在整个RCTW数据集上进行了测试,通过和曾在比赛中获胜的其他团队方法进行比较,可以看出我们结合inception block的TextBoxes++方法达到了最高的F值。
Part-based method
![](https://image.jiqizhixin.com/uploads/editor/8f6c11f8-bc1b-4c3e-9490-099027bec4c9/1529481886282.png)
![](https://image.jiqizhixin.com/uploads/editor/abb5a5eb-ed07-42fa-82ef-7c77d124a976/1529481886396.png)
接下来介绍基于部件的方法SegLink,它的核心思想是将文本行分解成两种可检测的元素:定义为部件(segment)和关联(link)。部件是指文本行的一部分(图中黄色部分),关联是指连接两个相邻部件的联系(图中绿色短线),被关联表明其属于同一单词或者文本行。 基于segments和links,整个文本行可以通过一个简单的组合表达出来。因为Segments和Links不涉及感受野问题,所以这个思路可以处理长文本行。
![](https://image.jiqizhixin.com/uploads/editor/8dc0b926-85bf-41d7-a16e-b03f6993e7bb/1529481886683.png)
如图是SegLink的检测框架图,我们依旧使用SSD作为基础框架,采用VGG16检测模型,通过多层CNN同时检测segments和links,跨层连接是对不同层的两个segments的连接,它也是通过计算得到的,因为相邻的segments可能不会来自同一层。
![](https://image.jiqizhixin.com/uploads/editor/585cd045-2c39-493a-bc4d-82b4b3dd47d5/1529481886800.png)
从在MSRA-TD500和ICDAR2015两个数据集上的测试结果来看,我们的SegLink方法对方向不确定的文本行和中英混合的文本都有较好的检测性能。
![](https://image.jiqizhixin.com/uploads/editor/7733bdf8-93d3-421d-b706-519e71e8d84b/1529481886545.png)
事实上,SegLink不仅能够处理长文本行,还可以很好地检测弯曲排列的文本行。如图,星巴克的logo字母是弯曲排列的,而SegLink可以灵活地适应它的文本形状。
场景文字识别
CRNN model
![](https://image.jiqizhixin.com/uploads/editor/04e4ac3c-6f9e-4709-8cc3-dfe391afe8e4/1529481887454.png)
针对场景文字识别,这里主要讲述两个算法,针对整齐规则文本的CRNN模型,和针对不规则形文本的RARE模型。首先介绍CRNN:
![](https://image.jiqizhixin.com/uploads/editor/ad4d3bce-0ba3-48f5-82e0-f28b67fcb786/1529481887377.png)
该网络由三个部分组成:一个CNN网络,一个RNN网络和CTC损失。CNN(卷积神经网络)从输入图片提取特征,然后我们将图片特征转化为特征序列,作为序列标签输入到LSTM中,最后CTC(Connectionist temporal classification) loss将序列标签转化为文本。将这三个部分组合从而可以端到端地训练。
![](https://image.jiqizhixin.com/uploads/editor/de16798f-b3d6-4c24-a3e9-b8990b7f3327/1529481887611.png)
我们将每一个像素宽度图片的深度特征看作一帧,通过这种方法,可以从左到右获得一个帧序列,每一帧对应原始图像中的局部区域。
![](https://image.jiqizhixin.com/uploads/editor/e1757454-1fc1-4c3a-a653-2a3210dc316c/1529481887538.png)
针对开放字典数据集,我们的方法在识别精度上达到了当时的state-of-the-arts。CRNN还具备以下优势:可以端到端训练;且不受字符标注的约束,这意味着我们可以直接输入文本行进行训练和测试;它没有字典集的限制,因此我们可以将其用于其他序列的识别,比如识别银行卡上的数字;在模型大小上,它比主流的模型参数减少了40~50倍,更有利于在工业实际场景中落地。
RARE model
![](https://image.jiqizhixin.com/uploads/editor/78598912-3e33-4b5e-b2d3-7a41afccc2b8/1529481887793.png)
对于形状不规则的文本行,我们提出了RARE(Robust text recognizer with Automatic REctification)模型来解决。
![](https://image.jiqizhixin.com/uploads/editor/1dc3634f-fa45-4576-b264-554ddb0ea724/1529481887721.png)
如图,由于拍摄视角的变化、文字曲形的排列方式等因素影响,自然场景图片中的文本形状常常是不规则的,如图中SVT-Perspective和CUTE80数据集所示,这就给识别造成了极大的困难。CRNN可能对此类情形并不奏效,它是在输入文本水平的前提下提出来的,因此我们提出了RARE。
![](https://image.jiqizhixin.com/uploads/editor/09c0447a-80f5-4346-a1a2-3710711c0950/1529481887966.png)
我们设计的网络由两部分组成,空间转换网络(STN, Spatial Transformer Network)和序列识别网络(Sequence Recognition Network)。其中,STN负责修正输入图片,使其图片中文本呈水平形,SRN负责识别文本。这两个网络通过反向传播进行联合训练,上图中的虚线就表示反向传播。
SRN包含一个编码器和一个解码器。编码器由一个ConvNet和一个Bi-LSTM组成,用来生成特征序列表达,解码器是一个基于注意力机制的字符生成器,根据输入序列循环地产生字符序列,根据每一步的注意力机制来解码相关内容,上图展示了SRN在各数据集上的识别精确度。
区别于CRNN模型中的解码器,我们使用基于注意力机制的模型作为RARE的解码器。解码器逐步将一些特征帧解码为一个字符,但由于某些帧中的形变,解码器可能会输出一些错误的识别结果。
![](https://image.jiqizhixin.com/uploads/editor/de97eabe-adcf-49e6-be27-dfa7ff151b82/1529481887873.png)
在识别之前,我们可以引入一个空间变换网络STN(Spatial Transformer Network)来修正不规则文本图片。
![](https://image.jiqizhixin.com/uploads/editor/3958267b-a081-443b-91eb-0000ff7b036e/1529481888064.png)
这里具体讲解一下STN的结构。首先定位网络生成一组基准点C,然后在网格生成器中,从基准点计算TPS变换的参数,在原图上生成一个采样网格P,采样器同时提取网格P和输入图片I,以此输出一个修正后的图片。
STN的一个特点是其采样器是可微的,因此只要有一个可微的定位网络和一个可微的网格生成器,STN就可以反向传播误差并得以训练。
![](https://image.jiqizhixin.com/uploads/editor/48925f69-0b25-4f6e-9ba1-b047d31c3bec/1529481888166.png)
网格生成器估计TPS变换的参数,并产生一个采样网格。如上图,原图中基准点是C,修正后图中定义基准点为C’,网格生成器计算TPS变换的参数T,采样器将原图I 修正为I’。上表显示,相比于单独使用SRN,添加STN可以大幅度提高识别效果,特别是对于一些有形变的文本数据集。
![](https://image.jiqizhixin.com/uploads/editor/2484581e-7e87-45a8-a408-fc3f1a075730/1529481888249.png)
尽管STN校正有效地提高了识别率,但是对于严重弯曲的文本图片它的性能并不理想。因此,我们用带有边界点标注的文本数据作为定位网络的监督信息训练,实验表明,识别率有显著提升。
![](https://image.jiqizhixin.com/uploads/editor/2e7d4a33-627e-420e-8511-29a924a4ece9/1529481888349.png)
如图,是STN对SVT-Perspective和CUTE80两个数据集中有形变文本的修正结果。
![](https://image.jiqizhixin.com/uploads/editor/2413b1e0-9a58-41a6-bd7a-610ef631fb7f/1529481888527.png)
另一个有趣的发现是,将检测和识别结合起来,可以使得最终检测的准确率有极大提升。如图,输入图片通过检测器检测出来目标区域后,将检测的区域抠取出来输进识别器,这种组合使得很多误检可以被过滤掉,也就是说最终检测的性能提升了。
![](https://image.jiqizhixin.com/uploads/editor/a51e4dda-4b29-4179-88cd-ae858aefd650/1529481888426.png)
我们对检测得分和识别得分求取调和平均值,最终从ICDAR2015上的实验结果看出,这种组合有效提高了文本检测的效果。
相关应用
结合文本线索的细粒度图片分类
![](https://image.jiqizhixin.com/uploads/editor/28c55b08-1661-4341-b727-46f1b2b6aa55/1529481888591.png)
这里主要介绍场景文本检测识别的三方面应用:
1) 结合文本线索的细粒度图片分类;
2) 基于数字的行人重识别;
3) 从文本识别到行人重识别。
![](https://image.jiqizhixin.com/uploads/editor/2a741dd6-5797-42b4-a1cb-2e6875d2bfc0/1529481888711.png)
通常,只用图片直观的视觉信息是不足以进行细粒度图像分类的,如上图,看上去(a)和(b)是类似的,而实际上,(b)和(c)描述的是同一场景,且与(a)大不相同。我们仔细观察,(b)(c)中分别包含了语义相近的词“cafe”和“coffee”,这其实可以在图片仅有微小视觉差异的情况下帮助我们进行细粒度的图片分类。
![](https://image.jiqizhixin.com/uploads/editor/a4f69736-d4a2-41f0-a47b-43de4bd6d059/1529481890170.png)
自然场景图片中的文本包含了丰富的语义信息,它与目标或场景有着非常密切的关系。因此,我们将文本表达和深度视觉特征结合起来,训练一个全局的深度卷积神经网络。
整个端到端的算法流程如上图所示。首先使用一个已有的文本识别框架来提取出文本,然后通过word embedding提取这些文本的特征,同时,GoogLeNet对输入图片提取1024维视觉特征向量,为了消除文本中的噪声,我们又添加了一个注意力模型对提取出的文本分配权重,最后将视觉特征和文本特征基于一定的权重组合起来,利用多模态融合特征进行最终的分类。
![](https://image.jiqizhixin.com/uploads/editor/34dad875-d602-41cc-aa19-652f04734b23/1529481891364.png)
如上图所示,图片中的一些文本不是与图片表达的内容密切关联的,它们会对后期分类造成干扰,因此我们使用了一个注意力模型来筛选对分类有帮助的文本。
![](https://image.jiqizhixin.com/uploads/editor/298133ab-1e38-40ea-a74f-e41e3453e8a8/1529481891565.png)
为了验证算法的有效性,我们在两个数据集上进行了测试,一个是办公场所建筑数据集Con-Text,它包含28种场景,共24,255张图片。另一个是饮料瓶数据集Drink Bottle,它选自ImageNet数据集,含有20种饮料瓶共18,488张图片。这两个数据集图片都包含了文本,且不同种类间只有很小的视觉差异。
![](https://image.jiqizhixin.com/uploads/editor/5d49a31d-1f14-4895-ab92-b104ab89cee1/1529481891242.png)
可以看出,添加文本线索后,在Con-Text和Drink Bottle上的识别性能都有大幅度的提高。
![](https://image.jiqizhixin.com/uploads/editor/7637a178-193e-4e5e-841f-7f2b0620bf5a/1529481891754.png)
如图可以看出,网络中添加的注意力模型可以过滤掉错误的文本,并选择出与类别更相关的文本。
![](https://image.jiqizhixin.com/uploads/editor/9f0b2d9e-0021-4163-86a3-cf18daae7421/1529481891851.png)
我们也将学习到的融合特征用于图像检索,如图,只用视觉信息可能会因为其差别过小引起误分类,而加入文本信息后,酒瓶图片检索的mAP提升了12.8%。
基于数字的行人重识别
![](https://image.jiqizhixin.com/uploads/editor/8342b917-c9e5-4660-b2f3-d6710e4b71db/1529481891923.png)
![](https://image.jiqizhixin.com/uploads/editor/7a3309e0-c93f-4d66-8a71-391988b72536/1529481892035.png)
在马拉松比赛中,由于人员庞大、时间持续性长、场景复杂、服装相似等特性,使用行人重识别或者人脸识别的方法来跟踪参赛者是非常困难的,考虑到每一位选手有一个独特的编号,我们试图从场景文本检测的角度入手,根据编号进行行人的定位与跟踪。
![](https://image.jiqizhixin.com/uploads/editor/d5663600-bec3-42ea-b845-65c24c1bda31/1529481892140.png)
如图,我们提出的方法分为如下几个步骤:首先使用TextBoxes对输入图片进行文本检测,即定位出文本区域,然后通过CRNN进行文本识别,再将带搜索文本与识别出的文本库进行匹配,寻找到该数字文本对应的选手。
![](https://image.jiqizhixin.com/uploads/editor/5720757d-b478-4364-81ec-9ae431336847/1529481892239.png)
我们在自己收集的一个马拉松数据集上验证了这个基于号码牌的行人重识别方法,Marathon数据集包含8706张训练图片和1000张测试图片,经测试行人重识别正确率为85%,从某种程度上讲它可以帮助人们进行搜索,还能有效减少搜索时间。
从文本识别到行人重识别
![](https://image.jiqizhixin.com/uploads/editor/aa5d6af1-c074-489f-91a4-2521dbe0835e/1529481892401.png)
![](https://image.jiqizhixin.com/uploads/editor/55deebac-165b-48ed-83d0-9590489e3b9e/1529481892337.png)
我们发现了一个很有趣的类比思想,将水平文本行看作一个从左到右的序列可以取得很好的识别效果,那么受此启发,我们可以将行人看作一个从上到下分块的序列进行重识别。
![](https://image.jiqizhixin.com/uploads/editor/a46364bb-58e3-4c1c-8903-7c2b42004561/1529481892481.png)
我们又进一步探索了LSTM在行人重识别中的作用,发现LSTM可以学到比CNN更加好的特征,如图是基于LSTM的模型,添加LSTM后在Market1501上的识别率显著提升。
![](https://image.jiqizhixin.com/uploads/editor/34cbfa79-2267-48aa-8fe5-821bcaf4a2d8/1529481892575.png)
我们用上述网络进行行人检索,由上图可以直观地看出,添加LSTM后检索结果明显优于以往。这是因为LSTM使用相邻部分上下文信息丰富了每个人的部分特征,使得模型更具有判别性。
未来发展趋势
![](https://image.jiqizhixin.com/uploads/editor/8f0aac28-e046-40d7-836b-f6d1fc62581d/1529481892708.png)
未来我们将更加着眼于以下几个方面:不规则文本的检测,比如针对弯曲的或者多视角下的文本行;端到端的多语言文本识别;半监督或弱监督的文本检测识别;基于生成对抗网络的文本图像合成;针对文本识别或自然语言处理的框架;场景文本和图像/视频的结合,以应用到更多的实际场景中去。
![](https://image.jiqizhixin.com/uploads/editor/4a081184-c983-416d-a6ea-0b25fbc8e6a1/1529481892815.png)
![](https://image.jiqizhixin.com/uploads/editor/1eb85d10-c419-4665-b699-477165b7dd3e/1529481892899.png)
![](https://image.jiqizhixin.com/uploads/editor/e16bcdca-8731-4832-9e90-bb272f228f71/1529481892996.png)
![](https://image.jiqizhixin.com/uploads/editor/de66c884-e633-4f0a-ae38-6b5c3626bd6d/1529481893107.png)
文中白老师提到的文章下载链接为:
https://pan.baidu.com/s/19zAhdrpRH1M5JpAwjpqnsw