⚠️本文为稀土技能社区首发签约文章,30天内制止转载,30天后未获授权制止转载,侵权必究!

《深入浅出OCR》第三章:OCR文字检测

专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《浅显易懂OCR》专栏,对标最全OCR教程,具体章节如导图所示,将别离从OCR技能开展、方向、概念、算法、论文、数据集等各种视点打开具体介绍。

个人主页: GoAI | 大众号: GoAI的学习小屋 | 交流群: 704932595 |个人简介 : 签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能范畴博客专家、新星计划计算机视觉方向导师等,专心大数据与人工智能常识共享。

文章目录

《浅显易懂OCR》前言常识(二):深度学习根底总结 (✨文末深度学习总结导图)

《浅显易懂OCR》前言常识(一):机器学习根底总结 (✨文末机器学习总结导图)

《浅显易懂OCR》第一章:OCR技能导论

《浅显易懂OCR》第二章:OCR技能开展与分类

《浅显易懂OCR》第三章:OCR文字检测 (本篇)


本篇导读: 上一章我们介绍到OCR流程包括两阶段算法和端到端算法,现在在通用场景辨认作用下,两阶段OCR比较端到端OCR技能更成熟,所以工业界大多选用两阶段OCR。 本篇为 【《浅显易懂OCR》第三章:OCR文字检测】,首要对深度学习OCR文字检测办法进行介绍,自己将从经典算法结构、代码、论文解读等视点打开,合作作者总结的思想导图,浅显易懂OCR常识。

《浅显易懂OCR》第三章:OCR文字检测

一、文字检测介绍

OCR技能是一种能够从扫描或拍摄的图片中提取文本信息的技能。它的首要任务是找到图片中的文字区域,并将其转换成能够修正的文本。如下图所示,在医疗范畴中,高效精确地检测出医疗文本区域对OCR辨认系统的全体功能至关重要。

《深入浅出OCR》第三章:OCR文字检测

二、传统的文字检测办法

传统的文字检测办法首要是依据图画处理和机器学习的算法,大致可分为两类:依据连通域的办法和依据滑动窗口的办法。

2.1 依据连通域的天然场景文本检测办法:

传统文本检测办法最常见的是依据连通性检测算法。 依据连通区域分析经过检测像素值持平、且前景像素点方位附近区域的形状、巨细、方位等特征,判别是否为文本区域。经过获取候选文本区域,能够将搜索规模缩小。可是这种办法很大程度上依赖于检测出来的文本连通区域,对于文本检测的召回率和文本轮廓的精确性有很大影响。

2.1.1 依据边际检测的文本检测办法:

依据各类算子的边际检测的算法,如Canny边际检测、Sobel边际检测等,经过检测图画中的边际来定位文本区域。

2.2 依据滑动窗口的文本检测办法:

这种办法一般是依据单个字符的分类器的,它运用滑动窗口来处理候选框。办法是在图画上设置一个滑动子窗口,并在每个方位运用检测算法。但是,在杂乱的场景中(如光照、暗影等),这种办法可能导致字符分类作用欠好。一起,如何挑选适当的检测窗口滑动步长也很杂乱。

《深入浅出OCR》第三章:OCR文字检测

2.3 传统文字检测技能总结:

《深入浅出OCR》第三章:OCR文字检测

传统的文字检测办法一般结合了图画处理技能和机器学习算法,比方边际检测、连通域和形态学等。虽然这些办法在理论上和稳定性上表现良好,但因为光照改变、褪色、噪声等因素的搅扰,以及文本区域的不规矩性、多方向性和多规范性等杂乱场景,使得检测的作用不太抱负。 但是近年来,依据深度学习的文字检测办法逐渐成为干流。

接下来,自己将按时刻开展及办法分类对OCR文字检测进行具体介绍。

三、依据深度学习的文字检测办法

3.1 深度学习文字检测技能开展

