浅谈深度学习的技术原理及其在计算机视觉的应用

目前,深度学习几乎成了计算机视觉领域的标配,也是当下人工智能领域最热门的研究方向。计算机视觉的应用场景和深度学习背后的技术原理是什么呢?下面让我们来一探究竟。

计算机视觉的应用

什么是计算机视觉呢?形象地说,计算机视觉就是给计算机装上眼睛(照相机)和大脑(算法),让计算机可以感知周围的环境。目前计算机视觉研究主要集中在基础应用场景,像图片分类、物体识别、人脸的3D建模等。

识别物体是图片分类的一个比较常见的应用,例如一个简单的猫咪识别模型,我们首先要给计算机定义模型,然后准备大量猫咪的照片去训练这个模型,让计算机能识别出来,输一张图片的时候能识别出图片是不是猫咪。正常情况下计算机模型能识别得比较准确,但是当我们输入了一些有遮挡、形态多变或者角度、光照不一的图片时,之前我们建立的模型就识别不出来。这就是计算机视觉在应用中存在的难点问题。

深度学习背后的技术原理

机器学习

计算机视觉领域中是怎么运用深度学习来解决问题的呢?深度学习作为机器学习的一种,这里先简单介绍下机器学习

机器学习的本质其实是为了找到一个函数,让这个函数在不同的领域会发挥不同的作用。像语音识别领域,这个函数会把一段语音识别成一段文字;图像识别的领域,这个函数会把一个图像映射到一个分类;下围棋的时候根据棋局和规则进行博弈;对话,是根据当前的对话生成下一段对话。

机器学习离不开学习两个字,根据不同的学习方式,可以分为监督学习监督学习两种方式。

监督学习中,算法和数据是模型的核心所在。在监督学习中最关键的一点是,我们对训练的每个数据都要打上标签,然后通过把这些训练数据输入到算法模型经过反复训练以后,每经过一次训练都会减少算法模型的预计输出和标签数据的差距。通过大量的训练,算法模型基本上稳定下来以后,我们就可以把这个模型在测试数据集上验证模型的准确性。这就是整个监督学习的过程,监督学习目前在图片分类上应用得比较多。

再来看非监督学习。跟监督学习不同的地方是,非监督学习不需要为所有的训练数据都打上标签。非监督学习主要应用在两个大类,第一类是做聚类分析聚类分析是把一组看似无序的数据进行分类分组,以达到能够更加更好理解的目的;另外是做自动编码器,在数据分析的时候,原始数据量往往比较大,除了包含一些冗余的数据,还会包含一些对分析结果不重要的数据。自动编码器主要是对原始数据做降维操作,把冗余的数据去掉,提高后面数据分析的效率。

通过不同的学习方式获取到数据后,算法是接下来非常重要的一环。算法之于计算机就像大脑对于我们人类,选择一个好的算法也是特别重要的。

上面是ImaegNet竞赛的结果,2012年以前图片分类采用的机器学习的模型是特征+支持向量机的模型,2012年以后是卷积神经网络的模型,卷积神经网络计算机视觉领域发挥着至关重要的作用。为什么2014年以后卷积神经网络才发挥它的作用呢?我们先来看看神经网络

神经网络

神经网络是受人脑神经元结构的启发,研究者认为人脑所有的神经元都是分层的,可以通过不同的层次学习不一样的特征,由简单到复杂地模拟出各种特征。

上图是计算机应用数学的方式来模拟人脑中神经元的示意图。a1到ak是信号的输入,神经元会对输入信号进行两次变换。第一部分是线性变换,因为神经元会对自己感兴趣的信号加一个权重;第二部分是非线性变换。

神经网络就是由许多的神经元级联而形成的,每一个神经元都经过线性变换和非线性变换,为什么会有非线性变换?从数学上看,没有非线性变换,不管你神经网络层次有多深都等价于一个神经元。如果没有非线性变换,神经网络深度的概念就没有什么意义了。

这是大家知道的神经元网络整体的模型,我们具体怎么来训练神经网络呢?

第一步,定义一个网络模型,初始化所有神经网络权重和偏置。定义好网络模型以后再定义好这个模型的代价函数,代价函数就是我们的预测数据和标签数据的差距,这个差距越小,说明模型训练得越成功。第一次训练的时候会初始化所有神经元参数。输入所有训练数据以后,通过当前的模型计算出所有的预测值,计算预测值以后和标签数据比较,看一下预测值和实际值有多大的差距。

