OCR之端到端任意形状的场景文字识别 ICCV2019 End-to-End Text Spotting

端到端文本识别(End-to-End Text
Spotting)是将文本阅读问题看成一个整体来解决,其基本思想是设计一个同时具有检测单元和识别单元的模型,共享其中两者的CNN特征,并联合训练。在推断阶段,此端到端模型可以在一个前向传播中预测场景图像中的文本位置和内容信息。
这篇文章是谷歌发表在2019ICCV上的一篇文章,主要解决了自然场景下任意形状的文字识别问题,而且是一种端到端的方法。

一.原理简介

首先整体框架图如下图所示。

总体上,模型由3个单元和RoI Masking组成,3个单元分别是Backbone(CNN特征提取单元),Detector(检测单元),Recognizer(识别单元),其中RoI Masking是本文提出的Detector与Recognizer的一种交互模式。
1.在backbone模块中引入Atrous Convolutions使其有效的Output Stride为8,作用是提供Dense Feature的同时可以维持较大的Receptive Field,便于捕获自然场景中尺寸上有巨大变化的文本信息。这个Backbone产生的特征会共享给Detector和Recognizer作为其输入。
2.在检测单元这一部分中,作者采用了mask rcnn,作为了检测器,和mask rcnn不同的主要有两点:(1)在第二阶段的cls head是有无文本二分类,(2)与cls head相应,mask prediction head输出通道数是2,分别是background还是text分割的binary。
3.关于Recognizer,由于前述的RoI Masking并没有对特征进行矫正,故CTC-based方法并不适用,据此,作者借鉴了Bahdanau-style的Attention思路来识别文本,如Fig2所示。Recognizer的主要思想是由一个LSTM-Decoder来依次预测各个字符,直到预测类别为End-of-Sequence(EOS)才停止。上述的Context Vector就是Attention机制的输出表征,其实质是Flattened Image Feature h的加权和
4.关于多尺度特征融合和RoI Masking,作者指出Stride 8的特征对于Text Detection是足够的,但对于Text Recognition这个较细粒度的任务则需要更密集的特征,因此,作者引入了多尺度特征融合的方法来加强输入到Recognizer的特征。具体来说,作者将Backbone中的Stride 8和Stride 4的特征按照Feature Pyramid Network[5]的思路进行了两个尺度的融合,可参考Fig1红色虚线框的前半部。另外,本文指出目前End-to-End识别方法存在的一个问题是Detector和Recognizer的交互模式,例如[6]和[8]中是分别使用了RoI Transforms和RoI Rotate去对Rotated Rectangles或Quadrilaterals的文本实例特征进行矫正,这样的交互模式对于直线文本情况是适用的,但往往会失效于曲线文本。因此,作者提出了新的交互模式RoI Masking,具体流程是先由Detector产生的Axis-aligned Bounding Box用来截取特征,然后将这些Cropped Out Feature和Instance Segmentation Mask(Inference阶段由Mask Branch预测得)相乘,最后经过Resize后再送到Attention Decoder中。此举目的是过滤相邻文本和背景信息,并免去对文本特征的矫正操作。本文指出RoI Masking可显著提高Recognizer的性能。

关于联合训练和损失函数,作者还观察到了目前End-to-End方法存在的另一个问题,也就是Recognizer在训练过程中往往需要远比Detector更多的数据和迭代次数,因此会出现的情况是,现有公开数据集想用来联合训练并得到一个高性能的Attention Decoder是显得不够大的,进一步说,即使通过训练足够长的时间来使Recognizer收敛,但Detector会存在过拟合的高风险。因此,作者通过增加一个部分标注的数据集(通过一个OCR引擎[2]来自动标注)来解决这问题,具体来说,训练过程中当样本是Fully Labeled时,Detector和Recognizer的权值都会更新,当样本是Partially Labeled时,则只有Recognizer被更新.

二.总结

本文模型中的Detector在MaskR-CNN]的基础上把其中的Classification Head从多分类改为Text/non-text的二分类,Mask Prediction Branch的输出也相应地调整2通道,分别为Text Mask和Non-text Mask,Masks经过Polygon的拟合得到最终的检测结果。也即,作者将mask rcnn修改为了一个简单、有效的纯检测器。然后,基于Detector产生的RoIs和Masks,作者提出了RoI Masking方法来为Recognizer提供准确的文本特征信息。而Recognizer则是基于Bahdanau-style[1]的Attention思路去构建的一个LSTM-Decoder,能依次选择相关的字符特征进行解码,直到预测的字符类别为EOS。
值得学习的一点是,本文模型是目前为止第一个可以在端到端训练策略中从部分标注的样本(借助现有OCR Engine)中收获性能增益的方法。
RoI Masking是本文方法的一个亮点。
关于和Mask TextSpotter的比较,本文和Mask TextSpotter相似的地方是两者模型都和Mask R-CNN关系很大,但不同的地方也很明显。可以概括为,Mask TextSpotter比较完整地继承了Mask R-CNN的思想,它将Mask Prediction Head用于字符分割,Global Word分割和Background分割,值得注意的是,既然Mask Head用于字符分割,即Mask Prediction Head也完成了Recognizer的功能,因为每个Character Mask的通道索引就代表着字符类别;而明显不同的是,本文模型只将Mask R-CNN修改为一个单纯的文本检测器(Detector),其Mask Prediction Head只负责分割出文本和非文本区域,而Recognizer则由独立于Mask R-CNN的Attention-decoder来担任,Detector输出的RoIs和Masks则用于为Recognizer提供准确的Text Instance Feature。另外,两个模型的Mask R-CNN模块中的Classification Head和Regression Head是一致的设计。

