文本检测的其中一个难点就在于文本行的长度变化是非常剧烈的。因此如果是采用基于faster rcnn等通用物体检测框架的算法都会面临怎么生成好的text proposal的问题。论文Detecting Text in Natural Image with Connectionist Text Proposal Network提供了另外一个思路,检测一个一个小的,固定宽度的文本段,然后再后处理部分再将这些小的文本段连接起来,得到文本行。检测到的文本段的示意图如下图所示。
具体的说,作者的基本想法就是去预测文本的竖直方向上的位置,水平方向的位置不预测。因此作者提出了一个vertical anchor的方法。与faster rcnn中的anchor类似,但是不同的是,vertical anchor的宽度都是固定好的了,论文中的大小是16个像素。而高度则从11像素到273像素变化,总共10个anchor。同时,对于水平的文本行,其中的每一个文本段之间都是有联系的,因此作者采用了CNN+RNN的一种网络结构,检测结果更加鲁棒。
1、文字目标的特殊性,一个很大的先验是文字总是水平排列的。文本检测和一般目标检测的不同——文本线是一个sequence(多字符构成的一个sequence),而不是一般目标检测中只有一个独立的目标。这既是优势,也是难点。优势体现在同一文本线上不同字符可以互相利用上下文,可以用sequence的方法比如RNN来表示。难点体现在要检测出一个完整的文本线,同一文本线上不同字符可能差异大,距离远,要作为一个整体检测出来难度比单个目标更大——因此,作者认为预测文本的竖直位置(文本bounding box的上下边界)比水平位置(文本bounding box的左右边界)更容易。
2、文字的特征体现在edge上。
3、自然场景文字检测的难点在于:小目标,遮挡,仿射畸变。
整个算法的流程主要有以下几个步骤:
(1)首先,使用VGG16作为base net提取特征,得到conv5_3的特征作为feature map,大小是W×H×C
(2) 然后在这个feature map上做滑窗,窗口大小是3×3。也就是每个窗口都能得到一个长度为3×3×C的特征向量。这个特征向量将用来预测和10个anchor之间的偏移距离,也就是说每一个窗口中心都会预测出10个text propsoal。
(3) 将上一步得到的特征输入到一个双向的LSTM中,得到长度为W×256的输出,然后接一个512的全连接层,准备输出。
(4) 输出层部分主要有三个输出。2k个vertical coordinate,因为一个anchor用的是中心位置的高(y坐标)和矩形框的高度两个值表示的,所以一个用2k个输出。(注意这里输出的是相对anchor的偏移)。2k个score,因为预测了k个text proposal,所以有2k个分数,text和non-text各有一个分数。k个side-refinement,这部分主要是用来精修文本行的两个端点的,表示的是每个proposal的水平平移量。
(5)该方法得到密集预测的text proposal,所以会使用一个标准的非极大值抑制算法来滤除多余的box。
(6)最后使用基于图的文本行构造算法,将得到的一个一个的文本段合并成文本行。
CPTN是一种Top-Down的方法(先检测文本区域,再找出文本线)的文本检测方法,该方法比bottom-up的检测方法(先检测字符,再串成文本线)更好。因为CPTN考虑了上下文,更加鲁棒。
方法缺点:非水平文字不能检测。
CPTN最大的亮点在于把RNN引入检测问题。文本检测,先用CNN得到深度特征,然后用固定宽度的anchor来检测text proposal(文本线的一部分),并把同一行anchor对应的特征串成序列,输入到RNN中,最后用全连接层来分类或回归,并将正确的text proposal进行合并成文本线。这种把RNN和CNN无缝结合的方法提高了检测精度。
(1)不是在字符的级别,最终输出是行的级别;
(2)对于每一行,每一个feature-map位置,固定需要回归的框的宽度为16像素,需要预测k个anchor的高度和竖直方向;
(3)side-refinement用来预测每一个anchor的x的坐标,准确率有有效地提升。
1、改进RPN,anchor产生的window的宽度固定为3。
2、rpn后面不是直接接全连接+分类/回归,而是再通过一个LSTM,然后再接全连接层。
3、坐标回归一个y,而不是x1,y1,x2,y2.
4、添加side-refinement对水平位置进行regression。
正如上文所提的,这个网络预测的是一些固定宽度的text proposal,所以真值也应该按照这样来标注。但是一般数据库给的都是整个文本行或者单词级别的标注。因此需要把这些标注转换成一系列固定宽度的box。
参考:
[1] http://slade-ruan.me/2017/10/22/text-detection-ctpn/
[2] https://zhuanlan.zhihu.com/p/31915483