第二步,不断优化差距,使差距越来越小。神经网络根据导数的原理发明了反向传播和梯度下降算法,通过N次训练后,标签数据与预测值之间的差距就会越来越小,直到趋于一个极致。这样的话,所有神经元权重、偏置这些参数都训练完成了,我们的模型就确定下来了。接下来就可以在测试集上用测试数据来验证模型的准确率

卷积神经网络

以上所讲的都是一般的全连接神经网络,接下来进入卷积神经网络卷积神经网络是专门针对图片处理方面的神经网络卷积神经网络首先会输入一张图片,这张图片是30×30,有三个颜色通道的数据,这是输入层。下面是卷积层,有一个卷积核的概念,每一个卷积核提取图片的不同特征。

提取出来以后到池化层,就是把卷积层的数据规模缩小,减少数据的复杂度。卷积和池化连起来我们叫做一个隐层,一个卷积神经网络会包含很多个隐层,隐层之后是全连接层,全连接层的目的是把前面经过多个卷积池化层的特征把数据平铺开,形成特征向量,我们把特征向量输入到分类器,对图片进行分类。

简单来说,卷积神经网络更适合计算机视觉主要有两个原因,一是参数共享,另外一个是稀疏连接。

基于深度学习人脸识别算法模型

以上是深度学习计算机视觉领域的相关应用以及它背后的技术原理,接下来看看基于深度学习人脸识别算法模型。

先看一下人脸识别的应用场景,主要分三个方面:一是1:1的场景,如过安检的时身份证和人脸比对、证券开户;二是1:N的场景,比如说公安部要在大量的视频中检索犯罪嫌疑人;三是大数据分析场景,主要是表情分类,还有医学的分析等。

上图主要是人脸识别简单的流程,右边的是训练模型,有人脸的大数据库,经过Gabor、LBP等经验描述子,或深度学习算法提取特征模型,这个模型部署在应用上,应用通过摄像头、视频获取到人脸以后做预处理,进行特征提取,特征比对,最后输出结果,这是比较通用的人脸识别的流程。

DeepID算法

DeepID算法的目的是识别两张图片,最后的输出是两张图片的相似度。输入图片A和图片B,经过DeepID卷积神经网络模型会计算出向量A和向量B,合并成向量AB。然后将向量AB输入分类器,算出向量AB的相似度,最后以这个相似度区分这两个图片是不是同一类。

这里要提到的两个模型,一是DeepID的模型,二是分类器的模型。DeepID模型是用卷积神经网络算法训练的,最后的应用是把卷积神经网络后面的softmax分类层去掉,得到softmax前面的特征向量;分类器模型是比较经典的如支持向量机/联合贝叶斯分类。训练过程中,把训练样本分成五份,四份用来训练卷积神经网络,一份用来训练分类器,可以相互印证。

DeepID除了在网络模型上做的工作,还会对图片做预处理。像Patch的处理,按照图片以人脸的某一个部位为中心生成固定大小的图片,然后对每一个特定的Patch训练卷积神经网络。一张图片输入后,切分成多个patch,分别输入到对应的卷积神经网络。每一个卷积神经网络输出一个向量,通过降维的算法,把所有patch对应的输出向量进行处理,去除冗余信息,得到人脸的向量表示。

最后在比较两张人脸时,就是分别将两张人脸的这个向量输入分类器得到相似度结果的。这里多patch切分有一个优势,比如在现实应用中有一些人的脸部是被遮挡的,由于它是分为不同的patch,这样的场景下鲁棒性会比较好。

DeepFace算法

再来看DeepFace算法。这是人脸对齐的流程,这张图是史泰龙的侧脸图片,第一步是把人脸截取出来,对人脸上面68个基本点,描述出基本点以后,用三角剖分的算法把68个基本点连起来,然后将标准的人脸模型运用到三角剖分上,这样标准的人脸模型就具备了这样的深度。

经过仿射变形后,将侧脸模型转成正脸模型,最后把这个模型应用到具体的图片上,就得到了人的正脸图片。这个算法的主要作用是通过一些模型将人物的侧脸转成正脸,以便做进一步的人脸识别/人脸分类 。

