您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 基于深度学习的图像识别进展百度的若干实践
近年来在人工智能领域最受关注的,非深度学习莫属。自2006年吉奥夫雷·辛顿(GeofferyHinton)等在《科学》(Science)杂志发表那篇著名的论文[1]开始,深度学习的热潮从学术界席卷到了工业界。2012年6月,《纽约时报》披露“谷歌大脑(GoogleBrain)”项目,由著名的斯坦福大学机器学习教授吴恩达(AndrewNg)和大规模计算机系统世界顶级专家杰夫·迪恩(JeffDean)共同主导,用1.6万个CPU核的并行计算平台训练深度神经网络(DeepNeuralNetworks,DNN)的机器学习模型,在语音和图像识别等领域获得巨大成功。国内方面,2013年1月,百度成立深度学习研究院,公司CEO李彦宏担任院长。短短两年时间,深度学习技术被应用到百度的凤巢广告系统、网页搜索、语音搜索、图像识别等领域,涵盖几十项产品。今天,用户在百度平台上的几乎每个服务请求,都被深度学习系统所处理。人工智能的特征之一是学习的能力,即系统的性能是否会随着经验数据的积累而不断提升。所以,大数据时代的到来给人工智能的发展提供前所未有的机遇。在这个时代背景下,深度学习在包括图像识别等方面所取得的突破性进展并非偶然。在百度的实践中,我们认识到深度学习主要在以下三个方面具有巨大优势:1.从统计和计算的角度看,深度学习特别适合处理大数据。在很多问题上,深度学习是目前我们能找到的最好方法。它集中体现了当前机器学习算法的三个大趋势:用较为复杂的模型降低模型偏差(modelbias),用大数据提升统计估计的准确度,用可扩展(scalable)的梯度下降算法求解大规模优化问题。2.深度学习不是一个黑箱系统。它像概率模型一样,提供一套丰富的、基于联接主义的建模语言(建模框架)。利用这套语言系统,我们可以表达数据内在的丰富关系和结构,比如用卷积处理图像中的二维空间结构,用递归神经网络(RecurrentNeuralNetwork,RNN)处理自然语言等数据中的时序结构。3.深度学习几乎是唯一的端到端机器学习系统。它直接作用于原始数据,自动逐层进行特征学习,整个过程直接优化某个目标函数。而传统机器学习往往被分解为几个不连贯的数据预处理步骤,比如人工抽取特征,这些步骤并非一致地优化某个整体的目标函数。让计算机识别和理解图像,是人工智能最重要的目标之一。尤其是在移动互联网时代,智能手机上的摄像头将人们日常看到的世界捕捉下来,图像和视频数据暴增,造就了图像大数据时代。计算机视觉的主要内容就是图像识别:一方面,这个技术使得计算机像人类视觉系统一样,具有“看懂”世界的能力,从而能自主适应环境、改造环境;另一方面,依靠识别图像内容,可以帮助我们更好地了解人,比如,通过用户产生的拍照内容了解用户的行为和喜好,或者通过识别用户手势理解用户的意图。借助图像识别让互联网服务更好地理解世界、洞察用户,也是百度深度学习研究院重点投入的技术研发方向之一。有意思的是,深度学习研究的初衷主要就是应用于图像识别。迄今为止,尽管深度学习已经被应用到语音、图像、文字等方面,但深度学习领域发表的论文中大约70%是关于图像识别的。从2012年的ImageNet[2]竞赛开始,深度学习在图像识别领域发挥出巨大威力,在通用图像分类、图像检测、光学字符识别(OpticalCharacterRecognition,OCR)、人脸识别等领域,最好的系统都是基于深度学习的。前面所述深度学习的三大优势,在最近图像识别的进展中体现得淋漓精致:模型结构越来越复杂,训练数据规模也不断增加;各种关于数据结构的先验知识被体现到新的模型结构中;端到端学习让我们越来越摒弃基于人工规则的中间步骤。百度深度学习研究院在基于深度学习的图像识别课题上开展了大量工作,并取得丰硕成果。在将基于深度学习的图像识别应用于图像搜索、网页搜索、百度魔图、涂书笔记、作业帮、百度街景等互联网产品以及百度眼镜(BaiduEye)、自动驾驶等创新性研究项目方面,也积累了丰富经验。下面与大家分享若干个技术实践。基于深度学习的图像分类和物体检测算法图像分类(imageclassification)和物体检测(objectdetection)是图像识别的两个核心问题。前者主要对图像整体的语义内容进行类别判定,后者则定位图像中特定物体出现的区域并判定其类别。与图像分类相比,物体检测更加关注图像的局部区域和特定的物体类别集合,被视为更加复杂的图像识别问题。两项技术在信息检索、广告投放、用户分析、商品推荐等互联网应用中大有用武之地。传统图像分类算法中具有代表性的是杨(Yang)等人[3]在2009年提出的采用稀疏编码(sparsecoding)表征图像、通过大规模数据训练支持向量机(supportvectormachine)进行图像分类的方法。这类方法在2010年和2011年的ImageNet[1]图像分类竞赛中取得了最好成绩,其主要缺陷在于稀疏编码和分类模型是在不同目标函数的监督下分开训练得到的,两者无法有效地联合训练。变革发生于2012年,辛顿等人[4]采用卷积神经网络(ConvolutionalNeuralNetwork,CNN)将ImageNet图像Top5分类识别错误率从之前的25%降低到15%。随后,以卷积神经网络为代表的各种深度学习算法被广泛应用于传统的图像识别中,不断刷新纪录。截至2014年,ImageNet图像Top5分类的识别错误率已经降低到6.73%[5]。斯坦福大学的安德烈·卡帕西(AndrejKarpathy)等人[6]对比了卷积神经网络和人在ImageNet数据库上的性能,发现目前最好的卷积神经网络模型距离人的识别率仅一步之遥(见图1)。而目前在较小的CIFAR-10数据库上,卷积神经网络的性能已经超过了人[7]。在物体检测方面,如图2所示,目前主流的算法大都采用扫描窗或是候选窗方法[8],选取图像中许多大小位置不同的子区域进行分类(某种物体或是背景),最终得到感兴趣的物体出现的位置区域。扫描窗方法能够在相邻窗口之间共享特征,可以快速地扫描较大面积的图像;候选窗方法能够高效地在图像候选区域内进行识别,更为灵活地处理物体长宽比的变化,从而获得较高的交并比覆盖率。扫描窗和候选窗都是将物体检测问题归结为图像分类问题予以解决,因此,卷积神经网络同样可以在物体检测中大放异彩。在ImageNet2014[2]的物体检测竞赛中,百度研发的物体检测算法在采用优化的候选框产生算法基础上,加上一个10层卷积神经网络模型,结合图像的上下文信息,平均精度达到40.3%。近几年,深度学习在图像识别中的发展主要有以下几个趋势:1.模型层次不断加深。2012年,艾利克斯(Alex)获得当年ImageNet竞赛冠军时用的网络使用了5个卷积层(另外包括3个pool层和2个norm层)。而到2014年,获得冠军的GoogleNet[5]使用了59个卷积层(另外包括16个pool层和2个norm层)。第二名的VGG[9]也使用19个卷积层,并获得较好的性能。模型深度的重要性不言而喻。2.模型结构日趋复杂。传统的卷积神经网络模型多使用简单的conv-pool-norm结构进行堆砌,GoogleNet[5]的结果表明,并行多分辨率的inception结构能够融合图像在不同尺度上的有效信息,而NIN(network-in-network)[10]结构则通过低秩分解对较大参数规模的卷积层进行参数压缩,大大减小模型参数规模。这样做,一方面能够降低过拟合程度,提高模型的推广能力,另一方面则为大规模并行训练提供非常有利的条件。3.海量的标注数据和适当的数据扰动。ImageNet2012分类竞赛的训练数据包含120万左右的标注样本,而ImageNet全库目前已经收集将近2.2万个类别共约1420万图像。但仅有这些数据仍不足以避免参数规模庞大的深度学习模型的过训练现象。结合图像数据的特点,包括平移、水平翻转、旋转、缩放等数据扰动方式被用于产生更多有效的训练数据,能够普遍提高识别模型的推广能力。值得一提的是,百度利用并行分布式深度学习平台(PArallelDistributedDeepLEarning,PADDLE),收集建立起规模更大、更符合个人电脑和移动互联网特点的图像数据仓库,这些数据结合深度学习算法产出的各种图像分类和物体检测模型,已经广泛服务于许多与图像有关的百度产品线。以互联网色情图片过滤为例,我们的训练数据囊括了1.2亿幅色情图像,分类精度达99.4%。基于端到端的序列学习:对传统光学字符识别框架的改造光学字符识别的概念早在20世纪20年代便被提出,一直是模式识别领域研究中极具代表性的重要课题。近些年,随着移动互联网的发展,光学字符识别技术的应用场景也从传统的办公领域(例如邮政编码、书籍扫描和文档传真)逐渐渗入日常生活,产生出许多以手机拍照光学字符识别作为入口的文字信息录入及查询类应用。经典的光学字符识别系统的流程和技术框架如图3所示,从输入图像到输出最终的文字识别结果,历经版面分析、行分割、字分割、单字识别、语言模型解码和后处理。涉及的技术分为基于经验制定的规则和基于统计学习的模型[11]两大类。前者包括系统预处理阶段(版面分析、行分割、字分割)的二值化、连通域分析、投影分析等,以及后处理阶段的规则噪声过滤器;后者包括基于类方向梯度直方图(HistogramofOrientedGradient,HOG)特征的单字识别引擎[12]和基于N-gram的语言模型,用于单字识别和语言模型解码阶段。在以印刷体文档扫描识别为代表的光学字符识别传统应用场景中,版面结构的规则性较强,字形、字体的一致性较高,而文字同背景的区分性又较好。在数据简单、条件可控的情况下,经典的光学字符识别技术架构通过细致的人工规则制定和适量的模型参数学习,便可以达到比较理想的识别精度。但在广泛的自然场景中,文字呈现出的图像信息复杂度显著增大(版面缺失、艺术字手写体常见、文字周边背景复杂),而拍摄图像的条件又得不到很好的控制(拍摄角度、距离导致的形变,摄像头品质性能存在巨大差异,光照和阴影变化复杂),经典的光学字符识别技术架构难以满足实际应用的需求。究其原因,是这一技术架构的处理流程繁琐冗长导致错误不断传递,以及过分倚重人工规则却轻视大规模数据训练所致。针对复杂场景的特点和经典技术框架的不足,我们对光学字符识别的系统流程和技术框架进行了大幅改造(见图4)。在系统流程方面,引入文字检测概念,和行分割合并成新的预处理模块,任务是检测图像中包含文字的区域并生成相应文字行;将字分割和单字识别合并成新的整行识别模块;基于N-gram的语言模型解码模块予以保留,但将主要依赖人工规则的版面分析和后处理模块从系统中删除。6个步骤减少到3个步骤,降低了传递误差造成的不良影响。作为预处理步骤,新引入的文字行检测模块需要在复杂的自然图像中准确地提取长短不一的文字行区域。我们摒弃传统的二值化和连通域等基于规则的方法,采用基于学习的Boosting、卷积神经网络结合图模型(graphicmodel)的思路解决这一问题,并在权威的公开评测中大幅超越之前最好的文字检测方法。此外,由于整行文字识别是一个序列学习(sequencelearning)问题,我们有针对性地研发出基于双向长短期记忆神经网络(BidirectionalLongShort-termMemory,BLSTM)[13]的递归神经网络序列模型学习算法,结合卷积神经网络模型提取出的图像特征,不考虑每个字符出现的具体位置,只关注整个图像序列对应的文字内容,使得单字分割和单字识别问题融为一体,最终实现深度学习理论追求的理想——端到端训练。这样做能够充分利用文字序列上下文关联进行消歧,避免传统方法中字符分割造成的不可逆转的错误。如图5所示,这一序列学习模型极其擅长识别字分割比较困难的文字序列,甚至包括潦草的手写电话号码。此外,这一序列学习模型还使得训练数据的标注难度大为降低,便于收集更大规模的训练数据。不同语言(即便字词、句子的长短结构迥异)光学字符识别问题也可以纳入同一个
本文标题:基于深度学习的图像识别进展百度的若干实践
链接地址:https://www.777doc.com/doc-2539655 .html