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