深入理解卷积神经网络(CNN)——从原理到代码实践

目录

一、什么是卷积神经网络(CNN)

二、传统神经网络为什么不适合处理图像

[三、CNN 核心思想](#三、CNN 核心思想)

四、CNN整体结构

[五、卷积层(Convolution Layer)](#五、卷积层(Convolution Layer))

1、卷积核(Kernel)

2、卷积的作用

边缘检测

垂直边缘

模糊处理

[六、激活函数 ReLU](#六、激活函数 ReLU)

[七、池化层(Pooling Layer)](#七、池化层(Pooling Layer))

示例

池化作用

八、多层卷积提取特征

[九、全连接层(Fully Connected)](#九、全连接层(Fully Connected))

十、Softmax输出

十一、CNN训练过程

十二、TensorFlow实现CNN

十三、经典CNN模型

LeNet-5

AlexNet

VGG

GoogLeNet

ResNet

十四、CNN的优缺点

优点

自动提取特征

参数共享

平移不变性

表现优秀

缺点

训练成本高

数据需求大

可解释性较弱

十五、CNN实际应用场景

人脸识别

自动驾驶

医学影像

安防监控

OCR文字识别

十六、总结


一、什么是卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,简称 CNN)是一种专门用于处理图像数据的深度学习模型。

CNN 最早由 Yann LeCun 提出,并成功应用于手写数字识别任务。随着深度学习的发展,CNN 已成为计算机视觉领域最重要的神经网络之一,被广泛应用于:

  • 图像分类

  • 目标检测

  • 人脸识别

  • 图像分割

  • 医学影像分析

  • 自动驾驶

例如:

当我们给计算机输入一张猫的图片时:

CNN 可以自动学习图片中的:

  • 边缘特征

  • 纹理特征

  • 局部结构

  • 高层语义特征

最终判断:

复制代码
这是一只猫

二、传统神经网络为什么不适合处理图像

假设有一张:

复制代码
224 × 224 × 3

的彩色图片。

那么输入数据量为:

复制代码
224 × 224 × 3
= 150528

如果第一层有 1000 个神经元:

复制代码
150528 × 1000
≈ 1.5亿个参数

参数量巨大:

  • 训练困难

  • 容易过拟合

  • 内存占用高

因此需要一种更高效的方法提取图像特征。

于是 CNN 诞生了。


三、CNN 核心思想

CNN 的核心思想:

利用局部连接和参数共享来提取图像特征。

普通神经网络:

复制代码
每个神经元连接所有像素

CNN:

复制代码
每个神经元只观察局部区域

例如:

复制代码
3×3

的小窗口。

这样:

  • 参数大幅减少

  • 训练速度更快

  • 泛化能力更强


四、CNN整体结构

典型 CNN 结构如下:


五、卷积层(Convolution Layer)

卷积层是 CNN 的核心。


1、卷积核(Kernel)

例如:

复制代码
3×3卷积核

1 0 1
0 1 0
1 0 1

它会在图片上滑动。

例如:

原始图像:

复制代码
1 2 3
4 5 6
7 8 9

卷积核:

复制代码
1 0 1
0 1 0
1 0 1

计算:

复制代码
1×1 + 2×0 + 3×1
+4×0 +5×1 +6×0
+7×1 +8×0 +9×1

结果:

复制代码
25

这就是卷积运算。


2、卷积的作用

卷积核能够提取不同特征:

边缘检测

复制代码
-1 -1 -1
 0  0  0
 1  1  1

垂直边缘

复制代码
-1 0 1
-1 0 1
-1 0 1

模糊处理

复制代码
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9

CNN 会自动学习这些卷积核。

无需人工设计。


六、激活函数 ReLU

卷积后通常会经过激活函数:

复制代码
ReLU

公式:

复制代码
f(x)=max(0,x)

例如:

复制代码
输入:
[-3,-1,2,5]

输出:
[0,0,2,5]

作用:

  • 增加非线性

  • 缓解梯度消失

  • 提高训练速度


七、池化层(Pooling Layer)

池化层用于降低特征图尺寸。

最常见:

复制代码
Max Pooling

示例

原矩阵:

复制代码
1 3 2 4
5 6 1 2
7 2 8 9
4 5 6 3

使用:

复制代码
2×2 Max Pooling

得到:

复制代码
6 4
7 9

因为:

复制代码
max(1,3,5,6)=6
max(2,4,1,2)=4
max(7,2,4,5)=7
max(8,9,6,3)=9

池化作用

减少计算量:

复制代码
224×224
↓
112×112
↓
56×56

优点:

  • 降低参数量

  • 提高速度

  • 增强鲁棒性


八、多层卷积提取特征

CNN 越往后层次越深。

提取特征也越抽象。

例如识别猫:

第一层:

复制代码
边缘

第二层:

复制代码
耳朵轮廓

第三层:

复制代码
眼睛

第四层:

复制代码
猫脸

最后:

复制代码

九、全连接层(Fully Connected)

经过多层卷积后:

得到大量特征图。

需要将其转换为分类结果。

首先:

复制代码
Flatten

展开:

复制代码
7×7×512

变成:

复制代码
25088维向量

然后进入全连接层。


十、Softmax输出

假设识别:

复制代码
猫
狗
鸟

输出:

复制代码
猫:0.85

狗:0.10

鸟:0.05

Softmax:

复制代码
总和=1

表示概率分布。

最终预测:

复制代码

十一、CNN训练过程

整体流程:

不断迭代:

复制代码
前向传播
↓
计算误差
↓
反向传播
↓
更新权重

直到模型收敛。


十二、TensorFlow实现CNN

下面使用 TensorFlow 构建一个简单 CNN。

python 复制代码
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras import models

model = models.Sequential()

# 第一层卷积
model.add(
    layers.Conv2D(
        filters=32,
        kernel_size=(3,3),
        activation='relu',
        input_shape=(28,28,1)
    )
)

# 池化层
model.add(
    layers.MaxPooling2D((2,2))
)

# 第二层卷积
model.add(
    layers.Conv2D(
        64,
        (3,3),
        activation='relu'
    )
)

# 第二层池化
model.add(
    layers.MaxPooling2D((2,2))
)

# 展平
model.add(layers.Flatten())

# 全连接层
model.add(
    layers.Dense(
        128,
        activation='relu'
    )
)

# 输出层
model.add(
    layers.Dense(
        10,
        activation='softmax'
    )
)

model.summary()

模型结构:

复制代码
Input
↓
Conv2D
↓
MaxPooling
↓
Conv2D
↓
MaxPooling
↓
Flatten
↓
Dense
↓
Softmax

十三、经典CNN模型

深度学习发展过程中出现了许多经典 CNN。


LeNet-5

1998年

特点:

  • CNN开山鼻祖

  • 手写数字识别


AlexNet

2012年

特点:

  • ImageNet冠军

  • 引爆深度学习热潮


VGG

2014年

特点:

复制代码
全部使用3×3卷积

结构简单。


GoogLeNet

2014年

特点:

复制代码
Inception模块

提高效率。


ResNet

2015年

特点:

复制代码
残差连接

解决深层网络退化问题。


十四、CNN的优缺点

优点

自动提取特征

无需人工设计特征。


参数共享

减少模型规模。


平移不变性

目标轻微移动仍能识别。


表现优秀

图像任务长期主导模型。


缺点

训练成本高

需要GPU支持。


数据需求大

深度模型依赖大量样本。


可解释性较弱

难以理解具体学习内容。


十五、CNN实际应用场景

人脸识别

例如:

  • 支付宝刷脸

  • 手机解锁


自动驾驶

识别:

  • 行人

  • 红绿灯

  • 车辆


医学影像

识别:

  • 肺结节

  • 肿瘤

  • 病灶区域


安防监控

检测:

  • 入侵行为

  • 异常目标


OCR文字识别

例如:

  • 身份证识别

  • 发票识别

  • 车牌识别


十六、总结

卷积神经网络(CNN)是计算机视觉领域最重要的深度学习模型之一。

其核心思想包括:

  1. 局部感受野

  2. 参数共享

  3. 卷积特征提取

  4. 池化降维

  5. 全连接分类

典型流程:

复制代码
输入图片
↓
卷积层
↓
ReLU
↓
池化层
↓
卷积层
↓
池化层
↓
Flatten
↓
全连接层
↓
Softmax
↓
输出结果

从 LeNet 到 AlexNet,再到 ResNet,CNN 推动了整个计算机视觉领域的发展,并广泛应用于图像识别、目标检测、自动驾驶、人脸识别等场景。

对于深度学习初学者来说,CNN 是学习计算机视觉最重要的入门模型,也是理解现代 AI 技术的重要基础。

相关推荐
深小乐3 小时前
我在 Anthropic ELI5 上加了5样东西,做成了更好用的 ELI5+
人工智能
东风破_3 小时前
《LangGraph Memory:为什么 Agent 需要 Checkpointer?》
人工智能
锋行天下3 小时前
LangGraph 同级节点之间修改数据先后问题
人工智能
u1301303 小时前
AI 日报(2026年9月12日)
人工智能
东风破_3 小时前
《LangGraph Human-in-the-loop:Interrupt 如何让 Agent 等待人工确认》
人工智能
2601_962218613 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
智塑未来4 小时前
中文短剧出海翻译工具横评:VMEG AI、鬼手、Vozo AI、ElevenLabs怎么选?
人工智能
东风破_4 小时前
《LangGraph 条件路由与循环:如何让 Agent 自己决定下一步?》
人工智能
我爱吃土豆14 小时前
AI 编程工具远程开发指南:Codex 桌面版与 WorkBuddy 通过 SSH 连接云服务器实践
服务器·人工智能·ssh
袁俪4 小时前
推理成本门槛
人工智能