目标检测中经典有效网络架构-卷积神经网络(CNN),这里记录了学习的相关笔记。
学习资料:
【卷积神经网络概述】为什么做图像经常用卷积网络_哔哩哔哩_bilibilij
掌握卷积神经网络模型(cnn)1-卷积神经网络应用领域_哔哩哔哩_bilibili
一、卷积神经网络的应用
检测任务、分类和检索、超分辨率重构、医学任务、无人驾驶
二、卷积神经网络基本认识
卷积神经网络(英语:convolutional neural network,缩写:CNN)是一种前馈神经网络。(卷积神经网络是什么?)
三、卷积神经网络的层次
卷积神经网络包括:数据输入层、卷积计算层(卷积层)、ReLU激励层(激活函数)、池化层、全连接层。(卷积神经网络包含有哪些重要的层次?)
整体卷积神经网络示例:
对应特征图变化过程:
根据上图中特征图的变化规律可以大致发现规律:卷积倾向于提取特征并增加特征的深度、池化则是减少参数量(减小每层的尺寸)。
四、数据输入层(input layer)
目的:数据预处理((卷积神经网络的)数据输入层一般的作用是什么?常见的输入层操作有哪些?)
去均值:将各个维度都中心化为0,将样本中心拉回坐标系原点。
归一化:将各个维度的数值都归一化到统一的标准,防止因为维度之间的数据差值范围太大,造成数据的特征差距过大产生影响。(去均值、归一化分别是什么?有什么作用?)
上图之中从第一张图到第二张图就是将数据首先去均值,将样本数据的中心拉回到坐标系原点,拉回之后可以明显观察到样本的分布中心到了原点的部分,从第二章图到第三张图就是将数据的二维数据拉伸到统一标准范围之内。
归一化的优势:
五、卷积层(Convolutional Layer)
卷积(层)的作用:特征提取。(卷积的作用是什么?)
卷积计算:对应位置相乘然后求和,也就是本轮遍历到的卷积部分与我们已知的卷积核的各个位置进行一对一的相乘,相乘之后然后进行求和,便能够得到对应卷积计算的结果。
每一个卷积核就是一个滤波器(图像是数据波,也会出现数据特殊的波动,也是将不感兴趣的数据进行滤掉)。
参数共享:极大减少了待估计参数个数。(什么是参数共享?参数共享的是什么内容?)共享的是卷积核中的参数。
卷积之后的输出结果是卷积核对图像滤波后的结果,比如得到的是边缘,点等特征图。
计算方式:下图中显示了卷积计算的过程是如何进行的,首先原图是7*7*3,代表的是7*7的像素分辨率,通道数为3,而卷积核是进行遍历的3*3的矩阵,这里明确一下,卷积核是一个整体,例如图中的图像是三通道图像,那么一个卷积核其实是3个3*3的矩阵,也就是3*3*3,其分别与对应位置相乘,最终求和,然后加上偏置数值。因此一个卷积核对应三个矩阵,同时一个卷积核也对应了一个通道的输出,如果希望是得到一个二通道的输出,那么必须是两个卷积核。(如何进行卷积的计算?)
卷积核的个数和卷积层数的确定:
32*32*3需要的卷积核为三层结构,目标是6层输出“特征图”,因此是6个卷积核,即卷积核内部的层数由待处理的输入层数决定,而输出的层数由处理的卷积核个数决定。(卷积核的内部层数和卷积核个数与输入输出的层数之间是什么关系?)
卷积层涉及的参数:滑动窗口步长、卷积核尺寸、边缘填充、卷积核个数。(边缘填充的作用是什么?)
卷积结果计算公式:(填充后的长度-卷积核长度)/步长+1(卷积结果的维度如何计算?如何理解卷积结果计算的公式?)
计算例题(计算输出规模,UP主PPT打错字啦):
- 边界填充为2,原本长宽都为32,因而填充后长宽各为36
- 36减去卷积长宽5=31
- 使用31除步长1为31
- 31+1=32,得到输出特征图的长宽都是32
- 因为是使用10个卷积核进行操作,因而输出的特征为32*32*10
六、激活层(activation layer)
作用:把卷积层输出结果做非线性映射。
(一)为什么要做非线性映射
线性的表达能力有限,线性的多层叠加仍是线性,完全可以直接表示。
(二)非线性函数的条件
(三)常见的激活函数
卷积神经网络通常使用Relu激活函数
七、池化层(Pooling layers)
池化层作用:就是下采样、降维(池化层作用是什么?)
(卷积层和池化层的区别是什么?)1. 作用和目的不同:卷积层是为了提取图像特征,如边缘、斑点等;池化层主要是为了减少输入的空间尺寸,降低模型的计算复杂度,减少过拟合。2. 计算方面:卷积需要更为复杂的计算(加权求和),池化往往简单的提取(如最大池化) 3. 输出结果:卷积操作往往会改变深度,而池化不改变层数。
池化之后,同样大小的区域对应的数据必然是融合了更多的数据,含有更多的信息。
池化之后数据之间的相对位置依旧不变。
八、全连接层(Fully Connected Layer)
全连接层就是任何两个层之间都是n*m的全连接。
全连接层的作用:特征整合称为一个“分类”数。
九、网络设计(network design)
(一)卷积核大小的确定
(二)神经网络的层数和每层神经元个数
(三)设计过程
过拟合->抑制过拟合->调节超参数