论文:Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes
论文链接:https://arxiv.org/abs/1807.02242

这篇是白翔老师发表在ECCV2018关于OCR的文章,通过引入分割的思想进行end-to-end训练文本 检测和识别从而达到检测和识别任意形状文本的目的。

文章的主要特点在于能够检测任意形状的文本,之所以能达到这样的效果主要是因为采用分割方式检测文本。我们知道目前OCR领域对水平文本的检测和识别效果都非常好,同时对任意方向的文本检测和识别也有很多优秀的算法,但是对任意形状的文本检测和识别的研究却非常少,主要一个原因在于常规的文本检测算法采用目标检测算法,这种类型算法不利于任意形状文本的检测,而分割算法恰恰能实现,这篇文章正是借鉴Mask RCNN的思想进行文本检测和识别。

另外目前OCR领域的大部分算法中文本检测和文本识别都是分开的,也就是文本检测通过一个模型实现,得到的检测结果再作为文本识别模型的输入得到最终的识别结果。分开训练的方式比较主流,而end-to-end的训练方式有一定难度,但是文本检测和文本识别相互之间联系紧密而且可以互补,因此从直观上看分开训练模型不一定是最好的,这也是目前该领域依然研究end-to-end的训练方式的一个原因。这篇文章是end-to-end的训练方式,也就是文本检测和文本识别在同一个模型中同时实现,通过分割进行文本检测能得到可靠的检测结果,从而保证文本识别的训练能够顺利进行。

如果你不熟悉水平方向、任意方向和任意形状的文本检测和识别,那么可以看Figure1。在Figure1中,绿色框是文本检测的结果,左图的检测框和常规的目标检测算法结果类似,主要通过预测框的中心点和宽高来定位框;中间图的检测框则是通过预测框的四个点来定位框,这样就能实现任意四边形的框预测;右边图的检测结果是这篇文章的检查结果,也就是通过分割的方式能检测任意形状的文本。

Mask TextSpotter在整体结构上和Mask RCNN类似,如Figure2所示,主要包含的4个部分是:1、用于特征提取的backbone采用FPN网络,主要原因在于通过特征融合能提升对小字的检测和识别效果。2、RPN网络用于得到ROI,这部分关于anchor尺寸的初始化基本上采用FPN算法的方式,比如宽高比例采用0.5、1和2,并没有设计专门用于文本检测的特殊尺寸anchor,这部分确实和许多文本检测算法不同。3、Fast RCNN关于预测框的分类和回归支路。4、用于文本分割(word segmentation)和文本识别(character instance segmentation)的分割支路,这部分也是这篇文章的亮点,在该分割支路中通过分割方式同时做文本检测和文本识别两个任务,因此区别于两阶段的训练方式需要准确的文本检测结果作为文本识别模型的输入,在分割支路中同时做文本检测和文本识别不需要依赖准确的检测结果,同时需要注意的是文本识别部分是通过基于字符的实例分割实现的,与传统的识别网络不同。

从前面Figure2关于网络整体结构的介绍可以看出Mask TextSpotter的主要特点在于分割支路的设计,分割支路同时完成文本的检测和识别,如下Figure3是分割支路的示意图。首先输入ROI特征图的二维尺寸为16*64,然后经过一些卷积层和反卷积层继续提取特征,最后通过卷积核数量为38的卷积层输出38个map,每个map的二维尺寸都是32*128,其中第一个是文本分割的map(global text instance map),这部分结果不受文本的形状和方向影响;然后是36个数字及字母分割的map(character map),从这里可以看出在文本识别部分采用的是基于字母的识别方式(character-based);最后一个是文本背景分割的map(background map)。

强调下标签的分配问题,在文中通过Figure4(a)体现。这里将Figure4(a)放大如下,提供的ground truth是(a)中左图的红色多边形框和黄色框。关于Mask TextSpotter的框分类和回归支路(Fast RCNN),根据红色多边形框可以得到覆盖该框的面积最小框:绿色框,绿色框就用于框分类和回归支路的ground truth,这部分和Fast RCNN中关于真负样本的定义一样。关于Mask TextSpotter的分割支路,则提供(a)中右图的两个map作为ground truth,这两个map分别是文本区域的map和文本的map。

损失函数如公式3所示,主要由三部分组成:1、RPN网络的Lrpn;2、Fast RCNN的分类和回归Lrcnn;3、分割支路的Lmask,实验中α1、α2和β都设置为1。其中前两部分损失函数和Fast RCNN一致,重点在于分割支路的Lmask。

分割支路损失函数Lmask如公式4所示,主要包含两个部分:1、文本分割的损失函数Lglobal,这部分是针对分割支路输出的38个map的第一个map进行计算;2、文本分割(识别)的损失函数Lchar,这部分是针对分割支路输出的38个map的后37个map进行计算(包含文本背景类)。

Lglobal采用cross entropy loss,如公式5所示,N表示输出map的点数量;yn属于[0,1],表示每个像素点的标签;xn表示分割支路输出的38个map中的第一个map的第n个值;输入概率是通过sigmoid函数S(.)得到的。

Lchar采用加权的cross entropy loss,如公式6所示,输入概率通过softmax函数进行计算得到,因为这里是对文本做多分类,另外加权的目的是平衡背景类和文本类区域的贡献。

权重W的公式如7所示。Yi,0=1表示第i个像素点是背景,Nneg表示背景像素点的数量。

