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

相关推荐
皮皮学姐分享-ppx1 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器1 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
专注VB编程开发20年2 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐2 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
Nayxxu2 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab2 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab2 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯
Deepoch3 小时前
Deepoc VLA开发板:采摘机器人的环境鲁棒作业与不确定性应对
人工智能·机器人·采摘机器人·deepoc
云栖梦泽在3 小时前
AI安全专项:AI人脸识别的安全风险与防护
人工智能·安全