主要内容

深度学习在MATLAB

什么是深入学习?

深度学习是机器学习的一个分支,它教会计算机做人类天生擅长的事情:从经验中学习。机器学习算法使用计算方法直接从数据中“学习”信息,而不依赖于预先确定的方程作为模型。深度学习尤其适用于图像识别,图像识别对于解决诸如面部识别、运动检测和许多先进的驾驶员辅助技术(如自动驾驶、车道检测、行人检测和自动停车)等问题非常重要。

深度学习工具箱™提供简单的MATLAB®用于创建和连接深层神经网络层的命令。示例和预先训练的网络使使用MATLAB进行深度学习变得容易,即使不了解先进的计算机视觉算法或神经网络。

有关实际的深度学习方法的免费实践介绍,请参见深度学习ondramp.

你想让我做什么? 了解更多
执行转移学习以使用数据进行微调网络

使用转移学习开始深入学习

小费

微调佩带的预售网络来学习新任务通常比培训新网络更快,更容易。

使用净化网络对图像进行分类 预先训练的深度神经网络
创建一个新的深度神经网络分类或回归

为分类创建简单的深度学习网络

训练卷积神经网络用于回归

为培训或预测调整大小,旋转或预处理图像 深度学习的预处理图像
根据文件夹名称或交互式使用应用程序自动标记图像数据

图像分类训练网络

图像贴标器(电脑视觉工具箱)

为序列和时间序列数据创建深度学习网络。

使用深度学习序列分类

基于深度学习的时间序列预测

对图像的每个像素进行分类(例如,道路,汽车,行人) 使用深度学习开始语义分割(电脑视觉工具箱)
检测并识别图像中的对象 深度学习、语义分割和检测(电脑视觉工具箱)
分类文本数据 使用深度学习对文本数据进行分类
对语音识别进行分类音频数据 使用深度学习的言语命令识别
可视化网络学习的功能

使用googlenet的深梦图像

可视化卷积神经网络的激活

在CPU、GPU、多个GPU上进行培训,在你的桌面或云中的集群上并行进行培训,并处理内存中无法容纳的大数据集 深入学习GPU和并行数据

要了解更多关于深度学习应用领域的信息,包括自动驾驶,请参见深度学习应用

要选择是否使用备用网络或创建新的深网络,请考虑此表中的方案。

使用预先训练过的网络进行迁移学习 创建一个新的深层网络
训练数据 成百上千的标签图片(小) 成千上万的标签图片
计算 中等计算量(GPU可选) 计算密集型(速度需要GPU)
训练时间 几秒钟即可分钟 几天到几周的时间来解决真正的问题
模型准确性 好,取决于佩带的模型 高,但可能对小数据集过度拟合

有关更多信息,请参见选择网络架构

深度学习使用神经网络直接从数据中学习有用的特征表示。神经网络结合了多个非线性处理层,使用简单的元素并行操作,并受到生物神经系统的启发。深度学习模型在对象分类方面可以达到最先进的精度,有时甚至超过人类水平。

您可以使用一组包含许多层(通常包括一些卷积层)的大量标记数据和神经网络架构来训练模型。训练这些模型是计算密集型的,通常可以通过使用高性能GPU来加速训练。这张图展示了卷积神经网络是如何将自动从许多图像中学习特征来分类新图像的各个层结合起来的。

许多深度学习应用程序使用图像文件,有时使用数百万个图像文件。为了有效地访问图像文件进行深度学习,MATLAB提供了imageDatastore功能。使用此功能:

  • 在机器学习和计算机视觉应用中,自动读取批量图像以更快地处理

  • 从图像集合导入数据太大而无法适合内存的数据

  • 根据文件夹名称自动标记图像数据

在10行尝试深入学习MATLAB代码

