0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一篇包罗万象的场景文本检测算法综述

新机器视觉 来源:MoonSmile@知乎 作者:MoonSmile@知乎 2021-04-15 14:52 次阅读

相关背景介绍

文本在人机交互中扮演着重要的角色, 图片中的文本所包含的丰富而精确的信息在基于视觉的设备中应用非常广泛,能够辅助设备获得更精确的物体和周边环境信息。随着智能机器人无人驾驶、医疗诊断的飞速发展,文本的检测与识别已经成为定位和理解物体信息的重要途径[28]。现实当中,许多跟文本识别相关的应用极大地方便了我们的生活,如车牌识别、发票识别、拍图识字等。

文本识别demoOCR相关概念:提到文本检测识别,我们会联想到的一个词就是 OCR,OCR 是光学字符识别 Optical Character Recognition的简称,是指对文本资料的图像文件进行分析识别处理,获取文字的过程 [19]。现在所说的OCR 通常也指场景文字识别,根据识别场景,可大致将 OCR 分为识别特定场景的专用 OCR 和识别多种场景的通用 OCR。比如车牌识别就是对特定场景的 OCR,而对自然场景中的文字识别则是通用场景 OCR,一般来说,自然场景的文字识别由于环境更加复杂多样,其识别难度相对困难。文字识别通常包含文本检测和文字识别两个阶段。文本检测特点:1、相比于常规物体检测,文字行长度、长宽比例变化范围很大。 2、文本行有方向性,anchor-based的检测通常是水平和垂直方向的矩形。 3、有些艺术字体形状变化非常大,很多是弯曲的,并且字体类型丰富,语言种类丰富。 4、由于丰富的背景图像干扰,手工设计特征在自然场景文本识别任务中不够鲁棒。

文本检测比普通物体检测存在更多特点

本文将介绍以下几部分

一、配置Docker环境为什么要特意提一下Docker,当然是因为这东西挺有意思,可以帮助我们高效的做项目! 接下来就来看看,什么是Docker吧。 做深度学习项目时,配环境是一件很让人头疼的事情,尤其是当你要跑别人代码时,自己的环境跟别人的环境不一致,就会出现各种bug,这就是所谓的生产环境(别人的环境)跟测试环境不一致(你的环境),那么,我们可以想象,如果现在有一种工具,可以把别人的环境克隆一份,放到自己电脑上,然后自己用这个环境,岂不就不会出现环境不一致的问题啦,美滋滋。 那么,有没有这种工具呢?答案是有的,这个工具就是Docker。第一步,想要用docker,首先就要安装docker在我们的计算机上,安装docker教程如下:跟着教程复制粘贴命令就行了~ https://docs.docker.com/install/linux/docker-ce/ubuntu/第二步,安装好了docker,得学学怎么用docker,类似于git,在Linux上可用命令可以操作:先学习一下docker里边的基本概念,再学习一下基本命令(如果pull下一个镜像,如果run等等),参考资料如下: https://blog.csdn.net/fgf00/article/details/51893771 蝈蝈:Docker,救你于「深度学习环境配置」的苦海,https://zhuanlan.zhihu.com/p/64493662二、介绍多种文本检测算法1、CTPN(Detecting Text in Natural Image with Connectionist Text Proposal Network)ECCV 16这篇论文的亮点是结合了CNN与双向LSTM,能有效的检测出复杂场景的横向分布的文字, 在当时也算是开坑之作。 总的来说,该算法的重点部分有三个: 1、在网络上改进,似的提取的特征能够在双向LSTM中使用。 2、使用了双向LSTM。 3、采用了一组(10个)等宽度,不同高度的的Anchors,用于定位文字位置。 4、采用文本线构造算法,把这些text proposal连接成一个文本检测框。 这篇论文的细节内容知乎上已经有大佬写的很好了,我就不重复搬砖了,可参考: 白裳:场景文字检测—CTPN原理与实现(https://zhuanlan.zhihu.com/p/34757009) 但是我还是要把这篇文章的实验结果搬出来,这样后续的文章可以跟他比较~实验结果:

c82bc7aa-9cdd-11eb-8b86-12bb97331649.jpg

c835d02e-9cdd-11eb-8b86-12bb97331649.jpg

