张芷铭的个人博客

多尺度监督通过不同尺度层次施加监督信号,显著提升模型特征学习能力。

数学基础

图像 $I(x,y)$ 在尺度 $\sigma$ 下的表示:

$$L(x,y,\sigma) = G(x,y,\sigma) * I(x,y)$$

特征金字塔通过下采样生成:

$$F_l^{down} = \text{Pool}(F_l)$$

主流实现

FPN

自上而下路径融合多尺度特征:

1
2
3
4
5
6
7
class FPN(nn.Module):
    def forward(self, features):
        merged = [self.lateral_convs[-1](features[-1])]
        for i in range(len(features)-2, -1, -1):
            merged.append(F.interpolate(merged[-1], scale_factor=2) +
                         self.lateral_convs[i](features[i]))
        return merged[::-1]

U-Net

编码器-解码器结构 + 跳跃连接。

损失函数

$$\mathcal{L} = \sum_{s=1}^S \lambda_s \mathcal{L}_s$$

权重设置:等权重、尺度衰减、自适应权重(GradNorm)。

性能对比

方法mAP@0.5参数量
Faster R-CNN42.341M
+FPN46.744M
+PANet47.448M

工程实践

内存优化:梯度检查点减少显存占用。

尺度选择:输入尺寸与目标尺度匹配。

问题排查

现象解决方案
小目标检测差增加高分辨率监督分支
训练不稳定自适应权重调整
显存溢出梯度累积策略

前沿进展

  • 动态多尺度:TridentNet 尺度自适应
  • 神经架构搜索:Auto-FPN 自动优化
  • 跨模态融合:MultiScale ViT

Comments