def execute(self, x): residual = x out = self.conv1(x) out = self.bn1(out) out = nn.relu(out) spx = jt.split(out, self.width, 1) for i in range(self.nums): if ((i == 0) or (self.stype == 'stage')): sp = spx[i] else: sp = (sp + spx[i]) sp = self.convs[i](sp) sp = nn.relu(self.bns[i](sp)) if (i == 0): out = sp else: out = jt.contrib.concat((out, sp), dim=1) if ((self.scale != 1) and (self.stype == 'normal')): out = jt.contrib.concat((out, spx[self.nums]), dim=1) elif ((self.scale != 1) and (self.stype == 'stage')): out = jt.contrib.concat((out, self.pool(spx[self.nums])), dim=1) out = self.conv3(out) out = self.bn3(out) if (self.downsample is not None): residual = self.downsample(x) out += residual out = nn.relu(out) return out
def execute(self, x): residual = x out = self.conv1(x) out = self.bn1(out) out = self.relu(out) spx = jt.split(out, self.width, 1) for i in range(self.nums): if i == 0 or self.stype == 'stage': sp = spx[i] else: sp = sp + spx[i] sp = self.convs[i](sp) sp = self.relu(self.bns[i](sp)) if i == 0: out = sp else: out = jt.concat((out, sp), 1) if self.scale != 1 and self.stype == 'normal': out = jt.concat((out, spx[self.nums]), 1) elif self.scale != 1 and self.stype == 'stage': out = jt.concat((out, self.pool(spx[self.nums])), 1) out = self.conv3(out) out = self.bn3(out) if self.downsample is not None: residual = self.downsample(x) out += residual out = self.relu(out) return out
def execute(self, x): input_pts, input_views = jt.split(x, [self.input_ch, self.input_ch_views], dim=-1) h = input_pts for i, l in enumerate(self.pts_linears): h = self.pts_linears[i](h) h = jt.nn.relu(h) if i in self.skips: h = jt.concat([input_pts, h], -1) if self.use_viewdirs: alpha = self.alpha_linear(h) feature = self.feature_linear(h) h = jt.concat([feature, input_views], -1) for i, l in enumerate(self.views_linears): h = self.views_linears[i](h) h = jt.nn.relu(h) rgb = self.rgb_linear(h) outputs = jt.concat([rgb, alpha], -1) else: outputs = self.output_linear(h) return outputs
def prepare_targets(self, points, targets, im_w, im_h): object_sizes_of_interest = self.object_sizes_of_interest expanded_object_sizes_of_interest = [] for l, points_per_level in enumerate(points): object_sizes_of_interest_per_level = \ points_per_level.new_tensor(object_sizes_of_interest[l]) expanded_object_sizes_of_interest.append( object_sizes_of_interest_per_level[None].expand( len(points_per_level), -1)) expanded_object_sizes_of_interest = jt.contrib.concat( expanded_object_sizes_of_interest, dim=0) num_points_per_level = [ len(points_per_level) for points_per_level in points ] self.num_points_per_level = num_points_per_level points_all_level = jt.contrib.concat(points, dim=0) labels, reg_targets, matched_idxes = self.compute_targets_for_locations( points_all_level, targets, expanded_object_sizes_of_interest, im_w, im_h) labels_split = [] reg_targets_split = [] for i in range(len(labels)): labels_split.append( jt.split(labels[i], num_points_per_level, dim=0)) reg_targets_split.append( jt.split(reg_targets[i], num_points_per_level, dim=0)) labels_level_first = [] reg_targets_level_first = [] for level in range(len(points)): labels_level_first.append( jt.contrib.concat( [labels_per_im[level] for labels_per_im in labels_split], dim=0)) reg_targets_per_level = \ jt.contrib.concat([reg_targets_per_im[level] for reg_targets_per_im in reg_targets_split], dim=0) if self.norm_reg_targets: reg_targets_per_level = reg_targets_per_level / self.fpn_strides[ level] reg_targets_level_first.append(reg_targets_per_level) matched_idxes = jt.stack(matched_idxes) return labels_level_first, reg_targets_level_first, labels, reg_targets, matched_idxes
def prepare_targets(self, points, targets): object_sizes_of_interest = [ [-1, 64], [64, 128], [128, 256], [256, 512], [512, INF], ] expanded_object_sizes_of_interest = [] for l, points_per_level in enumerate(points): object_sizes_of_interest_per_level = \ points_per_level.new_tensor(object_sizes_of_interest[l]) expanded_object_sizes_of_interest.append( object_sizes_of_interest_per_level[None].expand(len(points_per_level), -1) ) expanded_object_sizes_of_interest = jt.contrib.concat(expanded_object_sizes_of_interest, dim=0) num_points_per_level = [len(points_per_level) for points_per_level in points] self.num_points_per_level = num_points_per_level points_all_level = jt.contrib.concat(points, dim=0) labels, reg_targets = self.compute_targets_for_locations( points_all_level, targets, expanded_object_sizes_of_interest ) for i in range(len(labels)): labels[i] = jt.split(labels[i], num_points_per_level, dim=0) reg_targets[i] = jt.split(reg_targets[i], num_points_per_level, dim=0) labels_level_first = [] reg_targets_level_first = [] for level in range(len(points)): labels_level_first.append( jt.contrib.concat([labels_per_im[level] for labels_per_im in labels], dim=0) ) reg_targets_level_first.append( jt.contrib.concat([reg_targets_per_im[level] for reg_targets_per_im in reg_targets], dim=0) ) return labels_level_first, reg_targets_level_first