总结分析:现在来看这算法已经挺老了,缺点很明显,只能检测横向或者纵向(改anchor比例后可检测纵向)的文本, 但是不能检测其他方向, 并且在精度上也落后了.Github 开源代码:https://github.com/eragonruan/text-detection-ctpn2、EAST(EAST: An Efficient and Accurate Scene Text Detector)CVPR 17这篇论文提出了一种端到端的快速有效的文本检测方法,消除了中间多个stage(如候选区域聚合,文本分词,后处理等),直接预测文本行,从下图中可看出,EAST的 pipeline(e)最为简洁。

c83eb176-9cdd-11eb-8b86-12bb97331649.jpg

EAST pipeline与其他框架pipline对比论文亮点:提出了一种基于两阶段的端到端的快速有效的文本检测方法(借鉴了DenseBox和FCN),不熟悉DenseB。 ox的可以看看这篇文章中对其的介绍 。 陀飞轮:目标检测:Anchor-Free时代 即可以检测单词级别,又可以检测文本行级别.检测的形状可以为任意形状的四边形(QUAD)或倾斜矩形 (RBOX)。 采用了Locality-Aware NMS来对生成的框进行过滤。网络部分:这个网络的基本结构是以2015年发表的DenseBox中的网络为基础构建的。基于上述主干特征提取网络,抽取不同level的feature map,然后上借鉴U-net的合并规则进行合并。 输出是稠密的每个像素对于文本的预测信息。我们以RBOX为例,网络输出的通道数应为6(1个为score map,4个为文本框的坐标信息,1个为角度)。我们预测的几何形状分为RBOX和QUAD(输出为9维,包括8个坐标,一个score map)两种,在后面为每一种也相应设计了不同的loss值。其中score所代表的含义是在该像素位置预测的目标的可信度,其值为[0, 1]。在最后我们会将score值大于我们所设计的阈值的预 测框留下来,并进行NMS获取最终结果[10,21,22]。

c84a6e3a-9cdd-11eb-8b86-12bb97331649.jpg

网络标签的生成:要对网络进行训练,就要有标签,让我们预测的结果和标签进行对比,然后通过不断优化参数,最终得到我们想要的网络。 Score map 标签的产生:根据论文的描述,我们Score map的正样本的范围,其实就是在图片中我们标注框的一个缩进框,如下图的(a)到(b)所 示,具体的公式请看原论文 [10]。 Geometry Map 标签产生:不详细说明,请参照原论文 [10]。

c853a2ac-9cdd-11eb-8b86-12bb97331649.jpg

损失函数:由Score map 和 Geometry Map 两部分产生的损失加权组成。

c85bf9de-9cdd-11eb-8b86-12bb97331649.png

loss 对Score map 采用了class-balanced cross-entropy,如下:

c865b3f2-9cdd-11eb-8b86-12bb97331649.png

class-balanced cross-entropy 是平衡因子,计算公式如下 (是标签,Ŷ 是预测的Score map) : c86fee94-9cdd-11eb-8b86-12bb97331649.png 平衡因子 对Geometry Map计算损失:“we adopt the IoU loss in the AABB part of RBOX regression, and a scale-normalized smoothed-L1 loss for QUAD regression”[10]这里只以RBOX为例说明:IoU loss 部分:

c8799016-9cdd-11eb-8b86-12bb97331649.png

IoU loss loss of rotation angle:

c882d8ec-9cdd-11eb-8b86-12bb97331649.png

loss of rotation angle Geometry Map loss 总和: c8939efc-9cdd-11eb-8b86-12bb97331649.png Geometry Map loss 总和 Locality-aware NMS: 与标准的NMS相比,主要在于多了一个合并阶段。迭代两两候选框,如果两个候选框高于某个权值,进行一个加权的合并操作,合并完再做一个标准的NMS [21,22]。实验结果:从实验结果中可以看出,这篇文章比14和15年的一些算法在精度上要高出很多。

c8a6e3e0-9cdd-11eb-8b86-12bb97331649.jpg

c8b0b924-9cdd-11eb-8b86-12bb97331649.jpg


总结分析:优点:用了特征图多尺度融合,所以可检测不同尺度的文本区域, 预测的文本框是带角度的,所以可以对任意方向的文本进行检测. 缺点:由于感受野和anchor大小的限制, 对长文本和曲线文本检测困难.Github 开源代码:https://github.com/argman/EAST https://github.com/huoyijie/AdvancedEAST https://github.com/songdejia/EAST3、SegLink (Detecting Oriented Text in Natural Images by Linking Segments) CVPR 17从EAST算法中可以知道, 检测长文本是比较困难的, 或者说,想要一次性检测整个文本行是比较困难, 针对这个问题, 本文提出了一种新的思想Seglink (segment + link),它是在SSD目标检测方法的基础上进行改进的,但是不通过矩形框来回归文本区域的位置.Seglink模型的做法是:先将每个单词切割成更易检测的有方向的小文字块(segment),然后用邻近连接将各个小文字块link成单词。也就是说,网络会输出两类信息:1、一个是segment,它可能是一个字符或者几个字符等, 它不是整个文本行的框,而是文本行的一部分, 这个信息是带有角度的,如下图的黄框表示。 2、另一个是不同segment之间的link信息,而这个link也是在网络中自动学习的,由网络判定哪些segment属于一个文本行,由下图的绿线表示。

