Johanna Pingel, MathWorks
盖伯瑞尔哈,MathWorks
概述
而深度学习可以实现先进的准确性对于对象识别和目标检测,很难火车,评估和比较深度学习模型。深度学习也需要大量的数据和计算资源。
在这个网络研讨会中,我们将探索如何用MATLAB®地址最常见的深度学习的挑战和洞察训练准确的深度学习的过程模型。我们将介绍新功能深度学习和计算机视觉物体识别和目标检测。
突出了
我们将用实际的例子来说明:
的主持人
Johanna Pingel于2013年加入MathWorks团队,专门从事与MATLAB图像处理和计算机视觉应用。她有伦斯勒理工学院硕士学位和卡内基梅隆大学的学士学位。她一直在计算机视觉的应用程序空间工作超过5年,关注对象检测和跟踪。
记录:2 2017年8月
你好,我的名字是约翰娜加布里埃尔和我们要讨论计算机视觉的深度学习。我们有一些很棒的新演示和功能。所以让我们开始吧。
是的,所以我们将开始通过设置一些上下文。我们有其他深度学习视频上我们的网站比这更短的研讨会,你应该看他们。但最主要的是,我们将进入更深度在这个网络研讨会相比其他视频。我们讨论的深度学习计算机视觉。深度学习是什么?这种类型的机器学习学习功能和任务直接从数据,这可能是图像、文本、或声音。
因为我们讨论计算机视觉,我们自然会看图像数据。只是记住,深度学习适用于许多其他任务,不处理图像。
正确的。我们来看一个快速的工作流的深度学习是如何工作的。假设有一组照片,其中每个映像都包含一个或四个不同类型的对象。和我们想要的东西可以在每个图像自动识别的对象。我们开始标记图像,这就意味着我们告诉深学习算法图像包含什么。这些信息,它开始理解对象的特定特性,并将它们与相应的类别。
您会注意到,任务是学会了直接从数据,这也意味着我们没有影响功能正在学到了什么。你可能会听到这被称为端到端学习,但在任何情况下,只要记住,深度学习学习特性直接从数据。
这是深度学习的基本工作流程。而深度学习的概念已经存在了一段时间,这是由于技术成为近年来更受欢迎,大大改善了这些分类器的准确性,,他们比人们在分类图像。所以也有几个因素,使深度学习,包括大型套带安全标签的数据时,强大的gpu加速训练,和能够使用他人的工作作为一个起点,培训自己的深层神经网络,我们将在稍后讨论。
是的,我们会的。所以我们深入了解事情之前,我们想给你一些背景和框架我们为什么做这个网络研讨会。深度学习是很困难的。它的前沿技术,它可以复杂,无论你是处理网络架构,了解如何训练一个精确的模型,将成千上万的训练图像。
是的,更不用说大家最喜欢的task-trying找出为什么不工作。
我们希望MATLAB使深度学习简单和可访问到每一个人。在这个网络研讨会,以及其他资源在我们的网站上,我们将解释如何快速开始使用MATLAB与深度学习。的例子在我们的网络研讨会还将演示如何处理大的图像,容易集成gpu训练深度学习模型更快,理解发生了什么在一个模型的训练,并构建模型从该领域的专家,所以你不需要从头开始。与此同时,让我们进入它。
是的。让我们做它。所以我们要讲三个例子使用pretrained网络深度学习分类,学习转移到新对象进行分类,并在图像和视频对象检测。首先是图像分类使用pretrained网络。这里我有一个形象的辣椒,我希望能够分类。,信不信由你,我能做到与MATLAB在四个基本的代码行。
1、进口pretrained模型。2、引入图像。3、调整图像。四、分类图像。
好了。
这就是它。
很酷。
好了,继续第二个演示-
他是在开玩笑。
是的,我在开玩笑。我们会谈论这是怎么回事。
所以这是什么AlexNet在第一行代码?亚历克斯,为什么我们要用他的净吗?
直接回答你的问题,AlexNet卷积神经网络是由不同的人设计的,包括亚历克斯Krizhevsky。但我应该提供一些背景。这个独立的项目与MATLAB一会儿叫ImageNet项目。和它的目标是有一个巨大的存储库的视觉内容,如图片,人们使用视觉物体识别的研究和设计。
它开始于2010年。他们每年的竞争称为ImageNet大规模视觉识别的挑战。
哦,是的。老ILSVRC。
是的,那竞争。所以竞争对手提交软件项目竞争中正确分类和检测对象(听不清)。现在,直到2012年,标准的方法来实现计算机视觉是通过这一过程被称为功能工程,而不是AlexNet,使用基于深度学习和改进的方法。所以你可以猜,AlexNet提交2012年ILSVRC在团队名称的监督下,一个单词。吹水的竞争,我想可以参考竞争对手和竞争本身。
和有很多的炒作不仅仅是因为人们意识到深度学习的理论。真的很实用和做事方式比我们之前一直在做的。所以除了历史教训,AlexNet训练认识到到底是1000种不同的对象,而我猜的胜利条件与ILSVRC 2012。的几个从MATLAB pretrained网络您可以访问,包括VGG-16和19。
我们有历史课吗?
我不会去对那些历史教训。让我们把它带回四行代码。首先看看MATLAB如何让它死容易导入pretrained模型。没有比这更容易。如果你没有AlexNet在你的电脑上,你只需要下载一次,不管它是通过插件管理器或使用错误的链接如果你运行代码而无需下载它。现在您可以使用这个演示和其他任何你想要的。
所以在第二行,你把图像中。这似乎非常简单。但是你为什么要调整图像?所以我第一次做这个,我想都是聪明,用三行代码。
没有调整吗?
是的。我有这个错误,提到了大小,也就是说,耶,我要找出为什么它不工作的原因。
每个人的喜欢做的事。
所以如果我做净点层,它会告诉我网络的体系结构。起初看起来吓人,但第一层,输入层,大小为227×227像素。x3的RGB值,因为这是一个彩色照片。所以看到,我想,哦,好。用MATLAB来调整图像不会传递到网络错误。和我们的最后一行代码现在可以分类图像。
所以你之前提到过AlexNet卷积神经网络。这是什么意思,我可以请叫它简称为CNN吗?
我的意思是,只要观众不要混淆这个网络研讨会一定有线新闻网络电缆News-oh。这是CNN代表什么,不是吗?嗯,除了CNN是一个自我指涉的有线新闻网络,这是一个流行的体系结构深度学习的图像和计算机视觉问题。AlexNet和独立,三个主要的事情了解的cnn卷积,激活,池。
卷积是一种数学运算,你可能还记得从任何大学课程介绍了傅里叶变换和拉普拉斯变换,不管是好是坏。我们的想法是我们把输入图像通过多个转换和他们每个人都从图像中提取某些特性。激活一个转换适用于卷积的输出。一个流行的激活函数是ReLU或ReLU番茄番茄,它需要输出和地图最高的积极价值。最后,将是一个过程,我们简化输出通过只有一个值进行下一层,这有助于减少模型需要的参数学习。
这三个步骤是重复,形成整个CNN架构,可以有几十或几百个层,每个学会检测不同的特性。MATLAB是一个整洁的事情,它使您能够看特征图。如果你比较特性接近初始层与特性接近最后一层,他们变得越来越复杂,从颜色和边缘的东西似乎更详细。
让我们来看看,在AlexNet的层。你可以看到曲线玲珑、激活和池。其他一些网络将这些层有不同的配置,但最后,他们都会有一个执行最后一层分类。通过几行代码,我们可以反复显示一个图像随着AlexNet认为它是什么。有时会,有时不会。但是它很好,只要对象是在1000年的原始设置。
这引出了一个问题,如果它不是你能做什么?
请允许我回答说,这是使用pretrained图像分类模型。让我们继续我们的第二个演示。
好吧。在接下来的演示,我们有视频的汽车行驶高速公路。我们希望能够把这些归为汽车、卡车、越野车。我们要用AlexNet和微调的网络对象的类别,这一过程被称为转移学习,可用于分类对象而不是在原来的网络。
还有我们的回答前面的问题。快速跟进。所以如果你有一个分类任务对象发生的1000年,你不会有任何理由用AlexNet。
好问题。将学习在这种情况下的主要好处是有特定于您的数据分类器。如果你训练较少的类别,你可以提高准确性。
是有意义的。
所以我把这段视频来自我的手机和我能够自动把它到MATLAB使用IP网络摄像头。这个函数允许我小时的视频记录的汽车旅行办公室的窗外。现在,使用MATLAB和计算机视觉,我能从每一帧的视频中提取汽车使用一个相对简单的过程被称为基于运动背景减法。
这只是看着两个连续图像之间的像素差异,拿出足够的东西是不同的。
车辆经过,我们希望其分类为一辆汽车,卡车,越野车。这不是什么AlexNet认为我们看。所以如果我们当前的模型不工作在我们的数据,我们需要一个新的模式。假设我们想要分类五个不同种类的车(卡车、大卡车、越野车和货车。我们的计划是使用AlexNet作为起点和使用学习转移到创建一个模型针对这五个类别。
所以你会用什么理由转移学习而不是说,从头开始训练一个网络?
所以从头培训肯定是你可以试一试。我们给你的所有工具MATLAB。但有一些非常实用的原因转移学习。例如,您不需要建立自己的网络体系结构,这就需要大量的反复试验才能找到一个好的组合层。同时,转移学习几乎不需要尽可能多的图像建立一个精确的模型相比从头开始训练。最后,你可以利用知识和技能从上深度学习领域的研究者们比我们花了更多的时间训练模型。
听起来不错。
这里有五个文件夹包含很多图片的五类。我们想要一个简单的方法将这些数据通过我们深入学习算法。早些时候,加布里埃尔imread用作一种辣椒的形象。但我们不想要这样做对于每一个图像。相反,我将使用一个名为图像数据存储的函数,这是一个引入数据的有效方法。
我们应该注意到,有许多不同种类的数据存储在MATLAB对不同大数据和数据分析任务。所以这不仅仅是图片。如果你有大量的数据,数据存储是你的朋友。
所以一旦点图像数据存储文件夹,它会自动标签我所有的数据基于包含图片的文件夹的名称。所以没有必要这么做。一旦我做了,我获得有用的功能,就像看到我有多少图片为每个类别,并能够迅速把图像分成训练集和测试集。
如果你需要,你还可以指定一个自定义阅读功能。图像数据存储默认imread阅读所有的图像,这是对标准图像格式。但是如果你碰巧有非标准的图像格式imread不知道如何处理,你只要编写自己的函数,传递到图像数据存储,然后好了。
即使你有标准的图像格式,你可以自定义阅读功能,图像预处理,如调整,锐化、去噪。在我们的例子中,使用AlexNet,我们需要调整到227年的227。我们使用这个自定义函数读取。
我注意到你没有做直接调整。它看起来像你填充的图像。原因是什么?
这只是从个人经验。我试着调整图像和网络不是做得很好。当我看了图片,我不能告诉轿车和越野车之间的区别。所以我做了一件同样的效果裁剪图像和维护方面的比率。因为这有助于保持结构上的差异,我认为可以帮助网络。所以你看到早些时候AlexNet分类很好我们自己的汽车和卡车。所以我们需要调整网络。
如果我们看一下层中,您可以看到最终的完全连接层代表1000类别AlexNet训练。执行转移学习,我们将1000替换为五个五个类别的对象。这条线,然后重置的分类,这意味着忘记你学到了那些1000个对象的名字。你只关心这五个新的。
这是唯一的核心改变你需要吗?
是的。这是所有你需要做的网络操作。如果你跑这,你会得到一个分类器将输出这五个对象之一。
所以我想的问题是,如何做呢?
事先我们训练网络,得到很好的结果,就像97%的准确率。
这是非常令人印象深刻的,两个小修改代码。
但老实说,你可能不会马上到这一点。记住AlexNet训练在数以百万计的图像,包括一些车辆。所以它是合理的假设它发生在顺利转移到我们的数据。但如果你将学习在其他,非常不同的图像从原始集,也许你可能不得不作出一些改变。
是有意义的。那么有些人可以尝试如果他们发现自己的准确性欠佳?
有很多东西,你可以试一试。我们会进入快速模式。你可以跟随这张幻灯片。首先,有些事情在你开始之前你可以改变参数。检查你的数据。我不能强调这足够了。最初,我的火车模型分类很多图片。我意识到我的一些数据是错误的文件夹。很明显,如果你的设置不准确,不管它是错误的文件夹或糟糕的训练数据,你不会很远。
下一步,试着得到更多的数据。有时,分类器需要更多的图片来更好地理解这个问题。最后,尝试不同的网络。我们正在与AlexNet,但正如我们提到的,还有其他的可用网络。并有可能不同的CNN可能提供更好的结果。
听起来不错。假设我很确定我设置正确。现在我能做些什么呢?
现在重要的是改变了网络和训练过程。让我们先从网络。更改网络意味着添加、删除或修改层。你可以添加另一个完全连接层的网络增加网络的非线性,可以帮助增加网络的准确性,根据数据。您还可以修改您的新层的权重学习,使他们学习的速度比之前的原始层网络。这是非常有用的,如果你想保留丰富的功能网络学习之前对其原始数据。
至于改变训练过程,重要的是改变训练选项。你可以尝试更多的阶段,更少的阶段,和其他选项,你可以在我们的网站找到文档。
所以说,这对我来说是公平的。似乎所有的选项,你把网络当作一个黑盒子。如果你训练它,它不是很好,然后你把这些修改,告诉它开始训练,等待完整的等待时间,然后你发现如果它只会让事情变得更好或更糟。所以有什么我们可以做的,中间的过程?
绝对的。我们有一组输出函数,可以告诉我们发生了什么在网络的训练。第一个情节列车网络的准确性。理想情况下,您希望看到向上趋势随着时间的准确性。如果这不是你所看到的,你可以停止训练,尝试修复它之前你可能浪费时间培训的东西并没有改善。你也可以停止训练初期,基于某些条件。这里我告诉网络停止如果我达到99.5%的精度。
我猜这是你不训练过度削减overfit网络。
是的。我们也有检查点的概念。你可以停止网络培训在一个特定的点,看看它在一个测试集,然后如果你决定它需要更多的培训,你不必从头开始。你可以拿起训练,你离开,就像你可能预料的那样,在我们的网站上有文档对我们许多不同的培训方案。如果你看看这里,你可以看到选项我只是outlined-plot训练精度,这里,停在指定的精度。所以肯定尝试这些例子。
是的,请。复制粘贴这段代码。有些人就像从来没有复制,粘贴代码你找到在互联网上。和我的意思是,喜欢,不盲目复制的东西,期望它只是工作。但是认真的家伙,让他没有复制粘贴网络代码是谁第一个错误消息。
你应该复制我们的代码。很高兴不用写出所有的代码更好的控制自己,有一些很棒的起点到培训过程。
假设我真的核心网络协调好了,我想让我删除的黑盒方面网络尽可能多。所以我想象你可能不能直接看到网络上所看到的。但是我们如何开始一个更亲密的理解我们的网络吗?
你可以做的一件事是可视化的网络发现功能在我们的图片。我们可以看看过滤器,我们可以看看这些过滤器后的结果图像。在第一个卷积,我们看到我们提取出边缘,黑暗与光明的模式。他们可能非常明显,或者并非如此。这一切取决于强烈的这些特性在图像。
所以你可以与你的网络层吗?
是的。让我们看看另一个。第四卷积这个图像的输出产生更抽象的东西,但有趣的特性。你可以假设这个频道是找到车轮和车的保险杠的特性。为了检验我们的理论,让我们尝试另一个图像的后轮不是可见的图像的左侧。如果我们的假设是正确的,那么这个通道的输出不能激活了左侧的图像。这就是我们看到的。
好了。所以如果你想调试网络,这种技术给你您的网络的可视化表示看到,可能帮助你获得更好的理解发生了什么。
是的。和所有的代码文档。网站上的例子是通过寻找特征脸,但是这是相同的概念。我们来看看一个工具,您可能会发现有用的称为深梦。梦想可以用来制造有趣的深处,艺术图片,你可能看到过网上。但这是另一个工具,我们可以用它来了解网络。深的梦想是将输出一个形象代表的特性在整个培训过程中学习。
这样一种理解,而不是让网络图像和它连接到一个类,我们走吧。我们给网络一个类,它给了我们一个形象。为什么这是有帮助的。
让我们看看文档。神经网络工具箱对深度学习伟大的页面。这里的概念是深的梦想之一,用AlexNet深梦的一个例子。我们可以看到这里我要求一只母鸡,其中一个类别AlexNet是训练有素的。和深度的梦想给了我有些抽象的版本的一只母鸡是什么样子。我们可以创建深梦为任何类别的网络图片。
如果我们看到的东西看起来不像类别,我们可以假设网络可能不是学习正确的类别。
是的,它可能是一个问题的训练数据。让我给你举个例子。1000年AlexNet最初的类别,它有一个松鼠一类。我正好有一群松鼠的照片我们可以试一试我们的网络。我们看到所有的预测是正确的,除了这一个。如果我们看看松鼠深梦,我们看到了什么?和怎样的头发,这是误认为是什么?有一些鲜明的颜色对应的最初几个图片我们尝试了。你可以看到特性与尾巴。这些强大的功能没有这一形象。
从那我想我们可以添加更多的测试图像包含这些类型的特性或缺乏我们的网络。
现在你有足够的开始深度学习,学习和更具体地说,转移。但是我们不能完全完成了我们的示例。记住一段视频中,我们显示汽车行驶的道路?我们试图与AlexNet分类,这就是为什么我们经历了所有的麻烦来创建自己的自定义模型。使用相同的算法来检测图像中的汽车,我现在可以使用我们的模型进行分类。我们可以看到我们的模型认为,预测的能力。
很好。
这是开始使用转移学习和很多小技巧和理解您的网络和取得进步。我们希望您已经看到了MATLAB便于处理大的图像,从该领域的专家访问模型,可视化和调试网络,并与gpu加速深度学习。
等等,你完全没有覆盖最后一个。
啊,所以你被关注。
是的,我是。
是的,我们没有明确覆盖它。但如果你仔细看培训视频,我们培训的输出消息表明,单一的GPU, NVIDIA®3.0计算能力的GPU,最低要求为深度学习使用GPU。和GPU的美丽与MATLAB计算都是在幕后处理。而你,作为一个用户,不必担心。MATLAB使用GPU在默认情况下,如果你有一个和所有的功能改变如果你使用GPU或GPU集群GPU在云中,甚至一个CPU。
你能用,CPU的培训?我喜欢你如何从大,大,大,然后萎缩到梗概计算。
是的,在技术上你可以使用一个CPU。但看看这次的视频试图培养相同的CPU和GPU深学习算法。
哇。这是非常出众。
是的。所有这些适用于任何训练过程的一部分,无论是培训,测试,或可视化网络。如果一个CPU是你唯一的选择,那么就去做吧。但我们鼓励您使用GPU训练,或至少确保你去度一个长喝咖啡在训练模型。
好吧。对于我们最后的演示,我们将讨论一个更具有挑战性的问题经常被带到我们的注意力。看看这张图片。如果我们将它呈现给我们的网络,它会认为它是什么?在任何情况下,到目前为止,我们只显示整个图像到一个类别分类的例子。但在这幅图像中,显然有很多种类的车辆在多个位置。我们训练的网络不能够告诉我们。
所以这个经典问题称为对象检测,或者定位场景中的对象。在这个例子中,我们看到一些车辆的背后。我们的目的是检测他们。所以我们需要创建一个对象探测器,承认我们关心的对象。现在,我们应该如何做呢?
嗯,这个网络研讨会已经深度学习的主题,所以深度学习怎么样?
太棒了。如果我们要训练一个车辆探测器识别汽车从后面,它需要大量的图像进行训练。现在,问题是我们的图像数据还没有裁剪到个人汽车,这意味着乍一看我们得通过裁剪和标签的乏味任务从头开始我们所有的图片。这个会议应该有多长?
30分钟或更少。
我不认为我们能做到这一点。除非我们有MATLAB。耶。我很抱歉。所以MATLAB的内置应用程序帮助您完成这一过程。举例来说,你可以快速地浏览所有数据和绘制场景中物体边界框。现在,尽管比手工裁剪,你不想要做100或1000次。如果你有一个视频或图像序列,MATLAB可以自动化标识场景中物体的过程。
在视频的第一帧,我指定对象的位置。现在MATLAB将跟踪它在整个视频。就这样,我有成百上千的新标签的汽车不需要做100次。现在我们有我们所有的图像对象的边界框。再一次,对于现实世界和健壮的解决方案,您需要成千上万的对象的例子。金宝搏官方网站所以想象没有应用程序试图这样做手工。
深度学习。我们要用一个CNN训练对象探测器。我们可以完全导入pretrained CNN像我们之前做的,这样就完全工作。但给你们新的东西,我们要从头开始创建一个CNN的架构。所以我们不会一切实时打印出来,但在MATLAB是从头开始创建一个CNN的卷积,激活,把layers-three你之前讲过的事情。
这就是我们这里的序列。你可以决定过滤器使用的数量。因为我们会让所有可用这段代码,可以随意使用它并感受从头创建自己的CNN。现在是时候来训练我们的检测器。与MATLAB计算机视觉工具,我们有几个对象探测器可以选择。很好,您可以使用相同的训练数据为任何你选择的其中一个。所以从这段代码中,您可以看到你可以尝试所有这些很简单,看看他们如何做。
我们有文档这些探测器,将提供建议哪一个使用在某些情况下。所以一定要看,如果你打算利用目标检测。
是的。我们训练有素的探测器。我们会尝试在一个示例图像。在这里你可以看到结果。看起来很好。但更令人印象深刻的演示,让我们尝试一下视频。它,如你所见,开车高速公路。所有的汽车分类。这是相当漂亮的。对于高级用户,您可以访问辅助函数得到更好地了解它的性能。
的MATLAB使它容易做到目标检测快速标签数据内置应用程序与深度学习和训练你的算法在计算机视觉和其他工具。包装的事情,请记住,虽然在我们的示例中,我们使用了很多车辆MATLAB和深度学习不仅限于分类车辆。所以无论是人的脸,狗的品种,或一个巨型松鼠集合,你可以轻松地与MATLAB。
我想很快打电话给我们支持与深度学习解决回归问题,这意味着,而不金宝app是输出一个类或类别,可以输出一个数字值。我们有一些这样的例子,你可以检测车道边界在路上。对于那些你厌倦了听到汽车,我们有一个预测面部关键点,可以用来预测一个人的面部表情。
所以今天我们看到的一些新的东西你可以用MATLAB和深入学习。我们希望你能够清楚地看到MATLAB使深度学习的艰巨的任务变得更加容易。所以一定要检查所有的代码用于我们的研讨会并尝试在自己的数据。
如果你去添加经理,你让我们pretrained网络,在同一个地方你可以找到一些其他资源与深度学习起来运行,包括视频,展示了如何使用MATLAB快速分类对象和一个摄像头。
在我们的网站上查看我们的其他资源对于深度学习的开始,并随时给我们发电子邮件与任何问题image-processing@mathworks.com。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。