【HUAWEI】HCIP-AI-MindSpore Developer V1.0 | 第一章 神经网络基础( 2 卷积神经网络 ) | 学习笔记

目录

[第一章 神经网络基础](#第一章 神经网络基础)

[2 卷积神经网络](#2 卷积神经网络)

▲全连接网络的局限性

▲卷积神经网络

多通道卷积

转置卷积

空洞卷积

可分卷积

池化的基本操作和原理

[▲ 主流卷积网络模型](#▲ 主流卷积网络模型)

LeNet-5

AlexNet

Inception结构

ResNet

DenseNet

SSD

MobileNet

FCN



第一章 神经网络基础

2 卷积神经网络

▲全连接网络的局限性

在处理图像任务中,全连接神经网络会把图像中每一个像素点作为一个特征输入到网络中。图像像素点的数量很大,且由于全连接神经网络的特性,会导致模型的参数量非常庞大,且模型往往难以收敛 ,导致性能不佳

▲卷积神经网络

卷积神经网络( Convolutional Neural Network , CNN ) 是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于图像处理有出色表现。它包括卷积层(convolutional layer ),池化层( pooling layer )和全连接层( fully connected layer )

卷积核( Convolution Kernel ) ,根据一定规则进行图片扫描并进行卷积计算的对象称为卷积核。卷积核可以提取局部特征

卷积核尺寸( Kernel Size ) ,卷积核是一个 3 维的矩阵,可以用一个立方体图示,宽 w ,高 h,深度 d 。深度 d 由输入的通道数决定,一般描述卷积核尺寸时,可以只描述宽 w 和高 h 。

特征图( Feature Map ) ,经过卷积核卷积过后得到的结果矩阵就是特征图。每一个卷积核会得到一层特征图,有多个卷积核则会得到多层的卷积图

特征图尺寸( Feature Map Size ),特征图也是一个 3 维的矩阵,可以用一个立方体图示,宽 w ,高 h ,深度 d 。深度 d 由当前层的卷积核个数决定,一般描述特征图尺寸时,可以只描述宽 w 和高 h 。

步长( Stride ),卷积核在输入图像上滑动的跨度。如果卷积核一次移动一个像素,称其步长为 1 。

零填充( Padding ),为了提取图像边缘的信息,并且保证输出特征图的尺寸满足要求,可以对输入图像边缘填充一个全为 0 的边框,边框的像素宽度就是 padding 。

参数共享 ,对输入的照片,用一个或者多个 filter 扫描照片, filter 自带的参数就是权重,在同一个 filter 扫描的图层当中,每个 filter 使用同样的参数进行加权计算。

在卷积神经网络里,通道又分**++++输入通道++++** 和**++++输出通道++++**。

多通道卷积

在卷积神经网络里,通道又分输入通道和输出通道。

输入通道:如是彩色图片,起始的输入通道就是 3 。如是中间层的卷积,输入通道就是上一层的输出通道个数,计算方法是,每个输入通道的图片都使用同一个卷积核进行卷积操作,生成与输入通道匹配的 feature map (比如彩色图片就是 3 个),然后再把这几张 feature map 相同位置上的值加起来,生成一张 feature map 。

输出通道:想要输出几个 feature map ,就放几个卷积核,就是几个输出通道。

转置卷积

转置卷积 是卷积操作的逆运算,但本质上来说就是在做卷积运算。具体的操作是将上一层的特征图进行特定的 Padding ,再将卷积核的值做 ++++中心对称变换++++ ,再进行卷积计算

传统卷积 通过滑动一个较小的滤波器(kernel)来减小输入特征图的尺寸,而转置卷积的作用正好相反,它通过某种形式的逆操作来扩大特征图的尺寸。具体来说,转置卷积通过将输入特征图与一个转置的滤波器进行卷积运算,然后在输出中插入零像素(称为零填充,不同于传统卷积中的边界填充),以此来增加输出特征图的尺寸。

空洞卷积

空洞卷积( Atrous Convolution ),或称为膨胀卷积( Dilated Convolution ),是一种不增加参数数量,同时增加输出单元感受野的一种方法。

在标准卷积中,卷积核在输入特征图上逐像素滑动,每次滑动都会应用卷积操作。相比之下,空洞卷积通过在卷积核中插入空洞(即跳过一些像素),从而扩大了卷积核的有效感受野,同时保持了卷积核的参数数量不变。空洞卷积的"膨胀率"(dilation rate)定义了卷积核内部像素之间的间隔,膨胀率越大,感受野就越大。

空洞卷积的关键特点

保持参数数量不变:空洞卷积在不增加卷积核参数数量的情况下,能够显著扩大感受野,这对于在有限的计算资源下提高模型的捕获能力非常有帮助。

避免下采样损失信息:传统的卷积操作,尤其是带有步幅(stride)大于1的卷积,会减少输出特征图的尺寸,从而可能丢失一些细节信息。空洞卷积通过在不减少输出尺寸的前提下扩大感受野,避免了这种信息损失。

多尺度特征提取:空洞卷积能够以不同的膨胀率提取不同尺度的特征,这对于处理具有多尺度结构的图像(如街道场景中的远近景物)特别有效。

空洞卷积的应用

语义分割:在语义分割任务中,空洞卷积被广泛用于捕获不同尺度的上下文信息,同时保持输出特征图的高分辨率,这对于像素级的分类至关重要。

目标检测 :在目标检测中,空洞卷积可以用于构建更宽广的感受野,从而更好地检测++++大尺寸++++的目标,同时保持模型的计算效率。

图像超分辨率:空洞卷积在图像超分辨率任务中也被用于扩大感受野,从而更好地恢复高频细节。

总之,空洞卷积是一种强大而灵活的技术,它在保持计算效率的同时,增强模型对输入信号的感知能力,尤其是在需要处理++++多尺度++++特征的计算机视觉任务中,表现出了独特的优势。

可分卷积

某些神经网络架构使用了可分卷积,比如 MobileNets 。可分卷积有空间可分卷积深度可分卷积

++++空间可分卷积++**++**是将一个卷积分解为两个单独的运算。对于下面的示例, 3 × 3 的核被分成了一个 3 × 1 核和一个 1 × 3核。在卷积中, 3 × 3 核直接与图像卷积。在空间可分卷积中, 3 × 1 核首先与图像卷积,然后再应用 1 × 3 核。这样,执行同样的操作时仅需 6 个参数,而不是 9 个。如下图:

++++深度可分卷积++++ 的计算分为两部分,首先对通道(深度)分别进行空间卷积,并对输出进行拼接,随后使用单位卷积核进行通道卷积得到特征图。

将标准卷积分解为两个独立的步骤****:深度卷积(Depthwise Convolution)**** 和逐点卷积(Pointwise Convolution) 。这种分解方式极大地减少了参数数量,降低了计算复杂度,尤其在移动设备和嵌入式系统中非常实用

深度卷积 首先对输入特征图的每一个通道分别进行卷积操作,而不是像标准卷积那样对所有通道一起进行卷积。这意味着每个输入通道都会有一个独立的卷积核,这个卷积核的深度(即通道数)为1。这样做的结果是,深度卷积仅对空间维度(宽度和高度)进行操作,保持了通道间的独立性。

在深度卷积之后,逐点卷积(也称为1x1卷积) 用于混合不同通道的信息,从而恢复通道间的相互作用。逐点卷积使用一组1x1的卷积核对深度卷积的输出进行卷积,这些卷积核的深度等于深度卷积输出的通道数。通过逐点卷积,可以将深度卷积的输出转换为任意数量的通道,从而改变特征图的深度。

深度可分离卷积的总体计算流程 可以总结为:

①对输入特征图的每个通道分别应用深度卷积,得到一系列中间特征图。

②将这些中间特征图作为输入,通过逐点卷积进行通道组合,产生最终的输出特征图。

深度可分离卷积相比于标准卷积的**++++优势++++** 在于:

参数数量大幅 减少:深度卷积仅在空间维度上进行卷积,而逐点卷积在通道维度上进行卷积,这大大减少了需要学习的参数数量。

计算效率提升:由于参数数量的减少,深度可分离卷积的计算复杂度显著降低,尤其是在处理高分辨率图像时。

灵活性:逐点卷积可以改变特征图的深度,提供更大的设计灵活性。

池化的基本操作和原理

池化层主要的作用是下采样,通过去掉 Feature Map 中不重要的样本,进一步减少参数数量。

Pooling 的方法很多,最常用的是 Max Pooling 。 Max Pooling 实际上就是在 n*n 的样本中取最大值,作为采样后的样本值。除了 Max Pooing 之外,常用的还有 Average Pooling ,取各样本的平均值。对于深度为 D 的 Feature Map ,各层独立做 Pooling ,因此 Pooling 后的深度仍然为 D 。

损失函数

▲ 主流卷积网络模型

深度学习模型发展史

LeNet-5

LeNet-5 中主要有 2 个卷积层、 2 个下采样层(池化层)、 3 个全连接层 3 种连接方式。

AlexNet

Alex, ImageNet Classification with Deep Convolutional Neural Networks

不算输入层、 AlexNet 只有八层,但是它有 60M 以上的参数总量,事实上在参数量上比后面的网络都大。由于早期 GPU 显存的限制,最早的 AlexNet 包括了双数据流的设计,以让网络中一半的节点能存入一个 GPU 。用多个 GPU 训练。

I nception结构

GoogLeNet 设计了一种称为 Inception 的模块,它是 GoogleNet 之所以能夺冠的关键,这个模块使用密集结构来近似一个稀疏的 CNN ,使用不同大小的卷积核来抓取不同大小的感受。

ResNet

随着网络深度增加,网络的准确度应该同步增加。但是增加网络深度后,比较靠前的网络层梯度会很小。这意味着这些层基本上学习停滞了,这就产生了梯度消失问题。当网络更深时,网络的参数空间更大,优化问题变得更难,因此简单地去增加网络深度反而会导致更高的训练误差。残差网络的提出就是为了解决以上两个问题。

DenseNet

论文地址: https://arxiv.org/pdf/2001.02394.pdf

论 文 中 提 出 的 DenseNet ( Dense Convolutional Network )主要还是和 ResNet 及 Inception 网络做对比,思想上有借鉴,但却是全新的结构,网络结构并不复杂,却非常有效。

SSD

SSD ( Single Shot MultiBox Detector ) 使用 VGG-16-Atrous 作为基础网络。SSD 在不同尺度的特征图上进行了预测(通过锚点),通过这种方法来同时保证了对大目标和小目标的检测精度。

MobileNet
FCN

Jonathan Long 等人提出了 Fully Convolutional Networks ( FCN )用于图像语义分割。自从提出后, FCN 已经成为语义分割的基本框架,后续算其实都是在这个框架中改进而来。

GhostNet

说明:本文内容来源于网络,仅作为学习用途,如有侵权,请联系作者删除。

相关推荐
青松@FasterAI11 分钟前
【NLP高频面题 - 分布式训练篇】ZeRO主要为了解决什么问题?
人工智能·深度学习·自然语言处理·分布式训练·nlp面试
lu_rong_qq13 分钟前
【LLM】一文了解 NLP 里程碑模型 BERT
人工智能·自然语言处理·bert
玩具工匠21 分钟前
字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题
前端·javascript·vue.js·笔记·elementui·typescript
14_1134 分钟前
Cherno C++学习笔记 P49 C++中使用静态库
c++·笔记·学习
StevenGerrad1 小时前
【读书笔记/源码】How Tomcat Works 笔记 - c1~c10
java·笔记·tomcat
几两春秋梦_1 小时前
PINN求解偏微分方程
人工智能·pytorch·python
大学生毕业题目1 小时前
毕业项目推荐:基于yolov8/yolov5的行人检测识别系统(python+卷积神经网络)
python·yolo·cnn
蒸土豆的技术细节2 小时前
vllm源码(一)
人工智能·自然语言处理
随风飘摇的土木狗2 小时前
【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型(敏感性分析方法)
神经网络·matlab·bp·敏感性分析·shap·可解释·shaply
微凉的衣柜2 小时前
深度剖析 DeepSeek V3 技术报告:架构创新与卓越性能表现
人工智能·语言模型·大模型