卷积神经网络是什么?

您需要知道的三件事

卷积神经网络是什么?

卷积神经网络(CNN 或 ConvNet)是目前最流行的深度学习算法之一。深度学习是机器学习的一种,该算法的模型直接从图像、视频、文本或声音中学习执行分类任务。

CNN 尤其适用于发现图像中的模式,从而识别物体、人脸和场景。直接从图像数据中学习,使用模式对图像进行分类,无需手动特征提取。

需要使用对象识别计算机视觉的应用(如自动驾驶汽车人脸识别应用)会严重依赖 CNN。根据您的具体应用,您可以从头开始构建 CNN,也可以使用预先训练好的模型处理您的数据集。

为什么 CNN 如此有用?

使用 CNN 实现深度学习变得越来越流行的三大因素:

  • CNN 消除了手动提取特征的需要 — CNN 直接学习特征。
  • CNN 可以产生最先进的识别结果。
  • CNN 可以重新训练以完成新的识别任务,使您能够在现有性能优秀的神经网络模型基础上构建自己的模型。

深度学习工作流程。图像传递给 CNN,CNN 自动学习特征并对目标分类。

CNN 促进对象检测和对象识别技术的进步

CNN 为图像识别和模式检测提供了一个最佳体系架构。与 GPU 和并行计算的发展相结合,CNN 现已成为推动自动驾驶和人脸识别新发展的一项关键技术。

例如,深度学习应用程序使用 CNN 检查成千上万份病理报告,从视觉上检测癌细胞。CNN 还使自动驾驶汽车能够检测各种物体,学习区分路标与行人。

了解更多

CNN 工作原理

卷积神经网络可能有数十个甚至数百个层,每个层学习检测图像的不同特征。卷积层滤波器会应用到不同分辨率的各个训练图像,且每个卷积图像的输出会用作下一层的输入。滤波器最初可以是非常简单的特征,例如亮度和边缘,然后增加复杂度,直至可以唯一地确定目标特征。

CNN 进行图像、文本、声音和视频的特征识别和分类。

特征学习、层和分类

像其他神经网络一样,CNN 由一个输入层、一个输出层和中间的多个隐藏层组成。

这些层执行可修改数据的操作,旨在学习特定于数据的特征。最常见的三个层是:卷积、激活或 ReLU 以及池化。

  • 卷积将输入图像放进一组卷积滤波器滤波器,每个滤波器滤波器激活图像中的某些特征。
  • ReLU层通过将负值映射到零和保持正数值,实现更快、更高效的训练。有时候这称为激活,因为只有激活的特征才能转移到下一层。
  • 池化通过执行非线性下采样,减少网络需要学习的参数个数,从而简化输出。

这些操作在几十层甚至几百层上反复进行,每一层都学习识别不同的特征。

具有大量卷积层的网络示例。滤波器会应用到不同分辨率的各个训练图像,且每个卷积图像的输出会用作下一层的输入。

分类层

在学习完许多层中的特征之后,CNN 的架构转移到分类。

倒数第二层是全连接层,输出 K 维度的向量,其中 K 是网络能够预测的类数量。此向量包含任何图像的每个类进行分类的概率。

CNN 架构的最后一层使用分类层(比如 softmax)提供分类输出。

使用 GPU 进行硬件加速

卷积神经网络在数百、数千、甚至数百万张图像上训练。在处理大量数据和复杂的网络架构时,GPU 能大大加快处理速度来训练模型。CNN 训练好以后,便可用于实时应用,例如用于高级驾驶辅助系统 (ADAS) 中进行行人侦测。

结合 CNN 使用 MATLAB

结合Neural Network Toolbox™ 神经网络工具箱使用 MATLAB® ,您可以从头开始训练您自己的卷积神经网络,也可以使用预先训练好的模型进行迁移学习

选择哪种方法取决于可用的资源和要构建的应用类型。

要从头开始训练一个网络,设计者需要确定层和滤波器的数量以及其他可调参数。从头开始训练一个精确的模型还需要海量数据,差不多要数百万个样本,这可能会花费大量时间。

另一个常见做法是使用预先训练好的模型自动从新的数据集提取特征。这个方法叫迁移学习 ,是一种运用深度学习的便捷方法,不需要庞大的数据集和耗时的计算和训练。

从头开始训练

从头开始创建网络意味着由用户决定网络配置。这种方法让您对该网络有最大程度的控制,可以产生惊人的结果,但要求您了解神经网络的结构以及多种层类型和配置选择。

尽管结果有时可能优于迁移学习(参见下文),但是此方法往往需要使用更多图像进行训练,因为一个全新的网络需要大量对象样本,才能了解特征的变化。训练时间通常较长,而且有这么多网络层的组合,从头开始配置一个网络会令人望而生畏。通常情况下,在构造网络和排列各层时,参考其他网络配置,利用研究人员已证明成功的方法,应该很有帮助。

了解更多

使用预先训练好的模型实现迁移学习

利用迁移学习微调预先训练好的网络通常比从头训练更快、更容易。它只需用到最少的数据和计算资源。迁移学习使用一种问题类型的知识来解决类似的问题。您可以从一个预先训练好的网络开始,用它来学习新任务。迁移学习的一个优势是预先训练好的网络已经学习了一系列丰富的特征。这些特征能应用于范围广泛的其他类似任务。例如,您可以采用在数百万张图像上训练好的网络,然后只使用数百张图像重新训练该网络,即可用于新的对象分类。

借助 Neural Network Toolbox,您可以使用预先训练好的 CNN 模型(如 GoogLeNet、AlexNetvgg16vgg19)以及 Caffe 和 TensorFlow-Keras 中的模型执行迁移学习。

了解更多

使用 CNN 的应用

目标检测

目标检测是对图像和视频中的对象进行定位和分类的过程。Computer Vision System Toolbox™ 提供了一些训练框架,用于通过 R-CNN (regions with CNN)、fast R-CNN 和faster R-CNN 创建基于深度学习的目标检测器。

您可以使用 Statistics and Machine Learning Toolbox™ 中的机器学习技术,配合 Computer Vision System Toolbox 来创建目标检测系统。

Neural Network Toolbox 提供了用于构建和训练 CNN 以及利用训练好的 CNN 模型进行预测的函数。

本示例展示了如何使用深度学习和 R-CNN (Regions with Convolutional Neural Networks) 训练对象检测器。
本示例展示了如何使用一种称为 Faster R-CNN (Regions with Convolutional Neural Networks) 的深度学习技术来训练对象检测器。

如何了解有关 CNN 的更多信息

支持使用 CNN 进行图像分析的产品包括 MATLAB®Computer Vision System Toolbox™Statistics and Machine Learning Toolbox™Neural Network Toolbox™

使用卷积神经网络需要 Neural Network Toolbox。支持 CUDA® 且计算功能集版本为 3.0 或更高的 GPU 才能支持训练和预测。建议使用 GPU,并且需要有 Parallel Computing Toolbox™

软件参考

获取免费试用版

30 天探索触手可及。

有疑问吗?

与深度学习专家探讨。