c8e3e998-9cdd-11eb-8b86-12bb97331649.jpg

segment 与 link网络结构:对segments的预测:2个segment score和5个geometric offsets为**default box:本文每个feature map的每个位置只采用了一个aspect ratio=1的default box,而SSD中是一系列(1, 2, 3, 1/2, 1/3).default box scale size:本文的是根据当前层的感受野来进行设置scale size,而SSD是通过人工设定的. 对于link的预测包括同层(within-layer link)的和跨层(cross-layer link)的两种: 对于conv4_3层,对于feature map的每个位置需要预测其link输出的维度为2*8(文中对feature map中每个位置只预测一个segment,所以8就是当前层8邻域)=16;对于conv7, conv8_2, conv9_2, conv10_2, conv11其输出的link维度为2*8(8是当前层8邻域)+2*4(4是上一层4邻域)=24

c917a396-9cdd-11eb-8b86-12bb97331649.jpg

主框架

c94fb916-9cdd-11eb-8b86-12bb97331649.jpg

within-layer link 和cross-layer link 可视化图网络最后总共输出通道数为31,如下图:

c95cddf8-9cdd-11eb-8b86-12bb97331649.png

网络最后总共输出通道数Combining Segments with Links算法预测出Segment 和 Link 之后,需要用一种算法将预测出的Segments组合起来或者叫连接起来. 作者的算法是:首先通过人工设定的 α 和β(这两个值是采用网格搜索找到最优),对网络预测的segments和links进行滤除. 然后将每个segment看成node,link看成edge,建立图模型,再用DFS(depth first search)找到连通分量,每个连通分量包含一系列segments(用B表示). 最后,输出连接segments后的文本框的算法如下:

c98b084a-9cdd-11eb-8b86-12bb97331649.jpg

连接segments成一个框损失函数:包含三部分,segment classification loss (softmax),offsets regression loss (L1 regression),link classification loss (softmax).

c99884ca-9cdd-11eb-8b86-12bb97331649.png

实验结果:

c9ab46a0-9cdd-11eb-8b86-12bb97331649.jpg

c9d94884-9cdd-11eb-8b86-12bb97331649.jpg

ca0eee4e-9cdd-11eb-8b86-12bb97331649.jpg

总结分析:缺点: 间隔较大的文字块不能检测出来,比较link只是针对邻域的.Github 开源代码:https://github.com/dengdan/seglink https://github.com/bgshih/seglink4、TextBoxes(TextBoxes: A Fast Text Detector with a Single Deep Neural Network)AAAI 17这篇文章的主要贡献提出了一个快速而精确的文本检测器,叫做TextBoxes,也是在SSD的基础上进行改进的。相对SSD的改变如下四点:1、修改了default box的apect ratio,分别为[1 2 3 5 7 10],变成长条状。 2、修改classifier卷积核的大小为1*5,而SSD中卷积核的大小为3*3,这样更适合文本检测。 3、提出了一个端到端的训练框架.在测试的时候,输入图像由单尺度变成了多尺度 。 4、利用识别来调整检测的结果。

ca1d0f1a-9cdd-11eb-8b86-12bb97331649.jpg

主框架 TextBoxes是一个28层的全连接卷积网络,从主框架中可以看出,使用了1*5的卷积核,在每一个特征位置,预测一个72维的向量,因为每一个特征位置会有12个默认框(12个框怎么来的呢,首先有6种比例就有六个框,但是论文中指出了,为了防止水平方向的框太过密集,而垂直方向稀疏,所以每个默认框都设有一个垂直方向的偏移,相当于框的数量翻了一倍,如下下图默认框图所示)。72维(12*2+12×4)包括文本出现的得分(2维)和12个默认盒子的偏移(offsets)(4层)。

ca26f67e-9cdd-11eb-8b86-12bb97331649.png

默认框图,这里只展示了两种比例(1和5的)损失函数:见下文TextBoxes++,与其相同。

