郭震 AI公众号:郭震AI

17 卷积神经网络(CNN)之卷积与池化操作

发布日期:

最近更新:

分类: 计算机视觉

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点12 个
图文要点6 张
正文规模1.6k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 12 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

卷积与池化操作流程图查看大图
卷积与池化操作流程图

CNN 的卷积负责提局部特征,池化负责压缩空间尺寸。理解特征图怎么变小、通道怎么变多,是读 CNN 架构的基础。

卷积与池化操作实操核对图查看大图
卷积与池化操作实操核对图

我会逐层记录 H、W、C 三个维度。卷积网络的问题,很多时候第一眼就能从特征图尺寸看出来。

在上一篇文章中,我们介绍了深度学习与神经网络的基本概念,特别是梯度下降与优化算法。在这一篇中,我们将深入探讨卷积神经网络(CNN)的核心操作:卷积池化。这些操作是构建任何CNN的基础,了解它们的工作原理对于理解深度学习中的图像处理非常重要。

卷积操作

什么是卷积?

卷积池化操作判断卡查看大图
卷积池化操作判断卡

理解卷积与池化时,先看卷积核、步幅、填充、输出尺寸、池化方式和特征图变化。

在CNN中,卷积(Convolution)是一种特殊的运算,用于提取输入数据的特征。卷积操作通过对特征图和卷积核(或滤波器)进行滑动相乘的方式,提取图像中的局部特征。

卷积的数学定义

我们可以将输入的图像视为一个二维矩阵,而卷积核也是一个二维矩阵。实际的卷积操作可以用下面的公式表示:

S(i,j)=mnI(m,n)K(im,jn)S(i, j) = \sum_m \sum_n I(m, n) \cdot K(i - m, j - n)

其中:

  • S(i,j)S(i, j) 是输出特征图的像素值。
  • I(m,n)I(m, n) 是输入图像的像素值。
  • K(i,j)K(i, j) 是卷积核的像素值。

注意:卷积的输入和输出的尺寸一般是不同的,这取决于卷积核的大小,以及边界处理方式(如填充,或stride步幅)。

案例:卷积操作示例

假设我们有一个简单的 5×55 \times 5 输入图像和一个 3×33 \times 3 卷积核:

输入图像 II

1 2 3 0 1
0 1 2 3 2
1 0 1 2 1
2 1 0 1 0
1 2 3 2 1

卷积核 KK

1 0 -1
1 0 -1
1 0 -1

我们可以通过应用卷积操作来计算特征图 SS。在具体实现中,我们通常会使用边界填充和步幅:

import numpy as np

# 定义输入图像和卷积核
I = np.array([[1, 2, 3, 0, 1],
              [0, 1, 2, 3, 2],
              [1, 0, 1, 2, 1],
              [2, 1, 0, 1, 0],
              [1, 2, 3, 2, 1]])

K = np.array([[1, 0, -1],
              [1, 0, -1],
              [1, 0, -1]])

# 定义卷积函数
def convolution2D(image, kernel):
    kernel_height, kernel_width = kernel.shape
    image_height, image_width = image.shape

    # 输出特征图尺寸
    output_height = image_height - kernel_height + 1
    output_width = image_width - kernel_width + 1
    output = np.zeros((output_height, output_width))

    # 进行卷积操作
    for i in range(output_height):
        for j in range(output_width):
            output[i, j] = np.sum(image[i:i + kernel_height, j:j + kernel_width] * kernel)
    
    return output

S = convolution2D(I, K)
print(S)

卷积的好处

卷积操作有几个显著的优点:

  1. 参数共享:通过使用相同的卷积核来处理整个图像,减少了模型的参数数量。
  2. 局部连接:卷积操作专注于局部区域,使得模型能够有效地捕捉局部特征。
  3. 平移不变性:卷积神经网络具有一定的平移不变性,使得对象的识别不受位置变化的影响。

池化操作

什么是池化?

计算机视觉阅读地图卡查看大图
计算机视觉阅读地图卡

阅读《卷积神经网络(CNN)之卷积与池化操作》前,可以先用配图确认主线;读完后再检查哪些步骤能直接操作,哪些还需要补资料。

池化(Pooling)是一种下采样操作,用于减少特征图的尺寸,从而减少计算量和防止过拟合。池化操作通常会提取特征图中的最重要的信息。

池化的类型

常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化选择池化窗口内的最大值,而平均池化则计算池化窗口内的平均值。

最大池化的数学定义

最大池化的操作可以用下面的公式表达:

P(i,j)=max(m,n)WS(m,n)P(i, j) = \max_{(m,n) \in W} S(m, n)

其中,P(i,j)P(i, j) 是池化后的特征图的像素值,而 WW 表示池化窗口的位置。

案例:最大池化示例

假设我们有以下特征图 SS

1 2 3
0 1 2
1 0 1

应用 2×22 \times 2 的最大池化:

# 定义最大池化函数
def max_pooling2D(image, size=(2, 2)):
    pool_height, pool_width = size
    image_height, image_width = image.shape

    # 输出特征图尺寸
    output_height = image_height // pool_height
    output_width = image_width // pool_width
    output = np.zeros((output_height, output_width))

    # 进行池化操作
    for i in range(0, image_height, pool_height):
        for j in range(0, image_width, pool_width):
            output[i // pool_height, j // pool_width] = np.max(image[i:i + pool_height, j:j + pool_width])
    
    return output

S = np.array([[1, 2, 3],
              [0, 1, 2],
              [1, 0, 1]])

P = max_pooling2D(S)
print(P)

池化的好处

池化操作有以下好处:

  1. 减少特征图的尺寸:这减少了下一层的计算需求。
  2. 特征提取:保留最重要的特征,抑制不重要的信息。
  3. 增强模型的容错性:池化操作能够增强网络对于输入数据微小变化的鲁棒性。
卷积神经网络(CNN)之卷积与池化操作应用复盘卡查看大图
卷积神经网络(CNN)之卷积与池化操作应用复盘卡

复习《卷积神经网络(CNN)之卷积与池化操作》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

卷积神经网络(CNN)之卷积与池化操作应用检查卡查看大图
卷积神经网络(CNN)之卷积与池化操作应用检查卡

练习《卷积神经网络(CNN)之卷积与池化操作》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

总结

在本篇文章中,我们深入探讨了卷积神经网络中的卷积池化操作。卷积负责提取图像的特征

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

卷积神经网络(CNN)之卷积与池化操作适合谁读?

这是 计算机视觉网络教程 系列第 17 / 31 篇,适合正在学习计算机视觉网络教程,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇计算机视觉网络教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...