Exemple #1
0
 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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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