示例#1
0
    def init_modules(self):
        self.feature_extractor = feature_extractors.build(
            self.feature_extractor_config)
        self.rpn_model = detectors.build(self.rpn_config)
        if self.pooling_mode == 'align':
            self.rcnn_pooling = ROIAlign(
                (self.pooling_size, self.pooling_size), 1.0 / 16.0, 2)
        # note that roi extractor is shared but heads not
        # self.rcnn_cls_preds = nn.ModuleList(
            # [nn.Linear(2048, self.n_classes) for _ in range(self.num_stages)])
        in_channels = 2048

        # construct  many branches for each attr of instance
        branches = {}
        for attr in self.instance_info:
            col = self.instance_info[attr]
            branches[attr] = nn.ModuleList([nn.Linear(in_channels, self.n_classes) for _ in range(self.num_stages)])
        self.branches = nn.ModuleDict(branches)

        # if self.class_agnostic:
            # rcnn_bbox_pred = nn.Linear(in_channels, 4)
        # else:
            # rcnn_bbox_pred = nn.Linear(in_channels, 4 * self.n_classes)
        # self.rcnn_bbox_preds = nn.ModuleList(
            # [rcnn_bbox_pred for _ in range(self.num_stages)])

        # loss module
        # if self.use_focal_loss:
        # self.rcnn_cls_loss = FocalLoss(self.n_classes)
        # else:
        self.rcnn_cls_loss = nn.CrossEntropyLoss(reduce=False)
        self.rcnn_bbox_loss = nn.modules.SmoothL1Loss(reduce=False)
示例#2
0
    def init_modules(self):
        self.feature_extractor = feature_extractors.build(
            self.feature_extractor_config)
        self.rpn_model = detectors.build(self.rpn_config)
        if self.pooling_mode == 'align':
            self.rcnn_pooling = ROIAlign(
                (self.pooling_size, self.pooling_size), 1.0 / 16.0, 2)
        # note that roi extractor is shared but heads not
        self.rcnn_cls_preds = nn.ModuleList(
            [nn.Linear(2048, self.n_classes) for _ in range(self.num_stages)])
        in_channels = 2048
        if self.class_agnostic:
            rcnn_bbox_pred = nn.Linear(in_channels, 4)
        else:
            rcnn_bbox_pred = nn.Linear(in_channels, 4 * self.n_classes)
        self.rcnn_bbox_preds = nn.ModuleList(
            [rcnn_bbox_pred for _ in range(self.num_stages)])
        self.rcnn_orient_preds = nn.ModuleList(
            [nn.Linear(2048, 4) for _ in range(self.num_stages)])

        self.rcnn_dim_preds = nn.ModuleList(
            [nn.Linear(2048, 3) for _ in range(self.num_stages)])

        # loss module
        # if self.use_focal_loss:
        # self.rcnn_cls_loss = FocalLoss(self.n_classes)
        # else:
        self.rcnn_cls_loss = nn.CrossEntropyLoss(reduction='none')

        self.rcnn_bbox_loss = nn.modules.SmoothL1Loss(reduction='none')

        self.rcnn_orient_loss = OrientationLoss()
    def init_modules(self):
        self.feature_extractor = feature_extractors.build(
            self.feature_extractor_config)
        self.rpn_model = detectors.build(self.rpn_config)
        in_channels = 1024
        self.rcnn_cls_preds = nn.ModuleList([
            nn.Linear(in_channels, self.n_classes)
            for _ in range(self.num_stages)
        ])
        if self.class_agnostic:
            rcnn_bbox_pred = nn.Linear(in_channels, 4)
        else:
            rcnn_bbox_pred = nn.Linear(in_channels, 4 * self.n_classes)

        self.rcnn_bbox_preds = nn.ModuleList(
            [rcnn_bbox_pred for _ in range(self.num_stages)])

        # loss module
        if self.use_focal_loss:
            self.rcnn_cls_loss = FocalLoss(self.n_classes, gamma=2, alpha=0.75)
        else:
            self.rcnn_cls_loss = nn.CrossEntropyLoss(reduction='none')

        self.rcnn_bbox_loss = nn.modules.SmoothL1Loss(reduction='none')

        # TODO add feat scale adaptive roi pooling
        self.rcnn_pooling = AdaptiveROIAlign(
            (self.pooling_size, self.pooling_size), 2)
示例#4
0
    def init_modules(self):
        self.feature_extractor = feature_extractors.build(
            self.feature_extractor_config)
        self.rpn_model = detectors.build(self.rpn_config)
        #  self.rcnn_pooling = ROIAlign(
        #  (self.pooling_size, self.pooling_size), 1.0 / 16.0, 2)
        self.rcnn_pooling = AdaptiveROIAlign(
            (self.pooling_size, self.pooling_size), 2)

        # construct  many branches for each attr of instance
        branches = {}
        for attr in self.instance_info:
            num_channels = self.instance_info[attr].num_channels
            branches[attr] = nn.ModuleList([
                nn.Linear(self.in_channels, num_channels)
                for _ in range(self.num_stages)
            ])
        self.branches = nn.ModuleDict(branches)

        self.rcnn_cls_loss = nn.CrossEntropyLoss(reduce=False)
        self.rcnn_bbox_loss = nn.modules.SmoothL1Loss(reduce=False)
示例#5
0
    def init_modules(self):
        # self.feature_extractor = ResNetFeatureExtractor(
        # self.feature_extractor_config)
        self.feature_extractor = feature_extractors.build(
            self.feature_extractor_config)
        self.rpn_model = RPNModel(self.rpn_config)
        if self.pooling_mode == 'align':
            self.rcnn_pooling = ROIAlign(
                (self.pooling_size, self.pooling_size), 1.0 / 16.0, 2)
        elif self.pooling_mode == 'ps':
            self.rcnn_pooling = PSRoIPool(7, 7, 1.0 / 16, 7, self.n_classes)
        elif self.pooling_mode == 'psalign':
            raise NotImplementedError('have not implemented yet!')
        elif self.pooling_mode == 'deformable_psalign':
            raise NotImplementedError('have not implemented yet!')
        # self.rcnn_cls_pred = nn.Conv2d(2048, self.n_classes, 3, 1, 1)
        self.rcnn_cls_preds = nn.Linear(self.in_channels, self.n_classes)
        if self.class_agnostic:
            self.rcnn_bbox_preds = nn.Linear(self.in_channels, 4)
        else:
            self.rcnn_bbox_preds = nn.Linear(self.in_channels,
                                             4 * self.n_classes)

        # loss module
        if self.use_focal_loss:
            self.rcnn_cls_loss = FocalLoss(self.n_classes)
        else:
            self.rcnn_cls_loss = functools.partial(F.cross_entropy,
                                                   reduce=False)

        self.rcnn_bbox_loss = nn.modules.SmoothL1Loss(reduce=False)

        # self.rcnn_3d_pred = nn.Linear(c, 3 + 4 + 11 + 2 + 1)
        if self.class_agnostic_3d:
            self.rcnn_3d_pred = nn.Linear(self.in_channels, 3 + 5)
        else:
            self.rcnn_3d_pred = nn.Linear(self.in_channels,
                                          3 * self.n_classes + 5)

        self.rcnn_3d_loss = OrientationLoss(split_loss=True)
示例#6
0
 def init_modules(self):
     super().init_modules()
     self.feature_extractor = feature_extractors.build(
         self.feature_extractor_config)