主要内容

深度学习在MATLAB

什么是深度学习?

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

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

有关实用的深度学习方法的免费实践介绍,请参阅深度学习斜坡弯道

你想做什么? 了解更多
使用您的数据执行迁移学习来微调网络

使用迁移学习更快地开始深度学习

提示

微调预先训练的网络来学习新任务通常比训练新网络更快更容易。

用预处理的网络对图像进行分类 预处理的深度神经网络
创建一个新的深度神经网络分类或回归

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

训练卷积神经网络的回归

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

图像分类训练网络

图片标志(计算机视觉工具箱)

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

利用深度学习进行序列分类

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

对图像的每个像素进行分类(例如,道路、汽车、行人) 开始使用深度学习进行语义分割(计算机视觉工具箱)
检测和识别图像中的物体 识别,目标检测和语义分割(计算机视觉工具箱)
文本数据分类 利用深度学习对文本数据进行分类
分类音频数据的语音识别 基于深度学习的语音命令识别
将网络学到的特性可视化

深梦图像使用GoogLeNet

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

训练CPU, GPU,多个GPU,在你的桌面或云中的集群上并行,并处理大到内存无法容纳的数据集

在gpu和云计算中并行扩展深度学习

深度学习与大数据

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

要选择是使用预训练的网络还是创建新的深度网络,请考虑该表中的场景。

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

有关更多信息,请参见选择网络体系结构

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

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

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

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

  • 从内存中无法容纳的图像集合导入数据

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

尝试深度学习10行MATLAB代码

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

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

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

    如果您需要安装网络摄像头alexnet每个函数的消息都会显示一个链接,帮助您使用Add-On Explorer下载免费的Add-On。另外,看到深度学习工具箱模型AlexNet网络MATLAB万博1manbetxUSB摄像头支持包

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

  2. 运行下面的代码来显示和分类实时图像。将摄像头对准一个物体,神经网络就会报告它认为摄像头显示的是什么类型的物体。它将继续分类图像,直到你按下Ctrl+C.该代码为网络使用调整了图像的大小imresize

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

    在这个例子中,网络正确地分类了一个咖啡杯。用你周围的物体做实验,看看这个网络有多精确。

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

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

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

使用迁移学习更快地开始深度学习

迁移学习是深度学习应用中常用的一种方法。你可以用一个预先训练好的网络作为学习新任务的起点。使用迁移学习来微调网络比从头开始训练要快得多,也容易得多。您可以使用较少的训练图像快速地使网络学习一个新任务。迁移学习的优点是,预训练的网络已经学习了丰富的特征集,可以广泛应用于其他类似的任务。

例如,如果你用数千或数百万张图像训练一个网络,你可以只使用数百张图像重新训练它进行新目标检测。您可以使用比原始训练数据更小的数据集有效地微调预训练网络。如果你有一个非常大的数据集,那么迁移学习可能不会比训练一个新的网络更快。

迁移学习使您能够:

  • 将预先训练网络的学习特征转移到新问题中

  • 迁移学习比训练一个新的网络更快更容易

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

  • 进行深度学习,而不需要学习如何创建一个全新的网络

有关交互式示例,请参见迁移学习与深度网络设计师

有关编程示例,请参见训练深度学习网络来分类新图像

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

特征提取允许您使用预训练网络的力量,而无需在训练上投入时间和精力。特征提取可能是使用深度学习的最快方式。您可以从预先训练的网络中提取学习到的特征,并使用这些特征来训练分类器,例如,支持向量机(SVM -需要统计和机器学习工具箱™)。万博1manbetx例如,如果SVM使用alexnet可以在你的训练和验证集上达到>90%的准确性,那么用迁移学习进行微调可能不值得努力获得一些额外的准确性。如果您对一个小型数据集进行微调,那么您也有过度拟合的风险。如果支持向量机不能为您的应用程序实现足够好的精度,那么值得进行微调以寻求更高的精度。

有关示例,请参见利用预训练网络提取图像特征

基于cpu、gpu、并行和云计算的大数据深度学习

神经网络本质上是并行算法。您可以通过使用Parallel Computing Toolbox™在多核cpu、图形处理单元(gpu)和具有多个cpu和gpu的计算机集群中分发训练来利用这种并行性。

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

您不需要多台计算机来解决使用大到内存无法容纳的数据集的问题。你可以使用imageDatastore函数可以在不需要群集的情况下处理批量数据。但是,如果您有可用的集群,那么将您的代码放到数据存储库中而不是移动大量的数据将会很有帮助。

要了解更多关于大数据集深度学习的信息,请参见深度学习与大数据

相关的话题