自然场景文本检测识别 - CharNet

自然场景文本检测识别 - CharNet

在之前的文章中,我为大家介绍了自然场景文本检测识别(STR)领域中经典的端到端(E2E)模型FOTS:

FOTS作为E2E模型的早期代表之一,在取得当时SOTA检测识别准确性的同时,保持了很快的运算速度,它也成为了后来众多STR模型比较的benchmark。今天我们要看的CharNet便是这些新模型中的佼佼者之一,它是2019年10月由码隆科技的研究者提出的E2E模型。之所以推荐CharNet,主要是因为它有以下几个独到之处:(1)它在ICDAR系列数据集上取得了SOTA的准确性;(2)它放弃了RNN而采用图像分割的思路做文本识别;(3)基于图像分割的思路使得它可以创新的将检测和识别网络并行计算,并省去了ROI Align操作。下面我就对CharNet做一个详细的介绍。(题图取自[1])

一、并行思路

我们知道目标检测中有两步法和一步法两大类:在两步法中,模型先预测目标框位置,再通过ROI Align操作将目标框区域缩放,进入识别网络做图像分类,其典型代表有Faster RCNN;而在一步法中,模型在每个卷积层像素点预测文本框位置的同时,直接预测该像素点对应的目标多分类概率,其典型代表有SSD和YOLO。在STR的E2E模型中,尽管不同模型采用的检测和识别网络有所差异,但整体架构上大多数模型都采用了类似两步法的结构,即检测 - ROI Align - 识别串行的流程。

FOTS两步式网络架构,图片取自[2]

这样的串行模式在面对规范文本的时候可以较准确的检测识别,然而,面对弯曲的文本,直接进行ROI Align操作会为识别网络引入大量的背景信息。如下图所示,由于文本目标"Moon"是弯曲的,整个文本区域的左上角和右下角存在无效背景,容易造成识别的不准确性。为了解决这一问题,有研究者提出了文本重构网络,将弯曲的文本转换为矩形。然而,这一方法难免会对字符产生畸变,模型较为复杂,而且不一定能适用于任意形状的文本。

文本重构网络,图片取自[3]

对于这一问题,究其原因是因为我们使用了两步法模型,识别网络依赖于检测网络的输出文本框在原图像中截取出来的小区域。在CharNet中,作者创新的采用了类似于一步法的思路,使用图像分割的方法在卷积层每个像素点直接做字符识别。这样一来,识别网络不再依赖于检测网络的输出截取,检测和识别可以并行计算,从而有效的解决了这一问题。

二、网络架构

CharNet文章中,作者尝试了两种骨干网络,ResNet-50和HourGlass,经测试HourGlass在准确性上略胜一筹。HourGlass网络与U-net的思想非常相似,也是结合了浅层的结构特征和深层的语义特征,但HourGlass中的上下行网络具有对称的结构,如下图所示。

HourGlass网络单元,图片取自[4]

CharNet在骨干网络的基础上分为两个分支,第一支为检测分支,第二支为字符分支。需要注意的是,检测分支是在文本行尺度上做预测,文本行目标是包含不同字符之间的间隙区域的;而字符分支是在字符尺度上做预测,其目标不包含字符之间的间隙。对于检测分支,作者针对不同数据集文本的特点采用了不同的方案。对于矩形文本居多的数据集,检测分支采用的是密集文本框预测,对每个像素点预测其属于文本区域的概率和文本框的位置。其在骨干网络之后增加了两个3x3卷积层和一个1x1卷积层,共输出7个通道,其中2个为文本/非文本概率,另外5个为该像素点距离文本框上下左右边的距离和文本框的旋转角度。最后模型会筛选出文本概率不小于0.95的文本框经过NMS后输出。对于弧形的文本,作者则采用了TextField的思想,感兴趣的朋友可以看下面的链接。

CharNet网络架构,图片取自[1]

字符分支则分为三个子支,它们都是在骨干网络输出的基础上增加了两到三个3x3卷积层和一个1x1卷积层。第一子支的目的是判断每一像素点是否对应于字符,其输出2个通道分别为字符/非字符概率,后续逻辑中模型会筛选出字符概率不小于0.95的像素点。第二子支的目的是做字符识别,其对每一个字典字符设计一个图像分割任务,例如对字符"a"的图像分割任务中,模型目标是将实际对应于"a"的卷积层像素点判为1,而将所有其他区域判为0。文章中作者共使用了68个字典字符,其中包含26个英文字母,10个阿拉伯数字和32个标点符号,后续逻辑中模型会对每一像素点选取所有分割任务中概率最大者对应的字符。第三子支的目的是计算字符框的位置,其为每个像素点输出5个通道,分别为该像素点到字符框上下左右边的距离和字符框的旋转角度。