Inference阶段和训练阶段一个较大的不同点在于inference阶段分割支路的输入ROI特征采用Fast RCNN的检测输出而不是RPN网络的输出,因为前者的坐标和分类标签更加准确,另外在输入分割支路之前还会做常规的NMS操作。

实验结果:
Table1是在IDCAR2013数据集上的识别效果对比,因为该数据集的测试数据主要是水平方向的文本,所以Mask TextSpotter的优势不算很明显。

Table2是在IDCAR2015数据集上的识别效果对比,Mask TextSpotter在输入尺寸为720*1280的速度差不多是6.9FPS,另外由于该数据集的文本方向多样,所以对比效果明显。

Table3是在IDCAR2013和IDCAR2015数据集上关于检测效果的对比,主要评价指标是precision、recall和F值。其中Ours(det only)表示移除了分割支路中关于文本分割部分的输出,相当于只做检测一个任务,从而分析检测和识别两个任务之间的互补,从实验结果可以看出识别任务对检测任务有一定的促进作用。

Table4是在Total-Text数据集上的检测和识别效果对比,该数据集包含水平方向、任意方向、弯曲文本,因此Mask TextSpotter的对比效果更加明显。

Mask TextSpotter 算法笔记相关推荐

  1. 华科计算机博导刘云生论文,华科白翔老师团队ECCV2018 OCR论文:Mask TextSpotter

    引入Mask R-CNN思想通过语义分割进行任意形状文本检测与识别. (欢迎关注"我爱计算机视觉",一个有价值有深度的公众号~) 华中科技大学白翔老师团队在自然场景文本检测与识别领 ...

  2. 《Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting》论文阅读笔记

    论文阅读笔记 去年在ECCV上发表的<Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spott ...

  3. (OCR论文)Mask TextSpotter V3机翻

    <Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting>,ECCV 2020, ...

  4. Mask TextSpotter v3 来了!最强端到端文本识别模型

    场景文本的识别可以用文本检测+文本识别两个过程来做,近年来端到端的场景文本识别(即Text Spotting)越来越引起学术界的重视,而华中科技大学白翔老师组的 Mask TextSpotter v1 ...

  5. 论文推荐|Mask TextSpotter:An End-to-End Trainable Neural Network

    本文介绍2019年8月TPAMI录用论文"MaskTextSpotter: An End-to-End TrainableNeural Network for Spotting Textwi ...

  6. 场景文本识别—Mask TextSpotter v1 v2 v3

    V1:以mask rcnn为基础,基于分割来进行端到端的文本识别.mask分支不仅能预测分割图来分割文本区域还可以预测字符概率图. V2:在v1基础上在识别部分加入空间注意力以提升框架的文本识别能力. ...

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

    Mask TextSpotter 摘要 Mask TextSpotter利用了端对端学习流程的简单和顺利的优势,通过语义分割获得更准确的文本检测和识别.而且,在处理不规则形状的文本实例中,如弯曲文本, ...

  8. 最强端到端文本识别模型 Mask TextSpotter v3 来了!

    文章目录 简述 Mask TextSpotter v3整体流程 实验结果 总结与思考 cv侠的个人公众号 helllo 大家好,我是cver,今天给大家推荐Ocr 算法~ 简述 场景文本的识别可以用文 ...

  9. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...

    来源:专知本文为资源,建议阅读5分钟本文为你分享<算法笔记>中文版. https://github.com/Dairongpeng/algorithm-note 目录概览 第一节 复杂度. ...

最新文章

  1. 集锦分享 | 200篇原创笔记,帮助你快速入门Python与机器学习
  2. CVPR 2021 | RfD-Net: 从点云中重建三维物体实例
  3. 建立于因果推理与机器学习共识的稳定学习
  4. automapper
  5. stata中计算公式命令_珠联璧合:把Jupyter Notebook 作为stata的IDLE
  6. CAD计算机辅助设计与BIM的区别,3D建模、CAD和BIM三者之间的差异是什么,有什么区别?...
  7. Android服务之Service(其一)
  8. effectiveJava(5)消除过期的对象引用
  9. Undefined function or method ' ' for input arguments of type 'double' ---错误解决办法
  10. c语言如果读不到数据就跳过,4,VS常见问题解决(一闪而过、等问题)不断更新...
  11. http://4526621.blog.51cto.com/4516621/1343369
  12. mysql索引下沉_MySQL 5.6 索引条件下推优化
  13. vs2008 USB转COM口发送字符中途出错的问题.
  14. python Web 之基石 - - CGI 编程 (基于python3)
  15. 安装glog和gflags
  16. nc数据处理,掩膜,经纬度定位格点
  17. undertale人物_传说之下全人物介绍 人物评价解析
  18. TypeScript散文
  19. 【2023校招刷题】常见面试问题总结(一、EDA工具及IC整体设计流程篇)(随后续面试不断更新....)
  20. 前端剑法第三式————碎岩

热门文章

  1. 如何从Confluence数据库手动删除陈旧草稿
  2. USB2.0协议原文阅读笔记
  3. 教你如何使用Java代码从网页中爬取数据到数据库中——网络爬虫精华篇
  4. mac键盘图标与对应快捷按键
  5. Apad Qzone项目总结(一)---发布!!!
  6. Linux下的lds链接脚本详解
  7. “火星人”马斯克推论:世界很大可能性是被编程的,上帝可能是个程序员!
  8. 中国艺术孙溟㠭篆刻作品《零落成泥碾作尘,只有香如故》
  9. 使用CDN实现应用的缓存和加速
  10. 腾讯发布“天眼云镜”主机安全产品