图像文字识别初探(一)-CRNN(Convolution Recurrent Neural Network)和DTRN(Deep-text Recurrent Network)
图像文字识别初探(二)-FAN(Focusing Attention Network)
图像文字识别初探(四)-- 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的总体架构如下图所示,包括四个部分:
- FPN(feature pyramid network) as backbone,使用ResNet-50
- RPN(region ptoposal network) 为后续的Fast R-CNN和mask branch操作生成text proposals,anchor的面积被设置为五种大小,
,纵横比为
;随后使用RoI Align提取候选框的区域特征
- Fast R-CNN分支包含文本框的回归和分类任务
- mask branch包含text instance segmentation和character segmentation任务
在训练阶段,RPN网络首先生成大量的text候选框,接下来,这些候选框的RoI特征被当作Fast RCNN分支和mask分支的输入,以生成精确的文本候选框(text candidate boxes),文本实例分割图(text instance segentation maps)和字符分割图(character segmentation maps)。
如下图所示,是mask branch的网络架构,对于一个输入RoI,大小为16×64,经过四个卷积层和一个反卷积层之后,输出38个32×128大小的map,包括一个全局的text instance map(文本区域的具体位置)和36个字符maps(26个英文字符和10个数字字符)和一个background map of characters。
mask testSpotter是一个多任务算法,使用多任务的损失函数
其中和
分别表示RPN和Fast RCNN的损失函数,采用其原损失函数定义 ,
是mask branch的损失函数,包含两部分,一是全局的text instance segmentation损失函数
和character segmentation的损失函数
,
,其中
是一个平均二值交叉熵损失函数(average binary cross-entropy loss),
是一个加权空间softmax损失函数(weighted spatial softmax loss)。
text instance segmentation loss:text instance segmentation任务的输出是一个单独的map,假设N是这张map上像素的数目,是像素类别标签
,
是输出的类别标签,
为平均二值交叉损失函数的定义公式如下:
为sigmoid函数
character segmentation loss:character segmentation任务的输出是37张maps,相对应37类。假设T是类别的数目,N同样是每一个map中像素的个数,那么输出maps X可以看作一个的矩阵,
为一个加权空间softmax损失函数可以被定义为
权重W用来平衡正(字符)负(背景)类别的损失值