一个很早期的ocr归纳

简介: 19的文章同步过来。

OCR

光学字符识别OpticalCharacterRecognition对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。即对图像中文字进行识别,并以文本的形式进行返回。

整个过程大概是图像预处理->文字检测->文本识别->输出

其中最重要的两个技术是:文本检测文本识别

图像预处理:几何变换,畸变校正,去除模糊,图像增强和光线校正。

文本检测:检测文本所在位置和范围和分布。通常包括版面分析,文字行检测

文本识别:对文本内容进行识别,将图像中的文本信息转化为文本信息。主要解决的问题是每个文字是什么。文本校正也属于这环节,即对文本进行核对。

图像预处理

对图像进行处理和特征提取。

传统方法适用HoG对图像进行特征提取,但是HoG对于图像模糊、扭曲等问题鲁棒性很差,对于复杂场景泛化能力不佳。现在普遍使用基于CNN神经网络的特征提取手段。

文本检测

文字检测任务和图像检测任务相似。

Faster R-CNN,使用RPN网络判断候选框是否为目标,再经分类定位的多任务损失判断目标类型。提出一种位置敏感分布的卷积网络代替ROI pooling层之后的全连接网络,使得特征共享在整个网络内得以实现,解决物体分类要求有平移不变性和物体检测要求有平移变化的矛盾,但没有考虑到候选区域的全局信息和语义信息。

当使用FCN时,输出的掩膜可以作为前景文字的二值图像进行输出。

RRPN在faster R-CNN的基础上,将垂直的候选锚定框进行旋转满足非垂直文本的检测。

TextBoxes是基于SSD改进的一个算法。调整了锚定框的长宽比,以适应文字的高长宽比。

DMPNet采用非矩形四边形的候选锚定框进行检测。

CTPN是目前应用最广的文本检测模型之一。其基本假设是单个字符相较于异质化程度更高的文本行更容易被检测,因此先对单个字符进行类似R-CNN的检测。之后又在监测网络中加入了双向LSTM。

CTPN (基于连接预选框网络的文本检测)

CTPN对自然场景下的文字,印刷文字的检测良好。一般文字长度宽度都可以变,但是高度是基本相同的,所以按照固定的高度进行检测,看看图像中哪些区域是连续出现了一片同样高度特征的区域,其边缘符合文字的特点。

该模型主要是对文本行进行定位,其基本做法是直接在卷积获得的feature map上生成的一系列适当尺寸的文本proposals(预选框)进行文本行的检测。注意,CTPN是在feature map上生成proposals,而不是原图像上。

CTPN模型利用了RNN和CNN的无缝结合来提高检测精度,CNN用来提取深度特征,RNN用于序列的特征识别。

  1. CNN(vgg16为例)

    CTPN利用vgg16卷积输出的feature map生成一系列预选框进行检测

  2. RNN

    文字的检测目标不是独立的封闭的,而是有关联的。

整个检测过程分为六个步骤:

  1. 输入3x600x900的图像,使用vgg16进行特征提取,得到conv5_3的特征作为featuremap,大小为512x38x57
  2. 在这个feature map上做滑窗,窗口大小3x3,得到4608x38x57
  3. 将对应的特征输入到RNN(双向LSTM,每个层是128个隐层),得到256x38x57
  4. 将RNN的结果输入到FC层,得到512x38x57
  5. FC层特征输入到三个分类或者回归层中,第一个2k vertical coordinate和第三个k side-refinement用来回归k个anchor的位置信息,第二个2k scores表示的是类别信息(是不是字符)
  6. 使用文本构造的算法(合并不同的pair直到无法再合并),将得到的矩形框合并为文本的序列框。

文本行的建立过程:首先,介绍一个定义, 第一个条件是当Bj是离Bi水平距离最近的区域,第二个条件是该距离小于50个像素,第三个条件是垂直重叠要大于0.7,这样满足三个条件才可以将Bj定义为Bi的一个相邻域记作 Bj->Bi。概念问题解决后,作者强调,如果Bi->B j,Bj->Bi,则可以将两个proposal划为一对,这样通过顺序连接相同的propsoals可以构建文本行。精确的检测和RNN连接可以准确的预测垂直方向的位置。水平方向上,图像被分成一系列像素为16的等宽的proposal。当两个水平方向的proposal没有被ground truth的文本行覆盖时,会导致预测的位置不准确。

