SERVICE PHONE

13920192029
NEWS 新闻资讯
你的位置: 首页 > 新闻资讯
尖端人脸识别很复杂,我用这些电子表格让它变得更容易!

发布时间:2024-11-15 19:48:25  点击量:

  点击上方关注,All in AI中国

  机器学习可能很复杂,在你刚开始学习时你可能会感到害怕。 另一方面,电子表格很简单, 它们可以帮助您以直观的方式可视化代码背后发生的事情。

  使用在线电子表格(您可以使用下面的链接查看或下载),我将向您展示计算机视觉中使用的卷积神经网络(“CNN”)如何工作。会涉及一些数学的问题,但基本上遵循电子表格中的所有公式即可:

  https://drive.google.com/open?id=1TJXPPQ6Cz-4kVRXTSrbj4u4orcaamtpGvY58yuJbzHk

  用电子表格模型来查看图片,分析其像素,并预测它是否是Elon Musk、Jeff Bezos、orrrrr Jon Snow ......显然是Skynet(终结者中的天网)是最大的威胁之一。

  终结者视觉 - 在电子表格中创建卷积神经网络

  这篇文章将涵盖上述9个步骤,并使用每个步骤的类比来帮助增强你的直觉。

  我们的目标是为您提供一个简单的机会学习入门途径,并通过易于理解的电子表格向您展示尖端AI“幕后”的工作。

  计算机视觉是Facebook面部识别系统背后的基础,是中国奥威尔式大众监控系统,很快,你的车:

  视频加载中...

  大图类比:CNN就像夏洛克

  让我们首先假装在终结者的心灵中生活着一个名叫夏洛克的特殊侦探。他的工作是仔细查看证据(输入图像)并使用他敏锐的眼睛和演绎能力(特征检测),预测谁在图片中并破解案例(正确分类图像)。

  以下9个步骤中的每个步骤都将成为这个大图片类比的一部分。

  卷积神经网络结构

  输入:一张图片胜过一千个数字

  天网的最大威胁是伊隆马斯克

  当我看这张照片时,我看到了一个有远见的人。 一个人正在同时改善地球并建造一个逃脱它的火箭,以防终结者试图炸掉它。与计算机不同,我看不到像素值,我看不出图片是由红色、绿色和蓝色叠加组合形成:

  另一方面,计算机(即天网)是只能看到数字。

  将数码照片看作3个电子表格(1个红色、1个绿色、1个蓝色)堆叠在一起,每个电子表格都是数字矩阵。拍摄照片时,相机会测量到每个像素的红色、绿色和蓝色光量。 然后,按0-255的等级对每个像素进行排名,并将它们记录在电子表格中:

  在上面的28x28图像中,每个像素由3行(1个红色,1个蓝色和1个绿色)表示,其值为0-255。 像素已根据其值有条件地格式化。

  终结者只看到了一堆数字

  如果我们将每种颜色分成单独的矩阵,我们会有3个28x28矩阵,每个矩阵都是我们用来训练神经网络的输入:

  模型输入

  *补充工具栏:如果您想了解如何在大约30秒内将任何图片转换为有条件格式的Excel文件,请点击:

  http://think-maths.co.uk/spreadsheet

  你将学习如何使用你的电子表格同事喜欢的“Ex-celfie”...相信我,他们会在电子表格中看到你的杯子(或他们的杯子)good笑(small小图片效果最好))。

  训练概述 - 像计算机一样,像孩子一样

  你出生的时候,你知道狗是什么吗? 当然不知道。 但随着时间的推移,你的父母会在书中、卡通片、现实生活中向你展示狗的照片,最终,你可以指着那些四条腿的毛茸茸的动物,认出它们是“狗”。大脑中数十亿神经元之间的联系变成了让你可以识别狗。

  终结者将会以同样的方式看到Elon Musk。 通过一个称为监督训练的过程,它展示了成千上万的Elon Musk、Jeff Bezos和Jon Snow的照片。 起初,它有三分之一的机会猜测它是谁......但就像一个孩子的成长,它会随着时间的推移而改善,因为它在训练期间看到了更多的图像。 网络的连接或“权重/偏差”随时间更新,使得它可以基于像素输入预测图像输出。 这是第1部分讨论的学习过程(梯度下降)。

  CNN学习去看 - 训练循环

  那么是什么使卷积神经网络与普通神经网络不同?

  用2个词:平移不变性。

  让我们解构下它的意思:平移=从1个地方移动到另一个地方不变性=它不会改变

  对于计算机视觉,这意味着无论对象在图像中的移动位置(平移)是什么样子,它都不会改变该对象的内容(不变性)。

  平移不变性

  卷积神经网络必须经过训练才能识别出Elon的特征,无论他在图像中的位置,无论他的大小。

  CNN擅长识别图像任何部分的图案,然后将这些图案叠加在一起,以构建更复杂的图案,就像人类一样。

  在普通神经网络中,我们将每个单独的像素视为我们模型的输入(而不是3个矩阵),但这忽略了这样的事实:像素靠近在一起具有特殊的意义和结构。有了CNN,我们可以查看彼此相邻的像素组,这样模型就可以了解到局部的图案,比如,形状、线条等。如果CNN在黑色圆圈周围看到许多白色像素,它会将此模式识别为 眼睛。

  为了让CNN实现平移不变性,他们依靠侦探福尔摩斯的特征检测。

  《福尔摩斯探案集》——特色侦探

  夏洛克搜索功能

  “夏洛克生活在终结者的心中”。 使用他的放大镜,他一次次去仔细检查一张图像,找到该图像的重要特征或“线索”。当他收集简单的线条和形状的线索时,他会将它们堆叠在一起,就会渐渐看到像眼睛或鼻子这样的面部特征。

  每个卷积层都包含一堆特征映射或相互构建的“线索”。在案件结束时,他将所有这些线索都放在一起,才能够破解案件并正确识别他的目标。

  每个功能图都像是另一个“线索”

  网络的每个卷积层都具有一组特征图,这些特征图可以以下面的分层方式来识别越来越复杂的图案、形状。

  CNN使用数字模式识别来确定图像的最重要的特征。 由于它将这些模式堆叠在一起,层次更多,因此可以构建非常复杂的特征映射。

  现实生活中的CNN也和夏洛克完全一样:

  卷积神经网络检测特征

  CNN如此惊人的原因是他们自己可以自己学习这些功能。工程师就像是架构师,他们告诉夏洛克,“我给你2张空白的特征图(”线索“)堆栈(”卷积层“),你的工作是分析图片并找到最重要的线索。第一个堆栈有16个特征映射(“线索”),第二个堆栈有64个特征映射,现在使用你的侦探技能去解决案例吧。”

  为了让Sherlock找到案件中的“线索”(即“计算一张特色地图”),他会在他的“侦探”套件中选择几个工具,我们将一一介绍:滤波器 - 夏洛克的放大镜卷积数学 - 滤波器权重x输入图像像素Striding - 在输入图像周围移动过滤器Padding - 像“犯罪现场录像带”,以保护线索

  夏洛克的“放大镜”/滤镜

  夏洛克毫无疑问具有敏锐的观察能力,但如果没有他的特殊放大镜或“过滤器”,他就无法完成他的工作。他会使用不同的放大镜来帮助他填写每个空白特征图的细节。所以,如果他有16张特色地图,就会有16个放大镜。

  每个放大镜由多层玻璃组成,每层玻璃由不同重量的玻璃组成。玻璃层的数量,我们的“过滤器深度”,总是与他正在观察的输入层的层深度相匹配。

  起初,Sherlock正在查看我们的输入图像,它有3层,红色、绿色和蓝色。所以...我们的放大镜也有3层。

  当我们建造CNN时,我们的层深度增加,所以放大镜也会变厚。

  为了让夏洛克建立1个特征地图或“线索”,他首先取出1个放大镜并将其放在输入图像的左上部分。红色玻璃层只能看到红色输入图像,绿色玻璃看到绿色图像,蓝色玻璃看到蓝色图像。

  现在进行数学计算。

  卷积数学

  我们的要素图中的每个像素都是线索的一部分。为了计算每个像素,夏洛克必须执行一些基本的乘法和加法。

  在下面使用5x5x3输入图像和3x3x3滤波器的示例中,1像素需要27次乘法:每层3层x 9的卷积= 2727个数字中的每一个都加在一起。在将27个计算结果加在一起之后,我们再增加1个数字——我们的偏差。

  卷积计算——夏洛克建立他的特征地图或“线索”

  让我们放大并查看数学。一个像素由27次乘法组成(每层3层×9次乘法),下面的屏幕截图显示了27次乘法中的9次:

  元素的乘法运算——计算一条线索

  就偏见而言,您可以将其视为一个放大镜的手柄。与权重一样,它是模型的另一个参数,每次训练都会调整以提高模型的准确性并更新要素图的详细信息。

  过滤权重——在上面的例子中,我将权重保持为1和0以使数学更容易;但是,在普通神经网络中,您可以使用随机较低的值初始化起始权重。使用钟形曲线或正态分布类型方法,如(.01)和0.1之间的值。

  Striding——移动“放大镜”

  在计算了特征图中的第一个像素后,夏洛克在哪里移动他的放大镜?

  Striding ——移动放大镜,一次一个像素

  答案取决于参数。作为架构师、工程师,在计算他的特征图中的下一个像素之前,我们必须告诉夏洛克他应该移动多少像素或大步向右移动多少的像素。在实践中,2或3的步幅是最常见的,但我们将坚持使用1以保持简单。这意味着夏洛克将他的“放大镜”向右移动1个像素,然后他将执行与之前相同的卷积计算。

  当他的玻璃到达输入图像的最右边时,然后他将放大镜向下移动1个像素,一直向左移动。

  为什么你会超过1?

  优点:

  通过减少计算和减少存储在内存中的计算,使模型更快。

  缺点:

  您丢失了有关图片的信息,因为您会跳过像素并可能错过看到的图案。

  2或3的步幅通常是有意义的,因为紧邻的像素通常具有相似的值,但是如果它们相距2-3个像素,则更有可能是对于特征图、图案重要的像素值的变化。

  如何防止信息丢失(丢失线索)

  为了让夏洛克破解他的案子,他在案件开始时需要很多线索。在上面的例子中,我们采用了一个5x5x3图像,或75像素的信息(75 = 5 x 5 x 3),我们只得到了一个3x3x2图像,或18像素(18 = 3 x 3 x 2)在第一个卷积层之后。这意味着我们失去了证据,这让他的搭档John Watson非常沮丧。

  在CNN的前几层中,夏洛克更喜欢一些微小的模式(更多线索)。在后面的图层中,可以“down-sample”(降采样),并减少像素的总体积(减少线索),因为夏洛克会堆叠微小的线索并查看较大的图案。

  那么我们如何在CNN开始时防止这种信息丢失呢?

  #1:填充 - 我们必须在图像周围“填充”来保护犯罪现场。

  Padding

  在我们的例子中,我们只能在我们到达右边缘之前移动过滤器3次...并且从上到下都是相同的。这意味着我们得到的输出高度/宽度为3x3,我们从左到右丢失了2个像素,从上到下移动我们的滤镜时又损失了2个像素。

  为了防止这种信息丢失,通常用零填充原始图像(称为“零填充”或“相同填充”)...这有点像犯罪现场磁带,这样才能确保没有人篡改这样的线索:

  在填充之后,如果Sherlock再次使用相同的放大镜,他的2个特征图将是5x5而不是3x3。

  这意味着我们将留下50个像素的信息,因为这个卷积的新输出是5x5x2 = 50。

  50像素比18好。但我们从75像素开始的,所以我们仍然缺少一些线索。

  那么我们还能做些什么?

  #2:更多过滤器 - 通过向卷积层添加至少1个特征映射,为夏洛克提供更多线索

  我们的模型具有的特征映射数或“线索”没有限制,这是我们控制的参数。

  如果我们将要素图从2增加到至少3(5x5x2 ...到... 5x5x3),那么我们的总输出像素(75)与输入像素(75)匹配,我们确保没有信息丢失。如果我们将地图增加到10,那么当我找到他的线索时,我们会有更多的信息让夏洛克排序(250像素= 5 x 5 x 10)。

  总之,前几层中的总像素信息通常高于我们的输入图像,因为我们希望为夏洛克提供尽可能多的微小线索/模式。在我们网络的最后几层中,下采样具有较少的像素是常见的,因为这些层正在识别图像的较大图案。

  非线性模式识别 - ReLUs

  在一个案例中为夏洛克提供足够的信息很重要,但现在是时候进行真正的侦探工作了——非线性模式识别!就像耳朵的曲率或鼻子的鼻孔。

  到目前为止,夏洛克已经做了一堆数学运算来构建他的特征映射,但每个计算都是线性的(采用输入像素并对每个像素执行相同的乘法/加法),因此,他只能识别像素的线性模式。

  为了在CNN中引入非线性,我们使用称为整流线性单元的激活函数或简称为“ReLU”。在我们从第一个卷积计算我们的特征映射之后,每个值都通过此函数运行,以查看它是否亮起或“激活”。

  如果输入值为负,则输出变为零。如果输入为正,则输出值保持不变。 ReLU的作用类似于开/关开关,在通过ReLU运行要素图的每个值后,您将创建非线性模式识别。

  回到我们最初的CNN示例,我们将在卷积后立即应用ReLU:

  虽然有许多非线性激活函数可用于将非线性引入神经网络,但ReLU是当今CNN中最常用的,因为它们具有计算效率, 可以更快的学习。 查看Andrej Karpathy对非线性激活函数的概述,以了解每个函数的优缺点。

  Max Pooling - 保持大脑中的关键

  现在,夏洛克有一些功能图或“线索”,开始查看,他如何确定哪些信息对于不相关的细节至关重要?

  夏洛克认为人脑就像一个空阁楼。傻瓜才会在那里存放各种各样的家具和物品,这样有用的信息最终会在所有混乱中丢失。 聪明人只存储最重要的信息,因为这些信息可以让他们在被召唤时快速做出决定。这样一来,《神探夏洛克》里的“脑阁楼”(brain attic)就变成了“max pooling”。为了让他迅速做出决定,他只保留最重要的信息。

  通过最大池化,他查看像素的邻域并且仅保留“最大”值或“最重要”的证据。

  例如,如果他正在观察2x2区域(4个像素),他只保留具有最高值的像素并丢弃其他3个。这种技术使他能够快速学习并且还帮助他概括(而不是“记忆”) 他可以存储和记住未来图像的线索。

  与之前的放大镜过滤器类似,我们还控制最大池的跨度和池大小。 在下面的示例中,我们假设步长为1和2x2池大小:

  最大池——在定义的值邻域中选择“最大”值

  在最大池化之后,我们完成了1轮卷积/ ReLU /最大池化。

  在典型的CNN中,在我们进入分类器之前,会有几轮卷积/ ReLU /池。 每一轮,我们都会在增加深度的同时挤压高度/宽度,这样我们就不会丢失一些证据。

  第1-5步的重点是收集证据,现在是夏洛克查看所有线索并解决案例的时候了:

  现在我们有了证据,让我们开始理解这一切......

  当夏洛克到达训练循环结束时,他有一大堆散落在整个地方的线索,需要一种方法来同时查看所有这些线索。 每条线索都是一个简单的二维价值矩阵,但我们有成千上万的堆叠在一起。

  作为一名私人侦探,夏洛克需要在这种混乱中茁壮成长,也必须将他的证据带到法庭并组织他们作陪审团。

  要素图

  它采用的是这样一种方法:每个像素的2-D矩阵都变成1列像素我们的2-D矩阵中的每一个都放在另一个上面。

  这就是人类眼睛的转变......

  回到我们的例子,这是计算机看到的......

  既然夏洛克已经组织了他的证据,他现在是时候让陪审团相信证据明确指出了1个嫌疑人。

  在完全连接的层中,我们将证据连接到每个嫌疑人。 从某种意义上说,我们通过向他们展示证据以及与每个嫌疑人之间的联系,为陪审团“连接点”:

  完全连接的层 - 将证据连接到每个嫌疑人

  以下是计算机使用我们的数值示例看到的内容:

  完全连接的层

  在展平层和3个输出中的每个证据之间是一堆权重和偏差。 与网络中的其他权重一样,当我们首次开始训练CNN时,这些权重将以随机值初始化,并且随着时间的推移,CNN将“学习”如何调整这些权重/偏差以导致越来越准确的预测。

  现在是夏洛克破解案件的时候了!

  在CNN的图像分类器阶段,模型的预测是具有最高分数的输出。目标是获得正确输出的高分和不正确输出的低分。

  这个评分函数有两部分:Logit Score - 原始分数Softmax - 每个输出的概率在0-1之间。所有分数的总和等于1。

  第1部分:Logits - 逻辑分数

  每个输出的logit分数是基本的线性函数:

  Logit分数=(证据x权重)+偏差

  每一个证据乘以连接证据与输出的权重。所有这些乘法都加在一起,我们在末尾添加一个偏差项,最高分是模型的猜测。

  Logit分数计算

  那我们为什么不就此止步呢? 2个直观原因:夏洛克的自信程度 - 我们想知道他有多么自信,所以当他高度的自信并且他是对的时候我们可以奖励他......当他高度自信并且他错了时会惩罚他。当我们在最后计算损失(“夏洛克的准确性”)时,会获得此奖励/惩罚。夏洛克的置信加权概率 - 我们想要一种简单的方法将这些解释为0-1之间的概率,我们希望得到与实际输出(0或1)相同的预测分数。实际的正确图像(Elon)有1,其他不正确的图像(Jeff和Jon)有0。将正确输出转换为1并将错误输出转换为零的过程称为单热编码。

  夏洛克的目标是让他的预测尽可能接近1,以获得正确的输出。

  第2部分:Softmax - 夏洛克的置信度加权概率分数

  2.1.夏洛克的自信程度:

  为了找到他的置信水平,我们取字母e(等于2.71828 ......)并通过logit得分提高或“取幂”它。分数越高,自信心越高,分数越低,自信心越低。

  此取幂计算还确保我们没有任何负分数。由于我们的logit分数“可能”为负数,所以这是取幂后假设logit分数发生的情况:

  “信心”曲线

  2.2夏洛克的置信加权概率:

  为了找到置信加权概率,我们将每个输出的置信度量除以所有置信度得分的总和,这给出了每个输出图像的概率,所有这些都加起来为1。使用我们的Excel示例:

  SOFTMAX

  这个softmax分类器很直观。 夏洛克认为,终结者看到的照片是伊隆马斯克的97%(置信度加权)机会。

  我们模型的最后一步是计算我们的损失。

  每个神经网络都有一个损失函数,我们将预测与实际情况进行比较。当我们训练CNN时,随着我们调整网络的权重/偏差,我们的预测得到改善(夏洛克侦探技能变得更好)。

  CNN最常用的损耗函数是交叉熵损失。谷歌对交叉熵的搜索引发了许多希腊字母的解释,因此很容易混淆。尽管描述各不相同,但它们在机器学习的背景下都是相同的,所以我们将覆盖下面最常见的3个,这样它就会为你“点击”。

  在处理每个公式变体之前,以下是他们各自做的事情:比较正确等级(Elon,1.00)的概率与CNN对Elon的预测(他的softmax得分,0.97)当他对正确等级的预测接近1 =低成本时,奖励夏洛克当他对正确等级的预测接近0 =高成本Pen时,惩罚夏洛克

  这些都导致了相同的答案! 3种不同的解释......

  #1解释 - 实际概率与预测概率之间距离的度量

  距离捕获的直觉是,如果我们的预测对于正确的标签接近1,则我们的成本接近0。如果我们的预测接近于0以获得正确的标签,那么我们将受到严厉惩罚。目标是最小化正确类别预测(Elon,0.97)与正确类别(1.00)的实际概率之间的“距离”。

  在解释#2中讨论了奖励/惩罚“对数”公式背后的事情

  #2解释 - 最大化对数似然或最小化负对数可能性

  在CNN中,“log”实际上意味着“自然对数(ln)”,它是在softmax的步骤1中完成的“取幂/置信度”的倒数。

  日志计算不是采用实际概率(1.00)并减去预测概率(0.97)来计算成本,而是夏洛克将他的预测距离1.00更远。

  交叉熵——2.对数损失解释

  #3解释 - KL分歧

  KL(Kullback-Leibler)发散度衡量我们的预测概率(softmax得分)与实际概率的差异程度。

  该公式分为两部分:我们实际概率的不确定性。在机器学习的监督训练中,这始终为零。我们100%肯定我们的训练形象是Elon Musk。如果我们使用预测的概率,会失去很多“信息位”。

  3.交叉熵 - KL发散解释

  在我们特殊的卷积侦探夏洛克的帮助下,我们给了终结者一双眼睛,所以他现在有能力寻找并摧毁自由世界的保护者“ Elon Musk”(对不起Elon!)。

  虽然,我们只训练终结者来区分Elon、Jeff和Jon ......但天网其实拥有无限多的资源和训练图像,因此它可以利用我们构建内容并训练终结者来查看任何人或物。

  其他资源 - 互动

  画一个数字然后用CNN预测它

  使用Google +您的网络摄像头训练您自己的CNN(或只是观看)

  Andreij Karpathy的实时图像分类模型

  查看Fast.AI在CNN上的YouTube视频(非互动,但有精彩的讲座和深度学习系列)

  我们未来的命运掌握在与机器的战争中

  终结者的愿景

  作者:Dave Smith

  编译出品

地址:广东省广州市4008云顶集团孵化园区  电话:020-66889888 手机:13920192029
Copyright © 2019-2029 4008云顶集团网站 版权所有 ICP备案编:粤ICP备201920239号