文字检测方法综述

文字检测是OCR技术重要的一环,它和通用物体检测最大的区别有两点,一是正负样本选取的不同,比如一个proposal只覆盖了一长串文字中的几个字,可能IOU很小但是也应算作正样本.二是文字检测对方向很敏感,物体检测中不管检测出的狗是正的还是斜的,后面都能识别对,而对于倾斜文字要检测出文字周围的4个点然后才能转正进行识别,如果只检测到两个点那文字只占了图片中一小部分,很难进行识别.目前做文字检测比较好的实验室有华中科技大学的Bai Xiang老师,中科院深圳先进院的Qiao Yu老师,华南理工大学的Jin Lianwen老师等人.主流的文字检测方法大概有三种:

  • 基于SWT/MSER等人工设计特征提取character-level的proposal,然后用CNN筛选proposal,最后进行后处理得到文字框.这种方法之前比较流行,最近一年已经很少看到了,效果相对后面的方法较差
  • 基于RPN进行检测,这种方法可以end to end得到文字框,效果好,但由于原始的RPN对每个框是预测两个点的,所以对于倾斜文字目前公开的方法中没有很好的解决方案,不过是可以改进来预测倾斜框的四个点的,前几周ICDAR 2015上新上传的方法貌似就是通过改进RPN解决的,不过论文还没有公布
  • 基于FCN进行检测,这个方法缺点是FCN得到heat map后还要进行复杂的后处理得到文字框,而通过heat map难以分开多行文字,现有方法通过不同手段部分解决了这个问题,但复杂的步骤难以避免精度的损失,目前来看这类方法效果略差于基于RPN的方法

下面是我整理的一些论文以及笔记,最后整理了一个PPT在这里

SWT/MSER:

  • Text-Attentional Convolutional Neural Network for Scene Text Detection

FCN:

  • Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network
  • Scene Text Detection via Holistic, Multi-Channel Prediction

RPN:

  • DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images
  • TextBoxes: A Fast Text Detector with a Single Deep Neural Network
  • Detecting Text in Natural Image with Connectionist Text Proposal Network

Text-Attentional Convolutional Neural Network for Scene Text Detection

Contrast-Enhanced MSERs获得char-level的proposal,然后用CNN做一次过滤,CNN三个监督信息,segmentation,character-classfication和text/non-text classfication,icdar 2013 82%

DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images

end-to-end,Inception结构,三个特点:

  • ambiguous text category:为了解决文字检测中iou小的proposal也可能是正样本的问题,新增加ambiguous text,即iou在0.2-0.5之间的样本,变为三分类问题
  • multi- level region-of-interest pooling:在conv4和conv5都进行roi pooling,将得到的feature concat,更好地handle multi-scale的text
  • Iterative bounding box voting:将多个模型预测的bbox放在一起进行nms,提高recall

icdar2013 85%

Detecting Text in Natural Image with Connectionist Text Proposal Network

  • 新的正负样本选取方法,不考虑x方向,只考虑y方向的overlap,anchor固定宽度,预测时只预测y方向
  • 为了更好利用x方向的信息,图片经过cnn每一行过一个lstm,去掉lstm效果差8%
  • 后处理简单,将y方向overlap超过0.7,y方向距离小于阈值的proposal连在一起

icdar13上88%,公布论文的方法里最好的

TextBoxes: A Fast Text Detector with a Single Deep Neural Network

  • end2end,类似ssd
  • 正负样本选择没有提到,应该和rpn一样
  • 最后用对检测结果进行识别,过滤掉score低的

icdar13 86%,多个size的输入结合,只用300x300输入81%,用时0.09s(titan x)

Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network

两个cnn(Cascaded Convolutional Text Network,Fine Text Network),结构类似,前面都是vgg16,监督信息不同,第一个用于获取粗略的文字位置,输入为全图,第二个获取精准位置,输入为文字周围的图像,网络结构类似vgg16,不同在于为了handle细长的文字,pool4和pool5之间有三个卷积层,kennel size分别为3x3,3x7,7x3,将这三个卷积的输出加起来输入pool5,然后unsample与pool4相加,获得multi-scale信息同时也提高分辨率.第一个网络监督信息为segmentation的信息,gt bbox里面的为1,外面为0.第二个网络输出每行文字的中心行和文字位置,中心行的gt是gt bbox中间为1,0.25H和0.75H为0的高斯分布,文字位置gt和第一个网络一样.先训练第一个网络,再finetune第二个.icdar 13 上结果为86%

Scene Text Detection via Holistic, Multi-Channel Prediction

先用FCN对每张图片预测map of text region,map of character,map of linking orientation,map of text region和map of character为0-1之间的数,表示这个像素是问题的概率,为了避免多个字符的map重合,字符的gt缩小一半,map of linking orientation表示文字方向,在-180度到180度之间,归一化到0-1,有三个loss function,前两个为softmax loss,最后一个为sin(|预测角度-真实角度|)

得到这三个信息后,根据text region的heatmap得到文字框,然后对文字框中每个字符根据heatmap得到他的中点和半径,使用delaunay triangulation算法将这些点连起来,delaunay triangulation算法用线段连接这些点产生尽可能多的三角形,这样得到一个图,每个边的权值与两点的位置和方向有关,两点位置越近,两点连线的方向和两点连线上所有点预测的平均方向越近,两点权值越大

得到这个图之后,先用最大生成树算法得到这个图的生成树,然后确定text line的个数k和每个text line包含的字符,将这些点分为k类,计算每类的坐标点矩阵的特征值,取每类最大的特征值比次大的特征值之和最大的时候的k,然后用最小生成树算法得到每类的点

icdar13 84.3% icdar15 64.7%

lufo /
Published under (CC) BY-NC-SA tagged with cnn  text_detect