Johanna Pingel,MathWorks
加布里埃尔·哈,马修斯
概述
虽然深度学习可以在对象识别和对象检测方面达到最先进的精度,但深度学习模型的训练、评估和比较可能会很困难。深度学习还需要大量的数据和计算资源。
在本次网络研讨会中,我们将探讨如何使用MATLAB®解决最常见的深度学习挑战,深入了解培训准确深度学习模型的过程。我们将介绍用于对象识别和对象检测的深度学习和计算机视觉的新功能。
集锦
我们将使用真实世界的例子来演示:
关于演示者
Johanna Pingel于2013年加入MathWorks团队,专攻图像处理和MATLAB计算机视觉应用。她拥有伦斯勒理工学院的硕士学位和卡内基梅隆大学的学士学位。她在计算机视觉应用领域工作了5年多,专注于目标检测和跟踪。
记录:2017年8月2日
你好,我的名字是Johanna和Gabriel在一起,我们将讨论计算机视觉的深度学习。我们有一些很棒的新演示和功能要向您展示。让我们开始吧。
是的,我们先来设定一些背景。我们的网站上还有其他深度学习视频,比本次网络研讨会短得多,你也应该观看。但最重要的是,与其他视频相比,我们将在本次网络研讨会上深入探讨更多内容。我们在谈论计算机视觉的深度学习。什么是深度学习?这是一种机器学习,直接从数据中学习特征和任务,数据可以是图像、文本或声音。
因为我们正在讨论计算机视觉,我们会很自然地看着图像数据。但是,仅仅记住,深度学习适用于不与图像处理许多其他任务。
正确的。让我们来看看深度学习的工作流程。假设我们有一组图像,其中每个图像包含一个或四个不同类型的对象。我们想要的是能够自动识别出每个图像中的物体的东西。我们从标记图像开始,这意味着我们告诉深度学习算法图像包含什么。有了这些信息,它就开始了解对象的特定特征,并将它们与相应的类别相关联。
你会注意到,任务从数据来看,这也意味着我们没有在功能正在学到的任何影响直接了解到。你可能听说过这种被称为端至端的学习,但在任何情况下,只要记住,深度学习获悉直接从数据功能。
这就是深度学习的基本工作流程。虽然深度学习的概念已经存在了一段时间,但由于技术极大地提高了这些分类器的准确性,使得其在图像分类方面的表现优于人们,因此近年来它变得更加流行。因此,也有几个因素可以实现深度学习,包括大量标记数据、功能强大的GPU来加速训练,以及将他人的工作作为训练自己的深度神经网络的起点的能力,我们将在后面讨论。
是的,我们会的。所以,在我们深入讨论之前,我们想给你们一些背景知识和框架来解释我们为什么要做这个网络研讨会。深入学习是困难的。这是最前沿的技术,而且它可能会变得复杂,无论你是在处理网络架构,理解如何训练精确的模型,还是合并成千上万的训练图像。
是啊,更何况大家的喜爱的任务,试图弄清楚为什么有些东西不能正常工作。
我们要MATLAB进行深度学习方便,向所有人。在这个研讨会,我们的网站上的其他资源一起,我们将解释如何,你可以很快上手使用MATLAB深度学习。在我们的网络研讨会中的示例还将演示如何处理大量图像集,轻松地集成图形处理器更快地培养深度学习模式,了解什么是模型,因为它的培训内发生的事情,并建立在模型从该领域的专家,所以你不要不得不从头开始。有了这样的,让我们来看看它。
是的。我们开始做吧。所以,我们要覆盖使用预训练的网络深度学习,图像分类的三个例子,传递学习新的对象分类,目标检测中的图像和视频。所以,首先是使用预训练网络图像分类。所以,我在这里的辣椒有一个形象,我希望能够进行分类。而且不管你信不信,我可以在代码中有四个基本路线与MATLAB做到这一点。
第一,导入预训练模型。第二,把图像带进来。第三,调整图像大小。第四,对图像进行分类。
美好的
就这样。
非常酷。
好的,继续第二个演示-
他在开玩笑。
是的,我在开玩笑。我们来谈谈这里发生了什么。
所以,这是什么AlexNet中的第一行代码?谁是亚历克斯,我们为什么用他的网呢?
为了直接回答你的问题,AlexNet是一个卷积神经网络,由很多人设计,包括Alex Krizhevsky。但我可能应该提供一些背景。所以有一个与MATLAB无关的独立项目叫做ImageNet项目,已经有一段时间了。它的目标是拥有一个庞大的视觉内容库,比如图像,供人们在视觉对象识别方面进行研究和设计。
所以它始于2010年。他们每年竞争称为想象成的大规模视觉认可挑战。
哦,是的。旧的ILSVRC。
是的,那场比赛。因此,竞争对手提交的软件程序能够在[听不见的]环境中正确分类和检测物体。现在,直到2012年,实现计算机视觉的标准方法是通过一个称为特征工程的过程,而不是AlexNet,它使用并改进了基于深度学习的方法。因此,正如你可能猜到的,AlexNet是在团队名称监督下提交给2012年ILSVRC的,一个词。它把竞争搞得一败涂地,我想这可能是指竞争对手和竞争本身。
因为人们意识到深度学习不仅仅是理论上的,所以有很多关于它的炒作。它非常实用,而且比我们以前做的事情做得更好。撇开历史课不谈,AlexNet经过训练,能够识别1000个不同的物体,我猜这与2012年ILSVRC的胜利条件有关。这是可以从MATLAB访问的几个预训练网络之一,其中还包括VGG-16和19。
我们有历史课吗?
我不会为这些人上历史课。让我们回到我们的四行代码。所以,首先看看MATLAB是如何使导入预训练模型变得非常容易的。就像,没有比这更容易的了。如果您的计算机上没有AlexNet,则只需下载一次,无论是通过附加模块管理器下载,还是在未下载代码的情况下运行代码时使用错误中的链接。现在,您可以将其用于此演示和其他任何您想要的内容。
因此,在第二行,你将在图像中。这似乎很简单。但是为什么你调整图像大小?所以我第一次这样做,我试图将所有的聪明,做三行代码。
如果不调整大小?
是 啊我得到了这个错误,它提到了一些关于尺寸的问题,这意味着,耶,我要找出为什么它不起作用。
每个人最喜欢做的事。
因此,如果我做净点层,它会向我展示网络的架构。它看起来首先令人恐惧,但第一层,输入层的大小为227×227像素。结束时的X3是RGB值,因为这是彩色照片。所以看到了,我就像,哦,好的。只需使用MATLAB调整图像大小,因此它不会在通向网络时出错。我们的最终代码行现在可以对图像进行分类。
所以你刚才提到,AlexNet是卷积神经网络。这是什么意思,我可以请叫它CNN短?
我的意思是,只要观众不会让这个网络研讨会与某个电缆新闻网 - 电缆新闻 - 哦。这就是CNN代表的,不是吗?嗯,除了CNN是一个自信有线电视新闻网络之外,它是一种深入学习图像和计算机视觉问题的流行建筑。独立于亚历克网,了解CNN的三个主要事项是卷积,激活和汇集。
卷积是,你可能还记得从什么大学课程向您介绍了傅立叶和拉普拉斯变换,或好或坏的数学运算。这个想法是我们把我们的输入图像通过多种变换和他们每个人从图像中提取的某些特征。激活应用变换以卷积的输出。一种流行的活化功能RELU,或RELU,番茄番茄,这只是简单地采用输出,并将其映射到最高正值。最后,拉动是我们通过采取只有一个值进行到下一层,这有助于减少的参数,该模型需要了解的数量简化输出的过程。
因此,重复这三个步骤以形成整个CNN架构,其可以具有数十或数百层,每一个都会学会检测不同的特征。所以关于MATLAB的一个整洁的事情是它使您可以查看特征映射。因此,如果将功能较近较近初始图层的功能,则它们越来越复杂,从颜色和边缘到似乎更详细的东西。
让我们再看一看AlxNET.您可以看到卷积、激活和池。其他一些网络将具有这些层的不同配置,但在最后,它们都将具有执行分类的最后一层。再加上几行代码,我们就可以重复显示一个图像以及AlexNet认为它是什么。有时它得到了,有时它没有。但这很好,只要对象在原来的1000组中。
乞求这个问题,如果不是吗?你能做什么?
那么,请允许我说,这是使用预训练模型图像分类回答这个问题。让我们给我们的第二个演示的举动。
好的。在下一个演示中,我们有汽车视频驾驶高速公路。我们希望能够将这些作为汽车,卡车或SUV分类。我们将使用AlexNet和微调网络只是我们的类别的对象,一个名为Transfer Learning的过程,可用于对不在原始网络中的对象进行分类。
这是我们对上一个问题的答案。为您快速跟进。所以,如果你有一个分类任务,你的对象恰好是1000个对象中的一个,你有没有理由不使用AlexNet呢。
好问题。在这种情况下,转移学习的主要好处是拥有一个特定于数据的分类器。如果培训的类别较少,则可能会提高准确性。
有道理。
所以我从我的手机上拍了这个视频,我能够使用IP网络摄像头自动将其带入Matlab。此功能允许我记录在办公窗口外行驶的汽车视频。现在,使用MATLAB和计算机愿景,我能够使用一个名为背景减法的相对简单的过程,根据其运动来从每个帧视频中提取汽车。
这只是一个观察两幅连续图像之间像素差异的问题,然后找出差异足够大的东西。
现在,当车辆通过传递,我们希望他们划为汽车,卡车,SUV或。这不是什么AlexNet认为,我们正在寻找。所以,如果我们目前的模式不会对我们的数据进行工作,我们需要一个新的模式。所以我们可以说,我们要五个不同类型的车辆,汽车,卡车,大卡车,越野车和面包车进行分类。我们的计划是使用AlexNet为出发点和使用转移学习创建模型具体到这五个类别。
那么,你为什么要使用迁移学习,而不是从头开始训练网络呢?
所以从头开始训练绝对是可以尝试的。我们提供了MATLAB中的所有工具来实现这一点。但是,有几个非常实际的理由可以替代迁移学习。例如,您不必自己设置网络体系结构,这需要大量的尝试和错误才能找到良好的层组合。此外,与从头开始的训练相比,迁移学习不需要太多的图像来构建准确的模型。最后,您可以利用深度学习领域顶尖研究人员的知识和专业技能,他们花在培训模型上的时间比我们多得多。
听起来不错。
因此,这里有大量的含有我们的五个类别的图像的五个文件夹。我们希望有一个简单的方法在此数据带来的传递给我们的深刻的学习算法。此前,加布里埃尔使用imread作为一种辣椒的形象带来。但我们不希望有对每个图像做到这一点。相反,我将使用一种叫做图像数据存储功能,这带来数据的有效方式。
我们应该注意,MATLAB中有许多不同类型的数据存储,用于不同的大数据和数据分析任务。所以这不仅仅是为了图像。如果你有很多数据,数据存储就是你的朋友。
因此,一旦该点图像数据存储到我的文件夹中,它将根据包含图像的文件夹的名称自动标记我的所有数据。所以没有必要一个接一个地做。一旦我做到了这一点,我就可以访问有用的功能,比如查看每个类别的图像数量,并能够快速将图像分割为训练集和测试集。
如果需要,还可以指定自定义读取函数。默认情况下,图像数据存储为imread以读取所有图像,这对于标准图像格式非常有用。但如果您碰巧有imread不知道如何处理的非标准图像格式,您只需编写自己的函数,将其传递到图像数据存储,然后就可以开始了。
即使您有标准的图像格式,您也可以创建一个自定义的读取函数来进行图像预处理,比如调整大小、锐化或去噪。在我们的例子中,使用AlexNet,我们需要将它们的大小调整为227乘227。
所以,我注意到,你不这样做直了调整大小。它看起来像你的填充图像。什么是其中的原因?
所以,这只是从个人的经验。我试图调整图像和网络没有做得很好。当我看了看自己的图像,我不能告诉轿车和SUV之间的差异。所以,我没有的东西,有裁剪图像和保持纵横比的同样的效果。而且,由于这有助于保持结构上的差异,我想,可能有助于网络。所以你越早看到AlexNet确实对自己我们的汽车和卡车分类方面做得很差。因此,我们需要微调网络。
如果我们看看这些层,你可以看到最终完全连接的层代表了AlexNet训练的1000个类别。为了进行迁移学习,我们用5个类别的物体替换1000个。然后这条线重置了分类,这意味着忘掉你学过的1000个物体的名字。你只关心这五个新的。
这就是你需要做的唯一的核心变化?
是的。这就是你需要做的所有网络操作。如果您运行这个,您将得到一个分类器,它将输出这五个对象中的一个。
所以我想问题是,它做得怎么样?
所以我们事先训练了这个网络,它实际上得到了很好的结果,比如97%的准确率。
就像对代码做了两个小改动,这就很令人印象深刻了。
但老实说,你可能不会马上达到这一点。请记住,AlexNet接受过数百万张图像的培训,其中包括一些车辆。因此,我们有理由假设它恰好非常顺利地传输到我们的数据。但是如果你要在其他与原始图像非常不同的图像上进行学习,可能你需要做更多的更改。
有道理。那么有些东西可以尝试他们以子评估准确性找到自己吗?
你可以尝试很多东西。我们将进入快速射击模式。您可以按照此幻灯片进行操作。首先,在开始更改参数之前,您可以做一些事情。检查您的数据。这一点我怎么强调都不过分。起初,我的火车模型对很多图像进行了错误分类。我意识到我的一些数据放错了文件夹。显然,如果你的设置不准确,无论是错误的文件夹还是糟糕的训练数据,你都不会走得很远。
接下来,尝试获取更多数据。有时分类器需要更多的图像来更好地理解问题。最后,尝试不同的网络。我们正在与AlexNet合作,但正如我们提到的,还有其他网络可供你使用。另一家CNN可能会提供更好的结果。
听起来不错。假设我很确定我的设置是正确的。我现在能做什么?
因此,现在的问题是改变网络和培训过程。让我们从网络开始。更改网络意味着添加、删除或修改图层。您可以向网络添加另一个完全连接的层,这会增加网络的非线性,并有助于提高网络的准确性,具体取决于数据。您还可以修改新层的学习权重,使其学习速度快于网络的早期原始层。如果您希望保留网络先前了解到的有关原始数据的丰富功能,这将非常有用。
至于改变培训流程,则是改变培训选项的问题。您可以尝试更多阶段、更少阶段和其他选项,您可以在我们的网站上找到相关文档。
所以我这么说很公平。所有的选择似乎都是,你把网络当成黑盒。如果你训练它,但它不是很好,你就对它进行这些修改,让它开始训练,等待整个等待时间,然后你就会发现它是否真的让事情变得更好或更糟。那么在这个过程中,我们能做些什么呢?
绝对地。我们有一组输出功能,可以告诉我们发生了什么网络,因为它的训练英寸第一个情节,因为它训练网络的精度。理想情况下,你想向上看到的准确性趋势随着时间的推移。如果这不是你所看到的,你可以停止训练,并尝试修复它之前,你可能浪费时间在未改善一些训练。您也可以提前停止训练,根据一定的条件。在这里,我说的是网络停机,如果我达到99.5%的准确度。
我猜这就是这样,所以你不会超越斜线削减网络。
是的。我们也有检查点的概念。您可以在一个特定的点停止网络训练,看看它是如何以及是否在测试集,然后如果你决定它需要更多的训练,你不必从头开始。您只需拿起您离开的地方训练。正如你所期望的,对我们的网站,我们的许多不同的培训选项文档。如果你看看这里,你可以看到的选项我刚才概述积训练精度,并在这里,在规定的精度停止。所以,一定要试试这些例子。
好的,谢谢。复制粘贴此代码。有些人对你在互联网上找到的代码从不复制、粘贴。我明白他们的意思,比如,不要盲目地复制东西,期望它能正常工作。但严肃的家伙们,让没有复制粘贴的互联网代码的人发布第一条错误消息。
你绝对应该复制我们的代码。不用自己编写所有的代码,并且有一些很好的起点来更好地控制培训过程,这很好。
所以,让我们说,我是真正的铁杆要得到我的网络微调,我想消除黑箱方面的网络尽可能多。所以我想你可能无法直接看到网络所看到的。但是,我们如何才能开始更深入地了解我们的网络?
你可以做的一件事是将网络在我们的图像中发现的特征可视化。我们可以查看过滤器,也可以在应用这些过滤器后查看图像的结果。在第一次卷积中,我们看到我们正在提取边缘,暗模式和亮模式。它们可能非常明显,或者不那么明显。这完全取决于图像中这些特征的强度。
所以你可以在你的网络的任何一层做这件事?
是的。让我们来看看另外一个。这一形象的第四卷积的输出产生一些更抽象的,但有趣的功能。你可以把这个特殊的通道被发现车轮和汽车为特色的保险杠假设。为了测试我们的理论,让我们尝试另一个图像在后轮上没有图像左侧可见。如果我们的假设是正确的,那么这个通道的输出不应该激活尽可能多的在图像的左侧。这就是我们所看到的。
美好的所以,如果你们要调试您的网络,这种技术使您的网络看到的可视化表示,可能会帮助您更好地了解发生了什么事情的。
是的。而所有的代码的文件中。网站上的例子经过在的脸上找到的功能,但它是同一个概念。我们来看一个更工具,你可能会发现有用就叫深沉的梦想。深梦想可以用来做非常有趣,显得扑朔迷离的图像,你可能已经在网上看到。但是,它的另一个工具,我们可以用它来了解网络。深梦想是要输出表示它已经在整个训练过程中学习到的特征的图像。
因此,理解这一点的一种方法是,与其给网络一个图像,让它连接到一个类,不如反过来。我们给网络上一堂课,让它给我们一个形象。那么这为什么有用呢。
让我们看一下文档。神经网络工具箱有一个关于深度学习的好页面。这里的一个概念是深度梦,是将AlexNet与深度梦结合使用的一个例子。我们可以看到这里我要的是一只母鸡,是亚历克斯内特训练过的类别之一。深梦让我对母鸡的外貌有了一些抽象的理解。我们可以为我们网络中的任何类别创建深度梦图像。
因此,如果我们看到一些与类别不符的东西,我们可以假设我们的网络可能没有正确地学习我们的类别。
是的,这可能是与训练数据的问题。让我给你举个例子。在AlexNet原来的1000类,它有一个松鼠类别。而我正好有一群松鼠的照片,所以我们可以尝试一下我们的网络上。我们看到所有的预测是正确的,除了这一个。如果我们看看鼠笼深的梦想,我们看到了什么?又有怎样的头发,这是什么误诊为?有迹象表明,对应关系较好,我们尝试了前几个影像一些鲜明的色彩。你可以看到尾相关功能。这些都是强的特点,这一个图像没有。
因此,我想我们可以在我们的网络中添加更多的测试图像,这些图像包含这些类型的功能或缺少这些功能。
所以现在你有足够的时间开始深度学习,更具体地说,转移学习。但我们还没有完全完成我们的例子。还记得我们播放了一段时间汽车在公路上行驶的视频吗?我们试图用AlexNet进行分类,这就是为什么我们费尽心思创建自己的自定义模型。使用与以前相同的算法来检测图像中的汽车,我现在可以使用我们的模型进行分类。我们可以看到我们的模型认为他们是什么,以及预测的能力。
非常好。
这就是转移学习的开始,以及了解你的人际网络并做出改进的许多技巧和窍门。我们希望您已经了解了MATLAB如何使处理大型图像集、访问该领域专家的模型、可视化和调试网络以及加速GPU的深入学习变得容易。
等等,你完全没有涵盖最后一个。
啊,所以你注意了。
是的,我是。
是的,我们没有明确覆盖它。但如果您仔细查看培训剪辑,则输出消息表明我们正在培训单个GPU,NVIDIA®3.0计算能力的GPU,这是使用GPU进行深度学习的最低要求。与MATLAB的GPU计算的美丽是所有人都在幕后处理。而你,作为用户,不必担心它。如果您有一个,Matlab默认使用GPU,如果您使用GPU或云中的GPU群集或GPU群体,则均未更改任何功能,甚至是CPU。
你可以用一样,一个CPU的培训?我喜欢你的大,大,最大的是如何去,然后缩减到裸露的骨头计算。
是的,从技术上讲,你可以使用CPU。但看看这段时间流逝的视频,它试图在CPU和GPU上训练相同的深度学习算法。
哇。这是非常不沮丧的。
是的。而这一切适用于训练过程中的任何一部分,无论是培训,测试,或可视化网络。因此,如果CPU是你唯一的选择,然后去了。但是,我们鼓励您使用GPU进行培训,或者至少确保你去当培训模式很长的茶点。
好吧所以在最后的演示中,我们将讨论一个更具挑战性的问题,这个问题经常引起我们的注意。看看这张图片。如果我们把它呈现给我们的网络,它会认为它是什么?无论如何,到目前为止,我们只展示了将整个图像分类为一个类别的示例。但在这张图片中,很明显在多个地点有多种车辆。我们训练的网络不能告诉我们这些。
所以这个经典的问题叫做物体检测,或者在场景中定位物体。在这个例子中,我们看到了几辆车的背面。我们的目标是检测它们。因此,我们需要创建一个能够识别我们关心的对象的对象检测器。现在,我们应该怎么做呢?
那么,这次网络研讨会的主题是深度学习,那么深度学习呢?
太棒了。所以如果我们要训练一个车辆检测器从后面识别车辆,它需要大量的图像来训练。现在,问题是我们的图像数据还没有裁剪到单独的汽车,这意味着乍一看,我们必须从头开始完成裁剪和标记所有图像的乏味任务。这个网络研讨会要开多久?
30分钟或更少。
我认为我们做不到。除非我们有MATLAB。耶。我很抱歉。因此,MATLAB有内置的应用程序来帮助您完成这一过程。首先,可以快速浏览所有数据并围绕场景中的对象绘制边界框。现在,即使这比手工修剪好,你也不想这样做100或1000次。因此,如果您有视频或图像序列,MATLAB可以自动标记场景中的对象。
在视频的第一帧中,我指定对象的位置。现在MATLAB将在整个视频中跟踪它。就这样,我有数百辆新的贴标签的汽车,而不必做100次。现在我们有了所有的图像和我们关心的对象的边界框。同样,对于真实世界和健壮的解决方案,您将需要数千或数百万个对象示例。因此,想象一下,尝试在没有应用程序的情况下手动执行此操作。金宝搏官方网站
回深的学问。我们将使用CNN培养目标探测器。我们可以完全导入预训练CNN像我们以前那样,那会完全工作。但是你的新节目什么的家伙,我们要从头开始创建CNN架构。所以我们不会打字了实时的一切,但在MATLAB从头创建一个CNN只是卷积,激活的问题,并拉动层的三件事情你之前谈到。
这就是我们在这里的顺序。你可以决定使用多少个过滤器。既然我们将所有这些代码提供给您,请自由使用它,并从scratch开始创建您自己的CNN。现在该训练我们的探测器了。有了MATLAB的计算机视觉工具,我们实际上有几个物体探测器,你可以选择。很好的一点是你可以用相同的训练数据对你选择的任何一个。正如您从这段代码中看到的,您可以非常简单地尝试所有这些方法,看看它们是如何工作的。
而我们对这些探测器,这将提供一个建议,以在某些情况下使用这些文件。所以一定要看看,如果你打算使用对象检测。
是的。所以我们训练了我们的探测器。我们会在样本图像上尝试。您可以在此处看到结果。看起来非常好。但对于更令人印象深刻的演示,让我们在视频上尝试一下。在那里,如你所见,驾驶高速公路。它正在分类所有汽车。这非常漂亮。对于高级用户,您可以访问帮助程序功能以更好地了解其性能。
以下是MATLAB如何轻松地进行对象检测,从快速将数据与内置应用程序一起标记数据,并通过深入学习和计算机视觉中的其他工具培训您的算法。为了把事情包装起来,请记住,虽然我们在我们的例子中使用了很多车辆,但Matlab和深度学习不限于分类车辆。那么是人们的脸,狗品种还是巨大的松鼠收集,你可以用matlab轻松完成。
我想快速呼吁我们支持通过深度学习解决回归问题,这意味着您可以输金宝app出数值,而不是输出类或类别。我们有一些这样的例子,你可以检测道路上的车道边界。对于那些听腻了汽车的人,我们有一个预测面部关键点的方法,可以用来预测一个人的面部表情。
所以今天我们看到了你可以用matlab和深度学习做的一些新事物。我们希望您能够清楚地看到Matlab如何使深度学习的艰巨任务更容易。因此,请务必查看网络研讨会中使用的所有代码,并在您自己的数据上尝试。
如果你去Add On管理器那里你可以得到我们预先训练过的网络,你可以在同一个地方找到一些其他的资源来建立和运行深度学习,包括一个视频,展示了如何使用MATLAB用网络摄像头快速分类对象。
查看我们网站上的其他资源,开始深入学习,如有任何问题,请随时发送电子邮件给我们形象-processing@mathworks.com.
您还可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。
本网站使用cookie来改善您的用户体验,个性化内容和广告,并分析网站流量。继续使用本网站,即表示您同意我们使用cookies。请参阅我们的隐私政策了解有关cookie的更多信息以及如何更改设置。