Main Content

Deep Learning inMATLAB

什么是深度学习?

深度学习是机器学习的一个分支,它教会计算机去做人类自然而然的事情:从经验中学习。机器学习算法使用计算方法直接从数据中“学习”信息,而无需依赖预定方程式作为模型。深度学习特别适合图像识别,这对于解决诸如面部识别,运动检测以及许多高级驾驶员辅助技术等问题很重要,例如自动驾驶,车道检测,行人检测和自主停车场。

深度学习工具箱™ provides simple MATLAB®创建和互连深神经网络层的命令。示例和预处理的网络使使用MATLAB进行深度学习变得易于使用,即使没有先进的计算机视觉算法或神经网络的知识。

For a free hands-on introduction to practical deep learning methods, see深度学习跨度

你想让我做什么? 学到更多
执行转移学习以微调与您的数据的网络

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

小费

与培训新网络相比,对审慎的网络学习新任务通常更快,更容易。

用验证的网络对图像进行分类 Pretrained Deep Neural Networks
创建一个新的深神经网络,用于分类或回归

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

Train Convolutional Neural Network for Regression

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

火车网络用于图像分类

图像标签(计算机视觉工具箱)

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

使用深度学习的序列分类

Time Series Forecasting Using Deep Learning

Classify each pixel of an image (for example, road, car, pedestrian) Getting Started with Semantic Segmentation Using Deep Learning(计算机视觉工具箱)
检测并识别图像中的对象 Deep Learning, Semantic Segmentation, and Detection(计算机视觉工具箱)
分类文本数据 使用深度学习对文本数据进行分类
对音频数据进行分类以识别语音 使用深度学习的语音命令识别
可视化哪些功能网络学到了

使用Googlenet的深梦图像

Visualize Activations of a Convolutional Neural Network

Train on CPU, GPU, multiple GPUs, in parallel on your desktop or on clusters in the cloud, and work with data sets too large to fit in memory 深入学习GPU和并行的大数据

To learn more about deep learning application areas, including automated driving, see深度学习应用

要选择是使用预算网络还是创建新的深层网络,请考虑该表中的方案。

Use a Pretrained Network for Transfer Learning 创建一个新的深网络
培训数据 Hundreds to thousands of labeled images (small) 数千到数百万个标记的图像
Computation 中等计算(GPU可选) 计算密集型(需要GPU速度)
训练时间 秒到几分钟 Days to weeks for real problems
模型准确性 良好,取决于预处理的模型 高,但可以过度适合小型数据集

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

深度学习使用神经网络直接从数据中学习功能的有用表示。神经网络结合了多个非线性加工层,使用并行运行的简单元素受到生物神经系统的启发。深度学习模型可以在对象分类中实现最新的准确性,有时超过人类水平的性能。

You train models using a large set of labeled data and neural network architectures that contain many layers, usually including some convolutional layers. Training these models is computationally intensive and you can usually accelerate training by using a high performance GPU. This diagram shows how convolutional neural networks combine layers that automatically learn features from many images to classify new images.

许多深度学习应用程序使用图像文件,nd sometimes millions of image files. To access many image files for deep learning efficiently, MATLAB provides theimageDatastore功能。使用此功能来:

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

  • 从图像收集中导入数据,这些数据太大而无法适合内存

  • 根据文件夹自动标记您的图像数据

尝试以10行的深度学习MATLAB代码

此示例显示了如何仅使用10行MATLAB代码在实时网络摄像头上识别对象。尝试该示例,看看在MATLAB中深入学习的开始是多么简单。

  1. 运行这些命令以在需要时获取下载,请连接到网络摄像头,并获得验证的神经网络。

    相机=网络摄像头;%连接到相机net = alexnet;% Load the neural network

    如果您需要安装摄像头andalexnet附加组件,每个函数的消息都出现在链接中,以帮助您使用附加探索器下载免费附加组件。或者,请参见深度学习工具箱模型对于Alexnet网络andMATLAB金宝appUSB网络摄像头的支持包

    安装深度学习工具箱模型后对于Alexnet网络, you can use it to classify images. AlexNet is a pretrained convolutional neural network (CNN) that has been trained on more than a million images and can classify images into 1000 object categories (for example, keyboard, mouse, coffee mug, pencil, and many animals).

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

    whiletrue im =快照(相机);%拍照image(im);%显示图片im = imresize(im,[227 227]);%调整Alexnet的图片大小label =分类(net,im);%对图片进行分类标题(char(label));% Show the class label绘制结尾

    在此示例中,网络正确分类了咖啡杯。尝试周围环境中的对象,以了解网络的准确性。

    To watch a video of this example, see在11行MATLAB代码中进行深度学习

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

    对于深度学习的下一步,您可以使用验证的网络进行其他任务。通过转移学习或特征提取解决图像数据上的新分类问题。有关示例,请参见使用转移学习更快地开始深度学习andTrain Classifiers Using Features Extracted from Pretrained Networks。To try other pretrained networks, seePretrained Deep Neural Networks

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

转移学习通常用于深度学习应用中。您可以进行验证的网络,并将其用作学习新任务的起点。通过转移学习对网络进行微调比从头开始训练更快,更容易。您可以快速使用少量的培训图像来使网络学习新任务。转移学习的优点在于,经过验证的网络已经学会了一组丰富的功能,这些功能可以应用于其他类似的任务。

例如,如果您对数千或数百万张图像进行培训的网络,则只能使用数百张图像对其进行重新训练以进行新的对象检测。您可以有效地微调具有比原始培训数据要小得多的数据集的经过验证的网络。如果您的数据集很大,那么转移学习可能不会比培训新网络更快。

转移学习使您能够:

  • 将验证网络的学识处转移到新问题

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

  • Reduce training time and dataset size

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

对于交互式示例,请参阅深层网络设计师的转移学习

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

Train Classifiers Using Features Extracted from Pretrained Networks

功能提取使您可以利用预审慎的网络的力量,而无需将时间和精力用于培训。特征提取可能是使用深度学习的最快方法。您从验证的网络中提取学习的功能,并使用这些功能来训练分类器,例如,支持向量机(SVM-需要统计信息和机器学习工具箱™)。金宝app例如,如果使用SVM培训alexnet可以在培训和验证设置上实现> 90%的精度,然后通过转移学习进行微调可能不值得努力获得一些额外的准确性。如果您在一个小数据集上进行微调,那么您也有过度拟合的风险。如果SVM无法实现足够的应用程序,那么值得努力寻求更高的准确性。

For an example, see使用验证网络提取图像功能

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

神经网络本质上是并行算法。您可以通过使用并行计算工具箱™来利用此并行性,以在多功能CPU,图形处理单元(GPU)和具有多个CPU和GPU的计算机簇上分发训练。

训练deep networks is extremely computationally intensive and you can usually accelerate training by using a high performance GPU. If you do not have a suitable GPU, you can train on one or more CPU cores instead. You can train a convolutional neural network on a single GPU or CPU, or on multiple GPUs or CPU cores, or in parallel on a cluster. Using GPU or parallel options requires Parallel Computing Toolbox.

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

To learn more about deep learning hardware and memory settings, see深入学习GPU和并行的大数据

Related Topics