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