深入理解卷积神经网络(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 技术的重要基础。

相关推荐
IanSkunk4 小时前
眼视光设备全周期台账:从验收入库到使用效果数据化的管理闭环
大数据·网络·人工智能
拓人间精准客4 小时前
2025–2026 ToB 精准拓客实战手册:用“企业数据画像 + 动态筛选“击穿七大行业获客内卷
大数据·数据库·人工智能
北京GEO服务商余小铁4 小时前
北京建材行业怎么通过 GEO 推广实现获客
人工智能
txg6664 小时前
Less Is More:如何用半监督学习提升漏洞检测能力
人工智能·深度学习·学习·安全·开源软件
天涯明月19934 小时前
Ray 架构解析——以动态任务图统一 AI 计算的分布式框架
大数据·人工智能·分布式·架构·ray
无崖子04 小时前
【强化学习论文解读】Expert Behavior Prior Reinforcement Learning
人工智能·深度学习·神经网络
clorinda4 小时前
第一篇:OpenCV特征检测与SIFT特征匹配
人工智能·opencv·计算机视觉
大熊背5 小时前
ISP图像处理中大数乘法溢出处理(一)
人工智能·python·算法·溢出处理
精彩AI说5 小时前
ChatGPT回答内容总是漏重点怎么办?需求拆分、检查清单与二次补充方法
人工智能·chatgpt
Alphapeople5 小时前
3D算法推荐项目
人工智能