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)
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)
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)
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)
def init_modules(self): super().init_modules() self.feature_extractor = feature_extractors.build( self.feature_extractor_config)