Side refinement 就是用来解决这一问题的。这个方法可以准确估计左右两侧水平方向上每个anchor/proposal的偏移量。

SegLink

CTPN只能实现水平方向的文本检测,我们的目标是实现对各种角度的灵活检测。最直接的思路是不只让模型学习和输出边框的位置,也要能输出一个文本框的旋转角度参数。

SegLink模型的主要思想:

  1. 检测生成一个一个的segment,这些切片的内容不确定,可能是字符,单词或者文本行(全部或一部分)。

    1. 在segment检测上,通过套框的方式,对结果进行回归
    2. 每个feature map经过卷积后输出的通道数为7,其中两个表示是否为文字,其余五个表示位置偏移量。
  2. 将属于一个文本行(或单词)的segment连接起来,在两个有重叠的segment的中心点进行相连(link)。

    1. 在segment与segment的link方面,有两种情况,一种是层内链接检测,一种是跨层链接检测。前者是为了判断二者是否属于同一个文本,后者为了解决同一文本在不同层被检测到的冗余问题。
  3. 通过合并算法,将这些segment,link合并成一个完整的文本行,得出完整文本行的检测框位置和旋转角度。该模型不仅学习了segment的位置信息,也学习了segment之间的link关系,以表示是否属于同一文本行(或单词)。

    1. 将同一行的segment取出来
    2. 对这些segment的中心点作最小二乘法线性回归,得到一条直线。
    3. 每个segment的中心点往这条直线作垂直投影。
    4. 在所有投影点中取出距离最远的两个点,记为(xp,yp),(xq,yq)。
    5. 最终文本框,中心点位置为(xp+xq)/2,(yp+yq)/2,宽度为最远的点的距离加上所在的segment的宽度的一半(wp/2+wq/2),高度为所有segment的高度的平均值。

这个模型的缺陷是:不能检测间隔很大的文本行(无法link连接),不能检测形变或者曲线文本(线性回归合并,只能拟合直线),但这一步可以通过修改合并算法来实现。

EAST:An Efficient and Accurate Scene Text Detector

典型的文本检测模型一般分为多个阶段,比如候选框提取,候选框过滤,bounding box回归,候选框合并等阶段。EAST模型简化为只有FCN(全卷积网络),NMS(非极大值抑制),而且输出支持文本行,单词的多个角度检测,高效准确,且能适应多种自然应用环境。

EAST模型的网络结构分为特征提取层、特征融合层、输出层三大部分。

  1. 特征提取层

    基于PVANet,从stage1-4的卷积层抽取特征图,尺寸依次减半,卷积核数量依次加倍。从而抽取不同尺度的特征图,实现对不同尺度文本行的检测。(与SegLink相似)

  2. 特征融合层

    1. 最后一层特征图f1进行unpooling层,将图像放大1倍
    2. 与f2串起来,进行1x1,3x3卷积
    3. 对f3,f4重复,卷积核个数逐层递减,依次为128,64,32
    4. 最后经过32核,3x3卷积后将结果输出到输出层。
  3. 输出层

    最终输出5部分信息:

    1. score map:检测框置信度
    2. text boxes:检测框位置(x,y,w,h)
    3. text rotation angle:检测框旋转角度
    4. text quadrangle coordinates:任意四边形检测框的坐标位置

EAST模型简洁高效准确, 并能实现多角度,但也存在缺陷,比如检测长文本时效果比较差(感受野不够大),在检测曲线文本时效果不理想。

Pixel-Link

PixelLink利用的是分类,实现对文本/非文本的判断,并同时给出文本框的位置和角度。这个模型主要是基于CNN网络,做某个像素的pixel的文本/非文本的分类预测,以及该像素的8个邻域方向是否存在连接的分类预测。然后获取不同大小的文本连通域,再进行噪声滤除操作,最后通过并查集并出最终的文本边界框。

