深度学习是机器学习的一个分支,它教会计算机做人类与生俱来的事情:从经验中学习。机器学习算法使用计算方法直接从数据中“学习”信息,而不依赖于预先确定的方程作为模型。深度学习尤其适合于图像识别,这对于解决人脸识别、运动检测等问题以及许多先进的驾驶辅助技术(如自动驾驶、车道检测、行人检测和自动停车)都很重要。
深度学习工具箱™提供简单的MATLAB®用于创建和互连深层神经网络层的命令。示例和预训练的网络使得使用MATLAB进行深度学习很容易,即使不了解高级计算机视觉算法或神经网络。
有关实用深度学习方法的免费实践介绍,请参见深度学习入口.
你想做什么? | 了解更多 |
---|---|
执行迁移学习以使用数据对网络进行微调 |
提示 对预先训练好的网络进行微调以学习新任务通常比训练新网络更快更容易。 |
用预先训练好的网络对图像进行分类 | 预训练的深度神经网络 |
创建一个用于分类或回归的新的深度神经网络 | |
调整大小,旋转或预处理图像进行训练或预测 | 用于深度学习的图像预处理 |
根据文件夹名称自动标记图像数据,或交互式使用应用程序 | 图片标志(计算机视觉工具箱) |
为序列和时间序列数据创建深度学习网络。 | |
对图像的每个像素进行分类(例如,道路、汽车、行人) | 开始使用深度学习进行语义分割(计算机视觉工具箱) |
检测和识别图像中的物体 | 识别,目标检测和语义分割(计算机视觉工具箱) |
文本数据分类 | 使用深度学习分类文本数据 |
为语音识别分类音频数据 | 基于深度学习的语音指令识别 |
想象一下网络学到了什么特征 | |
在CPU、GPU、多个GPU上进行训练,在桌面上或云中的集群上并行进行训练,并处理内存容量太大的数据集 |
要了解更多关于深度学习应用领域(包括自动驾驶)的信息,请参见深度学习应用.
要选择是使用预训练的网络还是创建新的深度网络,请考虑本表中的场景。
使用预训练的网络进行迁移学习 | 创建一个新的深度网络 | |
---|---|---|
训练数据 | 成百上千的带标签的图片(小) | 成千上万的带标签的图片 |
计算 | 计算量适中(GPU可选) | 计算密集型(需要GPU来提高速度) |
培训时间 | 几秒到几分钟 | 真正的问题需要几天甚至几周 |
模型的准确性 | 很好,这取决于预先训练的模型 | 高,但可以过拟合到小数据集 |
有关更多信息,请参见选择网络架构.
深度学习使用神经网络直接从数据中学习特征的有用表示。神经网络结合了多个非线性处理层,使用简单的元素并行操作,并受到生物神经系统的启发。深度学习模型可以在对象分类中达到最先进的精度,有时甚至超过人类的水平。
你使用大量的标记数据和神经网络架构来训练模型,这些架构包含很多层,通常包括一些卷积层。训练这些模型是计算密集型的,通常可以通过使用高性能GPU来加速训练。该图显示了卷积神经网络如何将自动从许多图像中学习特征的层结合起来,以对新图像进行分类。
许多深度学习应用程序使用图像文件,有时甚至是数百万个图像文件。为了高效地访问大量图像文件进行深度学习,MATLAB提供了imageDatastore
函数。使用此函数:
自动读取批量图像,以便在机器学习和计算机视觉应用中更快地处理
从图像集合中导入过大而无法装入内存的数据
根据文件夹名称自动标记图像数据
这个例子展示了如何使用深度学习来识别实时网络摄像头上的物体,仅使用10行MATLAB代码。试试这个例子,看看在MATLAB中开始深度学习是多么简单。
如果需要,运行这些命令来获得下载,连接到网络摄像头,并获得预训练的神经网络。
摄像头=网络摄像头;连接到相机Net = alexnet;加载神经网络
如果需要安装网络摄像头
而且alexnet
加载项时,每个函数都会显示一条消息,并显示一个链接,帮助您使用加载项资源管理器下载免费加载项。另外,看到深度学习工具箱模型用于AlexNet网络而且MATLAB金宝appUSB网络摄像头支持包.
安装深度学习工具箱模型后用于AlexNet网络,你可以用它来分类图像。AlexNet是一个预先训练的卷积神经网络(CNN),它已经在超过100万张图像上进行了训练,可以将图像分为1000个对象类别(例如,键盘、鼠标、咖啡杯、铅笔和许多动物)。
运行下面的代码来显示和分类实时图像。将网络摄像头对准一个物体,神经网络就会报告它认为网络摄像头显示的是什么类型的物体。在你按下之前,它会一直对图像进行分类Ctrl+C.代码为网络使用调整图像的大小imresize
.
而True im =快照(相机);%拍张照片图像(im);%显示图片Im = imresize(Im,[227 227]);为alexnet调整图片大小标签=分类(net,im);图片分类标题(char(标签));显示类标签drawnow结束
在这个例子中,网络正确地分类了一个咖啡杯。用你周围的物体做实验,看看这个网络有多准确。
要观看此示例的视频,请参见深度学习的11行MATLAB代码.
要了解如何扩展此示例并显示类的概率分数,请参见使用深度学习对网络摄像头图像进行分类.
对于深度学习的下一步,您可以将预先训练好的网络用于其他任务。通过迁移学习或特征提取解决图像数据上的新分类问题。有关示例,请参见使用迁移学习更快地开始深度学习而且使用从预训练网络中提取的特征的训练分类器.要尝试其他预训练的网络,请参见预训练的深度神经网络.
迁移学习是深度学习应用中常用的一种方法。你可以使用预先训练好的网络,并将其作为学习新任务的起点。使用迁移学习对网络进行微调要比从头开始训练快得多,也容易得多。您可以使用较少的训练图像快速使网络学习新的任务。迁移学习的优势在于,预先训练的网络已经学习了一组丰富的特征,可以应用于广泛的其他类似任务。
例如,如果你用数千或数百万张图像训练了一个网络,你可以只使用数百张图像重新训练它来进行新的物体检测。您可以使用比原始训练数据小得多的数据集有效地微调预训练网络。如果你有一个非常大的数据集,那么迁移学习可能不会比训练一个新的网络更快。
迁移学习使您能够:
将预训练网络的学习特征转移到新问题上
迁移学习比训练一个新的网络更快更容易
减少训练时间和数据集大小
执行深度学习,而不需要学习如何创建一个全新的网络
有关交互式示例,请参见基于深度网络设计器的迁移学习.
有关程序示例,请参见训练深度学习网络对新图像进行分类.
特征提取允许您使用预训练网络的强大功能,而无需在训练中投入时间和精力。特征提取可能是使用深度学习的最快方式。从预训练的网络中提取学习到的特征,并使用这些特征来训练分类器,例如,支持向量机(SVM -需要统计和机器学习工具箱™)。金宝app例如,如果SVM训练使用alexnet
可以在你的训练和验证集上达到>90%的准确率,那么使用迁移学习进行微调可能不值得为了获得一些额外的准确度而努力。如果你在一个小数据集上执行微调,那么你也有过拟合的风险。如果SVM不能为您的应用程序提供足够好的精度,那么进行微调以寻求更高的精度是值得的。
有关示例,请参见利用预训练网络提取图像特征.
神经网络本质上是并行算法。您可以利用这种并行性,使用Parallel Computing Toolbox™跨多核cpu、图形处理单元(gpu)以及具有多个cpu和gpu的计算机集群分发训练。
训练深度网络的计算量非常大,通常可以通过使用高性能GPU来加速训练。如果没有合适的GPU,可以在一个或多个CPU内核上进行训练。你可以在单个GPU或CPU上训练卷积神经网络,也可以在多个GPU或CPU内核上训练卷积神经网络,或者在集群上并行训练卷积神经网络。使用GPU或并行选项需要并行计算工具箱。
您不需要多台计算机来解决使用大到无法装入内存的数据集的问题。您可以使用imageDatastore
函数处理批量数据,而不需要机器集群。但是,如果您有一个可用的集群,那么将代码放到数据存储库中而不是四处移动大量数据会很有帮助。
要了解关于大数据集深度学习的更多信息,请参见大数据深度学习.