一、为什么 CNN 超参数比你想的更重要?

在工业落地的 CNN 模型里,感受野(Receptive Field) 决定网络能“看多宽”,池化(Pooling) 决定“下采样多少”,特征图尺寸 决定“内存/算力占用”。
调参顺序建议:

  1. 业务需求 → 2. 设计感受野 → 3. 计算特征图 → 4. 选择池化策略 → 5. 实验验证

二、感受野:一句话公式 + 一行代码

2.1 定义

感受野是特征图上的一个像素对应到输入图像的区域大小

2.2 递推公式

从输入到第 L 层,感受野 RL​ 与上一层 RL−1​ 的关系:

RL​=(RL−1​−1)×SL​+KL​

  • KL​:卷积核大小

  • SL​:stride(步长)

2.3 一行 PyTorch 代码

def receptive_field(k=3, s=1, layers=5):
    r = 1
    for _ in range(layers):
        r = (r - 1) * s + k
    return r

print("5层3×3卷积,stride=1,感受野=", receptive_field())  # 11

 

 

三、特征图大小:万能模板,可直接 Ctrl+C/V

3.1 单卷积层公式

Hout​=⌊SHin​+2P−K​⌋+1

  • P:padding

  • K:kernel_size

  • S:stride

3.2 模板函数(支持任意层)

def calc_fm_size(input_size, layers):
    """layers = [(K, S, P), ...]"""
    h = input_size
    for k, s, p in layers:
        h = (h + 2*p - k) // s + 1
    return h

# 示例:224×224 输入 → Conv3×3/2 → Conv5×5/1 → MaxPool2×2/2
print(calc_fm_size(224, [(3,2,1), (5,1,2), (2,2,0)]))  # 55

四、池化:不只是降维,更是正则

池化类型 核大小 stride 作用 适用场景
MaxPool 2×2 2 保留最强特征 通用图像
AvgPool 3×3 1 平滑特征 轻量级模型
AdaptivePool - - 固定输出尺寸 分类头

4.1 池化后特征图尺寸

直接复用上一节 calc_fm_size,把池化层也当成 stride=K、padding=0 的特殊卷积即可。


五、端到端调参 Checklist

步骤 关键问题 推荐工具
① 定义任务 检测/分割/分类? 业务文档
② 设计感受野 目标尺寸多大? receptive_field()
③ 计算显存 特征图大小×batch×精度 torchsummary
④ 池化策略 下采样几次? 网格搜索
⑤ 实验验证 mAP/Top-1 提升? Weights&Biases

六、完整案例:ResNet50 第一层拆解

Kernel Stride Padding 特征图尺寸 感受野
Input - - - 224×224 1
Conv1 7×7 2 3 112×112 7
MaxPool 3×3 2 1 56×56 11

验证代码:

print(calc_fm_size(224, [(7,2,3), (3,2,1)]))  # 56
print(receptive_field(k=7, s=2, layers=1) + receptive_field(k=3,s=2,layers=1) - 1)  # 11

七、可视化:把感受野画在图上

import cv2
import numpy as np

def draw_rf(img, rf=11, center=(112,112)):
    h, w = img.shape[:2]
    img = cv2.rectangle(img.copy(),
                        (center[0]-rf//2, center[1]-rf//2),
                        (center[0]+rf//2, center[1]+rf//2),
                        (0,255,0), 2)
    return img

img = np.zeros((224,224,3), dtype=np.uint8)
cv2.imwrite("receptive_field_demo.jpg", draw_rf(img))

https://img-blog.csdnimg.cn/direct/rf_demo.jpg


八、结论 & 下载

  • 感受野公式:RL​=(RL−1​−1)×SL​+KL​

  • 特征图模板calc_fm_size() 直接复用

  • 池化口诀:“Max 保峰,Avg 平滑,Adaptive 固定”

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