| 60 | return h |
| 61 | |
| 62 | class SmallMotionEncoder(nn.Module): |
| 63 | def __init__(self, args): |
| 64 | super(SmallMotionEncoder, self).__init__() |
| 65 | cor_planes = args.corr_levels * (2*args.corr_radius + 1)**2 |
| 66 | self.convc1 = nn.Conv2d(cor_planes, 96, 1, padding=0) |
| 67 | self.convf1 = nn.Conv2d(2, 64, 7, padding=3) |
| 68 | self.convf2 = nn.Conv2d(64, 32, 3, padding=1) |
| 69 | self.conv = nn.Conv2d(128, 80, 3, padding=1) |
| 70 | |
| 71 | def forward(self, flow, corr): |
| 72 | cor = F.relu(self.convc1(corr)) |
| 73 | flo = F.relu(self.convf1(flow)) |
| 74 | flo = F.relu(self.convf2(flo)) |
| 75 | cor_flo = torch.cat([cor, flo], dim=1) |
| 76 | out = F.relu(self.conv(cor_flo)) |
| 77 | return torch.cat([out, flow], dim=1) |
| 78 | |
| 79 | class BasicMotionEncoder(nn.Module): |
| 80 | def __init__(self, args): |