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