From
论文:TINYCD: A (Not So) Deep Learning Model For Change Detection
[2207.13159] TINYCD: A (Not So) Deep Learning Model For Change Detection (arxiv.org)
代码:
实现通道信息交叉混合,再分组卷积
代码实现
# https://github.com/AndreaCodegoni/Tiny_model_4_CD/blob/main/models/layers.py
class MixingBlock(nn.Module):
def __init__(
self,
ch_in: int,
ch_out: int,
):
super().__init__()
self._convmix = nn.Sequential(
nn.Conv2d(ch_in, ch_out, 3, groups=ch_out, padding=1),
nn.PReLU(),
nn.InstanceNorm2d(ch_out),
)
def forward(self, x, y):
# Packing the tensors and interleaving the channels:
mixed = torch.stack((x, y), dim=2)
mixed = torch.reshape(mixed, (x.shape[0], -1, x.shape[2], x.shape[3]))
# Mixing:
return self._convmix(mixed)
if __name__ == '__main__':
inputx = torch.randn(1,2,5,5)
inputy = torch.randn(1,2,5,5)
model = MixingBlock(2,2)
output = model(inputx,inputy)
print(output)