深度学习的文本检测办法是从通用方针检测算法(比方faster rcnn和ssd)启示而来的。研究人员开始尝试修正这些算法中的锚框规范来适应文本方针的特色。例如,在2016年呈现的CTPN算法是在faster rcnn的根底上做的改善,经过修正锚框的规范来更好地检测文本。而在2017年,Textbox算法则是在ssd上做了改善,同样是为了适应文本的特色。 随后,研究人员在这些根底上提出了各种改善办法,不断优化文本检测算法的功能。现在干流的文字检测算法包括DB算法及其改善算法等。

《深入浅出OCR》第三章:OCR文字检测

3.2场景文字检测办法分类

从结构出发,作者将文字检测技能能够分为自顶向上和自顶向上,其一般情况下结构比照方下图所示:

《深入浅出OCR》第三章:OCR文字检测

从辨认办法上,首要分为依据回归和依据切开两种检测办法。 其间,自顶向下分为两阶段和单阶段,单阶段又分为规矩与不规矩文本检测,其各自代表算法将在本章具体介绍。

《深入浅出OCR》第三章:OCR文字检测

3.3 初期深度学习文字检测算法

在深度学习呈现之前,场景文本检测的首要趋势是自下而上的,且大多数运用手艺提取特征(例如MSER 或 SWT)作为根底的组件。初期深度学习检测技能经过选用SSD,R-CNN系列等算法进行检测。

R-CNN

R-CNN流程如下图所示,首要对输入图片进行提取一系列的候选区域,然后对这些候选区域用CNN提取固定长度的特征,然后用SVM对特征进行分类,终究对候选区域进行微调。

《深入浅出OCR》第三章:OCR文字检测

R-CNN作为R-CNN系列的初代算法,并没有过多运用深度学习思想。如在算法流程中第二阶段提取region proposal和终究阶段运用运用SVM完结分类。

Fast R-CNN

Fast R-CNN是在R-CNN和SPPnets根底上进行改善。首要将SPP的空间金字塔池化思想引进到R-CNN,其次用softmax替代SVM分类器,一起将bounding box 回归汇总到全体框架。

《深入浅出OCR》第三章:OCR文字检测

Faster R-CNN

Faster R-CNN为依据区域的卷积神经网络,首要用于方针检测。而在文字检测中,其首要将原始图画经过卷积神经网络提取特征,然后将特征图输入到Region Proposal Network(RPN)中生成候选文本区域,终究经过分类器判别每个候选区域是否为文本区域。

《深入浅出OCR》第三章:OCR文字检测

长处: Faster R-CNN选用与Fast R-CNN相同设计,只是用内部深层网络替代候选区域办法。其检测速度较快,能够处理多规范、多方向、多形状的文本。缺陷是在文字较小或许笔直排列可能会呈现漏、误检。

SSD

《深入浅出OCR》第三章:OCR文字检测

SSD归于one-stage办法,首要有以下几点:

  1. 依据Faster R-CNN中的Anchor,提出相似先验框概念。
  2. 特征提取阶段:运用 VGG16 网络作为特征提取器,将全衔接层替换成卷积层,并在终究直接选用卷积进行检测。
  3. 猜测阶段;从不同份额特征图中发生不同份额猜测,并明确地按长宽比分离猜测。

3.4 干流深度学习文字检测算法

现在深度学习文字检测办法首要分为依据回归与依据切开算法两类,其间依据回归算法对规矩文本辨认较好,无法精确检测不规矩文本,而依据切开办法在两种文本的检测成果不错,但存在耗时问题。

下面作者将对各自范畴的文字检测办法进行打开介绍:

《深入浅出OCR》第三章:OCR文字检测

3.4.1 依据回归算法

针对依据回归的文本检测办法,其思想是运用若干个Anchor发生多个候选文本框,然后经过非极大值按捺NMS后处理得到检测成果。此外,在后处理此前还能够进一步精调。

依据回归算法导图

《深入浅出OCR》第三章:OCR文字检测

