文本检测之RRPN

文本检测之RRPN

简介

自然场景文本检测存在的困难:光照不均,模糊,透视畸变,文本不定向等等.针对不定向的文本检测,通过基于深度学习的分割算法来实现文本检测,但是这种方法需要复杂的后处理.针对上述存在的不足,本文提出了基于旋转候选框实现任意方向的场景文本检测,简称RRPN,其思想沿用的是目标检测中的RPN,在其基础上增加了旋转信息.

论文关键idea

  • 与先前基于分割的框架不同,本文提出了基于候选框的不定向文本检测,使得候选框可以更好地适应文本区域,可以更好地修正长文本区域
  • 本文将新提出的RROI池化层和旋转候选框的学习加入到基于候选框区域的结构当中,与传统的基于分割的文本检测框架相比,确保了文本检测的计算效率
  • 本文提出了任意方向选择候选框的新的修正方法(refinement),以提高任意文本检测的性能。
  • 本文的方法在三个数据集(MSRA-TD500, ICDAR2013,ICDAR2015)进行了测试,发现它比以前的方法准确而且更有效

Pipeline

RRPN沿用了Faster-rcnn中的RPN的思想(即使用其来生成候选区域),并在此基础上进行了改进,提出了基于旋转候选网络区域(RRPN).整个网络结构和Faster-rcnn非常相似,RRPN也是分成并行两路:一路用于预测类别,另一路用于回归旋转矩形框.具体步骤如下:

  • 前端使用VGG16作为特征提取主干网络
  • 中间采用RRPN主要是用于生成带倾斜角的候选区域,该层输出包括候选框的类别和旋转矩形框的回归
  • 通过RRoI层(它扮演的是最大池化层的作用)将RRPN生成的候选框映射到特征图上,得到最终的文本行检测结果

具体的网络结构图如下:


具体实现细节

旋转矩形框的表示

在训练阶段,文本行区域的ground truth使用旋转矩形框表示: (x,y,h,w,\theta) ,其中 (x,y) 表示几何矩形中心点坐标, h 表示矩形框的短边, w 表示矩形框的长边, \theta 表示x正轴与矩形框长边的夹角.注意:为了保证 \theta[-\frac{\pi}{4},\frac{3\pi}{4}) 的范围区间内,文中通过 \theta+k\pi 来代替 \theta 来保证在其区间范围内.(这里的原理就不用解释了吧,数学中都学过)

由于在数据预处理阶段,会通过旋转训练原图像来进行数据增广.一旦图像旋转,相应的已标注的文本行区域信息也会跟着变化,这里就会涉及到一些数学知识.具体来说图像绕某个点旋转的具体步骤:1).将该旋转点移动到原点处;2).执行绕原点的操作;3).再将旋转点移回到原来的位置;也就是所有的旋转操作需要执行两次平移,一次旋转操作.

具体的公式为: v'=T(x,y)\times{R}\times{T(-x,-y)} ,其中 T(.) 表示平移矩阵, R 表示旋转矩阵,这里论文中给出了如下的公式:

注:图像旋转后,文本行的旋转矩形框的宽和高是不变的, (x,y) 的坐标变换如上述公式,角度的变换公式如下 \theta'=\theta+\alpha+k\pi

旋转anchor

相比传统的anchors,本文设计的旋转anchor(简称R-anchor)进行了如下的改进:1).通过加入方向参数来控制proposal的方向,这里结合方向收敛速度和计算效率选用了6个方向,分别是 (-\frac{\pi}{6},0,\frac{\pi}{6},\frac{\pi}{3},\frac{\pi}{2},\frac{2\pi}{3}) ;2).修改了文本行的aspect ratio,调整文本行的比例为1:2,1:5,1:8,大小还是8,16和32,具体的anchor策略示意图如下:

结合上述的aspect ratio和scale,特征图上每个点将生成54个R-anchor(6个方向,3个尺度,3个宽高比).对应的回归层有 54\times5=270 个输出值,分类层有 54\times2=108 个输出值.对于大小为 H\times{W} 的特征图,通过RRPN可以产生 H\times{W}\times{54} 个R-anchor

