Python torch.stack() Examples
The following are 30
code examples of torch.stack().
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: datasets.py From pruning_yolov3 with 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 #2
Source File: model_utils.py From TVQAplus with 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 #3
Source File: region_proposal_network.py From easy-faster-rcnn.pytorch with 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 #4
Source File: bbox_transform.py From Collaborative-Learning-for-Weakly-Supervised-Object-Detection with 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 #5
Source File: pooler.py From easy-faster-rcnn.pytorch with 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 #6
Source File: model_utils.py From medicaldetectiontoolkit with 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 #7
Source File: bbox_transform.py From Collaborative-Learning-for-Weakly-Supervised-Object-Detection with 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 #8
Source File: atss_head.py From mmdetection with 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 #9
Source File: reppoints_head.py From mmdetection with 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 #10
Source File: rnn.py From slot-filling with 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 #11
Source File: bbox_transform.py From cascade-rcnn_Pytorch with 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 #12
Source File: bert_embedding.py From End-to-end-ASR-Pytorch with 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 #13
Source File: base_roi_extractor.py From mmdetection with 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 #14
Source File: nyu_walkable_surface_dataset.py From dogTorch with 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 #15
Source File: resnet_one_tower_prediction.py From dogTorch with 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 #16
Source File: ReadoutFunction.py From nmp_qc with 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 #17
Source File: resnet18_image2imu_regress.py From dogTorch with 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 #18
Source File: GST.py From GST-Tacotron with 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 #19
Source File: transforms.py From mmdetection with 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 #20
Source File: datasets.py From pruning_yolov3 with GNU General Public License v3.0 | 5 votes |
def collate_fn(batch): img, label, path, hw = list(zip(*batch)) # transposed for i, l in enumerate(label): l[:, 0] = i # add target image index for build_targets() return torch.stack(img, 0), torch.cat(label, 0), path, hw
Example #21
Source File: model_utils.py From medicaldetectiontoolkit with Apache License 2.0 | 5 votes |
def clip_boxes_3D(boxes, window): """ boxes: [N, 6] each col is y1, x1, y2, x2, z1, z2 window: [6] in the form y1, x1, y2, x2, z1, z2 """ boxes = torch.stack( \ [boxes[:, 0].clamp(float(window[0]), float(window[2])), boxes[:, 1].clamp(float(window[1]), float(window[3])), boxes[:, 2].clamp(float(window[0]), float(window[2])), boxes[:, 3].clamp(float(window[1]), float(window[3])), boxes[:, 4].clamp(float(window[4]), float(window[5])), boxes[:, 5].clamp(float(window[4]), float(window[5]))], 1) return boxes
Example #22
Source File: lstm_action_planning.py From dogTorch with MIT License | 5 votes |
def forward(self, input, target): imu_start_index = 1 #inclusive imu_end_index = imu_start_index + self.planning_distance #exclusive assert imu_start_index > 0 and imu_end_index < self.sequence_length input_start = input[:, :imu_start_index, :512] input_end = input[:, imu_end_index:, :512] target = target[:, imu_start_index:imu_end_index] output_indices = list(range(imu_start_index, imu_end_index)) full_input = torch.cat([input_start, input_end], 1) full_input = full_input.view(full_input.size(0), -1) embedded_input = self.embedding_input(full_input) batch_size = embedded_input.size(0) hidden, cell = self.initHiddenCell(batch_size) lstm_outputs = [] for output_num in range(self.planning_distance): hidden, cell = self.lstm(embedded_input, (hidden, cell)) output = (self.out(hidden)) imu_out = [] for i in self.imus: imu_i = getattr(self, 'imu{}'.format(i)) imu_out.append(imu_i(output)) imu_soft = [ F.softmax(imu).view(batch_size, 1, self.num_classes) for imu in imu_out ] imu_out_reshaped = [(imu).view(batch_size, 1, self.num_classes) for imu in imu_out] cleaned_output = torch.cat(imu_soft, 1) converted_output = torch.cat(imu_out_reshaped, 1) lstm_outputs.append(converted_output) embedded_input = self.embedding_target( cleaned_output.view(batch_size, -1)) full_output = torch.stack(lstm_outputs) return full_output.transpose( 0, 1), target, torch.LongTensor(output_indices)
Example #23
Source File: bbox.py From easy-faster-rcnn.pytorch with MIT License | 5 votes |
def apply_transformer(src_bboxes: Tensor, transformers: Tensor) -> Tensor: center_based_src_bboxes = BBox.to_center_base(src_bboxes) center_based_dst_bboxes = torch.stack([ transformers[..., 0] * center_based_src_bboxes[..., 2] + center_based_src_bboxes[..., 0], transformers[..., 1] * center_based_src_bboxes[..., 3] + center_based_src_bboxes[..., 1], torch.exp(transformers[..., 2]) * center_based_src_bboxes[..., 2], torch.exp(transformers[..., 3]) * center_based_src_bboxes[..., 3] ], dim=-1) dst_bboxes = BBox.from_center_base(center_based_dst_bboxes) return dst_bboxes
Example #24
Source File: resnet18_image2imu.py From dogTorch with MIT License | 5 votes |
def forward(self, input, target): features = self.feats(input) output_indices = list( range(target.size(1) - self.output_length, 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. return torch.stack( imu_out, dim=1).unsqueeze(1), target, torch.LongTensor(output_indices)
Example #25
Source File: resnet_one_tower_baseline.py From dogTorch with MIT License | 5 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. return torch.stack( imu_out, dim=1).unsqueeze(1), target, torch.LongTensor(output_indices)
Example #26
Source File: models_nearest_neighbor_planning.py From dogTorch with MIT License | 5 votes |
def forward(self, input, target): if self.training: raise RuntimeError("Can't do forward pass in training.") imu_start_index = 1 #inclusive imu_end_index = imu_start_index + self.planning_distance #exclusive assert imu_start_index > 0 and imu_end_index < self.sequence_length input_start = input[:, :imu_start_index] input_end = input[:, imu_end_index:] target = target[:, imu_start_index:imu_end_index] output_indices = list(range(imu_start_index, imu_end_index)) input = torch.cat([input_start, input_end],1) input = input.data.contiguous().view(input.size(0), -1) new_tensor = input.new min_distances = new_tensor(input.size(0)).fill_(1e9) best_labels = new_tensor(target.size()).long().fill_(-1) for i, (train_data, train_label, _, _) in enumerate(self.train_loader): train_data_start = train_data[:, :imu_start_index] train_data_end = train_data[:, imu_end_index:] train_data = torch.cat([train_data_start, train_data_end],1).contiguous() train_data = train_data.view(train_data.size(0), -1).cuda(async=True) train_label = train_label[:, imu_start_index:imu_end_index].contiguous() train_label = train_label.cuda(async=True) distances = -torch.mm(input, train_data.t()) cur_min_distances, min_indices = distances.min(1) min_indices = min_indices[:,None,None].expand_as(best_labels) cur_labels = train_label.gather(0, min_indices) old_new_distances = torch.stack([min_distances, cur_min_distances]) min_distances, picker = old_new_distances.min(0) picker = picker[:,None,None].expand_as(best_labels) best_labels = (1 - picker) * best_labels + picker * cur_labels output = new_tensor(*best_labels.size(), self.num_classes).fill_(0) output.scatter_(3, best_labels.unsqueeze(3), 1) output = Variable(output) return output, target, torch.LongTensor(output_indices)
Example #27
Source File: voc2012.py From Pytorch-Project-Template with MIT License | 5 votes |
def __getitem__(self, index): if self.mode == 'test': img_path, img_name = self.imgs[index] img = Image.open(os.path.join(img_path, img_name + '.jpg')).convert('RGB') if self.transform is not None: img = self.transform(img) return img_name, img img_path, mask_path = self.imgs[index] img = Image.open(img_path).convert('RGB') if self.mode == 'train': mask = sio.loadmat(mask_path)['GTcls']['Segmentation'][0][0] mask = Image.fromarray(mask.astype(np.uint8)) else: mask = Image.open(mask_path) if self.joint_transform is not None: img, mask = self.joint_transform(img, mask) if self.sliding_crop is not None: img_slices, mask_slices, slices_info = self.sliding_crop(img, mask) if self.transform is not None: img_slices = [self.transform(e) for e in img_slices] if self.target_transform is not None: mask_slices = [self.target_transform(e) for e in mask_slices] img, mask = torch.stack(img_slices, 0), torch.stack(mask_slices, 0) return img, mask, torch.LongTensor(slices_info) else: if self.transform is not None: img = self.transform(img) if self.target_transform is not None: mask = self.target_transform(mask) return img, mask
Example #28
Source File: generate_class_weights.py From Pytorch-Project-Template with MIT License | 5 votes |
def __getitem__(self, index): if self.mode == 'test': img_path, img_name = self.imgs[index] img = Image.open(os.path.join(img_path, img_name + '.jpg')).convert('RGB') if self.transform is not None: img = self.transform(img) return img_name, img img_path, mask_path = self.imgs[index] img = Image.open(img_path).convert('RGB') if self.mode == 'train': mask = sio.loadmat(mask_path)['GTcls']['Segmentation'][0][0] mask = Image.fromarray(mask.astype(np.uint8)) else: mask = Image.open(mask_path) if self.joint_transform is not None: img, mask = self.joint_transform(img, mask) if self.sliding_crop is not None: img_slices, mask_slices, slices_info = self.sliding_crop(img, mask) if self.transform is not None: img_slices = [self.transform(e) for e in img_slices] if self.target_transform is not None: mask_slices = [self.target_transform(e) for e in mask_slices] img, mask = torch.stack(img_slices, 0), torch.stack(mask_slices, 0) return img, mask, torch.LongTensor(slices_info) else: if self.transform is not None: img = self.transform(img) if self.target_transform is not None: mask = self.target_transform(mask) return img, mask
Example #29
Source File: utils.py From pruning_yolov3 with GNU General Public License v3.0 | 5 votes |
def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster # Get label wh dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) for s, l in zip(dataset.shapes, dataset.labels): l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] l[:, 1:] *= img_size / max(s) # nominal img_size for training wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation k = cluster.vq.kmeans(wh, n)[0] k = k[np.argsort(k.prod(1))] # sort small to large # Measure IoUs iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) biou = iou.max(0)[0] # closest anchor IoU print('Best possible recall: %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % (n, img_size, biou.min(), iou.mean(), biou.mean()), end='') for i, x in enumerate(k): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg # Plot # plt.hist(biou.numpy().ravel(), 100)
Example #30
Source File: weighted_binary_cross_entropy.py From dogTorch with MIT License | 5 votes |
def forward(self, output, target): loss = nn.CrossEntropyLoss(self.weights, self.size_average) output_one = output.view(-1) output_zero = 1 - output_one output_converted = torch.stack([output_zero, output_one], 1) target_converted = target.view(-1).long() return loss(output_converted, target_converted)