4、多尺度特征提取概念:图像金字塔、特征金字塔网络(FPN)、空洞卷积

各位同学,咱们今天聊一个非常核心的话题——多尺度特征提取。

说实话,我在做目标检测和语义分割项目时,最头疼的问题就是“同一个物体,大小不一样怎么办?”你想想看,一张图片里,远处的行人可能只有几十个像素,近处的汽车却占了半个屏幕。如果模型只用单一尺度的特征去处理,那肯定顾此失彼。

所以,多尺度特征提取就应运而生了。它本质上就是让网络“看得全、看得细”。今天咱们就掰开揉碎,把三个最经典的方法讲清楚:图像金字塔、特征金字塔网络(FPN)和空洞卷积。

4.1 图像金字塔:最朴素的多尺度思路

图像金字塔这个概念,其实很直观。说白了,就是把同一张图片,不断地缩小,形成一组分辨率从高到低的图像序列。就像金字塔一样,底部大、顶部小。

为什么需要它?

因为卷积神经网络(CNN)本身对尺度变化并不鲁棒。一个在训练集里占满屏幕的猫,到了测试集里变成一个小点,模型可能就认不出来了。图像金字塔通过提供不同分辨率的输入,让模型有机会“看到”不同尺度的物体。

具体怎么做?

通常有两种方式:

  • 高斯金字塔:先对图像做高斯模糊,然后下采样。这样每一层都保留了低频信息,去掉了高频噪声。
  • 拉普拉斯金字塔:记录高斯金字塔相邻层之间的差异。它保留了高频细节,常用于图像重建和融合。

我记得有一次做遥感图像的目标检测,目标尺寸差异极大。小到几米的车,大到几百米的建筑。我当时就用了图像金字塔,把每张图缩放了5个尺度,分别送入网络。效果确实有提升,但代价也很大——计算量直接翻了5倍。嗯,这里要注意,图像金字塔虽然效果好,但效率是硬伤。

核心要点:图像金字塔是“输入级”的多尺度策略。它简单、有效,但计算开销大,不适合实时场景。

4.2 特征金字塔网络(FPN):更聪明的多尺度融合

图像金字塔的缺点太明显了。我就在想,能不能不重复计算整张图,而是利用CNN本身的分层特征呢?

你想想看,CNN的前几层分辨率高、感受野小,适合捕捉细节;后几层分辨率低、感受野大,适合捕捉语义。这不就是天然的多尺度特征吗?

FPN的核心思想:自底向上 + 自顶向下 + 横向连接。

  • 自底向上:就是普通的CNN前向传播。比如ResNet,从conv2到conv5,特征图尺寸逐渐减半,通道数逐渐增加。
  • 自顶向下:把高层语义特征上采样,恢复到和底层特征一样的大小。
  • 横向连接:把上采样后的高层特征和对应的底层特征相加(或拼接)。这样,每一层既保留了高层的语义信息,又保留了底层的细节信息。

我给大家画个图,你就明白了。

FPN 结构示意图 C5 (32x32) C4 (64x64) C3 (128x128) C2 (256x256) P5 (32x32) P4 (64x64) P3 (128x128) P2 (256x256) 自底向上(CNN前向) 自顶向下(上采样) 横向连接(相加)

你看,左边的C2到C5是原始特征,右边的P2到P5是融合后的特征。每一层P都包含了从顶层传递下来的语义信息和本层的细节信息。这样一来,我们在P2、P3、P4、P5上分别做预测,就能覆盖从小到大的所有目标。

我的经验:FPN在目标检测中几乎是标配。我曾在一次比赛中,仅仅把backbone从ResNet-50换成ResNet-101,并加上FPN,mAP就涨了3个点。但要注意,FPN的横向连接如果处理不好,容易引入噪声。我建议在相加之前,先对底层特征做一个1x1卷积,统一通道数。

4.3 空洞卷积:不降分辨率也能扩大感受野

讲完FPN,咱们再聊聊空洞卷积。这个技巧,说白了就是“在卷积核里插孔”。

为什么需要它?

在语义分割任务中,我们既希望有大的感受野来捕捉上下文,又希望保持特征图的分辨率来保留细节。传统的做法是不断下采样,但这样分辨率就降低了。空洞卷积正好解决了这个矛盾。

空洞卷积的原理:

普通的3x3卷积,感受野就是3x3。但如果我们在卷积核的像素之间插入空洞(即跳过一些像素),感受野就变大了。比如,dilation rate=2时,一个3x3的卷积核,实际覆盖的区域是5x5,但只有9个点参与计算。

我给大家一个公式:

感受野大小 = (卷积核大小 - 1) * dilation_rate + 1

举个例子:

卷积核大小 Dilation Rate 实际感受野 参数量
3x3 1 3x3 9
3x3 2 5x5 9
3x3 3 7x7 9
3x3 4 9x9 9

你看,参数量没变,但感受野却大了很多。这就是空洞卷积的魅力。

避坑指南:我曾经在项目中连续堆叠了多个dilation rate=2的空洞卷积,结果发现特征图出现了“棋盘格效应”。这是因为空洞卷积的采样点不连续,导致局部信息丢失。后来我改用混合空洞卷积(HDC),把不同dilation rate的卷积层交替使用,才解决了这个问题。

空洞卷积的典型应用:

  • DeepLab系列:用空洞卷积作为ASPP(Atrous Spatial Pyramid Pooling)的核心组件,在多个尺度上并行采样。
  • 语义分割:保持特征图分辨率的同时,扩大感受野,提升分割精度。
  • 目标检测:在FPN的顶层使用空洞卷积,可以进一步扩大感受野,提升大目标的检测效果。

4.4 三者的对比与选择

好了,三种方法都讲完了。我给大家做个总结,方便你以后做技术选型。

方法 核心思想 优点 缺点 适用场景
图像金字塔 多尺度输入 简单、效果好 计算量大、速度慢 离线处理、精度优先
FPN 多尺度特征融合 效率高、效果好 结构复杂、调参多 目标检测、实例分割
空洞卷积 扩大感受野 不降分辨率、参数少 可能产生网格效应 语义分割、密集预测

我个人习惯是:如果项目对实时性要求高,优先用FPN;如果对精度要求极高且不差算力,可以上图像金字塔;如果做分割任务,空洞卷积是必选项。

嗯,今天就先聊到这儿。这三种方法,你可以在后续的MobileViT融合实战中反复用到。多尺度特征提取,说白了就是让模型“既见树木,又见森林”。掌握了这个思想,很多问题就迎刃而解了。

一句话总结:多尺度特征提取不是单一技术,而是一套方法论。图像金字塔是“暴力”方案,FPN是“优雅”方案,空洞卷积是“精巧”方案。三者各有所长,灵活组合才是王道。

可可精品资料库