ca3135d0-9cdd-11eb-8b86-12bb97331649.jpg

实验数值结果

ca559b3c-9cdd-11eb-8b86-12bb97331649.jpg

实验效果图,包含成功案例和失败案例分析总结:不能检测任意方向文本块.Github 开源代码:https://github.com/gxd1994/TextBoxes-TensorFlow https://github.com/shinjayne/shinTB5、R2CNN(R2CNN: Rotational Region CNN for Orientation Robust Scene Text Detection)CoRR 17这篇文章提出了一种旋转区域CNN (Rotational Region CNN,R2CNN),用于检测自然场景图片中任意方向的文本框,当然这种方法并不局限于斜框文字检测,也可以用在其他领域。 倾斜四边形如何表示,下边这边文章中写的比较清楚了,这篇文章用矩形的两个坐标点和矩形的高(x1,y1,x2,y2,h)来表示: stone:基于Faster RCNN的斜框检测:R2CNN https://zhuanlan.zhihu.com/p/41662351

ca645e4c-9cdd-11eb-8b86-12bb97331649.jpg

网络架构:

ca708708-9cdd-11eb-8b86-12bb97331649.jpg

主框架第一步:通过RPN网络,得到正框的Proposal,并且把anchor的大小从(8,16,32)改为(4,8,16,32) 或 (4,8,16),论文里说了,将anchor调小对检测是有帮助的。第二步:ROIPooling,使用了不同pooled size (7 × 7, 11 × 3, 3 × 11) 的 ROIPooling,将三种结果concate在一起,再经过fc6,fc7进行正框预测,斜框预测以及分类预测,之后,再通过斜框的NMS进行后处理。 作者在论文里指出,每一个倾斜框都跟一个正框相关联,如下图中的(a)与(c),之所以既要对正框预测,又要对斜框预测,作者认为这能提升实验的效果。

ca85710e-9cdd-11eb-8b86-12bb97331649.jpg

斜NMS 斜NMS算法参考Arbitrary-Oriented Scene Text Detection via Rotation Proposals损失函数:包含分类损失和回归损失,回归损失又包含正框和斜框两部分。

cab8e0b6-9cdd-11eb-8b86-12bb97331649.png

loss实验结果:在精度上超过EAST和Seglink.

cb4cef90-9cdd-11eb-8b86-12bb97331649.jpg

在不同参数设定下,R2CNN的结果比较

cb58ebce-9cdd-11eb-8b86-12bb97331649.jpg

在ICDAR 2015数据集上的实验结果

cbecea36-9cdd-11eb-8b86-12bb97331649.jpg

在ICDAR 2013数据集上的实验结果 在ICDAR 2013数据集上的实验结果,作者认为效果没有超过sota的原因是由于他们使用的训练数据不包含单个字符,如果包含,将可能会超过sota。总结分析:对斜的小的目标可能效果好一点Github 开源代码:https://github.com/yangxue0827/R2CNN_FPN_Tensorflow https://github.com/DetectionTeamUCAS/R2CNN_Faster-RCNN_Tensorflow6、TextBoxes++(TextBoxes++: A Single-Shot Oriented Scene Text Detector)TIP 18从论文名字就可以看出,TextBoxes++是对TextBoxes的改进。

cbf9132e-9cdd-11eb-8b86-12bb97331649.jpg

主框架相对TextBoxes的改变如下:1、对文本框的表示方式进行了改进。 在TextBoxes中,default box 是水平的框,不能检测倾斜的文字。论文中讨论了两种表示方式:分别是4个点坐标(x1,y1,x2,y2,x3,y3,x4,y4)(四边形)和两个点的坐标外加四边形的高(x1,y1,x2,y2,h)(倾斜矩形)。但论文推荐使用四个坐标的表示方式。四边形和矩形表示的计算方法如下:

cc285b66-9cdd-11eb-8b86-12bb97331649.png

四边形和矩形表示的计算方法 其中(x0,y0)是default box的中心点,(w0,h0)是default box的宽度和高度。 在每个feature map后的text-box layer将预测每个box上的文本存在概率以及位置偏置,以倾斜矩形为例,其预测输出为: cc435434-9cdd-11eb-8b86-12bb97331649.png 预测输出 根据预测输出,计算检测框的坐标和高度,公式如下(倾斜矩形形式):

cc58c0bc-9cdd-11eb-8b86-12bb97331649.png

计算坐标和高度

cc7bde12-9cdd-11eb-8b86-12bb97331649.jpg