CharNet在推断时按照以下逻辑进行。模型首先找出字符分支第一子支输出的字符概率不小于0.95的像素点,接着取出它们对应的第三子支的所有字符框并做NMS,然后为剩余的字符框按照第二子支输出的最大概率字符进行赋值。最后,模型将所有字符框分配到检测分支输出的文本框中,分配的标准是字符框与文本框有所交叠。该文本框内的所有字符连接起来即为最终的文本输出。

三、模型训练

字符尺度检测识别模型的重要问题是标注的成本太高,主流的文本检测识别数据集ICDAR等只有文本框而并没有字符框标注。在之前的一篇文章中,我介绍过一个字符尺度的检测模型CRAFT:

在CRAFT中,作者提出了一种弱监督学习模式。模型首先使用具有字符框标注的合成图片进行训练,当模型具有一定的预测能力后,再使用真实图片。使用真实图片时,模型将自己预测的字符框作为标注进行训练,但由于预测不一定准确,模型为这些字符框的损失增加了一个权重,权重取决于模型预测的字符数量与实际字符数量的差异。换句话说,CRAFT巧妙利用了字符数量这一指标衡量当前预测结果的准确性,并用于指导模型学习。

使用合成图片与真实图片训练的结果差异,图片取自[1]

在CharNet中,作者使用了类似的技巧。模型首先使用具有字符框标注的合成图片进行训练,此后再开始使用真实图片。CharNet与CRAFT的区别在于CharNet将字符数量错误的文本损失权重直接置为0,即仅使用字符数匹配的文本指导模型的学习。若模型预测字符框数量与实际字符数量一致,则直接使用这些字符框作为标注训练整个字符分支。需要注意的是,合成与真实图片的数据特点有差异,因此仅仅使用合成图片训练模型是不够的。上面的表格展示了使用ResNet-50、HourGlass-57和HourGlass-88骨干网络的模型在仅使用合成图片与使用真实图片训练的结果差异(w/ Real表示使用了真实图片),可以看到是否使用真实图片对模型的效果影响非常大。

模型效果随训练的演变案例,图片取自[1]

文章展示了模型在训练的整个过程中预测能力的演变情况。如上图所示,在模型训练的初期,大部分文本字符框数量的预测结果是不正确的,表现为蓝色字符框数量与实际单词中的字符数量不一致。但随着训练的进行,逐渐有更多的文本字符框数量预测正确(红色字符框)。下面这个表格定量的展示了模型预测的召回率(Ratio)随训练过程的变化,可以看到越来越多的文本字符框数量被准确预测,模型的准确性和自标注的质量同步提升,证实了这一训练模式的有效性。

定量模型效果演变,图片取自[1]

文章中研究的另外一个训练问题,是E2E模型检测识别同时训练的特点可以提升检测模型的性能,因为识别模型可以为检测模型提供额外的纠正信息。如下图所示,上面一行为检测识别联合训练的模型,下面一行是单独训练的检测模型。黄色的圆圈标注了二者的区别,可以看到联合识别同时提高了准确率和召回率,即减少了错误和遗漏的情况。

联合训练可以同时提高检测模型的准确率和召回率,图片取自[1]

值得注意的是,对于检测和识别联合训练对检测模型的提升,CharNet中的提升比其他模型要多一些,如下面的表格所示。文章中提到这可能是由于并行架构中检测和识别模型能更有效的协同工作。

联合训练对检测模型定量的效果提升,图片取自[1]

四,模型效果

如文章开头提到的,CharNet在一系列数据集上达到了SOTA的准确率。下表展示了CharNet在ICDAR2015数据集上的检测和端到端任务的表现和它与其他模型的对比,可以看到CharNet在所有任务指标上都取得了最好的效果:

CharNet与其他模型在ICDAR2015数据集上的表现对比,图片取自[1]

下图展示了几个模型预测效果案例:

CharNet预测效果案例,图片取自[1]

以上就是对CharNet的一个介绍,作者已将开源代码和预训练模型公布在github,感兴趣的朋友可以看这个链接:github.com/MalongTech/r

最后,由于我水平有限,如果大家有什么问题和建议,欢迎在评论区指出~

看到这里了,点赞关注一下吧!


[1] Convolutional Character Networks. arXiv:1910.07954v1

[2] FOTS: Fast Oriented Text Spotting with a Unified Network. arXiv:1801.01671v2

[3] Robust Scene Text Recognition with Automatic Rectification. arXiv:1603.03915v2

[4] Stacked Hourglass Networks for Human Pose Estimation. arXiv:1603.06937v2

[5] github.com/MalongTech/r

编辑于 2020-06-18 18:56