依据回归文本检测办法和方针检测算法的办法相似,文本检测办法只要两个类别,图画中的文本视为待检测的方针,其他部分视为背景。下面作者将要点介绍依据回归的文字检测办法CTPN、EAST等。

✨CTPN(2016)

论文地址:Detecting Text in Natural Image with Connectionist Text Proposal Network

参阅代码:github

CTPN简介:

针对CTPN模型,首要在特征提取阶段运用VGG16作为根底网络提取各字符的局部图画特征,特征序列处理阶段运用BLSTM层提取字符序列上下文特征,然后经过FC全衔接层,终究经过猜测分支输出各个文字块的坐标值和分类成果概率值。在后处理阶段,将兼并相邻的小文字块为文本行。因而,CTPN能够检测水平或微斜的文本行。

《深入浅出OCR》第三章:OCR文字检测

算法具体包括以下几个进程:

  1. 运用VGG16b骨干网络进行提取空间特征,取VGG的conv5层输出feature map;

  2. 运用3*3的滑窗针对feature map提取空间特征构成新的feature map;

  3. 将新的feature map进行reshape,输入到双向LSTM提取每一行的序列特征;

  4. 将双向LSTM的输出从头reshape,在经过一个FC卷积层;

  5. 经过相似Faster R-CNN的RPN网络取得text proposals;

  6. 运用NMS进行后处理,过滤剩余的文本框;

  7. 文本水平会将上述得到的一个文本小框运用文本线结构办法合成一个完整文本行。

总结:

CTPN将文字沿文本行方向切开成更小且宽度固定的Proposal,进步检测定位的精度。一起,考虑到文本水平行的语义上下文信息,运用双向LSTM编码水平行的文本信息,进一步进步网络的文本特征表示才能,但缺陷是对于不规矩的文本的检测作用并欠好

CTPN学习参阅: 链接

DeepTextSpotter

【ICCV2017】Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework.

论文地址:Deep TextSpotter

参阅代码: code

《深入浅出OCR》第三章:OCR文字检测

Textboxes

TextBoxes: A Fast Text Detector with a Single Deep Neural Network

TextBoxes是一种针对多方向文本检测的算法,运用多个检测框对文本区域进行精细化检测,并能够对文本区域进行旋转。首要对SSD算法进行优化,选用更大长宽比的预选框,选用1×5的卷积核;但只支撑横向文本检测。

模型简介:

Textboxes为依据SSD框架检测模型,在其根底上进行改善,选用28层的全衔接卷积网络,选用端到端练习,其首要改善如下:

  • 为了适应文字行细长型的特色,候选框的长宽比添加不同初始值。
  • 为适应文本行细长型特色,特征层也用长条形卷积核替代了其他模型中常见的正方形卷积核。
  • 为防止漏检文本行,还在笔直方向添加了候选框数量。
  • 为检测巨细不同的字符块,在多个规范的特征图上并行猜测文本框,然后对猜测成果做NMS过滤。

《深入浅出OCR》第三章:OCR文字检测

Textboxes++

TextBoxes++: A Single-Shot Oriented Scene Text Detector

Textboxes++是Textboxes的升级版别,首要添加对歪斜文本的支撑。为此,将标示数据改为了旋转矩形框和不规矩四边形的格局;对候选框的长宽份额、特征图层卷积核的形状都作了相应调整。

《深入浅出OCR》第三章:OCR文字检测

SegLink(2017)

Detecting Oriented Text in Natural Images by Linking Segments

论文地址: Detecting Oriented Text in Natural Images by Linking Segments

参阅代码: code

简介:SegLink是在CTPN根底上进行改善,在SegLink模型的标示数据中,先将每个单词切开为更易检测的有方向的小文字块,然后用附近衔接将各个小文字块衔接成单词。从论文的成果来看,在杂乱场景下的辨认作用要好于CTPN。

具体介绍:

《深入浅出OCR》第三章:OCR文字检测