从默认框回归的过程 在TextBoxes++中,也为文本设置了垂直偏移,使得默认框在垂直方向密集,如下图所示,没有垂直偏移的只有黑色虚线框,就会漏掉很多连续的垂直方向文本。黄色虚线框是加入了垂直偏移后的,文本信息都被包围了进去(本人觉得这里的作图太过于刻意了,说服力并不是很强)。

cc890182-9cdd-11eb-8b86-12bb97331649.png

垂直偏移 损失函数包含预测得分和预测定位两部分损失(与TextBoxes相同): ccb8199a-9cdd-11eb-8b86-12bb97331649.png loss 其中,N是与GT匹配的default boxes数量,_α_设为0.2,对于分类用两分类sotmax,对于定位用smooth L1。 此外,文章还用了On-line hard negative mining、数据增强、多尺度训练、有效级联NMS等技巧。实验结果:从ICDAR和COCO-text的实验数值上对比可以看出,这篇18年的文章已经完全干掉了17年的 EAST。

cce870ae-9cdd-11eb-8b86-12bb97331649.jpg

ccf47b9c-9cdd-11eb-8b86-12bb97331649.jpg

cd09c3e4-9cdd-11eb-8b86-12bb97331649.jpg

四边形与倾斜矩形对比

cd20b61c-9cdd-11eb-8b86-12bb97331649.jpg

可视化结果分析总结:对TextBoxes 不能检测任意方向文本块的缺点进行了改进,其精度已经完全干掉了头一年的EAST.Github 开源代码:https://github.com/Shun14/TextBoxes_plusplus_Tensorflow https://github.com/MhLiao/TextBoxes_plusplus7、FOTS(FOTS: Fast Oriented Text Spotting with a Unified Network)CVPR 18与前面几篇只是检测部分的不一样,这篇论文是一个集合了文本检测跟文字识别两部分的一个统一的端到端的框架,可同时对图像中的文字进行检测跟识别。之前的大部分方法都是将检测跟识别当做两个独立的任务去做,先检测,再识别。这篇论文提出的框架处处是可微的,所以可以对其进行端到端的训练,结果表明,该网络无需复杂的后处理和高参数整定,易于训练,并且在保证精度的前提下大大提高速度,如下图所示:

cd2a18a6-9cdd-11eb-8b86-12bb97331649.jpg

可以看出,本文提出的统一的框架要比两阶段的方法快论文的主框架如下:

cd3f0298-9cdd-11eb-8b86-12bb97331649.jpg

主框架 FOTS的整体结构由 shared convolutions,the text detection branch,RoIRotate operation,the text recognition branch 4部分组成。Shared Convolutions:FOTS的基础网络结构为Resnet50,共享卷积层采用了类似U-net的卷积的共享方法,将底层和高层的特征进行了融合。这部分和EAST中的特征共享方式一样。最终输出的特征图大小为原图的1/4,如下图所示:

cd6ecb4a-9cdd-11eb-8b86-12bb97331649.png

shared convolutionsText Detection Branch:该模块和EAST一样,采用了FCN作为文本检测器,损失包含分类的loss(cross entrop)和坐标的回归的loss(IOU loss+角度loss),公式如下:

cd9f89e2-9cdd-11eb-8b86-12bb97331649.png

RoIRotate:RoiRotate将变换应用于定向特征区域(有角度的),以获得轴对齐的特征映射,如下图所示:

cdd2e4cc-9cdd-11eb-8b86-12bb97331649.png

特征区域角度变换 RoiRotate计算公式如下:

cde31d10-9cdd-11eb-8b86-12bb97331649.jpg

M是放射矩阵,包含旋转,缩放,平移 使用变换参数,可以使用仿射变换轻松生成最终的roi特征:

cdeab822-9cdd-11eb-8b86-12bb97331649.png

这里的几个公式涉及到很多参数的概念,涉及到双线性插值,更具体的含义请看论文 :仿射变换矩阵,包含旋转,缩放,平移 :仿射变换后的特征图的高度,实验中为8 :仿射变换后的特征图的宽度 :特征图中的点的坐标 :特征图中的点距离旋转的框的上下左右的距离 :检测框的角度 :在位置(i,j),通道c处的输出值。 :在位置(n,m),通道c处的输入值。 :输入的高度 :输入的宽度 总之,经过变换之后,我们可以获得变换后的特征图,然后将该特征图输入到 Text Recognition Branch进行识别。Text Recognition Branch:这个分支使用共享卷基层的特征和变换后的特征来识别文字,其结构类似CRNN结构,使用了类似VGG的顺序卷积,一个双向LSTM,最后再接CTC解码器,对CRNN和CTC不熟悉的可先看: 白裳:一文读懂CRNN+CTC文字识别 https://zhuanlan.zhihu.com/p/43534801

