CharNet算法详解

Convolutional Character Networks-论文链接-代码链接

1、需求解读

  Charnet,即字符检测与识别算法,其主要被用来识别图片或者视频中的字符,包括商场中门店名称的识别和菜单等其它物体上面的字符识别等。它在我们的现实生活中得到了广泛的应用,比较成功的案例包括文档中的OCR识别、车牌识别等。由于该问题并不是一个新的研究问题,当前已经了存在了很多性能鲁棒的算法,但是这些算法都存在着几个严重的问题,问题1-学者们将文本检测和文本识别划分为两个不同的研究课题,而在现实场景中这两个问题通常都是结合在一起的;问题2-以前的那些文本检测与识别算法仅仅能够处理一些简单的场景,并不能很好的处理一些复杂的场景,而现实中的多个场景恰恰都是复杂场景。本文介绍的CharNet是一个将文本检测和文本识别两个任务结合在一起的一个端到端的文本检测与识别网络;该算法可以很好的处理一些复杂场景下的文本检测与识别问题,并在多个文本检测与识别数据集上面获得多项state-of-art。比如我需要检测并识别这个纽扣上面的文字。
在这里插入图片描述

2、CharNet算法简介

  CharNet文本检测与识别算法是一个基于单阶段检测算法、融合文本检测和文本识别任务的端到端的文本处理算法。该算法可以直接输出图片中文本和字符所在的位置和相应的字符标签;该算法的初衷是为了解决双阶段文本检测与识别算法中ROI Pooling层对识别精度的影响。除此之外,本文提出了一个迭代字符检测算法用来更好的将在合成数据中训练好的模型应用到真实场景中的数据中,这些方法使得CharNet可以很好的处理多方向和曲线文本,并在3个标准的文本检测和识别数据集上面获得较大的性能提升。

3、CharNet网络架构详解

在这里插入图片描述
  上图展示了CharNet算法的网络框架。整个网络分为两个大的分支,上面的分支用来进行字符检测和识别(整体);下面的分支用来检测字符中的每一个文本(单个文字或字符)。

3.1 字符检测分支详解

  该分支的主要作用是对图片中的文字进行检测和识别。该分支首先使用ResNet50作用backbone;然后使用两个Hourglass模块来获取特征表示,期间经过了4个池化层,即最终的输入特征的大小是输入图片的1/4;接着将这个特征映射分别输入到3个不同的子分支中,包括文本实例分割子分支、字符检测分支和字符识别分支,前两个分支中包含3个卷积层,其对应的滤波器的大小为3x3,3x3和1x1,字符识别分支包含4个卷积核为3x3的卷积层。
  文本实例分割子分支的作用是输出一个2通道的特征映射来表示每一个像素中是否包含文本;字符检测分支输出一个5通道的特征映射,分别表示当前位置到上下左右4条边的距离和BB的方向;字符识别分支输出一个68通道的特征映射,每一个通道分别表示不同字符所对应的特征映射,具体包括26个英语字符、10个数字和32个特定的符号;这3个分支最终输出同等大小的一个特征映射;最后过滤掉概率值低于0.95的矩形框

3.2 文本检测分支详解

  该分支的主要作用是获取图片中字符所在的大致位置,并用一个不规则的形状来将不同的字符所在的位置标记出来。文本检测分支可以根据文本实例的类型定义不同的形式,并且可以通过最小的修改来适应现有的动态文本检测器。
  对于多方向的文本而言,使用改变的EAST算法作为文本检测器分支,它包含两个子分支,即文本实例检测分支和使用IoU_loss作为实例级的BB回归。预测的边界框由五个参数组成,包含x,y,w,h,d(方向),我们在每个空间位置计算密集预测,这个特征映射由两个3×3卷积层和一个1×1卷积层构成。最后,文本检测分支输出指示文本或非文本概率的2通道特征映射,以及5通道检测(带方向的BB)。我们仅仅保持置信值大于0.95的边界框。
  对于曲线文本检测而言,本文使用添加了方向场的Textfield算法,它对远离文本边界的方向进行编码,方向场分支用于分隔相邻的文本实例,并且由一个新的分支与文本检测分支和字符分支并行预测。这个分支是由两个3×3卷积层,和一个1x1卷积层构成。

