优秀博士学位论文精华版:基于深度学习的自然场景文字检测与识别方法研究...

news/2024/7/5 3:40:37

本文选自《中国人工智能学会通讯》 2020年 第10卷 第2期 优秀博士学位论文精华版,CAAI会员中心编辑。

该博士论文原作者石葆光2018年毕业于华中科技大学,师从于白翔老师,目前就职于微软雷德蒙德总部。

摘 要

本文基于深度学习框架,构建了一套场景文字检测与识别算法系统。针对检测问题,提出一种快速任意方向文字检测方法,该方法基于“片段链接”思想,将长文字拆解为局部的片段,以及片段之间的链接;针对识别问题,提出一种端到端可训练的文字识别神经网络模型,该模型将卷积神经网络、循环神经网络和联结时序分类三者结合,能够直接从图片中识别出文字内容,并且可以端到端的训练。

关 键 字

场景文字;文字检测;文字识别;卷积神经网络;循环神经网络

引言

现代社会是高度符号化的社会,大量信息通过文字和符号来记载和传递。因此,文字在图像和视频中广泛存在。文字是书籍、报刊、文件和名片等印刷品的基本组成元素,并且广泛存在于自然场景的各种物体上,例如路牌、商品包装、车辆牌照和店铺门面等。广义上的文字还包含自然语言文字以外的书写系统,例如摩斯码和五线谱等。理解图片中的文字在计算机视觉中一直处于重要的位置。从图像中识别文字的技术通常被称作光学字符识别(OCR),它是计算机视觉最早的应用之一。

传统的OCR 方法大多针对扫描文档图片设计。这些图片通常由扫描仪等设备获取,成像过程受控;识别方法往往基于二值化和浅层分类器等技术。自然图片中的文字通常被称作场景文字(scene text)。场景文字检测识别是传统OCR 在自然图片上的延续和升级,它的应用极其广泛,例如无人超市、智能导盲和无人驾驶等新兴技术等都离不开场景文字识别。

相比传统OCR,场景文字的检测和识别面临着巨大的挑战。

首先,相比文档图片,场景文字的背景更为复杂;

其次,场景文字的字体、颜色和排布相比文档文字复杂得多;

最后,传统的OCR 系统常由许多子模块组成,系统复杂程度高,其研发耗费较多的人力。

近年来,随着深度学习算法的兴起,计算机视觉领域的多项重要问题都取得了重大突破。到如今,深度学习已经渗入了计算机视觉研究的方方面面,对学术界和工业界产生了深远的影响。深层神经网络是深度学习的核心,其强大的特征学习能力、灵活的结构、能够端到端训练的特点,使得它成为解决场景文字识别问题的有效手段。本文基于深度学习算法,结合卷积神经网络和循环神经网络(RNN) 等结构,提出一套完整的场景文字检测与识别系统。

“片段链接”: 快速任意方向文字检测方法

作为端到端识别系统的第一级,文字检测的目标是在输入图像中定位文字的位置。检测输出的形式可以是水平的矩形包围盒、带角度的矩形包围盒和任意多边形等;根据任务的不同,检测目标可以是每个单词或每条文字行。文字检测可以被视为物体检测的特例。然而,由于场景文字和一般物体存在形状上的区别,一般物体检测方法并不是理想的解决方案——一般物体检测方法受其候选区域提取算法的限制,输出包围盒的长宽比往往只能在小范围内变化,因此难以输出长文字、非水平的包围盒。

“片段链接”算法的核心是将文字分解为片段(segments) 和链接(links) 两种基本元素。如图1 所示,片段是覆盖一小段单词或文本行的局部包围盒,它由一个带角度的矩形框表示。矩形的高度和整词的高度接近,但长度只占全部长度的一部分; 链接存在于相邻两个片段之间,它指示片段之间的连接关系。即相连的片段属于同一单词,不相连的属于不同单词。检测时,该方法在全图密集地检测片段和链接,并将相连的片段根据几何规则组合为整词的包围盒,得到检测结果。


片段链接的核心优势在于,它可以检测非水平的长词或长文本行。片段和链接都具有局部性,片段只占整个单词的一小部分,它的检测只需要局部的图像特征; 链接存在于相连的两两片段之间,因此它也同样有局部性。由于片段和链接的局部性,两者都可以在任意尺寸的图片上密集检测,并组合成任意长度的文字,从而显著缓解了长文字的检测困难。

检测片段和链接的网络结构如图2 所示。该结构基于VGG-16,能够在一次前向传导中同时地在多个尺度上密集地检测片段和链接,因此有着很高的检测效率。

此外,我们还提出了同层链接和跨层链接两种链接类型,前者连接同一个特征层中检测到的片段;后者连接不同层上的片段。同层和跨层链接使得相同或不同尺度上的片段都可以被组合在一起,从而避免了漏检和重复检测的问题。

