Python torch.stack() Examples
The following are 30
code examples of torch.stack().
These examples are extracted from open source projects.
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 Project: Collaborative-Learning-for-Weakly-Supervised-Object-Detection Author: Sunarker File: bbox_transform.py License: MIT License | 6 votes |
def bbox_transform(ex_rois, gt_rois): ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + 1.0 ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + 1.0 ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + 1.0 gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + 1.0 gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights targets_dx = (gt_ctr_x - ex_ctr_x) / ex_widths targets_dy = (gt_ctr_y - ex_ctr_y) / ex_heights targets_dw = torch.log(gt_widths / ex_widths) targets_dh = torch.log(gt_heights / ex_heights) targets = torch.stack( (targets_dx, targets_dy, targets_dw, targets_dh), 1) return targets
Example #2
Source Project: Collaborative-Learning-for-Weakly-Supervised-Object-Detection Author: Sunarker File: bbox_transform.py License: MIT License | 6 votes |
def clip_boxes(boxes, im_shape): """ Clip boxes to image boundaries. boxes must be tensor or Variable, im_shape can be anything but Variable """ if not hasattr(boxes, 'data'): boxes_ = boxes.numpy() boxes = boxes.view(boxes.size(0), -1, 4) boxes = torch.stack(\ [boxes[:,:,0].clamp(0, im_shape[1] - 1), boxes[:,:,1].clamp(0, im_shape[0] - 1), boxes[:,:,2].clamp(0, im_shape[1] - 1), boxes[:,:,3].clamp(0, im_shape[0] - 1)], 2).view(boxes.size(0), -1) return boxes
Example #3
Source Project: mmdetection Author: open-mmlab File: atss_head.py License: Apache License 2.0 | 6 votes |
def centerness_target(self, anchors, bbox_targets): # only calculate pos centerness targets, otherwise there may be nan gts = self.bbox_coder.decode(anchors, bbox_targets) anchors_cx = (anchors[:, 2] + anchors[:, 0]) / 2 anchors_cy = (anchors[:, 3] + anchors[:, 1]) / 2 l_ = anchors_cx - gts[:, 0] t_ = anchors_cy - gts[:, 1] r_ = gts[:, 2] - anchors_cx b_ = gts[:, 3] - anchors_cy left_right = torch.stack([l_, r_], dim=1) top_bottom = torch.stack([t_, b_], dim=1) centerness = torch.sqrt( (left_right.min(dim=-1)[0] / left_right.max(dim=-1)[0]) * (top_bottom.min(dim=-1)[0] / top_bottom.max(dim=-1)[0])) assert not torch.isnan(centerness).any() return centerness
Example #4
Source Project: mmdetection Author: open-mmlab File: reppoints_head.py License: Apache License 2.0 | 6 votes |
def offset_to_pts(self, center_list, pred_list): """Change from point offset to point coordinate.""" pts_list = [] for i_lvl in range(len(self.point_strides)): pts_lvl = [] for i_img in range(len(center_list)): pts_center = center_list[i_img][i_lvl][:, :2].repeat( 1, self.num_points) pts_shift = pred_list[i_lvl][i_img] yx_pts_shift = pts_shift.permute(1, 2, 0).view( -1, 2 * self.num_points) y_pts_shift = yx_pts_shift[..., 0::2] x_pts_shift = yx_pts_shift[..., 1::2] xy_pts_shift = torch.stack([x_pts_shift, y_pts_shift], -1) xy_pts_shift = xy_pts_shift.view(*yx_pts_shift.shape[:-1], -1) pts = xy_pts_shift * self.point_strides[i_lvl] + pts_center pts_lvl.append(pts) pts_lvl = torch.stack(pts_lvl, 0) pts_list.append(pts_lvl) return pts_list
Example #5
Source Project: mmdetection Author: open-mmlab File: base_roi_extractor.py License: Apache License 2.0 | 6 votes |
def roi_rescale(self, rois, scale_factor): """Scale RoI coordinates by scale factor. Args: rois (torch.Tensor): RoI (Region of Interest), shape (n, 5) scale_factor (float): Scale factor that RoI will be multiplied by. Returns: torch.Tensor: Scaled RoI. """ cx = (rois[:, 1] + rois[:, 3]) * 0.5 cy = (rois[:, 2] + rois[:, 4]) * 0.5 w = rois[:, 3] - rois[:, 1] h = rois[:, 4] - rois[:, 2] new_w = w * scale_factor new_h = h * scale_factor x1 = cx - new_w * 0.5 x2 = cx + new_w * 0.5 y1 = cy - new_h * 0.5 y2 = cy + new_h * 0.5 new_rois = torch.stack((rois[:, 0], x1, y1, x2, y2), dim=-1) return new_rois
Example #6
Source Project: mmdetection Author: open-mmlab File: transforms.py License: Apache License 2.0 | 6 votes |
def distance2bbox(points, distance, max_shape=None): """Decode distance prediction to bounding box. Args: points (Tensor): Shape (n, 2), [x, y]. distance (Tensor): Distance from the given point to 4 boundaries (left, top, right, bottom). max_shape (tuple): Shape of the image. Returns: Tensor: Decoded bboxes. """ x1 = points[:, 0] - distance[:, 0] y1 = points[:, 1] - distance[:, 1] x2 = points[:, 0] + distance[:, 2] y2 = points[:, 1] + distance[:, 3] if max_shape is not None: x1 = x1.clamp(min=0, max=max_shape[1]) y1 = y1.clamp(min=0, max=max_shape[0]) x2 = x2.clamp(min=0, max=max_shape[1]) y2 = y2.clamp(min=0, max=max_shape[0]) return torch.stack([x1, y1, x2, y2], -1)
Example #7
Source Project: nmp_qc Author: priba File: ReadoutFunction.py License: MIT License | 6 votes |
def r_duvenaud(self, h): # layers aux = [] for l in range(len(h)): param_sz = self.learn_args[l].size() parameter_mat = torch.t(self.learn_args[l])[None, ...].expand(h[l].size(0), param_sz[1], param_sz[0]) aux.append(torch.transpose(torch.bmm(parameter_mat, torch.transpose(h[l], 1, 2)), 1, 2)) for j in range(0, aux[l].size(1)): # Mask whole 0 vectors aux[l][:, j, :] = nn.Softmax()(aux[l][:, j, :].clone())*(torch.sum(aux[l][:, j, :] != 0, 1) > 0).expand_as(aux[l][:, j, :]).type_as(aux[l]) aux = torch.sum(torch.sum(torch.stack(aux, 3), 3), 1) return self.learn_modules[0](torch.squeeze(aux))
Example #8
Source Project: GST-Tacotron Author: KinglittleQ File: GST.py License: MIT License | 6 votes |
def forward(self, query, key): querys = self.W_query(query) # [N, T_q, num_units] keys = self.W_key(key) # [N, T_k, num_units] values = self.W_value(key) split_size = self.num_units // self.num_heads querys = torch.stack(torch.split(querys, split_size, dim=2), dim=0) # [h, N, T_q, num_units/h] keys = torch.stack(torch.split(keys, split_size, dim=2), dim=0) # [h, N, T_k, num_units/h] values = torch.stack(torch.split(values, split_size, dim=2), dim=0) # [h, N, T_k, num_units/h] # score = softmax(QK^T / (d_k ** 0.5)) scores = torch.matmul(querys, keys.transpose(2, 3)) # [h, N, T_q, T_k] scores = scores / (self.key_dim ** 0.5) scores = F.softmax(scores, dim=3) # out = score * V out = torch.matmul(scores, values) # [h, N, T_q, num_units/h] out = torch.cat(torch.split(out, 1, dim=0), dim=3).squeeze(0) # [N, T_q, num_units] return out
Example #9
Source Project: pruning_yolov3 Author: zbyuan File: datasets.py License: GNU General Public License v3.0 | 6 votes |
def __next__(self): self.count += 1 img0 = self.imgs.copy() if cv2.waitKey(1) == ord('q'): # q to quit cv2.destroyAllWindows() raise StopIteration # Letterbox img = [letterbox(x, new_shape=self.img_size, interp=cv2.INTER_LINEAR)[0] for x in img0] # Stack img = np.stack(img, 0) # Normalize RGB img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 return self.sources, img, img0, None
Example #10
Source Project: dogTorch Author: ehsanik File: resnet18_image2imu_regress.py License: MIT License | 6 votes |
def forward(self, input, target): features = self.feats(input) output_indices = list(range(0, (target.size(1)))) # Iterate over fully connecteds for each imu, perform forward pass and # record the output. imu_out = [] for i in self.imus: imu_i = getattr(self, 'imu{}'.format(i)) imu_out.append(imu_i(features)) # Add a singleton dim at 1 for sequence length, which is always 1 in # this model. output = torch.stack(imu_out, dim=1).unsqueeze(1) output /= output.norm(2, 3, keepdim=True) return torch.stack( imu_out, dim=1).unsqueeze(1), target, torch.LongTensor(output_indices)
Example #11
Source Project: dogTorch Author: ehsanik File: resnet_one_tower_prediction.py License: MIT License | 6 votes |
def forward(self, input, target): input = input[:, :self.args.input_length * 3] target = target[:, -self.args.output_length:] features = self.resnet_features(input) output_indices = list( range(self.args.sequence_length - self.args.output_length, self.args.sequence_length)) # Iterate over fully connecteds for each imu, perform forward pass and # record the output. all_output = [] for imu_id in range(self.args.output_length): imu_out = [] for i in self.imus: imu_i = getattr(self, 'imu{}'.format(i)) imu_out.append(imu_i(features)) output = torch.stack(imu_out, dim=1).unsqueeze(1) all_output.append(output) # Add a singleton dim at 1 for sequence length, which is always 1 in # this model. all_output = torch.cat(all_output, dim=1) return all_output, target, torch.LongTensor(output_indices)
Example #12
Source Project: dogTorch Author: ehsanik File: nyu_walkable_surface_dataset.py License: MIT License | 6 votes |
def __getitem__(self, idx): fid = self.data_set_list[idx] if self.read_features: features = [] for i in range(self.sequence_length): feature_path = os.path.join( self.features_dir, self.frames_metadata[fid + i]['cur_frame'] + '.pytar') features.append(torch.load(feature_path)) input = torch.stack(features) else: image = self.load_and_resize( os.path.join(self.root_dir, 'images', fid)) segment = self.load_and_resize_segmentation( os.path.join(self.root_dir, 'walkable', fid)) # The two 0s are just place holders. They can be replaced by any values return (image, segment, 0, 0, ['images' + fid])
Example #13
Source Project: End-to-end-ASR-Pytorch Author: Alexander-H-Liu File: bert_embedding.py License: MIT License | 6 votes |
def generate_embedding(bert_model, labels): """Generate bert's embedding from fine-tuned model.""" batch_size, time = labels.shape cls_ids = torch.full( (batch_size, 1), bert_model.bert_text_encoder.cls_idx, dtype=labels.dtype, device=labels.device) bert_labels = torch.cat([cls_ids, labels], 1) # replace eos with sep eos_idx = bert_model.bert_text_encoder.eos_idx sep_idx = bert_model.bert_text_encoder.sep_idx bert_labels[bert_labels == eos_idx] = sep_idx embedding, _ = bert_model.bert(bert_labels, output_all_encoded_layers=True) # sum over all layers embedding embedding = torch.stack(embedding).sum(0) # get rid of cls embedding = embedding[:, 1:] assert labels.shape == embedding.shape[:-1] return embedding
Example #14
Source Project: cascade-rcnn_Pytorch Author: guoruoqian File: bbox_transform.py License: MIT License | 6 votes |
def bbox_transform(ex_rois, gt_rois): ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + 1.0 ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + 1.0 ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + 1.0 gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + 1.0 gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights targets_dx = (gt_ctr_x - ex_ctr_x) / ex_widths targets_dy = (gt_ctr_y - ex_ctr_y) / ex_heights targets_dw = torch.log(gt_widths / ex_widths) targets_dh = torch.log(gt_heights / ex_heights) targets = torch.stack( (targets_dx, targets_dy, targets_dw, targets_dh),1) return targets
Example #15
Source Project: slot-filling Author: llhthinker File: rnn.py License: MIT License | 6 votes |
def forward(self, inputs, hidden=None): if hidden is None and self.mode != "jordan": # if hidden is None: batch_size = inputs.size(0) # print(batch_size) hidden = torch.autograd.Variable(torch.zeros(batch_size, self.hidden_size)) if self.cuda: hidden = hidden.cuda() output_forward, hidden_forward = self._forward(inputs, hidden) output_forward = torch.stack(output_forward, dim=0) if not self.bidirectional: if self.batch_first: output_forward = output_forward.transpose(0,1) return output_forward, hidden_forward output_reversed, hidden_reversed = self._reversed_forward(inputs, hidden) hidden = torch.cat([hidden_forward, hidden_reversed], dim=hidden_forward.dim() - 1) output_reversed = torch.stack(output_reversed, dim=0) output = torch.cat([output_forward, output_reversed], dim=output_reversed.data.dim() - 1) if self.batch_first: output = output.transpose(0,1) return output, hidden
Example #16
Source Project: medicaldetectiontoolkit Author: MIC-DKFZ File: model_utils.py License: Apache License 2.0 | 6 votes |
def apply_box_deltas_2D(boxes, deltas): """Applies the given deltas to the given boxes. boxes: [N, 4] where each row is y1, x1, y2, x2 deltas: [N, 4] where each row is [dy, dx, log(dh), log(dw)] """ # Convert to y, x, h, w height = boxes[:, 2] - boxes[:, 0] width = boxes[:, 3] - boxes[:, 1] center_y = boxes[:, 0] + 0.5 * height center_x = boxes[:, 1] + 0.5 * width # Apply deltas center_y += deltas[:, 0] * height center_x += deltas[:, 1] * width height *= torch.exp(deltas[:, 2]) width *= torch.exp(deltas[:, 3]) # Convert back to y1, x1, y2, x2 y1 = center_y - 0.5 * height x1 = center_x - 0.5 * width y2 = y1 + height x2 = x1 + width result = torch.stack([y1, x1, y2, x2], dim=1) return result
Example #17
Source Project: easy-faster-rcnn.pytorch Author: potterhsu File: pooler.py License: MIT License | 6 votes |
def apply(features: Tensor, proposal_bboxes: Tensor, proposal_batch_indices: Tensor, mode: Mode) -> Tensor: _, _, feature_map_height, feature_map_width = features.shape scale = 1 / 16 output_size = (7 * 2, 7 * 2) if mode == Pooler.Mode.POOLING: pool = [] for (proposal_bbox, proposal_batch_index) in zip(proposal_bboxes, proposal_batch_indices): start_x = max(min(round(proposal_bbox[0].item() * scale), feature_map_width - 1), 0) # [0, feature_map_width) start_y = max(min(round(proposal_bbox[1].item() * scale), feature_map_height - 1), 0) # (0, feature_map_height] end_x = max(min(round(proposal_bbox[2].item() * scale) + 1, feature_map_width), 1) # [0, feature_map_width) end_y = max(min(round(proposal_bbox[3].item() * scale) + 1, feature_map_height), 1) # (0, feature_map_height] roi_feature_map = features[proposal_batch_index, :, start_y:end_y, start_x:end_x] pool.append(F.adaptive_max_pool2d(input=roi_feature_map, output_size=output_size)) pool = torch.stack(pool, dim=0) elif mode == Pooler.Mode.ALIGN: pool = ROIAlign(output_size, spatial_scale=scale, sampling_ratio=0)( features, torch.cat([proposal_batch_indices.view(-1, 1).float(), proposal_bboxes], dim=1) ) else: raise ValueError pool = F.max_pool2d(input=pool, kernel_size=2, stride=2) return pool
Example #18
Source Project: easy-faster-rcnn.pytorch Author: potterhsu File: region_proposal_network.py License: MIT License | 6 votes |
def generate_anchors(self, image_width: int, image_height: int, num_x_anchors: int, num_y_anchors: int) -> Tensor: center_ys = np.linspace(start=0, stop=image_height, num=num_y_anchors + 2)[1:-1] center_xs = np.linspace(start=0, stop=image_width, num=num_x_anchors + 2)[1:-1] ratios = np.array(self._anchor_ratios) ratios = ratios[:, 0] / ratios[:, 1] sizes = np.array(self._anchor_sizes) # NOTE: it's important to let `center_ys` be the major index (i.e., move horizontally and then vertically) for consistency with 2D convolution # giving the string 'ij' returns a meshgrid with matrix indexing, i.e., with shape (#center_ys, #center_xs, #ratios) center_ys, center_xs, ratios, sizes = np.meshgrid(center_ys, center_xs, ratios, sizes, indexing='ij') center_ys = center_ys.reshape(-1) center_xs = center_xs.reshape(-1) ratios = ratios.reshape(-1) sizes = sizes.reshape(-1) widths = sizes * np.sqrt(1 / ratios) heights = sizes * np.sqrt(ratios) center_based_anchor_bboxes = np.stack((center_xs, center_ys, widths, heights), axis=1) center_based_anchor_bboxes = torch.from_numpy(center_based_anchor_bboxes).float() anchor_bboxes = BBox.from_center_base(center_based_anchor_bboxes) return anchor_bboxes
Example #19
Source Project: TVQAplus Author: jayleicn File: model_utils.py License: MIT License | 6 votes |
def find_max_triples(p1, p2, topN=5, prob_thd=None): """ Find a list of (k1, k2) where k1 >= k2 with the maximum values of p1[k1] * p2[k2] Args: p1 (torch.CudaTensor): (N, L) batched start_idx probabilities p2 (torch.CudaTensor): (N, L) batched end_idx probabilities topN (int): return topN pairs with highest values prob_thd (float): Returns: batched_sorted_triple: N * [(st_idx, ed_idx, confidence), ...] """ product = torch.bmm(p1.unsqueeze(2), p2.unsqueeze(1)) # (N, L, L), end_idx >= start_idx upper_product = torch.stack([torch.triu(p) for p in product] ).data.cpu().numpy() # (N, L, L) the lower part becomes zeros batched_sorted_triple = [] for idx, e in enumerate(upper_product): sorted_triple = topN_array_2d(e, topN=topN) if prob_thd is not None: sorted_triple = [t for t in sorted_triple if t[2] >= prob_thd] batched_sorted_triple.append(sorted_triple) return batched_sorted_triple
Example #20
Source Project: Collaborative-Learning-for-Weakly-Supervised-Object-Detection Author: Sunarker File: network.py License: MIT License | 5 votes |
def _region_classification(self, fc7): cls_score = self.cls_score_net(fc7) cls_pred = torch.max(cls_score, 1)[1] # the prediction class of each bbox cls_prob = F.softmax(cls_score) bbox_pred = self.bbox_pred_net(fc7) bbox_prob = torch.stack([F.softmax(bbox_pred[:,i]) for i in range(bbox_pred.size(1))], 1) fuse_prob = cls_prob.mul(bbox_prob) image_prob = fuse_prob.sum(0,keepdim=True) self._predictions["cls_pred"] = cls_pred self._predictions["cls_prob"] = cls_prob self._predictions["bbox_prob"] = bbox_prob self._predictions["fuse_prob"] = fuse_prob self._predictions["image_prob"] = image_prob return cls_prob, bbox_prob, fuse_prob, image_prob
Example #21
Source Project: DDPAE-video-prediction Author: jthsieh File: DDPAE_utils.py License: MIT License | 5 votes |
def calculate_positions(pose): ''' Get the center x, y of the spatial transformer. ''' N, pose_size = pose.size() assert pose_size == 3, 'Only implemented pose_size == 3' # s, x, y s = pose[:, 0] xt = pose[:, 1] yt = pose[:, 2] x = (- xt / s + 1) / 2 y = (- yt / s + 1) / 2 return torch.stack([x, y], dim=1)
Example #22
Source Project: DDPAE-video-prediction Author: jthsieh File: DDPAE.py License: MIT License | 5 votes |
def get_objects(self, input, transformer): ''' Crop objects from input given the transformer. ''' # Repeat input: batch_size x n_frames_input x n_components x C x H x W repeated_input = torch.stack([input] * self.n_components, dim=2) repeated_input = repeated_input.view(-1, *input.size()[-3:]) # Crop objects transformer = transformer.contiguous().view(-1, transformer.size(-1)) input_obj = utils.image_to_object(repeated_input, transformer, self.object_size) input_obj = input_obj.view(-1, *input_obj.size()[-3:]) return input_obj
Example #23
Source Project: DDPAE-video-prediction Author: jthsieh File: pose_rnn.py License: MIT License | 5 votes |
def predict(self, encoder_outputs, hidden_states): ''' Second part of the model. input: encoder outputs and hidden_states of each component. Return predicted betas. ''' batch_size = encoder_outputs.size(0) pred_beta_mu, pred_beta_sigma = None, None pred_outputs = [] prev_hidden = [Variable(torch.zeros(batch_size, 1, self.hidden_size).cuda())] \ * self.n_frames_output for i in range(self.n_components): hidden = hidden_states[i] prev_outputs = encoder_outputs[:, -1:, i, :] frame_outputs = [] # Manual unroll for j in range(self.n_frames_output): if self.independent_components: rnn_input = prev_outputs else: rnn_input = torch.cat([prev_outputs, prev_hidden[j]], dim=2) output, hidden = self.predict_rnn(rnn_input, hidden) prev_outputs = output prev_hidden[j] = hidden[0].view(batch_size, 1, -1) frame_outputs.append(output) # frame_outputs: batch_size x n_frames_output x (hidden_size * 2) frame_outputs = torch.cat(frame_outputs, dim=1) pred_outputs.append(frame_outputs) # batch_size x n_frames_output x n_components x hidden_size pred_outputs = torch.stack(pred_outputs, dim=2) pred_beta_mu = self.beta_mu_layer(pred_outputs).view(-1, self.output_size) pred_beta_sigma = self.beta_sigma_layer(pred_outputs).view(-1, self.output_size) pred_beta_sigma = F.softplus(pred_beta_sigma) return pred_beta_mu, pred_beta_sigma
Example #24
Source Project: hgraph2graph Author: wengong-jin File: nnutils.py License: MIT License | 5 votes |
def stack_pad_tensor(tensor_list): max_len = max([t.size(0) for t in tensor_list]) for i,tensor in enumerate(tensor_list): pad_len = max_len - tensor.size(0) tensor_list[i] = F.pad( tensor, (0,0,0,pad_len) ) return torch.stack(tensor_list, dim=0)
Example #25
Source Project: hgraph2graph Author: wengong-jin File: nnutils.py License: MIT License | 5 votes |
def zip_tensors(tup_list): res = [] tup_list = zip(*tup_list) for a in tup_list: if type(a[0]) is int: res.append( torch.LongTensor(a).cuda() ) else: res.append( torch.stack(a, dim=0) ) return res
Example #26
Source Project: hgraph2graph Author: wengong-jin File: nnutils.py License: MIT License | 5 votes |
def stack_pad_tensor(tensor_list): max_len = max([t.size(0) for t in tensor_list]) for i,tensor in enumerate(tensor_list): pad_len = max_len - tensor.size(0) tensor_list[i] = F.pad( tensor, (0,0,0,pad_len) ) return torch.stack(tensor_list, dim=0)
Example #27
Source Project: hgraph2graph Author: wengong-jin File: nnutils.py License: MIT License | 5 votes |
def zip_tensors(tup_list): res = [] tup_list = zip(*tup_list) for a in tup_list: if type(a[0]) is int: res.append( torch.LongTensor(a).cuda() ) else: res.append( torch.stack(a, dim=0) ) return res
Example #28
Source Project: mmdetection Author: open-mmlab File: gfl_head.py License: Apache License 2.0 | 5 votes |
def anchor_center(self, anchors): """Get anchor centers from anchors. Args: anchors (Tensor): Anchor list with shape (N, 4), "xyxy" format. Returns: Tensor: Anchor centers with shape (N, 2), "xy" format. """ anchors_cx = (anchors[:, 2] + anchors[:, 0]) / 2 anchors_cy = (anchors[:, 3] + anchors[:, 1]) / 2 return torch.stack([anchors_cx, anchors_cy], dim=-1)
Example #29
Source Project: mmdetection Author: open-mmlab File: fcos_head.py License: Apache License 2.0 | 5 votes |
def _get_points_single(self, featmap_size, stride, dtype, device, flatten=False): """Get points according to feature map sizes.""" y, x = super()._get_points_single(featmap_size, stride, dtype, device) points = torch.stack((x.reshape(-1) * stride, y.reshape(-1) * stride), dim=-1) + stride // 2 return points
Example #30
Source Project: mmdetection Author: open-mmlab File: bbox_head.py License: Apache License 2.0 | 5 votes |
def regress_by_class(self, rois, label, bbox_pred, img_meta): """Regress the bbox for the predicted class. Used in Cascade R-CNN. Args: rois (Tensor): shape (n, 4) or (n, 5) label (Tensor): shape (n, ) bbox_pred (Tensor): shape (n, 4*(#class)) or (n, 4) img_meta (dict): Image meta info. Returns: Tensor: Regressed bboxes, the same shape as input rois. """ assert rois.size(1) == 4 or rois.size(1) == 5, repr(rois.shape) if not self.reg_class_agnostic: label = label * 4 inds = torch.stack((label, label + 1, label + 2, label + 3), 1) bbox_pred = torch.gather(bbox_pred, 1, inds) assert bbox_pred.size(1) == 4 if rois.size(1) == 4: new_rois = self.bbox_coder.decode( rois, bbox_pred, max_shape=img_meta['img_shape']) else: bboxes = self.bbox_coder.decode( rois[:, 1:], bbox_pred, max_shape=img_meta['img_shape']) new_rois = torch.cat((rois[:, [0]], bboxes), dim=1) return new_rois