如下图所示,该模型能够一起从6种规范的特征图中检测小文字块。这种计划方便于辨认长度改变规模很大的、带方向的单词和文本行,比较于CTPN等文本检测模型,SegLink的图片处理速度快很多。

《深入浅出OCR》第三章:OCR文字检测

✨EAST(2017)

EAST: An Efficient and Accurate Scene Text Detector

论文地址:EAST: An Efficient and Accurate Scene Text Detector

参阅代码:github.com/argman/EAST

简介:

EAST在Seglink根底上的改善算法,在DBnet算法呈现前,EAST成为干流的文本检测算法之一。其选用全卷积神经网络来进行像素等级的文本区域检测。经过卷积池化层、上采样层等操作将原始图画转换为特征图,然后经过两个分支网络来检测文本的鸿沟框和方向,在辨认歪斜和弯曲文本的作用上比较好。

具体介绍:

《深入浅出OCR》第三章:OCR文字检测

EAST模型首要思想是FCN+NMS,首要运用全卷积网络 生成多规范交融的特征图,然后在此根底上直接进行像素级的文本块猜测。该模型的履行速度很快且检测英文单词作用较好。支撑旋转矩形框、恣意四边形两种文本区域标示形式。

  • 对应于四边形标示,模型履行时对特征图中每个像素猜测其到四个顶点坐标差值。

  • 对应于旋转矩形框标示,模型履行时会对特征图中每个像素猜测其到矩形框四边的间隔、以及矩形框的方向角。

《深入浅出OCR》第三章:OCR文字检测

缺陷 : 检测中文长文本行作用欠佳。因为感受野不够大,且分数选用sigmod函数,样本不均衡。

总结:虽然EAST算法处理了CTPN算法无法处理的旋转和歪斜文本的问题,但它依然无法很好地处理扭曲的文本。而在现实生活中,扭曲的文本场景十分常见,这就导致像DBNet这样的依据切开的天然场景文本检测办法变得流行起来。

EAST学习参阅: 链接

总结:

总的来说,在OCR文字检测范畴,深度学习办法取得了十分重要的发展,并且在许多实际运用中被广泛运用。为了进步OCR文字检测的精确性和稳健性,依据切开的办法在处理规矩和不规矩文本方面表现得更好。

3.4.2 依据切开算法

下图展现了依据切开的文本检测办法的流程。基本的思路是运用一个切开网络结构来完结像素等级的语义切开,然后依据切开的成果构建文本行。

《深入浅出OCR》第三章:OCR文字检测

依据切开的检测算法导图

《深入浅出OCR》第三章:OCR文字检测

针对依据切开算法包括2018年PixelLink,2019年PSENet、PAN(pse改善)等,现在DBNet是干流的依据实例切开的办法。 接下来,作者将对干流的文字检测算法进行文字检测介绍。

PixelLink

Pixellink算法选用了一种切开的办法来处理文本检测问题。该办法的方针是将图画中的文本区域切开出来。算法首要将图画中归于同一个文本行(也能够是一个单词)的像素相互链接在一起,构成一个接连的区域。这相当于将文本区域看作是一个全体,而不是单独的像素点。经过这种像素链接的办法,Pixellink算法能够直接从切开成果中提取出文本的鸿沟框。这样就能够达到同运用回归办法进行文本检测的作用。

《深入浅出OCR》第三章:OCR文字检测

PixelLink的首要思想是将像素点分为文本像素点和非文本像素点,然后经过衔接相邻的文本像素点来得到文本区域。

PSENet

2019 PSENET

论文:arxiv.org/abs/1806.02…

代码:code

PSENet算法提出了一种处理依据切开的文本算法难以区别相邻文本问题的办法。这个算法运用了渐进式的规范扩张网络来学习文本的切开区域。其首要思想是,经过猜测不同缩短份额的文本区域,然后逐个扩展检测到的文本区域。这一进程能够有效地处理恣意形状相邻文本的检测问题。

《深入浅出OCR》第三章:OCR文字检测

