赞
踩
一个简单的文字识别流程如下:
Step 1. 通过手机、摄像机、扫描仪等设备采集含有待识别字符的图像,作为输入;
Step 2. 对图像进行尺寸缩放、明暗调整、去噪等预处理操作;
Step 3. 将图像中的单个字符、或者是连续几个字符所在的区域检测出来;
Step 4. 根据文本检测结果从图像中将文本所在区域分割出来,然后导入到模型中进行文本识别,进而得到图像中的字符信息。
CTPN 对自然场景下的文字,印刷文字的检测良好。
文字分布的特点**
在了解文字检测之前,先来看一下文字分布的特点。无论是印刷文字,还是自然场景下的文字,一般文字是水平排列,连续字符的长度可变,但高度基本相同。既然宽度是可变、不确定的,那么就按照固定的高度进行检测,看看图像中有哪些区域是连续出现了一片同样高度特征的区域,并且其边缘符合文字的特点,就将其圈出来。
CTPN
CTPN,全称是“Detecting Text in Natural Image with Connectionist Text Proposal Network”(基于连接预选框网络的文本检测)。该模型主要是对图片中的文本行进行准确定位,其基本做法是直接在卷积获得的feature map(特征图)上生成的一系列适当尺寸的文本proposals(预选框)进行文本行的检测。下图可以很好地看出该模型的检测思路(注意:CTPN模型实际上是在feature map上生成proposals,而不是在原图像上生成,以下只是个示意图):
CTPN技术原理
CTPN模型利用了RNN和CNN的无缝结合来提高检测精度。其中,CNN用来提取深度特征,RNN用于序列的特征识别,二者无缝结合,在检测上性能更好。其中:
CNN(采用VGG16)
CTPN模型通过利用VGG16卷积输出的 feature map(特征图)生成一系列proposals(预选框)进行检测。
RNN
由于文字信息是由“字符、字符的一部分、多字符”组成的一个序列,所以文字这个检测目标并不是独立、封闭的,而是有前后关联的,因此在CTPN中采用了RNN(Recurrent Neural Networks,循环神经网络)来利用前后文的信息进行文本位置的预测。
CTPN模型的网络结构如下图所示:
整个过程主要分为六个步骤:
第一步:输入3×600(h)×900(w)的图像,使用VGG16进行特征的提取,得到conv5_3(VGG第5个block的第三个卷积层)的特征作为feature map,大小为512×38×57;
第二步:在这个feature map上做滑窗,窗口大小是3×3,即512×38×57变为4608×38×57(512按3×3卷积展开);
第三步:将每一行的所有窗口对应的特征输入到RNN(BLSTM,双向LSTM)中,每个LSTM层是128个隐层,即57×38×4608变为57×38×128,Reverse-LSTM同样得到的是57×38×128,合并后最终得到结果为 256×38×57;
第四步:将RNN的结果输入到FC层(全连接层),FC层是一个256×512的矩阵参数,得到512×38×57的结果;
第五步:FC层特征输入到三个分类或者回归层中。第一个2k vertical coordinate和第三个k side-refinement是用来回归k个anchor的位置信息(可以简单理解为是要确定字符位置的小的矩形框,上面示意图中的红色小长框,宽度固定,默认为16),第二个2k scores 表示的是k个anchor的类别信息(是字符或不是字符);
第六步:使用文本构造的算法,将得到的细长的矩形框,将其合并成文本的序列框。其中文本构造算法的主要的思路为:每两个相近的候选区组成一个pair,合并不同的pair直到无法再合并为止。
以上就是CTPN主要原理的介绍,使用CTPN模型对自然场景下的文字进行检测,结果如下图所示:
CTPN模型最大的亮点是引入RNN来进行检测。
先用CNN得到深度特征,然后用固定宽度的anchor(固定宽度的,细长的矩形框)来检测文本区域,将同一行anchor对应的特征串成序列,然后输入到RNN当中,再用全连接层来做分类或回归,最后将小的候选框进行合并,从而得到了文本所在的完整区域。这种把RNN和CNN无缝结合的方法有效地提高了检测精度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。