3.3 迭代字符检测

  对于CharNet而言,该算法在训练过程中需要使用字符级和单次级别的标签,而标注这些标签需要昂贵的代码;除此之外,常见的文本检测benchmark中一般都没有这些标签,因而本文最终使用像Synth800k的合成数据集来进行网络的训练。
  一个比较简单的思路是直接在合成网络上训练模型;然后使用训练好的模型在真实场景中的图片上面执行推理,但是由于合成的图片和真实场景中的图片之间具有较大的分布差异,因而直接将在合成数据上面训练好的模型应用到真实场景中的数据上面并不能取得好的结果,为了很好的解决这个问题,本文提出了迭代字符检测方法,该方法的实现细节如下所示:

  • 首先使用包含实例和字符标签的合成数据上面训练一个初始模型,然后将训练好的模型应用到真实场景中的图片中,并做一个简单的预测。
  • 然后在真实场景上的图片上面根据相应的规则收集一些正确的字符BB,(如果文本中字符边界框的数量与字符标签的数目完全相等,则认为这个预测是正确的)将使用它们来对模型执行进一步的训练,需要注意的是这里并没有去使用预测的BB标签。
  • 重复执行上面的两个步骤来逐步提升模型的泛化能力,随着预测的正确BB数目的增加,模型的识别能力得到了加强。具体的效果如下图所示,通过观察我们可以发现随着迭代次数的增加,正确预测的BB(蓝色)的数据逐渐增加。
    在这里插入图片描述

4、CharNet算法实现步骤

步骤1-读取输入图片,并对图片执行预处理操作;
步骤2-搭建CharNet网络,并将预处理之后的图片分别送入两个不同的分支中执行处理,首先将其送入Backbone网络ResNet50中获取特征映射;然后将处理后的特征映射输入到Hourglass网络中进一步提取高级的语义特征(主要用来做实例分割);接着分别将这个特征映射送入字符分支和检测分支获得预测的结果;最后将检测阈值低于0.95的边界框过滤掉。
步骤3-接着在Synth800k合成数据上面执行5个epochs的训练,batch=32,每个GPU装载4张图片,lr=0.0002,power=0.9, 具体的计算公式如下所示。
l r base × ( 1 − iter max -iter ) power l r_{\text {base}} \times\left(1-\frac{\text {iter}}{\text {max}_{\text {-iter}}}\right)^{\text {power}} lrbase×(1max-iteriter)power
步骤4-然后使用上面提到的迭代训练方法来在真实场景中的数据(ICDAR 2015和Total-Text)上面执行训练,lr=0.002,并使用数据增强和OHEM方法。
步骤5-将训练好的模型应用到测试图片中做预测。

5、CharNet算法效果展示

5.1 主观效果展示

在这里插入图片描述
在这里插入图片描述
  上图展示了CharNet算法的检测和识别结果。通过观察我们可以发现该算法可以在多种复杂的场景中获得较好的检测和识别结果,包括扭曲的文字、密集的文字、弯曲的文字等,基本上可以满足我们在现实场景中的需求。

5.2 客观效果展示

在这里插入图片描述
  上图展示了CharNet和其它文本检测和识别算法在ICDAR 2015数据集上面的效果。通过观察我们可以发现,与性能优异的EAST、Mask TextSpotter和FOTS算法相比,CharNet算法均获得了较大的性能提升,基本上在检测和识别任务中都获得了最好的结果。
在这里插入图片描述
  上图展示了CharNet和其它的文本检测算法在Total-Text数据集上面的效果。通过观察我们可以发现,与性能优异的TextNet和TextFied算法相比,CharNet在回调率R、准确率P和F1上面都获得了较大的性能提升。
在这里插入图片描述
  上图展示了CharNet和其它的文本检测算法在ICDAR 2017 MLT数据集上面的效果。通过观察我们可以发现,与性能优异的FOTS和FOTS MS算法相比,CharNet在回调率R、准确率P和F1上面都获得了较大的性能提升。

6、个人总结

  总而言之,CharNet是一个端到端的、性能优异的单阶段文本检测和识别算法,该算法将文本检测、文本识别、字符实例分割等多个算法结合起来,在多个文本检测和识别数据中取得了较大的性能提升;除此之外,本文的一个亮点在于如何很好的将在合成数据集上训练的模型成功的应用在真实场景中的数据中,这个问题在很多子研究课题中都会有所涉及。

参考资料

[1] 原始论文

注意事项

[1] 如果您对AI、自动驾驶、AR、ChatGPT等技术感兴趣,欢迎关注我的微信公众号“AI产品汇”,有问题可以在公众号中私聊我!
[2] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注.
[3] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[4] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[5] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊,备注“项目”!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值