模型结构:

Psenet网络选用了resnet+fpn的架构,经过resnet提取特征,取不同层的特征送入fpn进行特征交融,其结构如下图所示:

《深入浅出OCR》第三章:OCR文字检测

✨DBNet

论文地址:Real-time Scene Text Detection with Differentiable Binarization

参阅代码: DBNet

简介:

《深入浅出OCR》第三章:OCR文字检测

DBNet是近年来的干流天然场景文本检测算法,其改善版别在精确率和速度比较以往都再创新高。

DB算法提出了一种新的办法来动态地学习文本切开的阈值,然后进步模型的精确性并简化后续的处理进程。它引进了一个可微分的阈值函数,该函数相似于阶跃函数,用于完结文本切开网络在练习进程中学习适应不同图画的动态阈值。 算法的首要思想是首要经过切开网络获取图画中的文本区域。然后,运用一些后处理办法,比方运用opencv等工具,能够找到文本区域的最小包围曲线,即将文本区域框起来。

《深入浅出OCR》第三章:OCR文字检测

模型结构:

DBNet的骨干网络全体结构选用FPN设计思想,由多层上采样和下采样的特征图级联完结,总计进行5次下采样,3次上采样操作。假设网络输入为w * h * 3,则终究的输出特征图巨细为原图的1/4。针对网络头部部分,别离引出2个分支。其一担任猜测概率图(probability map),其二担任猜测阈值图(threshold map),概率图经过阈值图处理,进行二值化后得到二值图(approximate binary map)。终究经过后处理操作得到终究文字的边。

《深入浅出OCR》第三章:OCR文字检测

  1. 图画输入特征提取骨干,提取特征;

  2. 特征金字塔上采样到相同的规范,并进行特征级联到特征F;

  3. 特征F用于猜测概率图(probability map P)和阈值图(threshold map T);

  4. 经过P和F计算近似二值图(approximate binary map B^)

DBNet学习参阅: Paddle-DBNet

zhuanlan.zhihu.com/p/94677957

PAN

论文地址:链接

参阅代码:mmocr、paddle

切开办法在一定程度处理弯曲文本检测问题,可是后处理逻辑较为杂乱以及猜测速度较慢。因而,PAN针对以上问题,从网络设计和后处理方面进行改善,提高算法功能。具体改善如下:

  1. PAN运用轻量级的ResNet18作为Backbone,。
  2. 设计轻量级的特征增强模块FPEM和特征交融模块FFM增强Backbone提取的特征。
  3. 后处理选用像素聚类办法,沿着猜测的文本中心(kernel)四周兼并与kernel的间隔小于阈值d的像素。PAN保证高精度的一起具有更快的猜测速度。

《深入浅出OCR》第三章:OCR文字检测

PAN++

【TPAMI’2021】 PAN++

github.com/whai362/pan…

FCENet

2021 Fourier Contour Embedding for Arbitrary-Shaped Text Detection

论文地址:链接

参阅解说:链接

这篇论文提出了一种针对场景文本的检测办法,该办法能够处理恣意形状的文本框。首要,它选用了一种被称为傅里叶改换的数学办法来对文本进行建模。这种办法能够将文本的形状和特征有效地表示出来。在算法的骨干部分,选用了一种称为ResNet+FPN的架构来提取文本的特征。这个架构能够有效地捕捉文本的细节信息和上下文关系,为后续的处理做好预备。接下来,算法会依据设定的阈值,找出置信度大于阈值的文本中心点,并将这些点所对应的傅里叶特征向量进行傅里叶反改换。这一步旨在将经过傅里叶改换的文本特征从头映射回原始图画空间。终究,算法运用非极大值按捺来去除重复的检测成果,得到终究的文本检测成果。

