使用转移学习|深学习工程师,第4部分
从系列:深度学习的工程师
布莱恩•道格拉斯
这段视频显示了如何使用转移学习修改一个现有的网络体系结构和再培训来完成你的任务,而不是原来的任务。看一个示例学习如何使用传输识别高五运动加速度数据。
在第一个视频在本系列中,我谈到了我们如何使用深度学习认识到复杂的数据中的模式,我开玩笑地说一个例子可能是识别和计数击掌使用加速度计。哦,原来不是那么多的一个笑话,因为这是我测试它在网络训练。它工作得非常好。所以,在这个视频中,我想谈谈这是如何做到的,我做的数据预处理和为什么转移学习使我在几小时内解决这个问题。我希望你留下来。我是布莱恩,欢迎来到MATLAB技术说话。
对于本项目,我使用一个简单的连接到一个Arduino MEMS加速度计。Arduino读取传感器并打印测量到串行总线上,然后通过USB接口连接到我的电脑。我阅读与MATLAB的串行总线,策划最后一秒半的数据在屏幕上。你可以看到当我移动加速度计它如何改变相应的情节。现在,这只是一种随机的运动,但我真正想要的是能够识别一个特定序列的加速度。高5。当然这是一种简单的高5个运动以来电缆我使用很短,但这将是运动,我要教一个深层神经网络学习和你只能想象,这是一个全尺寸高5的荣耀。
好了,这就是我在寻找加速度模式。我采取和一般方法来解决这个问题是将这三维信号转化为图片,我可以使用它来训练神经网络。这类似于我们所做的在过去的视频我们预处理音频信号的短时傅里叶变换光谱图。
在这里,我可以这样做,它可能会工作的很好,但我要做的是使用连续小波变换来创建一个量图。量图是另一个信号的时频表示,但它不同于谱图的方式使它更适合在多尺度信号存在。这是信号频率和慢变低,但偶尔会打断高频率瞬变。他们是有用的信号就像心电图,这心跳特征模式,事实证明,他们是有用的偶尔高一分之五否则缓慢移动的手。
我不打算进入量图的细节在这个视频中因为有很多其他的事情我想,但我离开几大资源的描述,你应该看看如果你想了解它是什么以及如何创建一个在MATLAB。
好吧,首先我想指出的是,我们需要3图片代表一个高5,因此,我必须养活三个图片到我的网络体系结构。幸运的是,许多架构已经建立输入彩色图像有红色,蓝色和绿色通道。只是符合现有的架构,我指定了x量图红色通道,y的绿色,和z的蓝色,然后把它们创建一个单一的彩色图像。和这种粉红色的火山烟了峰高的量图表示5。
和这张图片看起来很酷,我想但如果我们把它变得更酷的量图实时加速度流。每个样本的时候,我收到一个新的测量传感器,我更新数据的缓冲区的最后几秒钟,我创建量图。你可以看到的模式和颜色改变移动传感器。很酷的是,你可能不知道如果我在做高5通过查看原始加速度数据流,但是我相信你可以看到粉红色的特点火山裸奔过去每隔一段时间。这是一个很明显的模式。现在我们可以把这个处理数据和深神经网络训练发现明显的模式。
为了做到这一点,至少有两件事我仍然需要,我需要一些训练数据标签量图的击掌和一些没有的击掌。我需要一个架构。
首先让我们来谈谈建筑。而不是设计和训练一个架构完全从头开始我们可以在现有的基础上开始建设转移学习。转移学习是修改一个现有的体系结构,然后再培训来完成你的任务,而不是原始的训练了。
要理解这意味着什么,让我们重新审视我们讨论在第一个视频的基本描述这些映像的架构是什么做的。他们正在寻找数据中的模式,或在这种情况下模式的图像。它通过寻找原始功能层初blob和边缘和颜色,然后当你进步通过层组合成更复杂的功能,最终将这些组合成最终的模式,可以标记。
再一次,这是一个简化了的这些网络,但这是一个有用的简化描述转移学习。让我们假设这是一个网络,完全训练辨认出图片中的花朵。
不是很明显,网络训练识别花不会做一个伟大的工作,将高量图五的模式。但是,这是有趣的,斑点,和颜色,和循环,和线条,这样的特性存在于几乎所有的图像,包括我们的量图。只有最后几层网络中,将这些特性和最终的分类非常特定于类型的图像分类。
所以,我们能想到的第一部分训练图像分类网络的一般特征识别器,因此,让他们和砍掉最后几层负责具体的分类,然后用新层,可以输出标签,我们正在进行分类。
现在,从理论上讲培训这个网络应该更快和需要更少的数据,因为有更少的网络学习。它不需要学习如何识别原始特性,它只需要学习如何把它们认识到你正在寻找更大的模式。
这是伟大的,因为大多数图像网络需要数以百万计的训练图像和周的时间使用几个高端GPU的训练。我没有时间,硬件,或手臂的力量创造数以百万计的高5训练图像,然后火车一个巨大的网络。
所以,这就是我要做的。与现有的网络,我要开始修改最后几层,然后再教育训练数据量要小得多。所以,让我们去得到它。
有许多不同的pretrained图像分类网络,我可以从。他们每个人都有自己的执行速度,数据库大小和预测精度。我要为此项目GoogleNet但我保证这个选择不下来任何逻辑推理只是因为MATLAB的例子,我把我的项目的使用GoogleNet和学习转移到心电信号的识别模式。让它符合这个例子我做同样的事。
我们可以打开它在深层网络设计师应用直观地看到所有的层和它们是如何联系起来的。看看这个架构!它有144层。有很多不同的事情在这个架构。有一些回旋的层开始,紧随其后的是一系列平行的初始层,并有许多这些分组,一个接一个。幸运的是,我们真的不需要担心自己与大多数的这些层转移学习的例子。最后重要的是。这一层是一个完全连接层,这意味着每个输入,其中有1024的输出连接到每个有1000。简单地,我们可以考虑这是有1024个不同的复杂特性,这种网络学习和使用这些功能的组合对1000种不同的对象进行分类。所以,无论从这一层是最大输出值分配标签相关联的特定的神经元。 And it finds the maximum values with this probability layer and then determines the label with this output layer. You can see the labels here, tench, goldfish, great white shark and 997 others.
所以,对于这个项目,我们只需要更换两层;完全连接层和输出层。我可以拖在一层新的完全连接到我们的网络,然后通过点击它我可以改变参数。我想设置输出大小是2,这基本上意味着我们希望这一层结合1024输入特征识别两种主要模式。由于这一层没有训练,我要增加重量和偏见学习速率因子5。这将允许这一层与每一个训练周期做出更大的改变。
我们需要更换的第二层是最终的输出层只有两个标签,高5而不是5个。它会确定这些标签会自动从训练数据,我们不需要指定它们。就是这样,我们将使用其他的网络!
现在我们几乎准备好开始训练,但是首先我们需要创建我们的训练数据。
心电图的例子使用约160图像训练验证,所以留下来的数量级我选择创纪录的100高5图像和100非高5个图片。我创建了一个脚本,该脚本循环100次,记录1.5秒的加速度数据每个循环和储蓄量图在数据文件夹。我很擅长时机击掌附近发生了这样的事件窗口,但我还是得通过图像的完整列表,删除那些看起来不太好。我不想让那些坏图片腐败的培训。但是,你可以清楚地看到粉红色的火山在所有这些。
我也做了同样的事情对于其他标签,没有高5。这里我只是记录各种诸如没有运动,轻微的随机运动,和其他更快的运动类似于但不高5。
就是这样。和我的训练数据创建和GoogleNet准备修改,我可以开始训练。
让我们回到deepNetworkDesigner应用MATLAB。data选项卡下我们可以导入我们刚刚创建的所有训练数据。我所有的数据存在于数据文件夹和high_five no_high_five子文件夹。子文件夹的名字就是它的标签。如果我想,我也可以增加这些数据通过扩展,翻译,或旋转,以涵盖所有可能的解决方案的条件,但是我要离开它。最后,我要它随机选择20%的数据用于验证。
所以,这是我训练数据的快照,我们有80的例子高5和80没有高5的例子。在培训选项卡上,我现在可以把我训练的选择。在这里,我正在做一些调整我想火车这个网络。我只是改变他们比赛的训练参数在MATLAB早些时候我给你们的例子。这个例子的链接是这个视频的描述如果你想看看。它在所有这些东西很好的细节。好了,选项设置,我们可以开始训练这个网络。
所以,让我们踢了。
现在,虽然我们等待这个训练让我们谈谈我们采取的步骤。我们的网络被训练识别物体像金鱼和鲨鱼,搭建而成的三维加速度数据中发现模式。当我用它来创造一些相当愚蠢,这个过程可以用来找到任何数据中的模式。GoogleNet,特别是需要一个彩色图像作为输入,所以只要你能格式数据转换成一个图像可以使用这种传输的学习过程。
你可以用它来对象检测行人或路牌,你可以用它来预测维护时发现数据中的模式显示组件将会失败,你可以用这个来寻找缺陷材料,你可以用它来发现数据中的模式等可穿戴电子产品确定一个人步行或跑步,或者如果他们的头是影响太难。有一百万个用例。
也有分类网络开门听起来像VGGish网络。我们可以用它传递学习让它自己的声音音频信号进行分类。
和真正有趣的是这整个多快你可以得到一个训练有素的网络启动和运行。我开始这个项目按照连同现有的MATLAB的例子但从本质上说,我从没有在大约2小时训练网络。这是用一个CPU。现在,您的项目可能需要更多的训练数据比我也许GPU用于训练在合理的时间内,但从现有的网络几乎肯定会需要更少的时间和数据不必从头开始。和从一个现有的MATLAB的例子,有很多,你可以更快进入这些类型的问题。我离开这个例子的链接列表中描述。
好了,现在我们有训练网络,花了大约4分钟火车。网络是97%准确的使用,至少使用我们预留20%的数据进行验证。所以错过了40具说明力的形象之一。不是太坏!
现在,让我们回到最初的视频我给你我的测试加速度数据流上的训练网络。每次样品我会udpate量图基于最新的加速度数据,然后给图像的分类函数,它返回一个标签。如果标签高5回来,我显示,增加高5个计数器。这就是整件事情。结果更容易比我预期,整个高5个计数器是相当满足。所以,我希望这篇文章能够帮助你了解转移学习所带来的好处,也许让你思考你的特定的模式识别问题,这种技术是否可以帮你分类。
我把这个视频。下一节,我想谈谈验证这些训练有素的网络和我们如何有信心他们会工作。所以,如果你不想错过,或任何其他技术视频说话,别忘了订阅这个通道。同样,如果你想看看我的通道,控制系统讲座,我控制覆盖更多的话题。谢谢收看,下次再见。
相关产品下载188bet金宝搏
了解更多
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。