news 2026/7/20 20:31:33

第09讲 | CNN基础:局部感受野、卷积核、Padding与Stride

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第09讲 | CNN基础:局部感受野、卷积核、Padding与Stride

第09讲 | CNN基础:局部感受野、卷积核、Padding与Stride

购买相关资料后畅享一对一答疑

畅享超多免费持续更新且可大幅度提升文章档次的纯干货工具!

素材来源:B站视频《第09讲〈CNN基础:局部感受野、卷积核、Padding与Stride〉》,UP主:Ai学术叫叫兽。本文为学习笔记式原创整理,适合科研小白按步骤复习和实操。

人看一张图,不会把所有像素当成一根超长电话线,从头读到尾。

你看一只猫,通常先看到耳朵边缘,再看到眼睛附近的纹理,最后才拼成整张脸。

CNN 的核心思想,就是先看局部,再逐步组合成整体。

这一讲只抓 4 个关键点:

  1. 为什么图像不适合直接用全连接硬怼。
  2. 局部感受野和卷积核到底是什么关系。
  3. Padding 为什么能保住边缘信息。
  4. Stride 为什么会影响速度和分辨率。

一、先看大图:CNN 在做什么?

方式输入方式问题
全连接网络先把图像展平参数爆炸,空间结构丢失
CNN用小窗口扫描局部区域更适合图像、边缘、纹理和局部模式

图 1:全连接和卷积的差别

全连接:整张图拉平 -> 直接学习 问题:像素顺序被打散,参数特别多 卷积:小窗口滑动 -> 局部提特征 -> 再往后组合 优势:保留空间结构,共享参数

你可以把 CNN 理解成一个“局部特征提取器”:

边缘 -> 纹理 -> 局部部件 -> 更复杂的目标

这也是为什么后面学 YOLO 时,Backbone 不是乱堆模块,而是在一步一步提取更有用的视觉特征。


二、局部感受野:神经元只看一小块

局部感受野,指的是一个神经元只连接输入图像的一部分区域,而不是整张图。

如果输入是5x5的小图,卷积核是3x3,那么每次只看3x3的局部块:

输入图像 ┌─────┐ │局部块│ -> 卷积核只处理这一小块 └─────┘

这样做有 3 个好处:

好处说明
更符合图像结构图像里的边缘、角点、纹理本来就是局部的
参数更少不需要每个输出神经元连整张图
可迁移性更强同一个卷积核能在不同位置重复使用

三、卷积核:真正干活的小窗口

卷积核就是在图像上滑动的“小窗口”,也叫 filter。

它本质上做两件事:

  1. 在一个局部区域里做加权求和。
  2. 把这个结果写到输出特征图的一个位置上。

简化公式:

输出 = 输入局部块 × 卷积核权重 + 偏置

更完整一点:

y(i, j) = Σ x(i+u, j+v) · w(u, v) + b

这里最关键的是权重共享

  • 同一个卷积核参数,会在整张图上重复使用。
  • 这让 CNN 比全连接网络省很多参数。
  • 也让“同一种边缘”能在不同位置被检测出来。

一个直观例子

假设你用一个3x3卷积核去扫图像:

过程含义
取局部块只看当前3x3区域
乘以权重判断这块像不像边缘、纹理或局部形状
滑动到下一格继续在别的位置重复同样操作

这就是卷积“会找模式”的原因。


四、Padding:给图像加一圈安全边

不加 Padding 时,卷积到边缘会越来越小。

比如输入5x5,卷积核3x3,stride=1,padding=0:

输出尺寸 = 3x3

边缘信息会被快速压缩掉。

Padding 的作用就是在图像四周补零,让卷积核也能照顾到边缘。

常见 Padding 方式

设置作用
padding=0不补边,输出更小
padding=13x3 卷积常用,尺寸更容易保持不变
same尽量保持输入输出尺寸一致

最常见的记法

kernel_size=3stride=1时:

padding=1 -> 输入输出尺寸基本不变

这在 CNN 里非常常见,因为它能让你“多看几层”,同时不让特征图缩得太快。


五、Stride:卷积窗口每次走多远

Stride 就是卷积核每次滑动的步长。

Stride结果
stride=1看得细,输出更大
stride=2跳着看,输出减半左右
stride>2压缩更狠,信息损失更大但更快

你可以把它理解成:

Stride 小 -> 看得细 Stride 大 -> 看得快

典型取舍

需求建议
想保留更多细节用小 stride
想降低分辨率、加快计算用大 stride
想做下采样stride=2很常见