ce1f69c8-9cdd-11eb-8b86-12bb97331649.png

Text Recognition Branch Structure实验结果:精度上可以说是很不错了

ce6fe056-9cdd-11eb-8b86-12bb97331649.jpg

On ICDAR 2015

ce81f020-9cdd-11eb-8b86-12bb97331649.jpg

On ICDAR 2017

ce9b628a-9cdd-11eb-8b86-12bb97331649.jpg

On ICDAR 2013

cea5ea20-9cdd-11eb-8b86-12bb97331649.png

速度和模型大小比较总结分析:精度高,速度相对也比较快Github 开源代码:https://github.com/jiangxiluning/FOTS.PyTorch https://github.com/xieyufei1993/FOTS https://github.com/Pay20Y/FOTS_TF8、PixelLink(PixelLink: Detecting Scene Text via Instance Segmentation)AAAA 18通过前边的文章我们可以发现,对文本的检测大都采用边框回归的思想来做,而这篇文章提出了不一样的方法,文章提出采用实例分割的方法分割出文本行区域,然后直接找对应文本行的外接矩形框,这样就实现了对文本的检测。 但是,通常文本之间挨得很近,很难将他们分割开来,如图所示:

ceb82aaa-9cdd-11eb-8b86-12bb97331649.jpg

接下来我们就看看这篇文章是如何做的......框架结构:主干网络是沿用了SSD网络结构,用VGG16作为base net,并将VGG16的最后两个全连接层改成卷积层; 论文中给出了两种网络结构:PixelLink+VGG16 2s (特征图大学下降为原图的1/2)和PixelLink+VGG16 4s (特征图大小下降为原图的1/4)。

cf054db2-9cdd-11eb-8b86-12bb97331649.jpg

主框架 1、提取不同层的feature map,对于PixelLink+VGG16 2s网络结构:提取了conv2_2, conv3_3, conv4_3, conv5_3, fc_7. 2、对已提取的特征层,采用自顶向下的方法进行融合,融合操作包括先向上采样,然后再进行add操作.注意:这里包含了两种操作:pixel cls和pixel link(文本/非文本预测和Link预测),所以对应的卷积核个数分别为2和16 。注意,fc6和fc7,被转换为卷积层。

cf0f9a56-9cdd-11eb-8b86-12bb97331649.jpg

网络结构连接像素:到这一步,我们已经得到了文本/非文本预测和Link预测,设定两个阈值(一个用于像素分类,一个用于像素链接),可以得到pixel positive集合和link positive集合。然后根据link positive将pixel positive进行连接,得到CCs(conected compoents)集合(数字图像处理中连通分量的概念),集合中的每个元素代表的就是文本实例。注意:给定两个相邻的pixel positive,它们之间的link预测是由当前两个pixel共同决定的,两个link中至少有一个是link positive。连接的规则采用的是Disjoint set data structure(并查集)的方法。外接矩形:直接使用Opencv里边的minAreaRext提取文本的带方向信息的外接矩形框。后期处理:在链接的过程可能引入噪声,加入后期处理阶段,可以通过矩形的长、宽、面积、长宽比信息等将一些明显的错的区域过滤掉,以提高检测精度。损失函数:网络的损失函数包含两个部分:pixels loss和links loss: cf76a43a-9cdd-11eb-8b86-12bb97331649.png loss 损失函数的具体内容在此不展开讨论,除了在损失函数上进行的设计,作者还借鉴了SSD里边的数据增强的方法,具体的pixel loss 跟link loss如何设计以及如何生成训练数据的ground truth可参考大佬写的(我只是个搬运工): 燕小花:文本检测之PixelLink https://zhuanlan.zhihu.com/p/38171172实验结果:从数值结果从可以看出,确实比EAST强,但是好像没有比Seglink强太多。

cf807988-9cdd-11eb-8b86-12bb97331649.jpg

cfb580ba-9cdd-11eb-8b86-12bb97331649.jpg

cfc27ca2-9cdd-11eb-8b86-12bb97331649.jpg

