文本检测算法:CRAFT(CVPR2019)

多种文本检测算法性能对比及算法介绍
(https://blog.csdn.net/qq_39707285/article/details/108754444)


1. 关键点

先前的文本检测算法通常使用刚性单词级别的训练集去训练模型,导致这类算法在检测任意形状文本区域方面存在局限性。

本文设计了一种新的文本检测算法,通过检测每个字符和字符之间的联系来有效地检测文本区域。由于目前的文本检测数据集大多都是基于单词级别的,很少有基于字符级别的标注,为解决这个问题,本文使用合成数据生成字符级别的标注,并且训练过渡模型估计真实图像的字符级标注。

在6个基准数据集上进行了测试,都取得了SOTA(state-of-the-art),根据测试结果发现,该算法在处理复杂的场景文本(如任意方向的、弯曲的或变形的文本)时,能够保证高度的灵活性。


2. 算法

该算法的主要目标是在自然图像中精确地定位每个字符。通过训练一个深层神经网络来预测字符区域和字符之间的关系, 由于没有可用的公共字符级数据集,所以模型是以弱监督的方式训练的。

2.1 网络结构

在这里插入图片描述
采用基于VGG-16的全卷积网络结构,使用BN,为了聚集低层特征,在解码的部分使用跳层连接(类似于U-Net),最终输出两个分数图,region scoreaffinity score,具体结构如图2所示。

2.2 训练

2.2.1 生成GT

对于每张训练的图片,都需要生成字符级别的region scoreaffinity score标签,region score标签表示给定的像素是字符的中心点的概率,affinity score标签表示相邻字符之间空间的中心概率。

与其他分割算法不同的时,标签不是二值化的,而是用高斯热图编码的字符中心的概率。 这种热图在其他应用中也有使用,例如用在姿态估计中,因为它在处理不是刚性有界的GT区域时具有很高的灵活性。
在这里插入图片描述
图3介绍了合成图像的标签生成过程, 直接计算边界框内每个像素的高斯分布值是非常耗时的,由于图像上的字符包围框通常通过透视投影被扭曲,所以使用以下步骤来生成region scoreaffinity score的标签:

  1. 准备二维各向同性高斯图
  2. 计算高斯映射区域和每个字符box之间的透视变换
  3. 扭曲高斯图到box区域

这种生成GT的方式,即使使用小的接收域,也使模型能够检测大的或长的文本实例。

2.2.2 弱监督学习

在这里插入图片描述
和合成的数据集不同的是,大多数数据集都是基于单词级别标注的,所以设计了一个弱监督学习的中间模型,把单词级别的box变成字符级别的box,称之为伪标签,具体如图4所示。为了反映中间模型预测的可靠性,每个单词box上的置信度值按检测到的字符数除以真实字符数的值计算,作为训练时的学习权重。
在这里插入图片描述
图6是完整的字符级别标注的生成过程:

  1. 从原始图片中裁剪出标注框
  2. 用最新训练的模型预测区域得分
  3. 用分水岭算法分割字符区域
  4. 使用裁剪步骤的逆变换将字符box的坐标转换回原始图像坐标

最后region scoreaffinity score的伪标签使用图3的方式生成。

对于单词级别标注的训练数据中的样本 w w w,用 R ( w ) R(w) R(w)表示BB(bounding box),用 l ( w ) l(w) l(w)表示该单词的长度,通过字符分割程序,可以得到字符BB和其对应的长度 l c ( w ) l^c(w) lc(w),则样本 w w w的置信度 s c o n f w s_{conf}{w} sconfw计算方式为:
在这里插入图片描述
则该图片的像素级别的置信度map S c S_c Sc的计算方式为:
在这里插入图片描述
p p p指的是 R ( w ) R(w) R(w)中的像素,定义目标 L L L为:
在这里插入图片描述
S r ∗ ( p ) S^*_r(p) Sr(p)表示伪region score map S a ∗ ( p ) S^*_a(p) Sa(p)表示伪affinity score map S r ( p ) S_r(p) Sr(p)表示region score S a ( p ) S_a(p) Sa(p)表示affinity score,当使用合成数据训练时, S c ( p ) S_c(p) Sc(p)可以直接设置成1。
随着不断的训练,CRAFT预测字符越准确,对应的置信度分数 s c o n f ( w ) s_{conf}(w) sconf(w)也就越大,
在这里插入图片描述
图5展示了随着训练过程的进行,字符区域分数map的变化, 在训练初,对于自然图像中不熟悉的文本,区域分数相对较低。模型不断的学习新文本,例如不规则的字体。

当置信度分数 s c o n f ( w ) s_{conf}(w) sconf(w)小于0.5时,字符BB将会被忽略掉,因为使用这样的数据可能会对训练的模型产生不利的影响。这里,假定每个单独的字符的宽度固定, 通过简单地将单词区域 R ( W ) R(W) R(W)除以字符数 l ( W ) l(W) l(W)来计算字符级预测。

2.3 推理阶段

在推理阶段,最终输出可以以各种形状传递,例如输出单词box、字符box或者多边形。对于ICDAR数据集,验证的方法是根据单词级别的IoU,所以接下来介绍下如何根据 S r S_r Sr S a S_a Sa转换成单词级别的BB,用 QuadBox表示单词级别的BB。

具体步骤如下:

  1. 定义图像的二值map M M M,初始化为0。当 S r ( p ) > T r S_r(p)>T_r Sr(p)>Tr或者 S a ( p ) > T a S_a(p)>T_a Sa(p)>Ta时, M ( p ) M(p) M(p)值为1, T r T_r Tr T a T_a Ta分别表示region和affinity阈值;
  2. M M M上执行连接组件标记(CCL);
  3. 得到包围每个标签对应的连接组件区域的最小外接矩形 QuadBox;类似于OpenCv中的connectedComponents和minAreaRect函数;

值得注意的时,CRAFT不需要额外的后处理步骤(如NMS)。

在这里插入图片描述
此外,还可以在整个字符区域周围生成一个多边形,以有效地处理弯曲文本, 多边形生成的过程如图7所示。 第一步,沿着扫描方向找到字符区域的局部极大值线,如图所示,箭头为蓝色。局部极大值线的长度相等地设置为它们之间的最大长度,以防止最终多边形结果变得不均匀。 连接局部极大值所有中心点的线称为中心线,如图黄色所示。 然后,旋转局部极大值线以垂直于中心线,以反映字符的倾斜角,如红色箭头所表示的。局部极大值线的端点是文本多边形控制点的候选点。 为了完全覆盖文本区域,将两条最外侧倾斜的局部极大值线沿局部极大值中心线向外移动,形成最终控制点(绿色点)。


3. 实验

3.1 数据集

  1. ICDAR2013
    229张训练集,233张测试集,文本全是英文的的,单词级别的标注,旋转矩形标注。
  2. ICDAR2015
    包含1000张图片,其中训练集500张,测试集500张,这些图片从谷歌街景中搜集。目标是多个方向,标注为word级别的,四个点的坐标。
  3. ICDAR2017
    7200张训练数据,1800张验证数据,9000张用于测试,包含9中语言,和IC15类似,标注方式也是旋转的矩形。
  4. MSRA-TD500
    包含500张自然场景图片,300张用于训练,200用于测试,图片包含户内和户外场景,使用袖珍照相机拍摄,图片中包含中英文,文本区域用旋转的矩形标注。
  5. TotalText
    与CTW1500不同的是,标注是word级别的,该数据集包含水平方向、多方向和曲形文本,共1225张训练集和300张测试集图片。
  6. CTW-1500
    是曲形文本检测集,包含1000张训练集和500张测试集,文本使用14个边界点标注,行标注。

3.2 训练策略

训练步骤主要分为两步:

  1. 首先使用合成数据集训练50K次迭代
  2. 在其他数据集上进行fine-tune,忽略“DO NOT CARE”的标注框,通过设置 s c o n f ( w ) = 0 s_{conf}(w)=0 sconf(w)=0来实现,优化器选用 ADAM,伪GT生成所需的模型储存在内存中,不保存,训练过程中,合成数据和真实数据比例为1:5,采用online hard negative mining,使用数据增广(如裁剪、旋转、颜色变换)。

弱监督训练中需要两种类型数据,一是四边形box,一是单词描述,用来统计单词的长度。IC13/IC15/IC17满足这些条件,但MSRA-TD500/TotalText/CTW-1500不满足这些条件,MSRA-TD500没有单词描述,TotalText/CTW-1500仅提供多边形标注。 因此,只在ICDAR数据集上训练CRAFT,并在其他数据集上进行测试,而不进行微调。

用ICDAR数据集训练两种不同的模型。 第一个模型是在IC15上训练的,只评估IC15。第二个模型同时在IC13和IC17上进行训练,用于评估其他五个数据集。 没有额外的图像用于训练,微调的迭代次数设置为25k。

3.3 测试结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.4 讨论

  1. 稳健的尺度方差
    由于文本的大小是多变的,大多算法都使用多尺度去解决文本差异问题,而CRAFT和其他算法不同,CRAFT在所有数据集上使用单尺度的测试。CRAFT能有这种优势,是因为CRAFT是定位单个字符而不是整个文本区域,相对较小的接收场能够覆盖大图像中的单个字符,这使得CRAFT在检测尺度变异文本方面具有鲁棒性。

  2. 多语言问题
    IC17数据集包含孟加拉语和阿拉伯语字符,这些字符不包含在合成文本数据集中。 此外,两种语言都很难单独分割成字符,因为每个字符都是草书的。 因此,CRAFT不能像区分拉丁语、韩语、汉语和日语那样区分孟加拉语和阿拉伯语。 在东亚字符的情况下,可以很容易地以恒定的宽度分离,这有助于通过弱监督将模型训练为高性能。

  3. 与端到端方法比较
    在这里插入图片描述

  4. 泛化能力
    CRAFT在3个不同的数据集上实现了最先进的性能,而不需要额外的微调。这说明CRAFT能够捕捉文本的一般特征,而不是过度适应特定的数据集。


4. 结论

提出了一种新的文本检测算法,叫做 CRAFT,即使是没有字符级别的标注数据集的情况下,也能够准确定位单独的字符。使用若监督的方法把单词级别的标轴数据集转换为字符级别的标注集。 CRAFT在大多数公共数据集上达到最优的性能,不进行微调就能够表现最有用,足以显示出其泛化能力。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值