DeepFace神经网络如图所示,前面三个卷积层比较普通,是用来提取脸部的一些基本特征;后面三个卷积层有一些改进,用的是参数不共享的卷积核,我们提到卷积核的基本特征有一个是参数是共享的,因为研究认为图片中不同的部位一些基本特征是相似的。

但在这个算法中,经过人脸对齐之后,它的不同的区域会有不同的基本特征,所以这里运用了参数不共享的卷积核。参数不共享,就不会发挥出卷积核参数少的优势,这样可能增加训练的复杂度。

FaceNet算法

FaceNet算法是谷歌人脸识别的一种算法,FaceNet算法提出三元组的概念:三张图片放在一起,两张图片是同一个人的,一张图片不是同一个人的。如果一个三元组中,同一个人的图片的距离要大于不同人之间的距离,那么经过学习以后,这个三元组中同一个人的图片之间的距离,会小于不同人的图片之间的距离。它不用做分类,直接计算出两张图片之间的距离。

其他算法

其他算法如FR+FCN,通过神经网络去训练,当你得到一个人侧脸照的时候,可以通过神经网络生成正面照;Face+baidu是传统的卷积网络,建立在大数据的基础上,训练了数百万张人脸。

Pose+Shape+expression augmentation,这篇论文是通过三个变量扩充数据集,让数据搜集工作变得容易;CNN-3DMM,它在标准的3D人脸模型基础上,训练一个神经网络,来给标准3D模型生成不同的参数,这个神经网络会根据不同的图片生成不同的参数,给个体建立不一样的3D模型。

基于DeepID算法的人脸搜索项目

最后介绍一下我们曾做过的一个人脸识别模型的项目。活动摄影承接商需要把一些会场活动、体育赛事等活动照片拍摄下来以后上传到他们的网站上,因为图片有几百上千张,活动参与者很难找到自己的图片。如果用人脸识别的模型,就可以把自己的脸部拍下来上传,在图片集中快速找到自己的照片。

我们看一下它整体的架构。右边是人脸库的导入,活动摄影承接商奖会场拍摄的一千张照片导入搜索目标库。导入以后做多patch预处理,运用DeepID的算法,计算每张图片各patch的特征向量,放到特征向量库里,建立一个从特征向量到原始图片的索引。

左边的部分是用户搜索,拍摄了自己的头像后,把它上传上来进行搜索,后台同样先对用户头像做多patch切分,通过DeepID模型计算出用户头像的特征向量,然后在特征向量库中逐步比对目标特征向量,将相似度最高的N个特征向量检索出来,最后通过索引查到原始图片,返回给用户。

以上是深度学习背后的技术原理以及它在计算机视觉领域常见的应用,希望通过对这些原理的解析及应用的分享,让大家更加直观快速地了解人工智能技术层面的基础概念,并且对人工智能技术的学习和运用有所启发。

UCloud技术
UCloud技术

分享UCloud的技术创新、架构设计、实践总结,内容同步于微信公众号“UCloud技术公告牌”

https://www.ucloud.cn/
专栏二维码
理论人脸识别神经网络CNN监督学习无监督学习语音识别机器学习计算机视觉深度学习
10
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

非监督学习技术

非监督式学习是一种机器学习的方式,并不需要人力来输入标签。它是监督式学习和强化学习等策略之外的一种选择。在监督式学习中,典型的任务是分类和回归分析,且需要使用到人工预先准备好的范例(base)。一个常见的非监督式学习是数据聚类。在人工神经网络中,自组织映射(SOM)和适应性共振理论(ART)则是最常用的非监督式学习。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

聚类分析技术

聚类分析(CA)是一种典型的无监督学习方法,这种方法是根据对象的特点将它们分成不同的组。K-均值是应用最广泛的聚类方法,其它方法还包括 k-Medoids、分层聚类和 DBSCAN。期望最大化法(EM)也是聚类分析的一种解决方案。聚类分析在数据挖掘、市场调研、异常值检测等许多领域都有应用。另外,降维技术也是一类类似于聚类分析的无监督学习方法,其典型的代表有主成分分析(PCA)、线性判别分析和 Isomap。

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

物体识别技术

计算机视觉领域的一个分支,研究物体的识别任务

推荐文章
暂无评论
暂无评论~