总结分析:优点:无需在imagenet上预训练. 缺点:跟Seglink一样,间隔较大的文字块不能检测出来.Github 开源代码:https://github.com/ZJULearning/pixel_link https://github.com/cheerss/PixelLink-with-pytorch9、PSENet(Shape Robust Text Detection with Progressive Scale Expansion Network)CVPR 19文章的目的是要解决弯曲文字检测的问题,如下图所示,对于弯曲文字,现有方法存在较大的问题.

d002fa52-9cdd-11eb-8b86-12bb97331649.jpg

b中容易重叠,c中误把多个实例识别成一个实例 作者认为现在的文本检测主流方法可以分成regression-based和segmentation-based两类,本文提出来的方法属于segmentation-based.论文的三大特点:1、Segmentation-based方法能很好地解决任意形状文本区域检测这个问题,因为语义分割可以从像素级别上分割文字区域和背景区域. 2、对于如何分离靠的很近的文字块,如上图 (c) 所示,不能将他们分割开. 一个直观的想法是增大文字块之间的距离,使它们离得远一点。基于这个思路,论文引入了新的概念 kernel. 3、有了kernel的概念, 作者通过一种基于广度优先搜索的渐进扩展算法来构建完整的文字块。这个方法的核心思想是:从每个kernel出发,利用广度优先搜索来不断地合并周围的像素,使得kernel不断地扩展,最后得到完整的文字块。 下面就来看看这些特点具体是如何做的......Pipeline :框架的主干网络是FPN,一张图片通过FPN可以得到四个Feature Map (),然后通过函数合并这四个特征图()得到.

d00f9ae6-9cdd-11eb-8b86-12bb97331649.jpg

pipeline的具体公式如下:

d01a6fca-9cdd-11eb-8b86-12bb97331649.png

其中, || 代表 concatenation, U代表上采样。 接着,通过来预测不同kernel scale的分割图。其中是最小kernel scale的分割图,里面不同的连通区域都可以看作不同文字块的“kernel”。是最大kernel scale的分割图,是个完整的文字快。最后通过一个渐进扩展算法(Progressive Scale Expansion)去不断地扩展中的每个“kernel”.[1]渐进扩展算法(Progressive Scale Expansion):

d04075a8-9cdd-11eb-8b86-12bb97331649.jpg

Progressive Scale Expansion 该算法的输入是, 在上图中以n=3为例, CC 代表寻找连通分量的操作, 对着上图来分析: 1、首先,对求连通区域,得到不同文字块的“kernel”。 2、然后,通过 (g)所示的扩展操作合并中的文字像素,得到扩展后的结果 (c)。最后,使用同样的扩展操作合并中的文字像素,得到最后的文字块(d)。 3、(g)所示的扩展操作是基于广度优先搜索实现的。 我们可以把(g) 操作放大: 在边界上有些像素点会混淆,不知道该属于那个kernel, 在实践中,处理冲突的原则是,混淆的像素可以在先到先得的基础上由一个内核合并。

d04de3b4-9cdd-11eb-8b86-12bb97331649.png

标签生成 (Label Generation) :使用 Vatti clippingal gorithm 参考论文 generic solution to polygon clipping. 来生成不同核尺度的标签.

d099bcbc-9cdd-11eb-8b86-12bb97331649.jpg

Label Generation损失函数和网络结构细节:在此不细讲,请参考原文:Shape Robust Text Detection with Progressive Scale Expansion Network实验结果:

d0a38080-9cdd-11eb-8b86-12bb97331649.jpg

d1b53d42-9cdd-11eb-8b86-12bb97331649.jpg

d1c10f6e-9cdd-11eb-8b86-12bb97331649.jpg

d20ea508-9cdd-11eb-8b86-12bb97331649.jpg

总结分析:总实验数值结果可以看出,其检测精度效果好,但是速度慢.Github 开源代码:https://github.com/liuheng92/tensorflow_PSENet https://github.com/WenmuZhou/PSENet.pytorch https://github.com/liuheng92/tensorflow_PSENet 三、文本检测算法demo运行展示 暂时略, 后续会补上。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人机交互
    +关注

    关注

    12

    文章

    1094

    浏览量

    54723
  • 算法
    +关注

    关注

    23

    文章

    4438

    浏览量

    90553
  • 深度学习
    +关注

    关注

    73

    文章

    5206

    浏览量

    119804