OCR之端到端任意形状的场景文字识别 ICCV2019 End-to-End Text Spotting相关推荐

  1. 新版QQ功能录制屏幕、截取任意形状、屏幕文字识别

    是不是觉得QQ PC版最近的更新都是在网课功能上了呢?对的,腾讯为了同学们可以更好地上网课真是操碎了心.不过QQ最近推出了9.3.2版,这一次的更新可是跟网课无关,此次更新带给用户几个非常好用的新功能 ...

  2. OCR:精准、稳定、易用的文字识别

    OCR:精准.稳定.易用的文字识别 大家好,今天给大家介绍精准.稳定.易用的文字识别应用服务OCR. OCR是英文光学字符识别的缩写,通常叫法为文字识别.它的工作原理是通过扫描仪或数码相机等光学输入设 ...

  3. ICCV 2019 Oral 端到端任意形状场景文字识别

    点击我爱计算机视觉标星,更快获取CVML新技术 本文简要介绍来自谷歌近期的一篇论文"Towards Unconstrained End-to-End Text Spotting", ...

  4. 【分享-免费OCR工具 在线+移动端】免费在线图片多国文字识别

    免费在线图片文字识别,支持简体.繁体.英文.韩语.日语.俄语等多国语言的准确识别,识别结果可复制或下载txt或word. 白描官网 除了客户端,还有网页版的,方便少量使用的用户: 白描OCR网页版 界 ...

  5. OCR技术系列之四】基于深度学习的文字识别(3755个汉字)(转)

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

  6. 【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

  7. OCR识别系列之一-----场景文字识别

    另一种方法应用比较广的就是深度学习方法,深度学习方法是将OCR识别划分为文字检测和文本识别部分 ,这也是深度学习技术可以充分发挥功效的地方.使用比较广泛的网络结构是Differentiable Bin ...

  8. python场景文字识别_针对复杂场景的 OCR 文本识别,推荐一个Python 库!

    大家好,我是 zeroing~ 1,前言 之前谈到图片文本 OCR 识别时,写过一篇文章介绍了一个 Python 包 pytesseract ,具体内容可参考 介绍一个Python 包 ,几行代码可实 ...

  9. python深度文字识别_【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)...

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

最新文章

  1. suse mysql 5.5_suse 11 mysql 如何从5.1升级到5.5
  2. php程序员应该懂的几个基本概念
  3. opencv 图像去噪要点总结
  4. 重温c语言之环境变量
  5. c语言编程运动会分数统计系统报告,独家稿件:定稿运动会分数统计系统设计报告_完整版...
  6. [Java基础]并发修改异常
  7. redis的安装(Linux)和基本使用
  8. 人工智障学习笔记——机器学习(16)降维小结
  9. 黑客是否可以攻击被拔掉网线的电脑?
  10. ESFramework介绍之(34)―― ITcpServerAgent和IUdpServerAgent组件关系图
  11. matlab中concur怎么用,Matlab的concur、repmat、kron、reshape函数介绍
  12. Hi3519V101运行MPP业务
  13. Filed II 自定义二维曲面超声换能器阵列
  14. YAMLException: bad indentation of a mapping entry at line 解决
  15. 中国式的父慈子孝:爸妈用子女旧手机
  16. 面试时,如何回答你还有什么想要了解的?
  17. 在linux4.15 移植设备树到JZ2440
  18. springAop学习笔记(二,springboot进本配置和使用)
  19. 8、接口与面向接口编程
  20. 悠歌火控系统(航空飞行器)

热门文章

  1. Gurobi Annoconda
  2. telegram创建机器人,接口调用机器人
  3. python-docx使用document读取文件报错:docx.opc.exceptions.PackageNotFoundError: Package not found at
  4. 数字逻辑第六章(异步时序逻辑电路)
  5. 图片存到服务器php,PHP肿么把图片数据保存为jpg图片到服务器目录
  6. ffmpeg高手必备的几种转码: jpg、mp4、gop、分辨率等
  7. android定制化软件修改或添加按键驱动的核心操作步骤讲解
  8. 东西向通信与南北向通信
  9. 解决wine不能输入的问题
  10. IT行业的薪水到底如何?我们推高房价了吗?