图像文字识别初探(三)-Mask TextSpotter

图像文字识别初探(一)-CRNN(Convolution Recurrent Neural Network)和DTRN(Deep-text Recurrent Network)

图像文字识别初探(二)-FAN(Focusing Attention Network)

图像文字识别初探(三)-Mask TextSpotterr

图像文字识别初探(四)-- single-shot text detector

 

Mask TextSpotter

论文:Mask TextSpotter:An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes

此篇文章来自与华科白翔团队,受到Mask R-CNN方法的启发,引入语义分割(semantic segmentation)的思想进行端到端的训练,它最大的优点就是能够检测任意形状的文本,(arbitrary shapes mean various forms text instances in real world)。

场景文字识别的目的是将检测或者裁剪的图片区域解码成字符序列(character sequence),目前提出的算法可以分为三类:基于字符的算法,基于单词的算法和基于序列的算法,前两篇介绍的算法,CRNN和FAN属于基于序列的算法,Mask TextSpotter是基于字符的算法。基于序列的算法输出是一维的序列,而mask textSpotter是在二维的空间中进行分割,这也是为什么mask textSpotter能够检测识别任意形状的文本的原因。

mask textSpotter的总体架构如下图所示,包括四个部分:

  1. FPN(feature pyramid network) as backbone,使用ResNet-50
  2. RPN(region ptoposal network) 为后续的Fast  R-CNN和mask branch操作生成text proposals,anchor的面积被设置为五种大小,\left \{ 32^{2}, 64^{2}, 128^{2}, 256^{2}, 512^{2}\right \},纵横比为\left \{ 0.5,1,2 \right \};随后使用RoI Align提取候选框的区域特征
  3. Fast R-CNN分支包含文本框的回归和分类任务
  4. mask branch包含text instance segmentation和character segmentation任务

在训练阶段,RPN网络首先生成大量的text候选框,接下来,这些候选框的RoI特征被当作Fast RCNN分支和mask分支的输入,以生成精确的文本候选框(text candidate boxes),文本实例分割图(text instance segentation maps)和字符分割图(character segmentation maps)。

图像文字识别初探(三)-Mask TextSpotter_第1张图片

如下图所示,是mask branch的网络架构,对于一个输入RoI,大小为16×64,经过四个卷积层和一个反卷积层之后,输出38个32×128大小的map,包括一个全局的text instance map(文本区域的具体位置)和36个字符maps(26个英文字符和10个数字字符)和一个background map of characters。

图像文字识别初探(三)-Mask TextSpotter_第2张图片

mask testSpotter是一个多任务算法,使用多任务的损失函数

                                                                        L = L_{rpn}+\alpha_{1}L_{rcnn}+\alpha_{2}L_{mask}

其中L_{rpn}L_{rcnn}分别表示RPN和Fast RCNN的损失函数,采用其原损失函数定义 ,L_{mask}是mask branch的损失函数,包含两部分,一是全局的text instance segmentation损失函数L_{global}和character segmentation的损失函数L_{char}L_{mask}=L_{global}+\beta L_{char},其中L_{global}是一个平均二值交叉熵损失函数(average binary cross-entropy loss),L_{char}是一个加权空间softmax损失函数(weighted spatial softmax loss)。

text instance segmentation loss:text instance segmentation任务的输出是一个单独的map,假设N是这张map上像素的数目,y_{n}是像素类别标签y_{n}\in{0,1}x_{n}是输出的类别标签,L_{global}为平均二值交叉损失函数的定义公式如下:

                                                      L_{global} = - \frac{1}{N}\left [ y_{n} \times log S_{n} + \left(1 - y_{n} \right ) \times log \left( 1 - S_{n}\right)\right ]

S_{n}为sigmoid函数

character segmentation loss:character segmentation任务的输出是37张maps,相对应37类。假设T是类别的数目,N同样是每一个map中像素的个数,那么输出maps X可以看作一个N \times T的矩阵,L_{char}为一个加权空间softmax损失函数可以被定义为

                                                           L_{char}=- \frac{1}{N}\sum_{n=1}^{N}W_{n}\sum_{t=0}^{T-1}Y_{n,t}log\left(\frac{e^{X_{n,t}}}{\sum_{k=0}^{T-1}e^{X_{n,k}}} \right )

权重W用来平衡正(字符)负(背景)类别的损失值

你可能感兴趣的:(图像文字识别,机器学习,深度学习,目标检测,机器学习和深度学习之旅)