在对所有片段和链接作置信度和几何偏移的估计之后,该模型输出一组片段和一组链接。接下来,片段和链接分别通过各自的置信度阈值进行过滤,去除置信度低于阈值α 的片段和置信度低于阈值β 的链接。最后,过滤后的片段根据过滤后的链接组合成完成的包围盒。

图 3 显示了片段链接在长文本检测上的表现。可以看出,片段和链接沿着文本行被密集检测,它们将细长的文本分解为了更容易检测的局部视觉元素。相比之下,当下流行的物体检测器难以输入长宽比如此极端的包围盒,而片段链接很好地解决了这个问题。


此外,尽管英文和中文文本在外观上有很大的差异,但我们的模型仍能够在不改变其结构的情况下同时处理它们。这也显示了片段链接在多语种场景下的适用性。

 CRNN:端到端文字识别网路

卷积RNN(CRNN) 是本文提出的可以端到端训练的文字识别网络,该网络结合了卷积神经网络(CNN) 和RNN。其特点在于无需单个字符的标注,可直接用文字行图片和对应的标签训练,相比传统方法大幅降低了训练和部署成本。CRNN 的总体网络结构如图 4 所示。

它从下至上主要由CNN、RNN 翻译层三个部分组成:

1)CNN 负责提取卷积特征图; 

2)特征图被转换为特征序列后交由RNN 进行预测,输出单帧预测结果;

3)最后,翻译层将单帧预测结果翻译为字母序列。尽管CRNN 包含不同类型的网络结构,它仍然能被端到端的训练,并且只需要一项损失函数。

CRNN 只在Synth90k 数据集上进行训练一次,然后在其他数据集上测试,不作额外的微调。尽管只用合成数据训练,CRNN 仍然能够在真实数据集上取得良好效果。在有词汇表模式下,CRNN 的识别准确度超过了同时期的大多数其他方法。在无词汇表模式下,CRNN 在IIIT5k 和SVT 两个数据集上都取得了最高的识别准确度。


值得一提的是,CRNN 的性能超过了Google 公司开发的PhotoOCR 系统。PhotoOCR 使用了近800万张训练图片,并且这些训练图片有字符级别的标注;而CRNN 仅仅在合成图片上训练,完全没有使用人工标注的数据,却能够大幅度地在识别准确率上超出PhotoOCR 系统。这说明CRNN 是高性能且低成本的识别方法。

结束语

本文对场景文字检测与识别问题完成了一次系统和全面的研究。针对不同的问题及问题的不同方面,分别提出了检测方法片段链接和识别方法CRNN,在识别准确性、方法通用性及工程实用性三个方面都相比先前工作取得了显著进步。

(参考文献略)

选自《中国人工智能学会通讯》  

2020年  第10卷  第2期  优秀博士学位论文精华版

END

在看,让更多人看到  


http://lihuaxi.xjx100.cn/news/282051.html

相关文章

入门必备 | 一文读懂神经架构搜索

作者 | Md Ashiqur Rahman编译 | 刘静转载自图灵TOPIA(ID: turingtopia)近期谷歌大脑团队发布了一项新研究:只靠神经网络架构搜索出的网络,不训练,不调参,就能直接执行任务。这样的网络叫做WANN&#xff0c…

计算机组成原理-输入输出系统(持续更新中)

I/O系统基本概念 基本概念 I/O硬件 现代计算机的结构 “I/O”就是"输入/输出" IO设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备。 常见的IO设备 主机如何与I/O设备进行交互? I/O接口:又称I/O控制器&…

c#直接调用ssis包实现Sql Server的数据导入功能

调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能。思前想后,决定还是贴一下增强记忆,高手请54.1、直接调用ssis包,需要引用Microsof…

Linux技术的成功之处

相信很多人在接触linux之前,都应该接触过windows系统,毕竟这个系统在中国而言,几乎是所有同学从小就接触到的一个系统,每当我们打开新买的电脑的时候,总会弹出熟悉的Windows界面。而今天在这里要说的是一个几乎能和win…

百度与华为重磅合作!李彦宏:技术是百度的信仰

导语:这是百度第三年举办AI开发者大会。一生二,二生三,三生万物。AI虽然不能产生万物,但是正在“唤醒万物”。 作者 | 阿司匹林 出品 | AI科技大本营(ID:rgznai100) 在今天上午举行的的百度AI开发者大…

如何在 Python 中创建一个简单的神经网络

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达引言在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普及程度似乎在不断增长。最近,越来越多的人已经熟悉了机器学习的子领…

B站500万粉up主党妹被黑客勒索:交钱赎“人”!顶级安全专家:无解

郭一璞 十三 发自 凹非寺量子位 报道 | 公众号 QbitAI最近真是太难了,要防新冠病毒,还要防勒索病毒。昨天,B站556万粉丝的up主「机智的党妹」就发视频说,自己被勒索病毒攻击了。她正在制作的数百个GB的视频素材文件,全…

浅谈Android系统开发中LOG的使用【转】

本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。在Android系统中,提供…