diff --git a/core/corr.py b/core/corr.py index 645ca55..cffcbc8 100644 --- a/core/corr.py +++ b/core/corr.py @@ -34,9 +34,9 @@ class CorrBlock: out_pyramid = [] for i in range(self.num_levels): corr = self.corr_pyramid[i] - dx = torch.linspace(-r, r, 2*r+1) - dy = torch.linspace(-r, r, 2*r+1) - delta = torch.stack(torch.meshgrid(dy, dx), axis=-1).to(coords.device) + dx = torch.linspace(-r, r, 2*r+1, device=coords.device) + dy = torch.linspace(-r, r, 2*r+1, device=coords.device) + delta = torch.stack(torch.meshgrid(dy, dx), axis=-1) centroid_lvl = coords.reshape(batch*h1*w1, 1, 1, 2) / 2**i delta_lvl = delta.view(1, 2*r+1, 2*r+1, 2) diff --git a/core/raft.py b/core/raft.py index e0519ed..652b81a 100644 --- a/core/raft.py +++ b/core/raft.py @@ -63,8 +63,8 @@ class RAFT(nn.Module): def initialize_flow(self, img): """ Flow is represented as difference between two coordinate grids flow = coords1 - coords0""" N, C, H, W = img.shape - coords0 = coords_grid(N, H//8, W//8).to(img.device) - coords1 = coords_grid(N, H//8, W//8).to(img.device) + coords0 = coords_grid(N, H//8, W//8, device=img.device) + coords1 = coords_grid(N, H//8, W//8, device=img.device) # optical flow computed as difference: flow = coords1 - coords0 return coords0, coords1 diff --git a/core/utils/utils.py b/core/utils/utils.py index 5f32d28..741ccfe 100644 --- a/core/utils/utils.py +++ b/core/utils/utils.py @@ -71,8 +71,8 @@ def bilinear_sampler(img, coords, mode='bilinear', mask=False): return img -def coords_grid(batch, ht, wd): - coords = torch.meshgrid(torch.arange(ht), torch.arange(wd)) +def coords_grid(batch, ht, wd, device): + coords = torch.meshgrid(torch.arange(ht, device=device), torch.arange(wd, device=device)) coords = torch.stack(coords[::-1], dim=0).float() return coords[None].repeat(batch, 1, 1, 1)