采用vgg16作为特征提取器,将最后的全连接层fc6,fc7替换为卷积层,特征融合和像素预测的方式基于FPN思想,即卷积层的尺寸依次减半,但卷积核的数量依次加倍。文本/非文本预测和连接预测都使用了softmax,输出分别问1x2=2通道(文本/非文本)和8x2=16通道(8个邻域方向是否有连接)

  1. Pixel定义

    分为正像素,负像素。所有落在文本区域内的标记为正像素,文本区域以外的像素标记为负像素,多个文本交叠区域也为负像素。

  2. Link定义

    link由两个pixel双向决定。如果其中一个pixel为正,则link也为正,如果两个pixel都为负,link就为负。

  3. 实例分割

    通过设定阈值得到pixel positive和link positive的集合,使用正连接将正像素分组在一起,产生连通域集合,集合中每个元素代表的就是文本实例。

  4. 提取文本框

    通过对连通域集合使用OpenCV的连通域方法minAreaRect获得最终的连通域,此时每个连通域都有自己的最小外接矩形,最后使用disjoint-set方法形成最终的文本框,并查集主要用于将具有某种关联关系的集合进行合并的操作方法。

  5. 去除噪声

    该方法对噪声敏感,所以会有比较小的错误连通域,根据一定的阈值进行去除处理。

这个模型的优势是更容易学习,训练速度更快,效果更好。对感受野的要求少,因此也更容易学习,减少迭代次数,但也不能检测字与字相隔太远的文本。适合进行端到端的文字检测。

Pixel—Anchor

将1/4,1/8,1/16的feature map作为像素级别语义分割模块和锚检测回归模块的基础特征。通过特征共享的方式把像素级别的语义分割和锚回归放入到一个网络之中,其中pixel-based模块得到的输出结果通过注意力机制送入到anchor-based模块中,使得锚检测回归模块检测效率高、精确度高、最后通过融合nms得到最终的检测结果。

  1. 像素级别语义分割模块(Pixel based Module)

    输入图像首先经过ResNet-50 主干网络分别提取出1/4,1/8,1/16的feature map形成特征金字塔。在1/16的feature map中,采用ASPP(膨胀空间金字塔池化)方法,利用膨胀卷积,将不同扩张率的扩张卷积特征结合到一起,用不同的膨胀率,然后作一次卷积操作,再用因子为2倍的双线性插值进行上采样,特征图变为1/8。再重复一次,变成1/4。再和主干的1/4特征图进行拼接。最后输出两部分:旋转框预测器和注意力热力图。

    • 旋转框预测器:结果包括6个通道,分别是像素是文本的可能性,像素到文本边界框的上下左右距离,边界框旋转角度
    • 注意力热力图:包括一个通道,表示每个像素是文本的可能性,将输出到anchor-based模块。
  2. 锚检测回归模块 (Anchor based module)

    该模块主要是针对输入图像在ResNet-50中提取的1/4特征图,1/16特征图进行操作。

    • 1/4特征图处于底层,具有一定的分辨率,对于检测较小的文字具有一定优势。还与pixel-based模块输出的注意力热力图进行exp操作和点乘,exp操作使每个像素称为正样本文本的概率映射到[1.0,e]范围之内,既可保留背景信息,又加强监测信息,可很大程度上减少错误检测。
    • 对于1/16特征图,为获取更大的感受野,进一步进行特征提取,又卷积出1/32,1/64,1/64,1/64特征图。为避免出现很小的特征图,使用膨胀卷积,以实现分辨率不变,这四层特征图在其后加入APL层(自适应预测层)。

    APL层为不同的卷积核搭配不同的宽高比锚,以适应不同尺度,不同角度的文本。主要分为以下5类:

    1. 正方形:宽高比1:1,卷积核3x3,检测方正规整的文字
    2. 中等水平:宽高比={1:2,1:3,1:5,1:7},卷积核3x5,检测水平倾斜的文字
    3. 中等垂直:宽高比={2:1,3:1,5:1,7:1},卷积核5x3,检测垂直倾斜的文字
    4. 长的水平:宽高比={1:15,1:25,1:35},卷积核1xn,检测水平长行的文字
    5. 长的垂直:宽高比={15:1,25:1,35:1},卷积核nx1,检测竖排长行的文字
  3. 后处理

    在推导阶段,采用融合NMS(非极大值抑制)方法获得最终的检测结果,用anchor-based模块检测小文本和长文本,用pixel-based模块检测中等大小的文本。在anchor-based模块,1/4特征图上的所有anchhor和其它特征图上的所有长anchor都会被保留下来,这些anchors足够覆盖小文本,但对于长文本、大角度文本不具有检测能力;在pixel-based模块,将小于10像素,以及宽高比不在[1:15,15:1]范围内的文字过滤掉。