FCENet算法流程如图所示:

  • 输入图画会经过骨干网络和 FPN 提取特征。FPN 上不同层担任不同规范的文本方针,提取的特征会送入到共享的检测头中。

  • 共享的检测头Head部分具有两个分支,其间分类分支猜测文本区域和文本中心区域的概率图,相乘得到归于文本中心分类的得分图;回归分支则担任猜测傅里叶特征向量。

《深入浅出OCR》第三章:OCR文字检测

✨ DBNet++

2022 Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion

论文地址 DBNet++

参阅代码:Github

在以往的切开算办法中,多规范特征图大都是经过FPN后直接进行concatenate来完结,这样做并没有考虑不同规范特征图的重要性是不一样的。而DBNet++在DBNet的根底上添加了ASF(Adaptive Scale)模块。不同规范的特征经过ASF模块处理,能够得到更佳的交融特征。

《深入浅出OCR》第三章:OCR文字检测

ASF模块:

《深入浅出OCR》第三章:OCR文字检测

具体如上图所示,自适应特征图交融模块ASF运用了一种称空间注意力机制的技能,对每个通道取均值得到特征图每个像素方位上的重要性,再将其加到原输入特征图上,增强每个方位的特征值,再经过卷积输出通道为N个的注意力权重,使得输出的权重能衡量每个规范特征图的重要性。

DBNet系列总结:

  1. 速度快,精度高,能检测恣意形状的文本多种类型的文本。
  2. 经过提出DB(Differentiable Binarization),相似额定束缚的loss,使得模型练习作用更佳。
  3. DBNet++在DBNet的根底上,经过引进ASF模块,在少量耗时添加的价值下,提高了精确性。
  4. 缺陷是DBNet,DBNet++不能处理环形文字里面还有文字的情况。

3.4.3 深度学习文字检测总结

名称 代表办法 长处 缺陷
依据回归的办法 TextBoxes++,EAST,DeepReg,DeRPN 后处理简略,只需NMS操作 针对恣意形状的文本作用不佳
依据部件(Part-based)的办法 SegLink,SegLink++ 拿手长文本行 算法比较杂乱
依据切开的办法 Mask TextSpotter,PSENet,SAE 可检测恣意形状的文本 后处理较为费事,花费时刻更多

检测成果比照:

《深入浅出OCR》第三章:OCR文字检测

四、文字检测常见方针

IOU

IOU(IntersectionOverUnion,交并比)是方针检测中常见的评价规范,首要是衡量模型生成猜测检测框(PredictedBoundingBox)和标示(GroundTruthBox)间的堆叠程度,计算公式如下:

《深入浅出OCR》第三章:OCR文字检测

《深入浅出OCR》第三章:OCR文字检测

NMS:

NMS(Non-MaximumSuppression,非极大值按捺)是检测算法中的一个后处理进程,它对终究的检测成果有十分重要的影响。在原始的检测算法中,一般会猜测出很多的检测框,其间可能包括了很多堆叠、错误的或许不精确的样本。为了得到最精确的检测成果,需要进行大量算法计算来挑选掉这些剩余的框。

NMS算法首要思想:

1.对网络猜测出一切鸿沟框,将分数由高到低进行排序。

2.选取分数最高的猜测框作为方针,别离计算方针与其他猜测框的IOU。

3.假如堆叠程度大于某一预先设定的阈值,则以为该猜测框与方针是一起猜测同一个物体,后将该鸿沟框删除,否则予以保存。

《深入浅出OCR》第三章:OCR文字检测

OCR文字检测评价方针成果

经过比照上述办法在不同数据集上的的文字检测评价方针,参阅其他资料如下成果。评价方针为精确率 召回率及F1值。

《深入浅出OCR》第三章:OCR文字检测

注:方针介绍可参阅本专栏前几篇文章。

五、总结

本篇为 【《浅显易懂OCR》第三章:OCR文字检测】,首要对深度学习OCR文字检测办法进行介绍,自己将从经典算法结构、代码、论文解读等视点打开,合作作者总结的思想导图,浅显易懂OCR常识,下一篇将对OCR文字辨认技能进行具体介绍。