天天看点

Character Region Awareness for Text Detection(CVPR2019)解读

1、Character Region Awareness for Text Detection(CVPR2019)

(https://arxiv.org/pdf/1904.01941.pdf)

参考论文:

1、https://blog.csdn.net/qian99/article/details/90740430  (讲的很好,复习必看)

2、https://www.jianshu.com/p/cda1289671ca 

CRAFT:核心思想(分割)

提出单字分割以及单字间分割的方法,类似分割版本的seglink

  • 提出如何利用char level合成数据得到真实数据的char box 标注的弱监督方法

上图是训练数据的label的生成示意图。首先看左边,有了一个字符级的标注(图2的红框, Character Boxes),这个字符的四个点(图1绿边)构成一个四边形,做对角线,构成两个三角形(图1蓝边),取三角形的中心,两个框之间就有四个点,构成了一个新的边框,这个边框就是用来表示两个字符之间的连接的label的(Affinity Boxes)。图3是根据Box生成Label的过程,先生成一个2D的高斯图,通过透视变换,映射成与box相同的形状,最后粘到对应的背景上。

Region Score表示该点是文字中心的概率,Affinity Score可以认为是该点是两个字之间的中心的概率。

上图是整个弱监督学习的框架。首先,我们有两种数据,一种是合成数据,这些数据的标注是准确的,另一种是真实数据,这些数据的标注是文本行等级的,合成数据就正常的训练。真实数据训练分以下几步:

1、根据真实数据的标签,将文本行crop出来。

2、跑网络,得到结果图。

3、根据网络输出的图,分割出单个文字。

4、根据上一步的结果,生成label。

实际上,这些label并不一定准确,所以用这些数据训练,并不一定能使模型训得更好,尤其是一开始模型并不够准的时候。因此,论文中利用了一个已有的标注结果来给出一个置信度,那就是利用文本长度。简单来说,如果文本长度与模型跑出来的结果是一样的,那就认为置信度高,否则置信度比较低(置信度直接乘到loss上)。

还缺少的?

如何加入loss中?

为了防止在弱监督方式下产生的错误label带偏网络,该论文提出了一个评价方式:

仔细看这个公式:如果预测得到的Lc(w) 与 L(w) 长度相同,分子min() = 0,  Sconf = 1,置信度最高。

  如果Lc(w)  = 0,分子min() = L(w),  Sconf = 0,置信度最低。就是说:预测长度和真实长度差距越大,置信度越低。

Loss实际上就是采用二范数,前面乘以Sc(p) ,这个理解为这个loss的可信度是多少,跟上一步预测得到的预测长度有关,预测长度和实际长度(gt)差异越小, loss前面系数越大,梯度会更好优化这个结果。

继续阅读