Esempio n. 1
0
    def __init__(self, num_classes, use_xyz=True, mode='TRAIN'):
        super().__init__()

        assert cfg.RPN.ENABLED or cfg.RCNN.ENABLED

        if cfg.PSP.ENABLED:
            self.psp = PSPNet(n_classes=1)
            # self.psp = PSPNet()

        if cfg.RPN.ENABLED:
            self.rpn = RPN(use_xyz=use_xyz, mode=mode)

        # merge down the xyz features and image features from PSPNet
        feature_channel = cfg.RPN.FP_MLPS[0][-1]
        self.merge_down = pt_utils.SharedMLP(
            [feature_channel * 2, feature_channel], bn=cfg.RPN.USE_BN)
        # self.merge_down = pt_utils.SharedMLP([feature_channel + 512, feature_channel], bn=cfg.RPN.USE_BN)

        if cfg.RCNN.ENABLED:
            rcnn_input_channels = 128  # channels of 128 merged rpn and PSPnet feature
            if cfg.RCNN.BACKBONE == 'pointnet':
                self.rcnn_net = RCNNNet(num_classes=num_classes,
                                        input_channels=rcnn_input_channels,
                                        use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'pointsift':
                pass
            else:
                raise NotImplementedError
Esempio n. 2
0
    def __init__(self, num_classes, use_xyz=True, mode='TRAIN'):
        super().__init__()

        assert cfg.RPN.ENABLED or cfg.RCNN.ENABLED

        if cfg.RPN.ENABLED:
            self.rpn = RPN(use_xyz=use_xyz, mode=mode)

        if cfg.RCNN.ENABLED:
            rcnn_input_channels = 128  # channels of rpn features
            if cfg.RCNN.BACKBONE == 'pointnet':
                self.rcnn_net = RCNNNet(num_classes=num_classes, input_channels=rcnn_input_channels, use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'pointsift':
                pass 
            else:
                raise NotImplementedError
Esempio n. 3
0
    def __init__(self,
                 num_classes,
                 num_point=512,
                 use_xyz=True,
                 mode='TRAIN',
                 old_model=False):
        super().__init__()
        self.mode = mode
        assert cfg.RPN.ENABLED or cfg.RCNN.ENABLED or cfg.IOUN.ENABLED

        if cfg.RPN.ENABLED:
            self.rpn = RPN(use_xyz=use_xyz, mode=mode, old_model=old_model)

        if cfg.RCNN.ENABLED or cfg.IOUN.ENABLED:
            rcnn_input_channels = 128  # channels of rpn features x,y,z,r,mask
            #self.rcnn_net = RCNNNet(num_point=num_point, num_classes=num_classes, input_channels=rcnn_input_channels, use_xyz=use_xyz)
            self.rcnn_net = RCNNNet(num_point=num_point,
                                    num_classes=num_classes,
                                    input_channels=rcnn_input_channels,
                                    use_xyz=use_xyz)
Esempio n. 4
0
            ans_dict[key] = [batch[k][key] for k in range(batch_size)]
            if isinstance(batch[0][key], int):
                ans_dict[key] = np.array(ans_dict[key], dtype=np.int32)
            elif isinstance(batch[0][key], float):
                ans_dict[key] = np.array(ans_dict[key], dtype=np.float32)
    input_data = ans_dict

    input_data['pts_input'] = torch.FloatTensor(input_data['pts_input']).cuda()
    input_data['pts_rect'] = torch.FloatTensor(input_data['pts_rect']).cuda()
    input_data['gt_boxes3d'] = torch.FloatTensor(
        input_data['gt_boxes3d']).cuda()
    #ipdb.set_trace()
    training = True
    output = {}
    rpn = RPN(use_xyz=True, mode=mode).cuda()
    rcnn_net = RCNNNet(num_classes=2, input_channels=128, use_xyz=True).cuda()
    rpn_output = rpn(input_data)
    """
    rpn_cls:B,N=16384,1
    rpn_reg:B,N,76
    backbone_xyz:B,N,3
    backbone_features:B,128,N
    """

    output.update(rpn_output)
    with torch.no_grad():
        rpn_cls, rpn_reg = rpn_output['rpn_cls'], rpn_output['rpn_reg']
        backbone_xyz, backbone_features = rpn_output[
            'backbone_xyz'], rpn_output['backbone_features']

        rpn_scores_raw = rpn_cls[:, :, 0]
Esempio n. 5
0
    def __init__(self, num_classes, use_xyz=True, mode='TRAIN'):
        super().__init__()

        assert cfg.RPN.ENABLED or cfg.RCNN.ENABLED

        if cfg.RPN.ENABLED:
            self.rpn = RPN(use_xyz=use_xyz, mode=mode)

        if cfg.RCNN.ENABLED:
            rcnn_input_channels = 128  # channels of rpn features
            if cfg.RCNN.BACKBONE == 'pointnet':
                self.rcnn_net = RCNNNet(num_classes=num_classes,
                                        input_channels=rcnn_input_channels,
                                        use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'pointsift':
                pass
            elif cfg.RCNN.BACKBONE == 'edgeconv':
                rcnn_input_channels = cfg.RCNN.GCN_CONFIG.FILTERS[-1] * 2
                self.rcnn_net = GCNNet(num_classes=num_classes,
                                       input_channels=rcnn_input_channels,
                                       use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'rotnet':
                rcnn_input_channels = get_num_rot(
                    cfg.RCNN.ROT_CONFIG.DEGREE_RES)
                self.rcnn_net = RotRCNN(num_classes=num_classes,
                                        input_channels=rcnn_input_channels,
                                        use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'deepgcn':
                # rcnn_input_channels = 256
                self.rcnn_net = DenseRCNN(num_classes=num_classes,
                                          input_channels=rcnn_input_channels,
                                          use_xyz=use_xyz)

            elif cfg.RCNN.BACKBONE == 'refine':
                # rcnn_input_channels = 256
                self.rcnn_net = RefineRCNNNet(
                    num_classes=num_classes,
                    input_channels=rcnn_input_channels,
                    use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'deeprefine':
                # rcnn_input_channels = 256
                self.rcnn_net = RefineDeepRCNNNet(
                    num_classes=num_classes,
                    input_channels=rcnn_input_channels,
                    use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'deepfeats':
                # rcnn_input_channels = 256
                self.rcnn_net = DenseFeatRCNN(
                    num_classes=num_classes,
                    input_channels=rcnn_input_channels,
                    use_xyz=use_xyz)
            elif cfg.RCNN.BACKBONE == 'deepfeatsrefine':
                # rcnn_input_channels = 256
                self.rcnn_net = DenseFeatRefineRCNN(
                    num_classes=num_classes,
                    input_channels=rcnn_input_channels,
                    use_xyz=use_xyz)
            else:
                raise NotImplementedError
        if cfg.CGCN.ENABLED:
            self.cgcn_net = None
        print(sum(p.numel() for p in self.rcnn_net.parameters()))