旋转anchor与水平anchor用于检测文本行的区别

为什么说基于旋转候选框的文本行检测效果更好.让我们来看看基于水平候选框和基于旋转候选框的文本行检测结果:

从上图中可以看出,水平anchor在检测倾斜文本行的时候并不能很好地包络(即包络了很对非文本区域);而旋转anchor可以很好地包络倾斜文本,当然对于曲线文本,水平anchor和旋转anchor效果都不尽人意

旋转矩形候选框的学习

RRPN层会生成很对很多的旋转矩形框,那么这些矩形框中有哪些是需要送入网络参与训练呢?先来看看如何确定它们当中的哪些是可以用于作为训练的正、负样本?

  • 如何确定训练的正样本和负样本

对于训练正样本,需同时满足:1).其与ground truth的IOU最高的或者大于0.7;2).其与ground truth的夹角小于 \frac{\pi}{12}

对于训练负样本:需满足其中之一的条件:1).其与ground truth的IOU小于0.3;2).其与ground truth的IOU大于0.7,但其与ground truth的夹角大于 \frac{\pi}{12}

对那些既不满足正样本也不满足负样本的候选区域,不参与训练

  • 损失函数

损失函数采用的是多任务损失函数,具体公式如下:

其中表示类别( l=1 表示文本, l=0 表示背景;对于背景其不参与回归)

对于分类损失函数,其公式为: L_{cls}(p,l)=-\log{p_l}

对于边框回归,采用的是 smooth_{L_1} ,其公式如下(具体细节请参看论文):

准确候选框的修正

  • 倾斜IOU的计算

由于本文使用的是倾斜的候选框,所以基于水平候选框的IOU计算方法不再适应,因此本提出了倾斜IOU的计算方法,其主要思路就是将两个矩形框相交的点和矩形框内的点,然后将这些点集进行顺时针排序,使用三角形剖分法计算IOU.具体的算法步骤如下:

  • 倾斜NMS

传统的NMS只考虑了IOU因子(即大于0.7),但对于任意方向候选框仅考虑IOU是不够的.举个简单的例子:对于比例1:8,角度小于,其IOU为0.31,它远小于0.7,但是它有可能是正样本.

文本提出的倾斜NMS包含了两个阶段:1).保留IOU大于0.7的最大候选框;2).如果所有候选框的IoU范围在[0.3,0.7]内,保留与ground truth最小角度差的候选框(角度小于 \frac{\pi}{12} )

RROI池化层

Fast-RCNN框架中的ROI池化层主要是用于处理轴对齐的候选区域;针对任意方向的文本,本文提出了旋转ROI池化层.

假设RROI层的超参数为 H_rW_r ,对于高度为h和宽度为w的旋转候选区域平均划分成 \frac{h}{H_r}\times{\frac{w}{W_r}} 个子块,每个子区域和候选框的方向相同.具体的实现细节如下图:

在ICDAR2015上的测试结果

总结及困惑

  • 本文基于Faster-RCNN框架的RPN的改进的,提出了RRPN,使其适应任意方向的文本行检测
  • 与CTPN相比,RRPN采用的是旋转anchor,用于检测任意方向的文本行;而CTPN采用的是垂直anchor,用于检测水平方向的文本
  • 与TextBoxes++相比,同样采用的是旋转矩形框实现任意方向的文本行检测,但是其表示方法不一样;对于RRPN,其旋转矩形框是用 (x,y,h,w,\theta) 表示,而TextBoxes++的旋转矩形框用 (x_1,y_1,x_2,y_2,h) 表示
  • 在实际训练中,其召回率比较低,后期待我确定原因之后,再更新

文人文笔粗浅,以上是个人对这篇文章的理解,若有理解错误的地方,欢迎指正.由于最近比较忙,这篇文章可能没有之前的详细,后期有空会再进行更新.

编辑于 2018-07-14

文章被以下专栏收录