AI 科技谈论按:跟着 iPhone X 的发布,Face ID 人脸辨认技能开端进入人们的日常日子中,当咱们拿起手机并看着它的时分就能够完成手机解锁的功用。而人脸辨认中的关键技能就是卷积神经网络。
近来,在雷锋网 AI 研习社揭露课上,法国蒙彼利埃大学孙启超就叙述了卷积神经网络的根本原理以及人脸辨认技能是怎样运转的。揭露课回放视频网址:http://www.mooc.ai/open/course/524
共享人介绍
孙启超:法国蒙彼利埃大学 MBA 在读,CSDN 百万博客专家。
共享主题:卷积神经网络在人脸辨认技能中的运用
共享提纲:
介绍卷积神经网络的根本原理和作业流程
叙述卷积神经网络的四大根本组件:池化操作,激活函数,全衔接层,方针函数
解析通用的人脸辨认技能
AI 研习社将其共享内容收拾如下:
我今日跟咱们共享一下卷积神经网络在人脸辨认技能中的运用。首要介绍一下深度学习和机器学习的联系。人工智能包含了机器学习这一个子范畴,机器学习又包含了表明学习(一种能主动抽取特征的学习方法),而深度学习则是表明学习中最具代表性的一种学习。咱们今日要讲的 CNN 即卷积神经网络,就是深度学习中的一种。
机器学习的中心思维其实就是运用特征来学习到咱们所需求的常识,因而一种新的作业呈现了,那就是专门做特征工程的一类工程师。而特征工程的好坏,会影响机器学习终究效果。科学家们就想到,能不能让机器主动学习特征,而不需求让人去做特征工程呢?结论是:能够。表明学习就是运用特征去学习。
深度学习的运用,其实十分简略,就是端到端的学习,只需求三步:榜首,把数据给它(机器);第二,等深度学习处理完;第三,拿到成果。
下面,咱们来看一下咱们今日要讲的卷积神经网络的开展进程:
•1980 年,科学家提出了「神经认知」,现在以为「神经认知」是卷积神经网络的前身;
•1998 年,两位科学家提出了依据梯度学习的卷积神经网,叫 LeNet。它是榜首个大规划运用的图画辨认。美国其时许多的邮递作业,需求专人进行报邮编、寄送地址等作业。人工去做的话,功率很低,一个人一秒能辨认几个?就算辨认速度很快,可是人的速度越快,过错率可能就越高,所以这个 LeNet 就被运用于手写数字的字符辨认,而且过错率只要 1%,可大规划进行运用;
•2012 年,Hinton 团队提出卷积神经网络 Alex-net,该团队参加了李菲菲教授的 Image Net 的竞赛,拿到了冠军。其时它以比第二名进步 12% 的准确率遥遥领先。曾经,榜首名比第二名一般只会提早一、二个百分点,三、四个百分点就许多了,而这一次,这个团队一项就领先了十二个百分点。这是由于 Alex-net 榜首次用到了 ReLU 激活函数、最大池化、DROP Out 以及 GPU 加快这些新技能;
•2014 年,Google 提出Inception-net,里边的中心思维就是可重复堆叠的高效卷积神经网络结构,将过错率降到了 Alex-net 的一半;
•2015 年,微软的ResNet成功练习了152 层的深层次网络。曾经的一些神经网络,这边输入,中心是许多神经元,可是只要一层。而添加层次的技能,在其时难以获得打破。微软这个 ResNet 一下添加到 152 层,则算是一个打破。一同,它将过错率降低到 3.46%,再次刷新记录。
•尔后,根本上每年乃至每几个月都会呈现新一代的技能,例如新的网络结构,更深的网络的练习方法等。能够说,是 CNN 引领了这次深度学习的浪潮。
那卷积神经网络究竟是什么?它的中心是卷积操作。
咱们能够参阅下图,左上角是一个 5*5 的绿色矩阵,矩阵中的黄色区域是一个 3*3 的卷积核。黄色区域的效果,是把掩盖在矩阵上的数进行加权求和,核算出来的数(见紫色区域)将会被放入一个新的矩阵。
然后看右上角的第二张图片,黄色的区域向右移动一位,就是一步,这个「步」指的是步长——CNN 里边的另一个参数(一个参数是卷积核),这儿的步长被设置为 1 步。移动 1 步后,相同对黄色区域进行加权求和,又得出一个新的数(与榜首个数一同被放入紫色区域)。
咱们能够将整个黄色区域当作一个相框,巨细、长宽都是固定的,次序为从左往右、从上往下,移动三次,顺次会呈现三个新的数,再顺次放到下一个矩阵中进行核算。这是一种部分操作,原始数据(5*5 的输入)经过 9 次卷积,就能得到卷积后的成果。这个成果叫做卷积特征,它是一个新的 3*3 矩阵——这个矩阵又作为下一层操作的输入,并进行一些池化操作。
接下来咱们看一下 CNN 的作业流程。先看一下几个中心的概念:榜首个就是咱们方才讲的卷积操作;第二个就是池化操作,这个也是十分重要的;第三个就是它的激活函数、全衔接层和方针函数。
然后再看下方这张长图。榜首步,咱们先把原始数据输入给它(机器),然后以例如卷积层+池化层+激活函数的组合方式进行卷积操作。之后,再相同选用这种组合方式进行下一组卷积操作……就这样不断循环,直到把一切特征都抽取出来。接着,抽取出来的一切特征与全衔接层进行对接,得出猜测的值,并与方针值进行比照。终究,机器会对二者的差值进行修正,并从头练习。这是一个完好的作业流程。
接下来咱们再看一下卷积操作,它没有参数,咱们只需求给它设置最大池化和均匀池化。最大池化是指将掩盖区域的最大值取出来——它的意图就是把最显着的特征取出来,将一些不太显着的特征疏忽掉。
卷积操作有三大特色:
榜首个是特征不变性。咱们能够幻想一张图片卷积今后,图片的右下角为一条直线,假如它在图画的左上角辨认的(图形)卷积特征与直线的卷积特征共同,那左上角的这个图形必定也是一条直线,由于特征相同。这也是卷积神经网络里边的一个特性,即两个特征的相对方位要比它们在图片中的肯定方位要重要。
第二个特色就是特征降维。咱们上面用的是 5*5 的矩阵,但实际上 10024*798 的图片像素需求耗费很大的功能,而其中大部分都是没必要的核算,最大池化就是将最显着的特征取出来,放弃那些不太显着的特征,以节约一些核算资源。
第三个特色就是避免过拟合。由于抽取的都是最显着的特征,能够避免过度拟合。
下面咱们再看激活函数。曾经从事过机器学习的同学,可能会接触到另一个激活函数——sigmoid 函数,它是取值规模为 0-1 的一条曲线。
而咱们要讲的这个 ReLU 函数,可表明为下图的蓝线。它实际上是一个分段函数,当你给这个函数的值小于 0 的时分,不论负多少,都会回来一个 0。当你给它大于等于 0 的值的时分,也不论给出的是什么值,它都能回来自身(X),这其实是一个很简略的函数。
那激活函数究竟有什么用?
打个比方,我手上拿着一根针,要去扎另一只手,刚开端隔得很远,我不会感到疼,然后针渐渐挨近我的另一只手,直到终究扎到了,我手上的这块神经就会告诉我的大脑,我的手扎到了——我就会感到疼,这就相当于「激活」了。
针与我的另一只手的间隔有一个阈值,当这个间隔小于了这个阈值,并终究彻底贴近了,我的神经就会立刻告诉我的大脑(疼),然后激活我的「疼感」——激活函数就是这个原理。机器平常练习出来的一些东西,假如没有到达阈值,特征就不会被激活;而假如超越阈值,特征就会被激活并被输出。
再往下,咱们就以一个全体的视角来看一下卷积神经网络的运作。先看下面的这张图,这是一个字母 A,首要要进行卷积操作,之后再依据设置的卷积核和步长找到卷积核的特征,终究把一切激活的神经元和终究的全衔接层一一对应,经过矩阵乘法,看它们是否真实被激活。
全衔接层在整个 CNN 中起到「分类器」的效果,该效果一般在终究完成。
然后是方针函数。卷积神经网络中最多的回归问题,用的都是欧式(Euclidean)间隔,算法为:
。咱们一般选用最右边的公式,该公式为求和公式,从 1 开端取到 n,对两个数之间的差值进行核算。
这个欧式间隔有什么用呢?比方两个方针,假如间隔近,类似度就比较高。因而经过求欧式间隔,咱们能够判别它们是否近似。
卷积神经网络的根本原理以及几个中心概念都介绍完了。接下来咱们进入人脸辨认的环节,整体分为四步:榜首步就是人脸边框检测,第二步就是图画校准,第三步是图画转向量,第四步是向量比照。
榜首步人脸边框检测。一张图片上,有可能不止一张脸,而是有多张脸。不论有多少张脸,咱们先把契合人脸特征的边框找到,而且把边框给截取出来。
怎样截取?定位。就是依据人脸特征来进行定位,就像刚刚所说的,假如某个方位有一只眼睛,其对称的当地也有一只眼睛,那(机器)就能找到眼部方位,进而也能找到眼角部分。在人脸辨认中,边框特征规模十分重要,由于机器依托这些,就能够划出完好的脸部方位。机器能够参照的主要特征之一是下巴,由于嘴角能够打开或许合闭,可是下巴一般不会有太大变化。第二个是眉毛——找到眼睛了,眉毛就好找了。第三个是鼻梁、鼻尖,上、下嘴唇。
将这些特征都找到后,就要找到脸的边框——可能为方脸、瓜子脸以及圆脸,机器会在脸部边框上生成一些点,之后运用图形边框(如圆边框)去进行比照,发现差了一点,它就会不断调整系数,直到彻底契合。
但截取时,脸邻近需求留出必定间隔,不能彻底依照边框去截取,例如,上图中的头发部分,(人)可能戴了帽子,因而机器就不能进行彻底截取,而是在周围留出必定空间,再把图片截取出来。假如一张脸有多个点,那就截出多个人脸的边框。
第二步就是校准图画。这个概念其实跟核算机处理数据的思路共同。不论你给机器图片、语音、数字、字符串,或许是其他一些数据,它都会将其转化为核算机能够辨认的数据。
人脸校准也是,给机器的头不论是歪头、垂头仍是仰着头——方位都不正,那就先将脸边框截出来,为每个点进行定位(如下图中的绿点),再依据点定位出一个坐标,跟真实摆正的脸的坐标进行比照,二者相差的视点,就是头歪的视点,将图画反向旋转一下,图画就变正了。
这个效果也是十分有用的,由于它能够削减不必要的差错。机器学习也是这样,当你给它一堆没有处理过的数据进行练习的时分,它终究练习出来的成果不只有可能是欠好的,还有可能是相反的,为你做出的决议都是过错的。比方做产品智能引荐,假如输入的数据没有经过处理,乃至所设置的维度都是没有用的,机器可能会往过错的方向去做引荐。
因而对数据的处理十分重要,要去掉不必要的差错,并将一切的算法都放在真实有用的核算上面——这个思维很重要。
第三个是图画转向量。该图画转向量是怎样生成的?就是卷积、池化操作往后生成的图画向量。向量既有巨细又有方向,假如两个向量间的夹角十分小,那这两个向量就十分挨近。
经过比较向量间的夹角,能够判别两个方针是否类似。例如,咱们需求判别核算机视觉相关的两篇文章是否类似,首要咱们要找到两篇文章,将其中一篇文章的关键词提取出来——一个关键词就是一个向量,一切关键词都找出来今后,核算一下向量的方向和巨细。别的一篇也进行相同的操作,终究机器再对两组向量进行比照,假如简直重合,则阐明两篇文章的内容十分类似。向量的效果,在机器学习中是十分重要的。
图画转向量之后,就需求把这个向量核算出来,然后和方针函数的向量做比照,再用余项定理求出它们之间的夹角——前面两篇类似文章的比照,就运用了这必定理。这一向量与方针向量不必定要彻底重合,夹角在很小的情况下,只要在阈值之内,就能够判别二者类似,而阈值都是人为设置好的。
终究一步就是向量比照。相同的人脸,对应的向量间隔小;不同的人脸,向量间隔天然就大。
向量核算中的有一个名词——内积,它是对应元素乘积的求和,能够核算出方才上面所说到的夹角。公式为:
。夹角越小,阐明两张人脸越类似。