【Changer解码头详解及融入neck层数据的实验设计】

Changer解码头详解

ChangerEx中的 Changer 解码头(定义在 [changer.py](file://opencd\models\decode_heads\changer.py))是基于双时相输入的,用于遥感变化检测任务。下面我将详细解释:


🎯 一、解码头输入数据来源

输入结构:

  • 输入类型:来自 Backbone 的多尺度特征图(通常为 ResNet 的输出)
  • 输入形式:一个列表,包含多个层级的特征图(例如 [feat1, feat2, feat3, feat4]
  • 每个特征图形状(B, C, H, W),其中:
    • B: batch size
    • C: 通道数
    • H, W: 高度和宽度

特别处理(双时相):

inputs = self._transform_inputs(inputs)
inputs1 = []
inputs2 = []
for input in inputs:
    f1, f2 = torch.chunk(input, 2, dim=1)
    inputs1.append(f1)
    inputs2.append(f2)
✅ 解释:
  • 每个输入特征图在通道维度上被拆分为两个部分(dim=1),分别代表两个时相的特征。
  • inputs1: 第一时相的特征列表
  • inputs2: 第二时相的特征列表

🧱 二、解码头内部处理流程

1. base_forward() —— 特征变换与融合

out1 = self.base_forward(inputs1)
out2 = self.base_forward(inputs2)
base_forward() 内容如下:
def base_forward(self, inputs):
    outs = []
    for idx in range(len(inputs)):
        x = inputs[idx]
        conv = self.convs[idx]
        outs.append(
            resize(
                input=conv(x),
                size=inputs[0].shape[2:],
                mode=self.interpolate_mode,
                align_corners=self.align_corners))
    out = self.fusion_conv(torch.cat(outs, dim=1))
    ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值