文本检测之TextSnake

论文:

TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes 

 

Face++ 2018 ECCV论文。

文本检测之TextSnake_第1张图片

上图描述了目前文本检测的几种机制。

  1. 基于轴对齐方式的矩形框,只对水平和竖直的文本奏效,对于倾斜,弯折,曲面的文本,会引入好多背景无关区域。
  2. 基于旋转的矩形框,也就是(a)的基础上加入了角度信息。可以适应于倾斜的文本,但是对于弯折,曲面的文本还是回引入背景无关区域。
  3. 基于凸四边形的方法,依然对曲面,弯折的文本无法适应。
  4. 本文的基于TextSnake的方法,可以适应于各种形状的文本。本质就是凸N边形。

 

TextSnake算法:

文本检测之TextSnake_第2张图片

黄色表示文本区域,是由一系列蓝色的圆环组件而成,这里表示为S

S(t) = {D0; D1;... ; Di;... ; Dn}

其中,n表示圆环的个数。

绿色的实线表示由圆环的中心线串联起来的文本区域的骨架。

D = (c; r; θ)

圆环D包含3个信息,圆心坐标c,半径r,绿色骨架在圆心的切线和水平坐标轴的夹角θ。

 

流程框架:

文本检测之TextSnake_第3张图片

对于输入的一张图片,经过网络结构(FCN+FPN)后,得到7个特征图。包括2个文本区域TR(text regions),2个文本中心线TCL(text center line),1个圆环的半径radius,一个角度的余弦值cosθ,一个角度的正弦值sinθ。

Masked TCL由TR和TCL相乘得到,表示在TR区域上提取的TCL。将Masked TCL经过并查集disjoint set操作,可以得到实例分割的结果,将每个文本区域都单独分割出来。然后经过striding算法,可以得到文本区域的骨架线。再结合预测的半径,得到最终的文本检测区域。

 

网络结构:

文本检测之TextSnake_第4张图片

网络基础结构为vgg16。网络先下采样,后续部分又进行上采样特征融合,最终预测的featuremap为原图的1/2。

 

推断:

文本检测之TextSnake_第5张图片

根据网络得到的文本区域的实例分割的结果。

文本检测之TextSnake_第6张图片

首先在实例分割的区域上任意取一点,根据该点可以做出该点的切线和法线。然后法线和实例分割的区域相交的中点就是该点中心化后的点。然后基于该点,分别左右各取一定步长,步长的式子如下面所示,

( (1/2)r × cosθ; (1/2)r × sinθ) and (- (1/2)r × cosθ; - (1/2)r × sinθ)

这样左右各得到一个新的点,再基于这2个新的点做中心化,滑动,这样一直持续,直到进行完所有的实例分割区域,输出最终的文本曲框。

推断操作中还引入了2个语意操作过滤false positive 区域。

  1. TCL区域的像素个数至少是平均半径的0.2倍。
  2. 至少一半的像素在重建文本区域应该被分类为TR。

 

训练label制作:

首先,label需要已知凸多边形的点的坐标。然后每2个相邻的点可以计算一个余弦距离M。

文本检测之TextSnake_第7张图片

将M中的数值两两相乘,乘积最接近-1 的,说明是头尾两端。然后取头尾两端的中点作为字体骨架的两端。被该头尾分开的上下两端各取等量的散点,并将上下的散点连接起来,取连接线的中心点作为骨架点,将所有的中点连接起来,生成字体区域的骨架线。

后续再对骨架线的左右两端各缩小1/2rend的距离,rend表示TCL 在头尾两个端点处的半径。最后膨胀TCL区域1/5r,得到一个相对较宽的TCL区域。因为单独的一个点对于噪声是比较敏感的。

 

Loss计算:

文本检测之TextSnake_第8张图片

整个loss包括分类和回归两种loss。分类的包括TR和TCL的softmax loss。回归的包括半径r,余弦cos,正弦sin的smooth L1 loss。

 

 

总结:

(1)论文的这种基于圆环组成的snake方式的文本检测思想非常novel,解决了各种曲形的文本检测问题。可以看出该方法召回率较高。

你可能感兴趣的:(OCR,OCR大趴踢)