《CRAFT:Character Region Awareness for Text Detection》论文笔记

代码地址(非官方,训练未开源):CRAFT-pytorch
代码地址(官方):CRAFT-Reimplementation

1. 概述

导读:这篇文章主要致力于去解决任意形状本文的检测问题,对此文章提出了一种新的文本检测方法CRAFT,该方法检测每个文字字符的区域与文字字符的相互关系。对于字符级别的训练自然就要有字符级别的标注,然而实际中这样的数据是很少的,针对这个问题,文章有效利用了已有的字符级标注,还是用网络自己去预估字符级的标注用于训练。完成字符级别的训练之后,对于字符之间的关联性文章使用新提出的字符关联表达来实现这个任务。文章提出的方法在诸如CTW-1500等数据集上展现了文章字符级文本检测的性能(达到state-of-the-art)。

这篇文章提出的算法CRAFT使用一个卷积与生成字符区域的置信度与字符之间的关联系数。字符区域的置信度用于定位图像中的独立字符区域,而关联系数是将这些独立的字符关联起来组成一个检测实例。对于没有字符级标注的问题,提出使用一个弱监督学习框架拟合真是的字符级标注GT。
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第1张图片
在图1中展示了CRAFT检测的结果,左边一列是字符级文本区域heatmap,右边一列是最后的检测结果。
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第2张图片
文章的网络结构见图2所示,其基础网络是VGG-16,之后是FPN的特征融合,最后在stage2出生成字符区域预测(region score)与字符关联性预测(affinity score)。

2. 训练

2.1 训练标签的生成

这里对于字符区域与字符关联性区域的标签并没有采用分割标注的离散形式,而是采用高斯分布的连续形式。具体为:

  • 1)首先准备一个二维的高斯分布heatmap;
  • 2)计算准备好的高斯分布与需要映射过去的字符与相关性区域的变换关系;
  • 3)将高斯分布按照这个变换关系映射过去得到标签;

其中对于字符相关性的区域标注使用的是图3左半部分的过程,具体看图就好了。
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第3张图片

2.2 字符级弱监督学习

真实的检测文本标注是单词级别的,因而文章对每个单词级别的标注区域使用弱监督的形式学习字符特性。其弱监督的训练形式见图4所示
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第4张图片
原本的标注是单词级的,而文章要求的标注是字符级别的,这里使用弱监督的形式学习,其中就涉及到字符的分割问题,其具体过程见图6所示
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第5张图片
这里将分割的步骤划分为如下步骤:

  • 1)首先将单词级别的字符区域从原始图像中抠出;
  • 2)使用训练的模型去预测(图4的右下部分)字符区域置信度;
  • 3)使用分水岭算法分割每个字符区域;
  • 4)过程1的逆变换,映射到原图上去;

为了解决弱监督并没有显著约束的问题,这里引入单词级标注的长度作为约束。这里将检测的文本区域与其长度(单词级)定义为 R ( w ) , l ( w ) R(w),l(w) R(w),l(w),预测的字符(多个)长度为 l c ( w ) l^c(w) lc(w),则其置信度 s c o n f ( w ) s_{conf}(w) sconf(w)可以描述为:
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第6张图片
则对于整张图 S c S_c Sc的置信度图可以通过下面的关系计算:
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第7张图片
则区域 R ( w ) R(w) R(w)中的像素 p p p其损失描述为:
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第8张图片
其中, S r ∗ ( p ) , S a ∗ ( p ) S_r^*(p),S_a^*(p) Sr(p),Sa(p)分别代表弱监督学习到的字符区域与关联置信度。 S r ( p ) , S a ( p ) S_r(p),S_a(p) Sr(p),Sa(p)。弱监督的作用如下图所示,随着迭代的进行网络是能够学到对应的字符区域的。
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第9张图片

在使用合成数据进行训练的时候能获得真是的标注数据,这时 S c ( p ) = 1 S_c(p)=1 Sc(p)=1。文中提到在为了排除对结果的干扰这里将公式3学习到的置信度分数阈值设置为0.5。

2.3 预测阶段的处理

在预测阶段对于网络预测得到的 S r ( p ) , S a ( p ) S_r(p),S_a(p) Sr(p),Sa(p)分别使用阈值 τ r , τ a \tau_r,\tau_a τr,τa进行二值化操作得到M,之后在M的基础上将这些单独预测的字符区域连接起来,在这些区域上使用最小包围矩形框就可以得到一个带角度的矩形框检测结果。

对于任意形状的检测区域是使用单个字符的位置寻找中心线与对应的多边形支撑点实现的,具体见下图所示:

《CRAFT:Character Region Awareness for Text Detection》论文笔记_第10张图片

3. 实验结果

网络性能:
《CRAFT:Character Region Awareness for Text Detection》论文笔记_第11张图片

你可能感兴趣的:(#,General,Object,Detection,CRAFT)