Johanna Pingel, MathWorks
盖伯瑞尔哈,MathWorks
概述
虽然深度学习可以实现目标识别和目标检测的最高精度,但深度学习模型很难训练、评估和比较。深度学习还需要大量的数据和计算资源。
在本次网络研讨会中,我们将探讨MATLAB如何®解决最常见的深度学习挑战,并深入了解训练准确的深度学习模型的过程。我们将介绍用于物体识别和物体检测的深度学习和计算机视觉的新能力。
集锦
我们将使用真实世界的示例来演示:
关于演示者
Johanna Pingel于2013年加入MathWorks团队,专注于使用MATLAB进行图像处理和计算机视觉应用。她在Rensselaer Polytechnic Institute获得硕士学位,在Carnegie Mellon University获得学士学位。她在计算机视觉应用领域工作超过5年,专注于目标检测和跟踪。
记录日期:2017年8月2日
你好,我的名字是Johanna和Gabriel在一起,我们将讨论计算机视觉的深度学习。我们有一些很棒的新演示和功能要向您展示。让我们开始吧。
好的,我们先来设定一些背景。我们的网站上还有其他深度学习的视频比这个网络研讨会要短得多,你们也一定要看看。但最重要的是,与其他视频相比,我们将在本次网络研讨会中更深入地探讨。我们说的是计算机视觉的深度学习。什么是深度学习?这是一种机器学习,可以直接从数据中学习特征和任务,数据可能是图像、文本或声音。
既然我们在讨论计算机视觉,我们自然会关注图像数据。但请记住,深度学习适用于许多其他不涉及图像的任务。
正当让我们来看看深度学习的工作流程。假设我们有一组图像,其中每个图像包含一个或四个不同类型的对象。我们想要的是能够自动识别出每个图像中的物体的东西。我们从标记图像开始,这意味着我们告诉深度学习算法图像包含什么。有了这些信息,它就开始了解对象的特定特征,并将它们与相应的类别相关联。
您会注意到,任务是直接从数据中学习的,这也意味着我们对正在学习的特性没有任何影响。您可能听说这被称为端到端学习,但无论如何,请记住,深度学习直接从数据中学习功能。
这就是深度学习的基本工作流程。虽然深度学习的概念已经存在了一段时间,但由于技术极大地提高了这些分类器的准确性,使得其在图像分类方面的表现优于人们,因此近年来它变得更加流行。因此,也有几个因素可以实现深度学习,包括大量标记数据、功能强大的GPU来加速训练,以及将他人的工作作为训练自己的深度神经网络的起点的能力,我们将在后面讨论。
是的,我们会的。所以,在我们深入讨论之前,我们想给你们一些背景知识和框架来解释我们为什么要做这个网络研讨会。深入学习是困难的。这是最前沿的技术,而且它可能会变得复杂,无论你是在处理网络架构,理解如何训练精确的模型,还是合并成千上万的训练图像。
是的,更不用说每个人最喜欢的任务是找出为什么有些东西不起作用。
我们希望MATLAB使深入学习变得容易,并且每个人都可以访问。在本次网络研讨会中,以及我们网站上的其他资源,我们将解释如何快速开始使用MATLAB进行深入学习。我们网络研讨会中的示例还将演示如何处理大量图像,轻松集成GPU以更快地培训深度学习模型,在模型培训过程中了解模型内部发生的情况,并基于该领域专家提供的模型进行构建,这样您就不必从头开始。有了这些,让我们开始吧。
是 啊让我们做吧。因此,我们将介绍三个例子:使用预训练网络的深度学习图像分类,转移学习对新对象进行分类,以及图像和视频中的对象检测。首先是使用预训练网络进行图像分类。所以我这里有一张辣椒的图片,我想能够对其进行分类。信不信由你,我可以用MATLAB用四行基本代码来完成。
第一,导入预训练模型。第二,把图像带进来。第三,调整图像大小。第四,对图像进行分类。
美好的
就这样。
很酷。
好的,继续第二个演示-
他是在开玩笑。
是的,我在开玩笑。我们来谈谈这里发生了什么。
那么第一行代码中的AlexNet是什么?亚历克斯是谁?我们为什么要用他的网?
为了直接回答你的问题,AlexNet是一个卷积神经网络,由很多人设计,包括Alex Krizhevsky。但我可能应该提供一些背景。所以有一个与MATLAB无关的独立项目叫做ImageNet项目,已经有一段时间了。它的目标是拥有一个庞大的视觉内容库,比如图像,供人们在视觉对象识别方面进行研究和设计。
因此,它于2010年开始。他们举办了一场名为ImageNet的年度竞赛,以应对大规模视觉识别挑战。
哦,是的。老ILSVRC。
是的,那竞争。所以竞争者提交软件程序来竞争正确分类和检测物体[听不清]。现在,直到2012年,实现计算机视觉的标准方法是通过一个称为特征工程的过程,与AlexNet不同,后者使用并改进了基于深度学习的方法。所以你可能猜到了,AlexNet是在2012年的ILSVRC上提交的,团队名称是监督,一个词。它把竞争彻底打败了,我想这既可以指竞争对手,也可以指竞争本身。
因为人们意识到深度学习不仅仅是理论上的,所以有很多关于它的炒作。它非常实用,而且比我们以前做的事情做得更好。所以撇开历史课不谈,亚历克斯内特经过训练,能够准确识别1000个不同的物体,我猜这与2012年ILSVRC的胜利条件有关。这是可以从MATLAB访问的几个预训练网络之一,其中还包括VGG-16和19。
我们有历史课吗?
我不会为他们上历史课。让我们回到我们的四行代码。所以,首先看看MATLAB如何使导入一个预先训练好的模型变得非常容易。没有比这更容易的了。如果你的电脑上没有AlexNet,你只需要下载一次,无论是通过插件管理器还是使用错误中的链接,如果你运行代码没有下载它。现在你可以用它来做演示和其他任何你想要的。
所以在第二行,你带来了图像。这似乎很简单。但是为什么要调整图像的大小?所以我第一次做这件事的时候,我试着非常聪明,用三行代码来做。
不调整尺寸?
是的。我得到了这个错误,它提到了一些关于大小的东西,这意味着,耶,我要弄清楚为什么它不能工作。
每个人最喜欢做的事。
因此,如果我做网络点层,它将向我展示网络的体系结构。一开始它看起来很吓人,但是第一层,输入层,大小是227×227像素。末尾的x3是RGB值,因为这是一张彩色照片。看到这些,我想,哦,好吧。只需使用MATLAB来调整图像大小,这样当图像传递到网络时就不会出错。我们的最后一行代码现在可以对图像进行分类了。
你刚才提到AlexNet是一个卷积神经网络。这是什么意思,我能简称它为CNN吗?
我的意思是,只要观众不把这个网络研讨会和某个有线新闻网络有线新闻混淆哦。这就是CNN所代表的,不是吗?好吧,除了CNN是一个自我参考的有线新闻网络之外,它是一个深入学习图像和计算机视觉问题的流行架构。并且独立于AlexNet,三个主要的瘦网络了解CNN的关键是卷积、激活和池。
卷积是一种数学运算,无论是好是坏,你都可能记得大学课程中介绍给你傅立叶变换和拉普拉斯变换的内容。我们将输入的图像经过多次变换,每个变换从图像中提取特定的特征。激活对卷积的输出应用转换。一个流行的激活函数是ReLU,或者ReLU,tomato-tomato,它简单地获取输出并将其映射到最高正值。最后,拉取是一个过程,在这个过程中,我们通过只取一个值到下一层来简化输出,这有助于减少模型需要了解的参数数量。
因此,重复这三个步骤形成整个CNN体系结构,它可以有几十层或数百层,每个层学习检测不同的特征。因此,MATLAB的一个巧妙之处是,它可以让您查看特征图。因此,如果您比较接近初始层的特征与接近最终层的特征,则y变得越来越复杂,从颜色和边缘到看起来更详细的东西。
让我们再看一看AlxNET.您可以看到卷积、激活和池。其他一些网络将具有这些层的不同配置,但在最后,它们都将具有执行分类的最后一层。再加上几行代码,我们就可以重复显示一个图像以及AlexNet认为它是什么。有时它得到了,有时它没有。但这很好,只要对象在原来的1000组中。
这就引出了一个问题,如果不是,你能做什么?
好吧,请允许我回答说,这是使用预训练模型的图像分类。让我们继续我们的第二个演示。
好吧在下一个演示中,我们有汽车在高速公路上行驶的视频。我们希望能够将其分类为轿车、卡车或SUV。我们将使用AlexNet对网络进行微调,只针对我们的对象类别,这是一个称为转移学习的过程,可用于对不在原始网络中的对象进行分类。
这是我们对上一个问题的答案。为您快速跟进。所以,如果你有一个分类任务,你的对象恰好是1000个对象中的一个,你有没有理由不使用AlexNet呢。
好问题。在这种情况下,迁移学习的主要好处是有一个特定于您的数据的分类器。如果你训练较少的类别,你可以潜在地提高准确性。
有道理。
因此,我从手机上获取了这段视频,我能够使用IP网络摄像头将其自动带入MATLAB。该功能允许我记录汽车在办公室窗外行驶的视频小时数。现在,使用MATLAB和计算机视觉,我能够使用相对简单的pro从每一帧视频中提取汽车的运动cess称为背景减法。
这仅仅是看两个连续图像之间的像素差异,然后找出足够不同的东西。
现在,当车辆经过时,我们想将其分类为汽车、卡车或SUV。阿列克斯内特并不认为我们在看这个。因此,如果我们当前的模型不能处理我们的数据,我们需要一个新的模型。假设我们要将五种不同的车辆分类——轿车、卡车、大型卡车、SUV和面包车。我们的计划是以AlexNet为起点,利用迁移学习创建一个针对这五个类别的模型。
那么,为什么你会使用迁移学习,而不是从头开始训练一个网络呢?
所以从零开始训练绝对是你可以尝试的。我们给了你们MATLAB中所有的工具来做这个。但有几个非常实际的理由来代替迁移学习。例如,您不必自己设置网络架构,这需要大量的尝试和错误来找到一个良好的层组合。此外,与从头开始训练相比,迁移学习不需要太多的图像来建立一个准确的模型。最后,你可以利用深度学习领域的顶级研究人员的知识和专业知识,他们花了比我们更多的时间来训练模型。
听起来不错。
这里有五个文件夹,包含我们五个类别的大量图像。我们需要一种简单的方法将这些数据传递给我们的深度学习算法。早些时候,加布里埃尔用imread作为引入辣椒形象的一种方式。但我们不想对每一张图片都这样做。相反,我将使用一个名为image data store的函数,这是一种引入数据的有效方法。
我们应该注意到,MATLAB中有许多不同类型的数据存储,用于不同的大数据和数据分析任务。所以这不仅仅是为了图像。如果你有很多数据,数据存储是你的朋友。
因此,一旦该点图像数据存储到我的文件夹中,它将根据包含图像的文件夹的名称自动标记我的所有数据。所以没有必要一个接一个地做。一旦我做到了这一点,我就可以访问有用的功能,比如查看每个类别的图像数量,并能够快速将图像分割为训练集和测试集。
如果需要,还可以指定自定义读函数。图像数据存储为imread默认读取在所有的图像,这是伟大的标准图像格式。但如果你碰巧有imread不知道如何处理的非标准图像格式,你只需编写自己的函数,将其传递到图像数据存储中,然后就可以开始了。
即使您有标准的图像格式,您也可以创建一个自定义的读取函数来进行图像预处理,比如调整大小、锐化或去噪。在我们的例子中,使用AlexNet,我们需要将它们的大小调整为227乘227。所以我们在这里使用这个自定义读取函数。
所以我注意到你没有直接调整大小。看起来你在填充图像。原因是什么?
这仅仅是个人经验。我试着调整图像的大小,但网络做得不太好。当我自己看图像时,我无法分辨汽车和SUV之间的区别。所以我做了一些事情,具有相同的效果,裁剪图像和保持纵横比。因为这有助于保持结构l不同之处,我认为这可能有助于网络。所以早些时候,你看到AlexNet在对我们的汽车和卡车进行分类方面做得很差。所以我们需要对网络进行微调。
如果我们查看这些层,您可以看到最后一个完全连接的层,它代表了AlexNet接受培训的1000个类别。为了执行迁移学习,我们将五类对象的1000替换为五。然后这一行重置分类,这意味着忘记你学习的1000个对象的名称。你只关心这五个新的。
这是你唯一需要做的核心改变?
是的。这就是你需要做的所有网络操作。如果您运行这个,您将得到一个分类器,它将输出这五个对象中的一个。
我想问题是,它能做得多好?
所以我们事先训练了这个网络,它实际上得到了很好的结果,比如97%的准确率。
对于代码的两个小改动来说,这是非常令人印象深刻的。
但老实说,你可能不会马上达到这一点。请记住,AlexNet接受过数百万张图像的培训,其中包括一些车辆。因此,我们有理由假设它恰好非常顺利地传输到我们的数据。但是如果你要在其他与原始图像非常不同的图像上进行学习,可能你需要做更多的更改。
有道理。那么,如果人们发现自己的准确度低于标准,他们可以尝试哪些事情呢?
你可以尝试很多东西。然后进入快速射击模式。你们可以跟着这张幻灯片看。首先,在开始改变参数之前,你可以做一些事情。检查你的数据。我再怎么强调也不为过。最初,我的训练模型对很多图像进行了错误分类。我意识到我的一些数据被放到了错误的文件夹里。显然,如果您的设置不准确,无论是错误的文件夹还是糟糕的训练数据,您都不会取得很大进展。
接下来,尝试获取更多数据。有时,分类器需要更多的图像来更好地理解问题。最后,尝试不同的网络。我们正在与AlexNet合作,但正如我们所提到的,您还可以使用其他网络。有可能一个不同的CNN会提供更好的结果。
听起来不错。我很确定我的设置是正确的。我现在能做什么?
所以现在的问题是改变网络和训练过程。让我们从网络开始。改变网络意味着添加、删除或修改层。您可以添加另一个完全连接的层到网络,这增加了网络的非线性,并可以帮助提高网络的准确性,取决于数据。您还可以修改新层的学习权值,使它们比网络的早期原始层学习得更快。如果您希望保留网络先前了解的关于其原始数据的丰富特性,那么这是非常有用的。
至于改变培训流程,则是改变培训选项的问题。您可以尝试更多阶段、更少阶段和其他选项,您可以在我们的网站上找到相关文档。
所以我这么说是公平的。所有的选择似乎都是,你把网络当作一个黑匣子。如果你对它进行了训练,但效果不是很好,那么你可以对它进行一次修改,告诉它开始训练,等待整个等待时间,然后你会发现它是否真的让事情变得更好或更糟。那么,我们能做些什么,比如说,在这个过程的中间?
绝对地我们有一组输出函数,可以在网络训练时向我们展示网络中发生的事情。第一张图描绘了网络训练时的准确性。理想情况下,您希望看到精度随时间呈上升趋势。如果这不是你所看到的,你可以停止训练,并尝试在你可能浪费时间在没有改善的事情上训练之前修复它。你也可以根据某些情况提前停止训练。在这里,我告诉网络,如果我的准确率达到99.5%,就停止。
我猜这是为了避免过度训练,过度适应网络。
是的。我们还有检查站的概念。您可以在特定点停止网络培训,查看它在测试集上的表现,然后如果您决定它需要更多培训,您不必从头开始。你可以从你结束的地方继续训练。正如您所料,我们的网站上有许多不同培训选项的文档。如果你看一下这里,你可以看到我刚才概述的选项,在这里,以指定的精度停止。所以一定要试试这些例子。
好的,谢谢。复制粘贴此代码。有些人对你在互联网上找到的代码从不复制、粘贴。我明白他们的意思,比如,不要盲目地复制东西,期望它能正常工作。但严肃的家伙们,让没有复制粘贴的互联网代码的人发布第一条错误消息。
你一定要复制我们的代码。不需要自己编写所有的代码,并且有一些很好的起点来更好地控制培训过程,这很好。
让我们假设我非常热衷于对网络进行微调,我想尽可能地移除网络的黑箱部分。所以我猜你可能无法直接看到网络看到的东西。但是,我们如何开始更深入地了解我们的网络呢?
你可以做的一件事是把网络在我们的图像中找到的特征形象化。我们可以看看滤镜,我们可以看看应用这些滤镜后的图像结果。在第一个卷积中,我们看到我们提取出了边缘,暗光模式。它们可能非常明显,也可能不那么明显。而这一切都取决于这些特征在图像中的强度。
所以你可以对你网络的任何一层做这个?
是的。让我们看看另一个。该图像第四次卷积的输出产生了一些更抽象但有趣的特征。你可以假设这个特定的渠道正在寻找车轮和汽车保险杠作为特征。为了验证我们的理论,让我们尝试另一幅图像,在该图像的左侧看不到后轮。如果我们的假设是正确的,那么这个通道的输出不应该在图像左侧激活那么多。这就是我们所看到的。
美好的所以,如果你们中的任何人想要调试网络,这种技术可以让你们直观地看到网络所看到的东西,并可能帮助你们更好地理解正在发生的事情。
对所有代码都在文档中。网站上的例子是通过在脸上寻找特征,但概念是一样的。我们将再看一个你可能会发现很有用的工具,叫做deep dream。Deep dream可以用来制作你可能在网上看到的非常有趣、艺术化的图像。但这是我们可以用来了解网络的另一个工具。Deep dream将输出一个图像,表示它在整个训练过程中学习到的特征。
因此,理解这一点的一种方法是,与其给网络一个图像,让它连接到一个类,不如反过来。我们给网络上一堂课,让它给我们一个形象。那么这为什么有用呢。
让我们看一下文档。神经网络工具箱有一个关于深度学习的好页面。这里的一个概念是深度梦,是将AlexNet与深度梦结合使用的一个例子。我们可以看到这里我要的是一只母鸡,是亚历克斯内特训练过的类别之一。深梦让我对母鸡的外貌有了一些抽象的理解。我们可以为我们网络中的任何类别创建深度梦图像。
因此,如果我们看到一些与类别不一样的东西,我们可以假设我们的网络可能没有正确地学习我们的类别。
是的,这可能是训练数据的问题。让我给你一个例子。在AlexNet最初的1000个类别中,它有一个松鼠类别。我碰巧有一堆松鼠的照片,所以我们可以在我们的网络上试用。我们看到所有的预测都是正确的,除了这一个。如果我们看看松鼠的深梦,我们看到了什么?至于头发,它被误认为是什么呢?有一些鲜艳的颜色与我们尝试的前几张图片很好地对应。你可以看到与尾巴相关的特征。这些是这张图片没有的强大特征。
然后我想我们可以在我们的网络中添加更多包含这些类型特征或缺乏这些特征的测试图像。
所以现在你有足够的时间开始深度学习,更具体地说,转移学习。但我们还没有完全完成我们的例子。还记得我们播放了一段时间汽车在公路上行驶的视频吗?我们试图用AlexNet进行分类,这就是为什么我们费尽心思创建自己的自定义模型。使用与以前相同的算法来检测图像中的汽车,我现在可以使用我们的模型进行分类。我们可以看到我们的模型认为他们是什么,以及预测的能力。
很不错的。
这就是迁移学习的开始还有很多技巧和技巧来理解你的网络并做出改进。我们希望您已经了解了MATLAB如何轻松处理大量图像集,访问该领域专家的模型,可视化和调试网络,以及使用gpu加速深度学习。
等等,你完全没说上一句。
啊,所以你注意了。
是的,我是。
是的,我们没有明确报道。但是如果你仔细看一下训练片段,输出消息表明我们在一个单一的GPU上训练,一个NVIDIA®3.0具有计算能力的GPU,这是使用GPU进行深度学习的最低要求。使用MATLAB进行GPU计算的美妙之处在于它都是在幕后处理的。作为一个用户,你不必担心它。如果您有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只是一个卷积、激活和提取层的问题,这是您之前提到的三件事。
这就是我们在这里的顺序。你可以决定要使用的过滤器的数量。既然我们将向你提供所有这些代码,你可以随意使用它,从头开始创建你自己的CNN。现在是时候训练我们的检测器了。有了MATLAB的计算机视觉工具,我们实际上有两个对象d您可以选择的etector。最棒的是,您可以为您选择的任何一个etector使用相同的训练数据。因此,正如您从这段代码中看到的,您可以非常简单地尝试所有etector,并了解它们是如何工作的。
我们有这些探测器的文档,这些文档将提供在某些场景中使用哪种探测器的建议。所以,如果你打算利用目标检测,一定要注意这一点。
是 啊所以我们训练了我们的探测器。我们将在样本图像上进行试验。你可以在这里看到结果。看起来不错。但是为了获得更令人印象深刻的演示,让我们在一个视频上试一试。如你所见,它就这样沿着公路行驶。它对所有的汽车进行分类。很漂亮。对于高级用户,您可以访问帮助器函数以更好地了解其性能。
以下是MATLAB如何通过使用内置应用程序快速标记数据,以及使用深度学习和计算机视觉中的其他工具训练算法来轻松实现目标检测。总而言之,请记住,尽管我们在示例中使用了很多车辆,但MATLAB和深度学习并不局限于对车辆进行分类。因此,无论是人的脸,狗的品种,还是一个巨大的松鼠收集,你都可以用MATLAB轻松地完成。
我想快速地指出我们对用深度学习解决回归问题的支持,这意味着你可万博1manbetx以输出一个数值,而不是一个类或类别。我们有一些这样的例子,你可以检测道路上的车道边界。对于那些听腻了汽车的人,我们有一个预测面部关键点的方法,它可以用来预测一个人的面部表情。
因此,今天我们看到了使用MATLAB和深度学习可以做的一些新事情。我们希望您能够清楚地看到MATLAB如何使深度学习这一艰巨任务变得更加容易。因此,请务必查看我们网络研讨会中使用的所有代码,并在您自己的数据上进行尝试。
如果你去加载项管理器,那里有我们的预训练网络,你可以在同一个地方找到一些其他资源来启动并运行深度学习,包括一个视频,演示如何使用MATLAB使用网络摄像头快速分类对象。
查看我们网站上的其他资源,开始深入学习,如有任何问题,请随时发送电子邮件给我们image-processing@mathworks.com.
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
本网站使用cookies来改善您的用户体验,个性化内容和广告,并分析网站流量。继续使用本网站即表示您同意我们使用cookies。请看我们的隐私政策了解有关Cookie的更多信息以及如何更改设置。