六、输出尺寸怎么计算?

当 dilation=1 时,卷积输出尺寸公式是:

H_out = floor((H_in + 2P - K) / S) + 1 W_out = floor((W_in + 2P - K) / S) + 1

其中:

符号含义
H_in, W_in输入高和宽
Ppadding
Kkernel_size
Sstride

直接拿例子算

输入卷积核PaddingStride输出
5x53x3013x3
5x53x3115x5
5x53x3123x3
32x323x31216x16

这张表是你调 CNN 时最该背熟的东西之一。


七、科研小白实操:跑一遍形状变化

先别上来就堆很多层。先看懂一层卷积到底把 shape 改成什么。

importtorchfromtorchimportnn x=torch.randn(2,3,32,32)# [B, C, H, W]stem=nn.Sequential(nn.Conv2d(3,8,kernel_size=3,stride=1,padding=1),nn.ReLU(),nn.Conv2d(8,16,kernel_size=3,stride=2,padding=1),nn.ReLU(),nn.MaxPool2d(kernel_size=2,stride=2))y=stem(x)print("input :",x.shape)print("output:",y.shape)

这段代码会发生什么?

参数输出 shape
输入3x32x322, 3, 32, 32
Conv13 -> 8, k=3, s=1, p=12, 8, 32, 32
Conv28 -> 16, k=3, s=2, p=12, 16, 16, 16
MaxPoolk=2, s=22, 16, 8, 8

你要养成的习惯

  1. 每写一层,就打印一次 shape。
  2. 先确认通道数对不对。
  3. 再确认高宽有没有按预期变化。

这比盲目堆网络有效得多。


八、常见错误排查表

问题常见原因怎么改
输出 shape 不对padding 或 stride 算错先手算,再打印 shape
通道报错in_channels和前一层输出不一致检查Conv2d(in_channels, out_channels)
图像被压得太小stride 太大,层数太多降低 stride,减少下采样
边缘信息丢失没有 padding给 3x3 卷积常配padding=1
训练速度太慢输入太大、下采样太晚早点做下采样

九、今天的学习任务

如果你是科研小白,今天就做这 4 件事:

  1. 找一张32x3264x64的图片,手算一次卷积输出尺寸。
  2. nn.Conv2dpadding=0/1stride=1/2
  3. 每改一次参数,就打印一次tensor.shape
  4. 记住一句话:卷积看局部,padding 保边界,stride 控分辨率。

十、三句话复盘

  1. 局部感受野让神经元只看图像的一小块,更符合视觉结构。
  2. 卷积核通过权重共享,在整张图上重复找模式。
  3. Padding 和 Stride分别决定边缘保留程度和下采样速度。

写在最后

学术因方向、个人实验和写作能力以及具体创新内容的不同而无法做到一通百通,关注UP:Ai学术叫叫兽
在所有资料中留下联系方式以便在科研之余为家人们答疑解惑,本up主获得过国奖,发表多篇SCI,擅长目标检测领域,拥有多项竞赛经历,拥有软件著作权,核心期刊等经历。
因为经历过所以更懂小白的痛苦!
因为经历过所以更具有指向性的指导!

祝所有科研工作者都能够在自己的领域上更上一层楼!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 20:28:38

三个实用思路:2026年服装店如何借力AI优化经营决策

2026年的服装行业,开一家实体店或者线上店的门槛依然不高,但要把生意做稳、做出利润,挑战比想象中大。库存像滚雪球一样越来越大,数据分析只能靠月末对着Excel理一理,会员常常买了一次就再没消息。身边的同行陆续把AI工…

作者头像 李华
网站建设 2026/7/20 20:28:20

fakeLoader.js入门指南:5分钟快速创建全屏加载动画效果

fakeLoader.js入门指南:5分钟快速创建全屏加载动画效果 【免费下载链接】fakeLoader.js fakeLoader.js is a lightweight jQuery plugin that helps you create an animated spinner with a fullscreen loading mask to simulate the page preloading effect. 项目…

作者头像 李华
网站建设 2026/7/20 20:27:12

OpenOnload网络栈架构解析:深入理解用户级网络加速的实现原理

OpenOnload网络栈架构解析:深入理解用户级网络加速的实现原理 【免费下载链接】onload OpenOnload high performance user-level network stack 项目地址: https://gitcode.com/gh_mirrors/on/onload OpenOnload是一款高性能用户级网络栈,通过绕过…

作者头像 李华