深度学习之卷积神经网络
一 背景导入
在之前我们对图像做一些识别和分类的时候,我们的做法通常是,把图像像素点拉成一个一维的,然后对这个进行分类,这样对图片要求比较苛刻,例如,我们识别的图像要识别的主题必须要处于图片的中心,而且颜色鲜艳程度必须相同。例如下面
这图中展示的是一个陶瓷像,虽然一直是一个东西,但是在处理的过程中会大有不同。所以这时我们导入了一个卷积神经网络。一个专门用于识别图像的算法。
传统机器学习图像识别
我们可以看到同样的一个图像识别的结果并不相同。
二 卷积神经网络
卷积
卷积的相乘并不是像矩阵那样,卷积就是点对点的相乘,然后把相乘的结果相加,这样就把这一个矩阵的特征给提取出来了。如下图所示
卷积效果
如下图所示,所展示的卷积效果,不同的卷积核会有不同的卷积效果,看到这里如果看过我opencv的小伙伴可能就知道了,卷积核就是一种滤波。
池化层
池化层分为最大池化,平均池化,全局最大池化,全局平均池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。
通常来说,CNN的卷积层之间都会周期性地插入池化层。
下面举出一个最大池化的示例来讲述。
这里是最大池化,池化核为2x2的,步长为2.感觉这个也和滤波好像。
卷积神经网络的大致框架
讲完上面几种,下面我们来学习一下卷积神经网络的大致框架,卷积神经网络就是由上面讲述的组合而成。首先我先来讲解下我自己的理解:卷积神经网络就是输入层->卷积层卷积->激活层激活->池化层池化.......(反复几次,调整卷积核的尺寸)........->全连接层连接。这样就是一个卷积神经网络。下面我给出神经网络的几个经典网络。
经典神经网络
1. LeNet-5
总层数:7层(3卷积 + 2池化 + 2全连接)
- 输入层:32×32 灰度图像
- C1卷积层:6个5×5卷积核 → 输出6张28×28特征图
- S2池化层:2×2平均池化 → 输出6张14×14特征图
- C3卷积层:16个5×5卷积核(部分连接) → 输出16张10×10特征图
- S4池化层:2×2平均池化 → 输出16张5×5特征图
- C5卷积层:120个5×5卷积核 → 输出120个1×1特征图(等效全连接)
- F6全连接层:84个神经元
- 输出层:10个神经元(径向基函数,现多改用Softmax)
备注:首个实用化CNN,奠定“卷积-池化-全连接”基础架构。
2. AlexNet
总层数:8层(5卷积 + 3全连接)
- 输入层:227×227×3 RGB图像(原论文为224×224)
- 卷积层C1-C5:
- C1:96个11×11卷积核(步长4)
- C2:256个5×5卷积核(填充2)
- C3-C4:各384个3×3卷积核
- C5:256个3×3卷积核
- 池化层:3个最大池化(3×3,步长2),位于C1、C2、C5后
- 全连接层FC6-FC8:
- FC6/FC7:各4096个神经元(含Dropout)
- FC8:1000个神经元(ImageNet分类输出)
创新点:首次引入ReLU、Dropout、多GPU训练,开启深度学习复兴。
3. VGGNet
总层数:16层(VGG-16)或19层(VGG-19)
- 输入层:224×224×3 RGB图像
- 卷积层:13层(VGG-16)或16层(VGG-19),全部使用3×3卷积核(步长1,填充1)
- 池化层:5个最大池化(2×2,步长2),每阶段后降采样
- 全连接层:3层(FC1/FC2各4096神经元,FC3输出1000类)
设计思想:通过堆叠小卷积核增加深度,提升特征提取能力,参数量达1.38亿(90%来自全连接层)。
4. GoogLeNet (Inception v1)
总层数:22层(含9个Inception模块)
- 初始卷积层:7×7卷积(步长2) → 最大池化
- Inception模块:9个(如3a、3b、4a等),每模块含4分支:
- 1×1卷积
- 1×1卷积 → 3×3卷积
- 1×1卷积 → 5×5卷积
- 3×3最大池化 → 1×1卷积
- 辅助分类器:2个(训练时加权融合损失)
- 输出层:全局平均池化 → 全连接层(Softmax)
核心创新:多尺度特征融合,1×1卷积降维减少计算量,参数量仅500万。
5. ResNet
总层数:按变体区分(如ResNet-18/34/50/101)
- 输入层:224×224×3 RGB图像
- 初始卷积层:7×7卷积(步长2) → 最大池化
- 残差阶段:4个(Stage 1-4),每阶段含多个残差块:
- ResNet-18/34:基础残差块(2个3×3卷积)
- ResNet-18:各阶段残差块数 [2, 2, 2, 2] → 共18层
- ResNet-34:各阶段残差块数 [3, 4, 6, 3] → 共34层
- ResNet-50/101/152:瓶颈残差块(1×1降维 → 3×3卷积 → 1×1升维)
- ResNet-50:各阶段残差块数 [3, 4, 6, 3] → 共50层
- ResNet-18/34:基础残差块(2个3×3卷积)
- 输出层:全局平均池化 → 全连接层
突破性设计:跳跃连接解决梯度消失,支持超深网络训练(如ResNet-152)。
细节讲解
1 输入层
输入层接收原始图像数据。图像通常由三个颜色通道(红、绿、蓝)组成,形成一个二维矩阵,表示像素的强度值。
2 卷积和激活
卷积层将输入图像与卷积核进行卷积操作。然后,通过应用激活函数(如ReLU)来引入非线性。这一步使网络能够学习复杂的特征。
3 池化层
池化层通过减小特征图的大小来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。
4 多层堆叠
CNN通常由多个卷积和池化层的堆叠组成,以逐渐提取更高级别的特征。深层次的特征可以表示更复杂的模式。
5 全连接和输出
最后,全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。