原文标题:一篇包罗万象的场景文本检测算法综述

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    柔性印刷线路板缺陷检测方法指南

    现有的FPC缺陷检测算法多衍生于PCB检测算法,但受本身独特性限制,FPC板缺陷要求更高,检测样板尺寸更大,样板成像易变形,使得针对PCB板的缺陷检测算法不能直接套用FPC板的
    发表于 11-30 15:29 125次阅读

    一种可靠的峰值和起始点检测算法

    电子发烧友网站提供《一种可靠的峰值和起始点检测算法.pdf》资料免费下载
    发表于 11-22 10:27 0次下载
    一种可靠的峰值和起始点<b class='flag-5'>检测算法</b>

    人工智能大模型、应用场景、应用部署教程超详细资料

    元素的融合实现图片风格的转换。通过此种迁移使图片处理能够包罗万象,叫人耳目新。 PS:图片来源公开数据集
    发表于 11-13 14:49

    基于NXP微控制器i.MX RT1170的多人体实时检测算法和系统

    基于NXP微控制器i.MX RT1170的多人体实时检测算法和系统
    的头像 发表于 10-26 16:27 615次阅读
    基于NXP微控制器i.MX RT1170的多人体实时<b class='flag-5'>检测算法</b>和系统

    基于C8051F310的高灵敏车辆检测算法

    电子发烧友网站提供《基于C8051F310的高灵敏车辆检测算法.pdf》资料免费下载
    发表于 10-18 11:00 0次下载
    基于C8051F310的高灵敏车辆<b class='flag-5'>检测算法</b>

    基于Delaunay三角剖分的空间离群点检测算法研究

    电子发烧友网站提供《基于Delaunay三角剖分的空间离群点检测算法研究.pdf》资料免费下载
    发表于 10-07 11:15 0次下载

    智慧矿山ai算法系列解析 堵料检测算法功能优势

    智慧矿山AI算法系列中的堵料检测算法的功能优势,了解其重要性和带来的价值
    的头像 发表于 09-28 18:48 320次阅读
    智慧矿山ai<b class='flag-5'>算法</b>系列解析 堵料<b class='flag-5'>检测算法</b>功能优势

    【KV260视觉入门套件试用体验】七、VITis AI字符和文本检测(OCR&amp;Textmountain)

    技术,包括传统文档图像识别与场景文字识别技术。 在计算机视觉领域,文本检测是其重要的个子任务。文本
    发表于 09-26 16:31

    基于Transformer的目标检测算法

    掌握基于Transformer的目标检测算法的思路和创新点,一些Transformer论文涉及的新概念比较多,话术没有那么通俗易懂,读完论文仍然不理解算法的细节部分。
    发表于 08-16 10:51 381次阅读
    基于Transformer的目标<b class='flag-5'>检测算法</b>

    基于强化学习的目标检测算法案例

    摘要:基于强化学习的目标检测算法检测过程中通常采用预定义搜索行为,其产生的候选区域形状和尺寸变化单一,导致目标检测精确度较低。为此,在基于深度强化学习的视觉目标检测算法基础上,提出联
    发表于 07-19 14:35 0次下载

    无Anchor的目标检测算法边框回归策略

    导读 本文主要讲述:1.无Anchor的目标检测算法:YOLOv1,CenterNet,CornerNet的边框回归策略;2.有Anchor的目标检测算法:SSD,YOLOv2,Faster
    的头像 发表于 07-17 11:17 565次阅读
    无Anchor的目标<b class='flag-5'>检测算法</b>边框回归策略

    电磁仿真需要牢记的内功心法

    在射频、微波设计中,各种“强大”的商用电磁仿真软件的功能包罗万象,这篇“内功心法”从算法角度出发,提示大家如何谨慎选择仿真软件。
    的头像 发表于 06-07 11:06 350次阅读
    电磁仿真需要牢记的内功心法

    快速入门自动驾驶中目标检测算法

    现在目标检测算法总结 1. 目标检测算法在机动车和行人检测识别上应用较多,在非机动车上应用较少 2. 对于目标检测模型增强特征表示和引入上下文信息的改进方法几乎对任何
    发表于 06-06 09:40 0次下载
    快速入门自动驾驶中目标<b class='flag-5'>检测算法</b>

    机器视觉常用经典的直线检测算法汇总整理

    Hough变换是一个比较有名的计算机视觉处理算法,该算法可以用来做很多的任务,常用的任务包括直线检测、圆检测、椭圆检测等,下面我们将对该
    发表于 05-12 11:40 1791次阅读
    机器视觉常用经典的直线<b class='flag-5'>检测算法</b>汇总整理

    机器视觉边缘检测相关算法的步骤

    边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。
    的头像 发表于 04-24 15:40 557次阅读