邹城住房城乡建设部网站,怎样才能上百度,wordpress Null,搜索引擎优化员简历Character Region Awareness for Text Detection 论文阅读
论文地址(arXiv) #xff0c;pytorch版本代码地址
最近在看一些OCR的问题#xff0c;CRAFT是在场景OCR中效果比较好的模型#xff0c;记录一下论文的阅读
已有的文本检测工作大致如下#xff1a;
基于回归的文…Character Region Awareness for Text Detection 论文阅读
论文地址(arXiv) pytorch版本代码地址
最近在看一些OCR的问题CRAFT是在场景OCR中效果比较好的模型记录一下论文的阅读
已有的文本检测工作大致如下
基于回归的文本检测(Regression-based text detectors)TextBoxes、DMPNet .etc运用通用目标检测方法到文本检测中。基于分割的文本检测(Segmentation-based text detectors)Multi-scale FCN、SSTD .etc即将文本检测视为语义分割任务来分析。端到端的文本检测(End-to-end text detectors)FOTS、EAA .etc将文本检测和识别一起处理。字符级别的文本检测(Character-level text detectors)MSER、Mask TextSpotter .etc相对经典的方法。
之前的基于严格的词级边界的 ground truth 的方法对于不规则形状的词边界做不到很好的识别效果例如任意方向、弯曲或变形的文本在本文中作者提出了一种字符级的新方法来解决已有的问题通过探索每个字符和字符之间的亲和力来有效检测文本区域。 上图展示了CRAFT在水平、弯曲、任意弯曲三种情况下的文本检测表现情况
网络结构
本文主要思想是利用弱监督方案来finetune character-level的文本检测器CRAFT的网络结构如下所示 采用基于 VGG-16和批量归一化的全卷积网络架构为backbone。模型在解码部分具有Skip connect这类似于 U-net因此聚合了低级特征。 最终输出有两个通道作为Score区域分数(Region score)和亲和力分数(Affinity score)。
Region score表示当前像素是字符中心的概率Affinity score表示当前像素是相邻两字符的中心的概率
ground truth 生成
对于每个训练图像使用字符级边界框为区域分数和亲和度分数生成真实标签。 区域得分表示给定像素为字符中心的概率亲和度得分当前像素是相邻两字符的中心的概率。使用高斯热图对字符中心的概率进行编码。使用热图表示来学习区域分数和亲和力分数。 上图总结了合成图像的标签生成流程。直接为边界框内的每个像素计算高斯分布值非常耗时由于图像上的字符边界框通常会通过透视投影失真因此使用以下步骤来近似并生成区域分数和亲和度分数的真实值
准备二维各向同性高斯图计算高斯图区域与每个字符框之间的透视变换将高斯图放缩到框区域中
对于Region score 的 ground truth即采用字符级分割框定义Region Box对于Affinity score 的 ground truth使用相邻的字符框定义Affinity Box。
通过绘制对角线连接每个字符框的对角生成两个三角形作为上下字符三角形。 然后对于每个相邻的字符框对通过将两个字符的四个上下三角形的中心设置为框的四个角来生成Affinity Box。由于 character-level 检测使卷积可以只关注字符内和字符间而不是整个文本实例所以可以使用小的 feature map。
采用弱监督学习训练模型
与合成数据集不同真实数据集图像通常只有 word-level 注释。在这里以弱监督的方式从每个词级注释生成字符框如下图所示。 图中蓝线即表示使用合成数据集(character-lavel annotation)训练得到一个预训练的模型红线表示使用真实图像(word-level annotation)生成伪ground truth 生成伪GT的方法就是先从图像中裁剪出word box然后输入预训练模型得到Region score接着用分水岭算法(watershed algorithm)分割每个字符位置得到Character box最后再把分割结果映射回原来图像中的位置即为伪GT。
绿线表示使用真实图像(word-level annotation)和生成的伪ground truth微调模型
由于生成的伪GT不一定是正确的因此需要一些线索来保证伪GT的质量所以利用了word length(单词中字符的个数)作为一个很强的约束并以此来构建confidence map来构建一个用于训练的Loss。具体的公式推导如下 对于裁剪出的单词框wR(w)表示单词框区域l(w)表示word length(单词中字符的个数)。通过红色部分我们能够得到伪的单词长度lc(w)l^c(w)lc(w)。然后我们定义置信分数sconf(w)s_{conf}(w)sconf(w) 伪单词长度与真实单词长度差异越小置信分越高。然后将属于R(w)内的像素点的置信分都设置成sconf(w)s_{conf}(w)sconf(w)p代表像素点得到的ScpS_c{p}Scp就是confidence map。 Loss最终定义为