目录
[三、CNN 核心思想](#三、CNN 核心思想)
[五、卷积层(Convolution Layer)](#五、卷积层(Convolution Layer))
[六、激活函数 ReLU](#六、激活函数 ReLU)
[七、池化层(Pooling Layer)](#七、池化层(Pooling Layer))
[九、全连接层(Fully Connected)](#九、全连接层(Fully Connected))
一、什么是卷积神经网络(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)是计算机视觉领域最重要的深度学习模型之一。
其核心思想包括:
-
局部感受野
-
参数共享
-
卷积特征提取
-
池化降维
-
全连接分类
典型流程:
输入图片
↓
卷积层
↓
ReLU
↓
池化层
↓
卷积层
↓
池化层
↓
Flatten
↓
全连接层
↓
Softmax
↓
输出结果
从 LeNet 到 AlexNet,再到 ResNet,CNN 推动了整个计算机视觉领域的发展,并广泛应用于图像识别、目标检测、自动驾驶、人脸识别等场景。
对于深度学习初学者来说,CNN 是学习计算机视觉最重要的入门模型,也是理解现代 AI 技术的重要基础。