这个例子展示了如何使用深度学习来识别实时网络摄像机上的对象,只使用10行MATLAB代码。尝试这个例子,看看在MATLAB中开始深度学习是多么简单。

  1. 如果需要,运行这些命令获取下载,连接到网络摄像头,并获得一个预先训练的神经网络。

    Camera =网络摄像头;%连接到摄像机网= alexnet;%加载神经网络

    如果您需要安装网络摄像头alexnet加载项,每个函数的消息都会显示一个链接,以帮助您使用附加资源管理器下载免费的附加组件。或者,参见深度学习工具箱模型AlexNet网络MATLAB金宝app支持USB网络摄像头的支持包

    安装深度学习工具箱模型后AlexNet网络,您可以使用它对图像进行分类。AlexNet是一个预先训练过的卷积神经网络(CNN),已经在100多万张图像上训练过,可以将图像分类为1000个对象类别(例如,键盘、鼠标、咖啡杯、铅笔和许多动物)。

  2. 运行以下代码以显示和分类实时图像。在一个对象中指向网络摄像头,神经网络报告它认为网络摄像头显示的对象是显示的。它将继续进行分类图像,直到您按下Ctrl.+C.代码使用的代码大小使用imresize(图像处理工具箱)

    True im =快照(相机);拍照图像(im);%显示图片Im = imresize(Im,[227227]);%调整图片大小为alexnet标签=分类(净,im);%分类图片标题(char(标签));显示类标签drawnow结尾

    在此示例中,网络正确分类了咖啡杯。实验周围环境中的物体,以查看网络的准确性。

    要观看这个示例的视频,请参见深度学习的11行MATLAB代码

    要了解如何扩展这个示例并显示类的概率分数,请参见使用深度学习对网络摄像头图像进行分类

    对于深度学习的下一步,您可以将预先训练的网络用于其他任务。用迁移学习或特征提取解决图像数据的新分类问题。有关示例,请参见使用转移学习开始深入学习使用从预训练网络中提取的特征训练分类器.尝试其他预先训练过的网络预先训练的深度神经网络

使用转移学习开始深入学习

迁移学习通常用于深度学习应用。你可以用一个预先训练好的网络作为学习新任务的起点。用迁移学习对网络进行微调比从头开始训练更快更容易。你可以使用少量的训练图像快速地让网络学习一个新任务。迁移学习的优点是,预先训练的网络已经学习了一套丰富的特征,这些特征可以应用到广泛的其他类似任务中。

例如,如果您拍摄了数千个或数百万图像的网络,您可以使用数百图像重新恢复新的对象检测。您可以有效地微调预磨损的网络,而不是原始训练数据的更小的数据集。如果您有一个非常大的数据集,则转移学习可能不会比培训新网络更快。

转移学习使您能够:

  • 将备用网络的学习功能转移到新问题

  • 转移学习比培训新网络更快更容易

  • 减少训练时间和数据集大小

  • 在不需要学习如何创建一个全新网络的情况下进行深度学习

对于互动示例,请参阅使用深度网络设计师进行迁移学习

对于程序示例,请参阅训练深度学习网络对新图像进行分类

使用从预训练网络中提取的特征训练分类器

特征提取允许您使用预先训练过的网络的力量,而无需在训练中投入时间和精力。特征提取可以是使用深度学习最快的方法。您从预先训练的网络中提取学习的特征,并使用这些特征来训练分类器,例如,支持向量机(SVM -需要统计学和机器学习工具箱™)。金宝app例如,如果一个SVM训练使用alexnet可以在培训和验证集中实现> 90%的准确性,然后通过转移学习进行微调可能值得努力获得一些额外的准确性。如果在小型数据集上执行微调,那么您也有风险过度装备。如果SVM无法为您的申请达到足够的准确性,那么微调值得寻求更高的准确性。

例如,请参见使用掠夺网络提取图像特征

深入学习CPU,GPU,并行和云上的大数据

神经网络本质上是并行算法。您可以使用Parallel Computing Toolbox™在多核cpu、图形处理单元(gpu)和具有多个cpu和gpu的计算机集群之间分配培训,从而利用这种并行性。

训练深度网络的计算非常密集,通常可以通过使用高性能GPU来加速训练。如果你没有合适的GPU,你可以在一个或多个CPU核上训练。您可以在单个GPU或CPU上训练卷积神经网络,也可以在多个GPU或CPU核上训练卷积神经网络,也可以在集群上并行训练卷积神经网络。使用GPU或并行选项需要并行计算工具箱。

您不需要多台计算机来解决问题的问题,使用数据集太大而无法适合内存。你可以使用imageDatastore使用批量数据的功能而不需要一组机器。但是,如果您有群集可用,则可以帮助您的代码到数据存储库而不是移动大量数据。

要了解更多关于深度学习硬件和内存设置的信息,请参见深入学习GPU和并行数据

相关的话题