什么是卷积神经网络?如何MATLAB实现CNN?

人工智能

636人已加入

描述

卷积神经网络(CNN 或 ConvNet)是一种直接从数据中学习的深度学习网络架构。 CNN 特别适合在图像中寻找模式以识别对象、类和类别。它们也能很好地对音频、时间序列和信号数据进行分类。

CNN 的工作原理

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

什么是卷积神经网络? CNN 的工作原理是什么?

特征学习、层和分类 CNN 由一个输入层、一个输出层和中间的多个隐藏层组成。

滤波器

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

卷积层将一组卷积滤波器应用于输入图像,每个滤波器激活图像中的特定特征。

修正线性单元 (ReLU) 层将负值映射到零,同时保持正值不变,让训练更快、更高效。该层有时也称为激活层,因为只有激活的特征才会传递给下一层。

池化层执行非线性下采样,减少网络需要学习的参数个数,从而简化输出。

这些操作在数十层或数百层上反复进行,每一层都学习识别不同的特征。 一个包含大量卷积层的网络。将不同分辨率的滤波器应用于每个训练图像,每个卷积后图像的输出会成为下一层的输入。

滤波器

共享权重和偏置 与传统神经网络不同的是,CNN 具有共享的权重和偏置值。这些值对于给定层中的所有隐藏神经元均相同。 这意味着所有隐藏神经元会在图像的不同区域检测相同的特征,例如边缘或斑点。因此,网络容许图像中的目标有一定的平移。例如,对于一个汽车识别网络,无论汽车出现在图像何处,网络都能进行识别。 分类层 通过多个层学习特征后,CNN 的架构转向分类。 倒数第二层是一个全连接层,它输出一个 K 维向量(其中 K 是网络能够预测的类的数量),并包含图像被分到各个类的概率。 CNN 架构的最后一层使用分类层来提供最终分类输出。

CNN 为何重要

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

何时使用 CNN? 当您有大量复杂数据(例如图像数据)时,可以考虑使用 CNN。您还可以使用 CNN 处理针对网络结构预处理过的信号或时间序列数据。 考虑使用预训练模型 使用 CNN 时,工程师和科学家们更喜欢从一个预训练的模型开始,使用新数据集来让该模型学习和识别其中的特征。 您可以使用 GoogLeNet、AlexNet 和 Inception 等模型作为起点,利用专家构建的、经过验证的架构来探索深度学习。

用 MATLAB 实现 CNN

借助 MATLAB 和 Deep Learning Toolbox,您能够设计、训练和部署 CNN。 设计和训练网络 使用深度网络设计器,您可以导入预训练模型或从头构建新模型。 您还可以直接在该 App 中训练网络,并使用准确度、损失和验证指标图来监控训练。

滤波器

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

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

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

 

编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分