PyTorch 卷积神经网络简介

概述

卷积神经网络在 CV 领域, 检测任务领域, 分类与检索领域, 图片重构领域, 医学任务领域, 无人驾驶领域, 人脸识别领域等等都有广泛的应用.
在这里插入图片描述

卷积神经网络与传统网络的区别:
在这里插入图片描述

架构

整体架构:

  • 输入层
  • 卷积层
  • 池化层
  • 全连接层
    在这里插入图片描述

卷积是什么

卷积就是一种特殊的加权求和. 卷积是一种混合信息的手段, 通过对输入图片大小相同区块和卷积核进行点乘然对不同通道后求和.
在这里插入图片描述

图像颜色通道

当我们在图像上应用卷积时, 我们分别在 W, L, C 三个维度处理信息. 输入的图像由 R, G, B 三个通道组成, 其中每个通道的元素都是[0, 255] 中的一个数, 例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特征图个数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

堆叠的卷积层

在这里插入图片描述

卷积层参数

参数:

  • 滑动窗口步长
  • 卷积核尺寸
  • 边缘填充
  • 卷积核个数

步长

步长为 1 的卷积:
在这里插入图片描述
步长为 2 的卷积:
在这里插入图片描述

卷积核尺寸

在这里插入图片描述

边界填充

在这里插入图片描述

卷积核个数

有多少个卷积核, 经过卷积就会产生多少个feature map, 也就是下图中 的层数.
在这里插入图片描述

卷积结果计算公式

其中 W1, H1 表示输入的宽度, 长度; W2, H2 表示输出特征图的宽度, 长度. F 表示卷积核长和宽的大小, S 表示滑动窗口的步长, P 表示边界填充:
在这里插入图片描述

卷积参数共享

在这里插入图片描述
对于 10 个 553 的卷积核, 每一个卷积核需要 553 = 75个参数. 10 个卷积核就需要1075 = 750个卷积核参数. 在加上每个卷积核一个的b (bias: 偏置) 参数, 最终只需要750+10=760个权重参数. 相较于 3232*3 = 3072 个参数, 参数共享大大降低了参数的数量.
在这里插入图片描述

池化层

在这里插入图片描述

最大池化

在这里插入图片描述

平均池化 (不推荐)

在这里插入图片描述

最小池化 (不推荐)

在这里插入图片描述

特征图

在这里插入图片描述

感受野

如果堆叠 3 个 33 的卷积层, 并且保持滑动窗口步长为 1, 其感受野就是 77 了. 如下图所示:
在这里插入图片描述
那么我们为什么非要堆叠 3 个 小卷积而不用 7*7 呢?

我们假设输入大小都是 hwc, 并且都使用 c 个卷积核得到 c 个特征图. 我们来计算一下 3 个 33 卷积核和 77 卷积核各自所需参数:

  • c * 7 * 7 *c = 49 c^2
  • 3* c * 3 * 3 *c = 27 c^2

很明显, 堆叠小的卷积核所需的参数更少一些. 并且卷积核过程越多, 特征提取也会越细, 加入的非线性变化也随着增多, 同时还不会增大权重个数.

经典网络

Alexnet 网络

在这里插入图片描述

Vgg 网络

在这里插入图片描述

Resnet 网络

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46274168/article/details/114281272