File size: 695 Bytes
12510fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import torch
import torch.nn as nn
import torch.nn.functional as F
class MultiScaleFusion(nn.Module):
def __init__(self, in_ch: int, out_ch: int):
super().__init__()
self.scale1 = nn.Conv2d(in_ch, in_ch, 3, padding="same")
self.scale2 = nn.Conv2d(in_ch, in_ch, 3, padding="same", dilation=2)
self.scale3 = nn.Conv2d(in_ch, in_ch, 3, padding="same", dilation=4)
self.proj = nn.Conv2d(in_ch * 3, out_ch, 1, bias=False) if in_ch * 3 != out_ch else nn.Identity()
def forward(self, x):
f1 = self.scale1(x)
f2 = self.scale2(x)
f3 = self.scale3(x)
fused = torch.cat([f1, f2, f3], dim=1)
return self.proj(fused)
|