文本检测算法:CRAFT(CVPR2019)

2025-08-22 00:30:48
多种文本检测算法性能对比及算法介绍 (https://blog.csdn.net/qq_39707285/article/details/108754444) Character Region Awareness for Text Detection 1. 关键点 2. 算法 2.1 网...

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

Character Region Awareness for Text Detection

1. 关键点

2. 算法

2.1 网络结构

2.2 训练

2.2.1 生成GT

2.2.2 弱监督学习

2.3 推理阶段

3. 实验

3.1 数据集

3.2 训练策略

3.3 测试结果

3.4 讨论

4. 结论

1. 关键点

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

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

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

2. 算法

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

2.1 网络结构

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

2.2 训练

2.2.1 生成GT

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

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

准备二维各向同性高斯图

计算高斯映射区域和每个字符box之间的透视变换

扭曲高斯图到box区域

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

2.2.2 弱监督学习

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

从原始图片中裁剪出标注框

用最新训练的模型预测区域得分

用分水岭算法分割字符区域

使用裁剪步骤的逆变换将字符box的坐标转换回原始图像坐标

最后region score和affinity 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} sconf​w计算方式为: 则该图片的像素级别的置信度map S c S_c <