卷积神经网络(CNN)详解

发布于:2025-08-16 ⋅ 阅读:(15) ⋅ 点赞:(0)

1️⃣ 什么是卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network, CNN) 是一种专为处理具有网格结构数据(如图像)而设计的神经网络。

  • 最早用于手写数字识别(LeNet-5)

  • 在图像分类、目标检测、语音识别等领域广泛应用

核心思想:

  • 用卷积核(滤波器)提取局部特征

  • 共享权重减少参数量

  • 层叠结构逐步提取从低级到高级的特征

2️⃣ CNN 的核心结构

典型 CNN 结构:

输入层 → 卷积层 → 激活函数 → 池化层 → 卷积层 → 池化层 → 全连接层 → 输出层

3️⃣ 数学公式

卷积运算公式(单通道)

S(i,j) = (I * K)(i,j) = \sum_m \sum_n I(i+m, j+n) \cdot K(m, n)

  • I:输入特征图

  • K:卷积核

  • S:输出特征图

多通道卷积公式

S_k(i,j) = \sum_{c=1}^C \sum_m \sum_n I_c(i+m, j+n) \cdot K_{k,c}(m, n)

激活函数(ReLU)

f(x) = \max(0, x)

4️⃣ 卷积层(Convolution Layer)

作用:提取局部特征,保留空间关系。
参数:

  • 卷积核大小(如 3×3、5×5)

  • 步长(stride)

  • 填充(padding)

5️⃣ 池化层(Pooling Layer)

作用:降低特征图分辨率,减少计算量,防止过拟合。

常见类型:

  1. 最大池化(Max Pooling):取局部窗口最大值

  2. 平均池化(Average Pooling):取局部窗口平均值

公式(最大池化):

P(i,j) = \max_{(m,n) \in R_{i,j}} S(m,n)

6️⃣ 全连接层(Fully Connected Layer)

作用:将卷积提取的特征映射到最终输出空间(分类或回归)。
公式同 MLP:

z = W a + b

7️⃣ 前向传播过程

  1. 输入图像(如 32×32×3)

  2. 卷积层提取低级特征(边缘、纹理)

  3. 激活函数增加非线性

  4. 池化层降采样

  5. 多层卷积+池化逐渐提取高级特征

  6. 全连接层将特征映射到标签空间

  7. Softmax 输出分类概率

8️⃣ Python 实现(PyTorch)

import torch
import torch.nn as nn
import torch.optim as optim

class SimpleCNN(nn.Module):
    def __init__(self, num_classes=10):
        super(SimpleCNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
        self.relu = nn.ReLU()
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
        self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
        self.fc1 = nn.Linear(32 * 8 * 8, num_classes)
    
    def forward(self, x):
        x = self.pool(self.relu(self.conv1(x)))
        x = self.pool(self.relu(self.conv2(x)))
        x = x.view(x.size(0), -1)
        x = self.fc1(x)
        return x

# 模型测试
model = SimpleCNN(num_classes=10)
X = torch.randn(4, 3, 32, 32)
outputs = model(X)
print("Output shape:", outputs.shape)

9️⃣ 优缺点总结

✅ 优点:

  • 参数共享,减少计算量

  • 局部感受野,捕捉空间特征

  • 适合高维数据(图像、视频、语音)

❌ 缺点:

  • 对旋转、缩放不一定鲁棒

  • 训练需要大量数据和计算资源

🔟 应用场景

  • 图像分类(ImageNet、CIFAR)

  • 目标检测(YOLO、Faster R-CNN)

  • 图像分割(U-Net、Mask R-CNN)

  • 视频分析、动作识别

  • 语音识别

📌 总结
CNN 通过卷积层和池化层高效地提取特征,已成为计算机视觉任务的主力模型。结合深度网络结构(如 ResNet、DenseNet)和注意力机制(SE、CBAM),CNN 在多领域仍保持很强竞争力。


网站公告

今日签到

点亮在社区的每一天
去签到