这个模型在小文本、大角度文本、长文本行以及自然场景文本检测中,均取得了比较好的效果。

文本识别

对文字行进行字符切分,得到单个文字,有可能由于切分位置的原因产生多个识别结果。可以对候选字符进行过分割,使得他们足够破碎,之后通过动态规划合并分割碎片,得到最优组合。

相关文章
|
6天前
|
人工智能 机器人 计算机视觉
微软最新 Sora 分析论文,从中可以看到 Sora 哪些典型的应用场景?
【2月更文挑战第14天】微软最新 Sora 分析论文,从中可以看到 Sora 哪些典型的应用场景?
82 6
微软最新 Sora 分析论文,从中可以看到 Sora 哪些典型的应用场景?
|
自然语言处理 BI 数据处理
【数据对比】综合分析百度情感分析以及华为情感分析的差异,我有了如下结果
【数据对比】综合分析百度情感分析以及华为情感分析的差异,我有了如下结果
291 0
|
6天前
|
机器学习/深度学习 人工智能 并行计算
人工智能平台PAI产品使用合集之机器学习PAI中特征重要性的原理不知道如何解决
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
机器学习/深度学习 PyTorch 算法框架/工具
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
如何将模糊照片人脸恢复清晰,GFPGAN机器学习开源项目使用 | 机器学习
|
机器学习/深度学习 人工智能 自然语言处理
何以为猫?可解释AI从语义层面理解CNN的识别机制
何以为猫?可解释AI从语义层面理解CNN的识别机制
|
机器学习/深度学习 运维 固态存储
AI-无损检测方向速读:基于深度学习的表面缺陷检测方法综述
在真实复杂的工业环境下,表面缺陷检测往往面临诸多挑战,例如存在缺陷成像与背景差异小、对比度低、缺陷尺度变化大且类型多样,缺陷图像中存在大量噪声,甚至缺陷在自然环境下成像存在大量干扰等情形,如图1所示,此时经典方法往往显得束手无策,难以取得较好的效果。
2179 0
|
机器学习/深度学习 人工智能 算法
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
今天分享一篇上交投稿TPAMI的文章,论文很全面的调研了广义上的弱监督分割算法,又涵盖了语义、实例和全景三个主流的分割任务。特别是基于目标框的弱监督分割算法,未来有很大的研究价值和落地价值,相关算法如BoxInst、DiscoBox和ECCV2022的BoxLevelset已经证明了,只用目标框可以实现可靠的分割性能。论文很赞,内容很扎实,分割方向的同学一定不要错过!
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
|
机器学习/深度学习 人工智能 算法
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(上)
今天分享一篇上交投稿TPAMI的文章,论文很全面的调研了广义上的弱监督分割算法,又涵盖了语义、实例和全景三个主流的分割任务。特别是基于目标框的弱监督分割算法,未来有很大的研究价值和落地价值,相关算法如BoxInst、DiscoBox和ECCV2022的BoxLevelset已经证明了,只用目标框可以实现可靠的分割性能。论文很赞,内容很扎实,分割方向的同学一定不要错过!
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(上)
|
机器学习/深度学习 数据可视化 算法
【paddle深度学习高层API七日打卡营】三岁水课第三天——面部关键点识别
【paddle深度学习高层API七日打卡营】三岁水课第三天——面部关键点识别
127 1
【paddle深度学习高层API七日打卡营】三岁水课第三天——面部关键点识别
|
机器学习/深度学习 资源调度 JavaScript
机器学习概念漂移检测方法(Aporia)
目前,有多种技术可用于机器学习检测概念漂移的方法。熟悉这些检测方法是为每个漂移和模型使用正确度量的关键。 在本文章中,回顾了四种类型的检测方法:统计、统计过程控制、基于时间窗口和上下文方法。