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

相关推荐
完成大叔1 小时前
模块二,Agent知识图谱的工具链思考
人工智能
lauo1 小时前
ibbot手机发布:搭载poplang技术 + token节点经济,革新AI手机体验
人工智能·智能手机
咖啡星人k1 小时前
云端开发环境技术架构深度解析:从容器隔离到AI Agent集成
人工智能·架构
袋鼠云数栈1 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
piao9618271 小时前
企业级AIOT方案落地实践:2026年线下销售过程管理AI硬件推荐
人工智能·语音识别
智写-AI1 小时前
Turnitin vs GPTZero vs ZeroGPT:三大英文AI检测平台如何选择?
人工智能·aigc·ai写作·ai自动写作
Litluecat2 小时前
2026年6月1日科技热点新闻
大数据·人工智能·科技·推荐·热点·新闻·每日
志栋智能2 小时前
AI驱动无代码:降低巡检超自动化的门槛
大数据·运维·网络·人工智能·自动化
qcx232 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer