Python torch.meshgrid() Examples
The following are 30
code examples of torch.meshgrid().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch
, or try the search function
.
Example #1
Source File: module_util.py From BasicSR with Apache License 2.0 | 11 votes |
def flow_warp(x, flow, interp_mode='bilinear', padding_mode='zeros'): """Warp an image or feature map with optical flow Args: x (Tensor): size (N, C, H, W) flow (Tensor): size (N, H, W, 2), normal value interp_mode (str): 'nearest' or 'bilinear' padding_mode (str): 'zeros' or 'border' or 'reflection' Returns: Tensor: warped image or feature map """ assert x.size()[-2:] == flow.size()[1:3] B, C, H, W = x.size() # mesh grid grid_y, grid_x = torch.meshgrid(torch.arange(0, H), torch.arange(0, W)) grid = torch.stack((grid_x, grid_y), 2).float() # W(x), H(y), 2 grid.requires_grad = False grid = grid.type_as(x) vgrid = grid + flow # scale grid to [-1,1] vgrid_x = 2.0 * vgrid[:, :, :, 0] / max(W - 1, 1) - 1.0 vgrid_y = 2.0 * vgrid[:, :, :, 1] / max(H - 1, 1) - 1.0 vgrid_scaled = torch.stack((vgrid_x, vgrid_y), dim=3) output = F.grid_sample(x, vgrid_scaled, mode=interp_mode, padding_mode=padding_mode) return output
Example #2
Source File: module_util.py From IKC with Apache License 2.0 | 6 votes |
def flow_warp(x, flow, interp_mode='bilinear', padding_mode='zeros'): """Warp an image or feature map with optical flow Args: x (Tensor): size (N, C, H, W) flow (Tensor): size (N, H, W, 2), normal value interp_mode (str): 'nearest' or 'bilinear' padding_mode (str): 'zeros' or 'border' or 'reflection' Returns: Tensor: warped image or feature map """ assert x.size()[-2:] == flow.size()[1:3] B, C, H, W = x.size() # mesh grid grid_y, grid_x = torch.meshgrid(torch.arange(0, H), torch.arange(0, W)) grid = torch.stack((grid_x, grid_y), 2).float() # W(x), H(y), 2 grid.requires_grad = False grid = grid.type_as(x) vgrid = grid + flow # scale grid to [-1,1] vgrid_x = 2.0 * vgrid[:, :, :, 0] / max(W - 1, 1) - 1.0 vgrid_y = 2.0 * vgrid[:, :, :, 1] / max(H - 1, 1) - 1.0 vgrid_scaled = torch.stack((vgrid_x, vgrid_y), dim=3) output = F.grid_sample(x, vgrid_scaled, mode=interp_mode, padding_mode=padding_mode) return output
Example #3
Source File: anchor_generator.py From Clothing-Detection with GNU General Public License v3.0 | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #4
Source File: anchor_generator.py From EmbedMask with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #5
Source File: slomo.py From MoePhoto with Apache License 2.0 | 6 votes |
def __init__(self, W, H, device, dtype=torch.float): # pylint: disable=E1101 """ Parameters ---------- W : int width of the image. H : int height of the image. device : device computation device (cpu/cuda). """ super(backWarp, self).__init__() # create a grid gridX, gridY = torch.meshgrid(torch.arange(W), torch.arange(H)) # pylint: disable=E1101 self.W = W self.H = H self.gridX = gridX.t().to(dtype=dtype, device=device) # pylint: disable=E1101 self.gridY = gridY.t().to(dtype=dtype, device=device) # pylint: disable=E1101
Example #6
Source File: grid.py From gpytorch with MIT License | 6 votes |
def create_data_from_grid(grid: List[torch.Tensor]) -> torch.Tensor: """ Args: :attr:`grid` (List[Tensor]) Each Tensor is a 1D set of increments for the grid in that dimension Returns: `grid_data` (Tensor) Returns the set of points on the grid going by column-major order (due to legacy reasons). """ if torch.is_tensor(grid): grid = convert_legacy_grid(grid) ndims = len(grid) assert all(axis.dim() == 1 for axis in grid) projections = torch.meshgrid(*grid) grid_tensor = torch.stack(projections, axis=-1) # Note that if we did # grid_data = grid_tensor.reshape(-1, ndims) # instead, we would be iterating through the points of our grid from the # last data dimension to the first data dimension. However, due to legacy # reasons, we need to iterate from the first data dimension to the last data # dimension when creating grid_data grid_data = grid_tensor.permute(*(reversed(range(ndims + 1)))).reshape(ndims, -1).transpose(0, 1) return grid_data
Example #7
Source File: anchor_generator.py From maskrcnn-benchmark with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #8
Source File: anchor_generator.py From HRNet-MaskRCNN-Benchmark with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ).type_as(base_anchors) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ).type_as(base_anchors) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #9
Source File: anchor_generator.py From R2CNN.pytorch with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #10
Source File: anchor_generator.py From Parsing-R-CNN with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip(grid_sizes, self.strides, self.cell_anchors): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #11
Source File: anchor_generator.py From Res2Net-maskrcnn with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #12
Source File: torch_spec_operator.py From space_time_pde with MIT License | 6 votes |
def rfftfreqs(res, dtype=torch.float32, exact=True): """ Helper function to return frequency tensors :param res: n_dims int tuple of number of frequency modes :return: frequency tensor of shape [dim, res, res, res/2+1] """ # print("res",res) n_dims = len(res) freqs = [] for dim in range(n_dims - 1): r_ = res[dim] freq = np.fft.fftfreq(r_, d=1/r_) freqs.append(torch.tensor(freq, dtype=dtype)) r_ = res[-1] if exact: freqs.append(torch.tensor(np.fft.rfftfreq(r_, d=1/r_), dtype=dtype)) else: freqs.append(torch.tensor(np.fft.rfftfreq(r_, d=1/r_)[:-1], dtype=dtype)) omega = torch.meshgrid(freqs) omega = list(omega) omega = torch.stack(omega, dim=0) # print("omega.shape",omega.shape) return omega
Example #13
Source File: rpn.py From kaggle-kuzushiji-2019 with MIT License | 6 votes |
def grid_anchors(self, grid_sizes, strides): anchors = [] for size, stride, base_anchors in zip( grid_sizes, strides, self.cell_anchors ): grid_height, grid_width = size stride_height, stride_width = stride device = base_anchors.device shifts_x = torch.arange( 0, grid_width, dtype=torch.float32, device=device ) * stride_width shifts_y = torch.arange( 0, grid_height, dtype=torch.float32, device=device ) * stride_height shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #14
Source File: anchor_generator.py From DetNAS with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #15
Source File: torch_spec_operator.py From space_time_pde with MIT License | 6 votes |
def fftfreqs(res, dtype=torch.float32): """ Helper function to return frequency tensors :param res: n_dims int tuple of number of frequency modes :return: frequency tensor of shape [dim, res, res, res] """ n_dims = len(res) freqs = [] for dim in range(n_dims): r_ = res[dim] freq = np.fft.fftfreq(r_, d=1/r_) freqs.append(torch.tensor(freq, dtype=dtype)) omega = torch.meshgrid(freqs) omega = list(omega) omega = torch.stack(omega, dim=0) return omega
Example #16
Source File: model.py From voxelmorph with GNU General Public License v3.0 | 6 votes |
def __init__(self, size, mode='bilinear'): """ Instiatiate the block :param size: size of input to the spatial transformer block :param mode: method of interpolation for grid_sampler """ super(SpatialTransformer, self).__init__() # Create sampling grid vectors = [ torch.arange(0, s) for s in size ] grids = torch.meshgrid(vectors) grid = torch.stack(grids) # y, x, z grid = torch.unsqueeze(grid, 0) #add batch grid = grid.type(torch.FloatTensor) self.register_buffer('grid', grid) self.mode = mode
Example #17
Source File: min_norm_solver.py From Hydra with MIT License | 6 votes |
def __init__(self, n_tasks, max_iter=250, stop_crit=1e-6): super().__init__() self.n = n_tasks self.linear_solver = MinNormLinearSolver() self.planar_solver = MinNormPlanarSolver(n_tasks) n_grid = torch.arange(n_tasks) i_grid = torch.arange(n_tasks, dtype=torch.float32) + 1 ii_grid, jj_grid = torch.meshgrid(n_grid, n_grid) self.register_buffer('n_ts', torch.tensor(n_tasks)) self.register_buffer('i_grid', i_grid) self.register_buffer('ii_grid', ii_grid) self.register_buffer('jj_grid', jj_grid) self.register_buffer('zero', torch.zeros(n_tasks)) self.register_buffer('stop_crit', torch.tensor(stop_crit)) self.max_iter = max_iter self.two_sol = nn.Parameter(torch.zeros(2)) self.two_sol.require_grad = False
Example #18
Source File: op.py From learnable-triangulation-pytorch with MIT License | 6 votes |
def render_points_as_2d_gaussians(points, sigmas, image_shape, normalize=True): device = points.device n_points = points.shape[0] yy, xx = torch.meshgrid(torch.arange(image_shape[0]).to(device), torch.arange(image_shape[1]).to(device)) grid = torch.stack([xx, yy], dim=-1).type(torch.float32) grid = grid.unsqueeze(0).repeat(n_points, 1, 1, 1) # (n_points, h, w, 2) grid = grid.reshape((-1, 2)) points = points.unsqueeze(1).unsqueeze(1).repeat(1, image_shape[0], image_shape[1], 1) points = points.reshape(-1, 2) sigmas = sigmas.unsqueeze(1).unsqueeze(1).repeat(1, image_shape[0], image_shape[1], 1) sigmas = sigmas.reshape(-1, 2) images = gaussian_2d_pdf(grid, points, sigmas, normalize=normalize) images = images.reshape(n_points, *image_shape) return images
Example #19
Source File: models.py From DKN with GNU General Public License v3.0 | 6 votes |
def grid_generator(k, r, n): """grid_generator Parameters --------- f : filter_size, int k: kernel_size, int n: number of grid, int Returns ------- torch.Tensor. shape = (n, 2, k, k) """ grid_x, grid_y = torch.meshgrid([torch.linspace(k//2, k//2+r-1, steps=r), torch.linspace(k//2, k//2+r-1, steps=r)]) grid = torch.stack([grid_x,grid_y],2).view(r,r,2) return grid.unsqueeze(0).repeat(n,1,1,1).cuda()
Example #20
Source File: anchor_generator.py From remote_sensing_object_detection_2019 with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) # shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) shifts = torch.stack((shift_x, shift_y, torch.zeros(grid_width * grid_height, device=shift_x.device), torch.zeros(grid_width * grid_height, device=shift_x.device), torch.zeros(grid_width * grid_height, device=shift_x.device)), dim=1) anchors.append( (shifts.view(-1, 1, 5) + base_anchors.view(1, -1, 5)).reshape(-1, 5) ) return anchors
Example #21
Source File: anchor_generator.py From remote_sensing_object_detection_2019 with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #22
Source File: anchor_generator.py From remote_sensing_object_detection_2019 with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #23
Source File: anchor_generator.py From sampling-free with MIT License | 6 votes |
def grid_anchors(self, grid_sizes): anchors = [] for size, stride, base_anchors in zip( grid_sizes, self.strides, self.cell_anchors ): grid_height, grid_width = size device = base_anchors.device shifts_x = torch.arange( 0, grid_width * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, grid_height * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) shifts = torch.stack((shift_x, shift_y, shift_x, shift_y), dim=1) anchors.append( (shifts.view(-1, 1, 4) + base_anchors.view(1, -1, 4)).reshape(-1, 4) ) return anchors
Example #24
Source File: module_util.py From real-world-sr with MIT License | 6 votes |
def flow_warp(x, flow, interp_mode='bilinear', padding_mode='zeros'): """Warp an image or feature map with optical flow Args: x (Tensor): size (N, C, H, W) flow (Tensor): size (N, H, W, 2), normal value interp_mode (str): 'nearest' or 'bilinear' padding_mode (str): 'zeros' or 'border' or 'reflection' Returns: Tensor: warped image or feature map """ assert x.size()[-2:] == flow.size()[1:3] B, C, H, W = x.size() # mesh grid grid_y, grid_x = torch.meshgrid(torch.arange(0, H), torch.arange(0, W)) grid = torch.stack((grid_x, grid_y), 2).float() # W(x), H(y), 2 grid.requires_grad = False grid = grid.type_as(x) vgrid = grid + flow # scale grid to [-1,1] vgrid_x = 2.0 * vgrid[:, :, :, 0] / max(W - 1, 1) - 1.0 vgrid_y = 2.0 * vgrid[:, :, :, 1] / max(H - 1, 1) - 1.0 vgrid_scaled = torch.stack((vgrid_x, vgrid_y), dim=3) output = F.grid_sample(x, vgrid_scaled, mode=interp_mode, padding_mode=padding_mode) return output
Example #25
Source File: attention_ocr.py From attention-ocr with MIT License | 6 votes |
def forward(self, input_, target_seq=None, teacher_forcing_ratio=0): device = input_.device b, c, h, w = input_.size() encoder_outputs = self.incept(input_) b, fc, fh, fw = encoder_outputs.size() x, y = torch.meshgrid(torch.arange(fh, device=device), torch.arange(fw, device=device)) h_loc = self.onehot_x(x) w_loc = self.onehot_y(y) loc = torch.cat([h_loc, w_loc], dim=2).unsqueeze(0).expand(b, -1, -1, -1) encoder_outputs = torch.cat([encoder_outputs.permute(0, 2, 3, 1), loc], dim=3) encoder_outputs = encoder_outputs.contiguous().view(b, -1, 288 + self._fh + self._fw) encoder_outputs = self.encode_emb(encoder_outputs) decoder_outputs, decoder_hidden = self.decoder(target_seq, encoder_outputs=encoder_outputs, teacher_forcing_ratio=teacher_forcing_ratio) return decoder_outputs
Example #26
Source File: flow_utils.py From swiftnet with GNU General Public License v3.0 | 6 votes |
def offset_flow(img, flow): ''' :param img: torch.FloatTensor of shape NxCxHxW :param flow: torch.FloatTensor of shape NxHxWx2 :return: torch.FloatTensor of shape NxCxHxW ''' N, C, H, W = img.shape # generate identity sampling grid gx, gy = torch.meshgrid(torch.arange(H), torch.arange(W)) gx = gx.float().div(gx.max() - 1).view(1, H, W, 1) gy = gy.float().div(gy.max() - 1).view(1, H, W, 1) grid = torch.cat([gy, gx], dim=-1).mul(2.).sub(1) # generate normalized flow field flown = flow.clone() flown[..., 0] /= W flown[..., 1] /= H # calculate offset field grid += flown return F.grid_sample(img, grid), grid
Example #27
Source File: fovea_head.py From kaggle-kuzushiji-recognition with MIT License | 5 votes |
def get_points(self, featmap_sizes, dtype, device, flatten=False): points = [] for featmap_size in featmap_sizes: x_range = torch.arange( featmap_size[1], dtype=dtype, device=device) + 0.5 y_range = torch.arange( featmap_size[0], dtype=dtype, device=device) + 0.5 y, x = torch.meshgrid(y_range, x_range) if flatten: points.append((y.flatten(), x.flatten())) else: points.append((y, x)) return points
Example #28
Source File: embed_mask.py From EmbedMask with MIT License | 5 votes |
def compute_locations_per_level(self, h, w, stride, device): shifts_x = torch.arange( 0, w * stride, step=stride, dtype=torch.float32, device=device ) shifts_y = torch.arange( 0, h * stride, step=stride, dtype=torch.float32, device=device ) shift_y, shift_x = torch.meshgrid(shifts_y, shifts_x) shift_x = shift_x.reshape(-1) shift_y = shift_y.reshape(-1) locations = torch.stack((shift_x, shift_y), dim=1) + stride // 2 return locations
Example #29
Source File: image.py From packnet-sfm with MIT License | 5 votes |
def meshgrid(B, H, W, dtype, device, normalized=False): """ Create meshgrid with a specific resolution Parameters ---------- B : int Batch size H : int Height size W : int Width size dtype : torch.dtype Meshgrid type device : torch.device Meshgrid device normalized : bool True if grid is normalized between -1 and 1 Returns ------- xs : torch.Tensor [B,1,W] Meshgrid in dimension x ys : torch.Tensor [B,H,1] Meshgrid in dimension y """ if normalized: xs = torch.linspace(-1, 1, W, device=device, dtype=dtype) ys = torch.linspace(-1, 1, H, device=device, dtype=dtype) else: xs = torch.linspace(0, W-1, W, device=device, dtype=dtype) ys = torch.linspace(0, H-1, H, device=device, dtype=dtype) ys, xs = torch.meshgrid([ys, xs]) return xs.repeat([B, 1, 1]), ys.repeat([B, 1, 1])
Example #30
Source File: image.py From packnet-sfm with MIT License | 5 votes |
def image_grid(B, H, W, dtype, device, normalized=False): """ Create an image grid with a specific resolution Parameters ---------- B : int Batch size H : int Height size W : int Width size dtype : torch.dtype Meshgrid type device : torch.device Meshgrid device normalized : bool True if grid is normalized between -1 and 1 Returns ------- grid : torch.Tensor [B,3,H,W] Image grid containing a meshgrid in x, y and 1 """ xs, ys = meshgrid(B, H, W, dtype, device, normalized=normalized) ones = torch.ones_like(xs) grid = torch.stack([xs, ys, ones], dim=1) return grid ########################################################################################################################