主要内容

深度学习在MATLAB

什么是深度学习?

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

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

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

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

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

提示

对一个预先训练过的网络进行微调以学习一项新任务,通常比训练一个新网络更快、更容易。

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

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

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

调整大小、旋转或预处理图像以进行训练或预测 深度学习的图像预处理
标签您的图像数据自动基于文件夹名称,或交互式使用一个应用程序

图像分类训练网络

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

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

基于深度学习的序列分类

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

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

Deep Dream Images Using GoogLeNet

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

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

在gpu和云上并行扩展深度学习

利用大数据进行深度学习

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

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

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

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

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

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

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

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

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

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

尝试深度学习10行MATLAB代码

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

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

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

    如果您需要安装网络摄像头alexnet附加组件时,会出现来自每个功能的消息,并带有一个链接,帮助您使用附加组件浏览器下载免费附加组件。另外,看到深度学习工具箱模型AlexNet网络MATLAB万博1manbetxUSB摄像头支持包

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

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

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

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

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

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

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

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

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

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

迁移学习使您:

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

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

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

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

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

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

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

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

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

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

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

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

您不需要多台计算机来解决使用过大而无法装入内存的数据集的问题。你可以使用imageDatastore功能来处理批数据,而不需要一组机器。但是,如果您有一个可用的集群,那么将您的代码带到数据存储库而不是移动大量的数据可能会很有帮助。

要了解更多关于大型数据集的深度学习,请参见利用大数据进行深度学习

相关的话题