卷积神经网络

 

卷积神经网络概述

不可不知的三大要点

卷积神经网络(CNN 或 ConvNet)是一种深度学习网络架构,它直接从数据中学习,不需要手动提取特征。

CNN 特别适合在图像中寻找模式以识别物品、人脸和场景。这类网络也能很好地对一些非图像数据进行分类,如音频、时间序列和信号数据。

需要目标识别计算机视觉的应用(如自动驾驶汽车和人脸识别应用)高度依赖 CNN。

CNN 为何如此实用?

CNN 之所以成为广受追捧的深度学习架构,主要原因有三:

  • CNN 无需手动提取特征;特征由 CNN 直接学习。
  • CNN 可产生高度准确的识别结果。
  • CNN 可以针对新识别任务重新训练,使您能够在已有网络的基础上进行构建。
深度学习工作流。将图像传递给 CNN,CNN 自动学习特征并对目标进行分类。

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

CNN 架构非常适合用来揭示和学习图像和时间序列数据中的关键特征。CNN 是以下应用中的关键技术:

  • 医学成像:CNN 可以检查成千上万份病理报告,以视觉方法检测图像中是否存在癌细胞。
  • 音频处理:只要设备带有麦克风,就可以进行关键字检测,检测到用户说出的特定字词,如“嘿 Siri”。CNN 可以在各种环境下准确地学习和检测关键字,同时忽略所有其他字词。
  • 停车标志检测:自动驾驶依靠 CNN 来准确检测标志或其他目标的存在,并根据输出作出决策。
  • 合成数据生成:使用生成对抗网络 (GAN) 可以生成新图像,用于深度学习应用,包括人脸识别和自动驾驶。

了解更多

CNN 的工作原理

一个卷积神经网络可以有数十层乃至数百层,每层都学习检测图像的不同特征。将不同分辨率的滤波器应用于每个训练图像,每个卷积后图像的输出会成为下一层的输入。滤波器可以从非常简单的特征开始,例如亮度和边缘,然后越来越复杂,直到可以唯一定义目标的特征为止。

特征学习、层和分类

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

一个深度学习模型,它在输入数据、多个层和输出之间建立了连接。

这些层会执行运算以更改数据,目的是学习特定于数据的特征。三种最常见的层是卷积层、激活层(即 ReLU 层)和池化层。

  • 卷积层将一组卷积滤波器应用于输入图像,每个滤波器激活图像中的特定特征。
  • 修正线性单元 (ReLU) 层将负值映射到零,同时保持正值不变,让训练更快、更高效。此层有时称为激活层,因为只有激活的特征才会传递给下一层。
  • 池化层执行非线性下采样,减少网络需要学习的参数个数,从而简化输出。

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

一个包含大量卷积层的网络。将不同分辨率的滤波器应用于每个训练图像,每个卷积后图像的输出会成为下一层的输入。

一个包含大量卷积层的网络。将不同分辨率的滤波器应用于每个训练图像,每个卷积后图像的输出会成为下一层的输入。

共享权重和偏置

像传统的神经网络一样,CNN 有带权重和偏置的神经元。模型会在训练过程中学习这些值,并且每当有新的训练数据,就会更新这些值。然而,对于 CNN,一个给定层中所有隐藏神经元的权重和偏置值是相同的。

这意味着所有隐藏神经元会在图像的不同区域检测相同的特征,例如边缘或斑点。因此,网络容许图像中的目标有一定的平移。例如,对于一个汽车识别网络,无论汽车出现在图像何处,网络都能进行识别。

分类层

通过多个层学习特征后,CNN 的架构转向分类。

倒数第二层是全连接层,它输出一个包含 K 维向量,其中 K 是网络能够预测的类的数量。此向量包含图像被分到各个类的概率。

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

用 MATLAB 设计和训练 CNN

借助 MATLAB® 和  Deep Learning Toolbox™,您能够设计、训练和部署 CNN。

MATLAB 提供来自深度学习社区的多种预训练模型,可用于学习和识别新数据集的特征。这种方法称为迁移学习,让您无需从头开始构建模型就能便捷应用深度学习。您可以使用 GoogLeNet、AlexNet 和 Inception 等模型作为起点,利用专家构建的、经过验证的架构来探索深度学习。

设计和训练网络

使用深度网络设计器,您可以导入预训练模型或从头构建新模型。

深度网络设计器,用于交互式构建、可视化和编辑深度学习网络。

深度网络设计器,用于交互式构建、可视化和编辑深度学习网络。

您还可以直接在该 App 中训练网络,并使用准确度、损失和验证指标的绘图来监控训练。

使用预训练模型进行迁移学习

通常来说,使用迁移学习对预训练网络进行微调比从头开始训练更快、更容易。它只需要很少的数据和计算资源。迁移学习使用某一类问题的相关知识来解决与之类似的问题。该方法以一个预训练网络作为起点,利用它学习新任务。迁移学习的优点是预训练网络已学习了一系列丰富的特征。这些特征可以应用于广泛的其他类似任务。例如,以一个基于数百万个图像训练过的网络为起点,只需再用几百个图像重新训练,网络就能对新目标进行分类。

使用 GPU 进行硬件加速

卷积神经网络是基于数百、数千甚至数百万个图像进行训练的。在对大量数据和复杂网络架构进行处理时,GPU 可以显著缩短训练模型所需的处理时间。

一个 NVIDIA® GPU,它能加速深度学习等计算密集型任务。

一个 NVIDIA® GPU,它能加速深度学习等计算密集型任务。

了解更多


基于 CNN 的应用

目标检测

目标检测是对图像和视频中的目标进行定位和分类的过程。Computer Vision Toolbox™ 提供了训练框架,支持用 YOLO 和 Faster R-CNN 创建基于深度学习的目标检测器。

使用深度学习进行目标检测

使用深度学习进行目标检测

此示例说明如何使用深度学习和 R-CNN(区域卷积神经网络)训练目标检测器。

关键字检测

语音转文本的应用之一是关键字检测,用来识别特定关键字词并将其用作指令。常见的例子有唤醒设备和开灯。

使用深度学习进行关键字检测

使用深度学习进行关键字检测

此示例说明如何使用 MATLAB 识别和检测音频中的语音命令,可用于语音辅助技术。

语义分割

语义分割使用 CNN 识别图像中的每个像素并分配相应的类标签。语义分割可用于自动驾驶、工业检查、地形分类和医学成像等应用。卷积神经网络是构建语义分割网络的基础。

使用深度学习进行语义分割

使用深度学习进行语义分割

此示例说明如何使用 MATLAB 构建语义分割网络,该网络识别图像中的每个像素并分配相应的标签。

MATLAB 提供了各类深度学习所需的各种工具和功能。您可以使用 CNN 增强各类工作流,包括信号处理、计算机视觉以及通信和雷达。


如何进一步了解 CNN

支持使用 CNN 进行图像分析的产品包括 MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™ 以及 Deep Learning Toolbox

使用卷积神经网络需要有 Deep Learning Toolbox。训练和预测需要支持 CUDA® 且计算能力至少为 3.0 的 GPU。强烈建议使用 GPU;使用 GPU 需要有 Parallel Computing Toolbox™

视频

示例和操作指南

软件参考