《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记

代码地址:TextSnake

1. 概述

导读:为了解决任意形状文本的检测难题,文章提出了基于全卷积网络(Fully Convolutional Network,FCN)形式的文本检测器TextSnake,它是基于分割的文本检测方法。在该模型中将文本实例通过一串有序且重叠的圆盘组成,每个圆盘都有决定其属性的半径(文本宽度)与方向(文本方向),从而可以自由检测出任意形状的文本区域。

下面是分别使用传统水平框、带旋转角度的矩形框、任意四边形与文章提出方法进行文本区域检测得到的结果对比:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第1张图片

2. 方法设计

2.1 检测结果的表达

文中的检测算法得到的检测结果表达见图2所示,是由一系列的带角度的圆盘串联组成的,需要注意的是每个圆盘并不是与每个字符相对应的。
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第2张图片
上面的一串圆盘可以使用一个集合进行表示, S ( t ) = { D 0 , D 1 , … , D n } S(t)=\{D_0,D_1,\dots ,D_n\} S(t)={D0,D1,,Dn},而每个圆盘有三个属性 D = ( c , r , θ ) D=(c,r,\theta) D=(c,r,θ),分别代表圆的中心、半径以及该圆的方向。该方向是过中心点c的正切方向。

2.2 方法的流程

文章的方法是基于FCN的,因而首先会预测生成文本区域(Text Region,TR,用于确定文本区域)与文本中心线(Text Center Line,TCL,用于区分开文本行),以及一些集合属性:半径 r r r c o s θ cos\theta cosθ s i n θ sin\theta sinθ。TCL与TR分割结果相与得到相与之后的掩膜Masked TCL。之后使用striding算法提取中心点的集合与重建的文本区域。其流程见图3
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第3张图片

2.3 网络结构

文中采用的是VGG16作为主干网络,分成5个stage,其结构见图4所示。
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第4张图片
重建分割结果的过程中使用上采样与concat上一个stage的特征图的形式完成特征融合,其过程如下所示:
在这里插入图片描述
最后一个stage的处理过程如下:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第5张图片
其生成的结果 P ∈ R h ∗ w ∗ 7 P\in R^{h*w*7} PRhw7,其中4个channel代表的是TR与TCL的逻辑分割,另外的3个channel代表的是 r , c o s θ , s i n θ r, cos\theta, sin\theta r,cosθ,sinθ

2.4 网络Inference

网络在前向传播过程中会生成TCL与TR分割结果,之后使用阈值 T t c l T_{tcl} Ttcl T t r T_{tr} Ttr分别对两个分割的结果进行二值化操作。再将两者的二值化之后的结果取交集得到文本区域的分割掩膜,这样的好处是文本行之前可以极大减少粘连。
最后使用striding算法生成最后的文本区域,其算法运行流程如图5所示:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第6张图片
其中更有两个比较简单的准则可以用以排除一些无效的的TCL区域:

  • 1)TCL区域的像素个数应该至少是其半径均值的0.2倍;
  • 2)重建之后的文本区域应该有至少一半的像素在TR中;

文本检测的后处理可以分为三个步骤Act(a), Act(b),Act©,主要过程可以概括为:在分割结果上随机选择一个起始点,并将其中心化得到算法迭代的起始点,之从起始点开始往两头进行搜索,从而搜索得到文本区域。具体的操作步骤见图6所示:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第7张图片

  • 1)Act(a) Centralizing,随机选取分割结果外围的一个点,做该点的切线与法线,法线就会穿过文本区域,因而按着法线的方向进行搜索得到中心点;
  • 2)Act(b) Striding,在进行文本区域搜索的过程中需要指定每次行进的步长,文中对于两个方向的搜索步长的定义为 ( 1 2 r ∗ c o s θ , 1 2 r ∗ s i n θ ) (\frac{1}{2}r*cos\theta , \frac{1}{2}r*sin\theta) (21rcosθ,21rsinθ) ( − 1 2 r ∗ c o s θ , − 1 2 r ∗ s i n θ ) (-\frac{1}{2}r*cos\theta , -\frac{1}{2}r*sin\theta) (21rcosθ,21rsinθ),如果搜索的点下一步超出了TCL区域,就减少搜索的步长,或者到达了区域的终点;
  • 3)Act© Sliding将这些寻找到的点使用其对应的半径画圆,这些圆组成的区域就是对应的文本区域了;

2.5 标签生成

对于任意形状的文本区域其可以看做是一个多边形,则对于该多边形文本区域可以使用下面的流程生成文本区域的标注,其流程见图7所示
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第8张图片
在图中将文本区域使用顺时针方向串联起来,则可以寻找到文本的左边界与右边界,文中近似将其假设为是平行的(估计是为了方面说明),如图a所示。之后在左右边界线条的中间间隔一定的距离寻找文本区域的中心线,图b图所示。之后对左右边界收缩 1 2 r e n d \frac{1}{2}r_{end} 21rend的距离进去,其它部分扩展 1 5 r \frac{1}{5}r 51r的范围,如图c所示(线条分割起来太难,还是扩展了一些)

对于之前文章中提到的参数 r , θ r,\theta r,θ r r r是中心线与边界的距离, θ \theta θ是线上的倾斜角度(注意,这的标注是针对TCL区域,并不只针对中心线,否则如何训练呢)。对于其它的地方设置为0就可以了。

2.6 网络的损失函数

文章中将损失函数描述为TR与TCL组成的分割损失函数,半径与角度损失函数相加的形式,其定义如下:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第9张图片
对于角度与半径的损失函数是使用SmoothedL1的形式:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第10张图片

3. 实验结果

ICDAR2015数据集:
《TextSnake:A Flexible Representation for Detecting Text of Arbitrary Shapes》论文笔记_第11张图片

你可能感兴趣的:([7],图像检测)