def init_param(self, model_config): self.in_channels = model_config['din'] self.post_nms_topN = model_config['post_nms_topN'] self.pre_nms_topN = model_config['pre_nms_topN'] self.nms_thresh = model_config['nms_thresh'] self.use_score = model_config['use_score'] self.rpn_batch_size = model_config['rpn_batch_size'] self.use_focal_loss = model_config['use_focal_loss'] # sampler # self.sampler = HardNegativeSampler(model_config['sampler_config']) # self.sampler = BalancedSampler(model_config['sampler_config']) self.sampler = DetectionSampler(model_config['sampler_config']) # anchor generator self.anchor_generator = AnchorGenerator( model_config['anchor_generator_config']) self.num_anchors = self.anchor_generator.num_anchors self.nc_bbox_out = 4 * self.num_anchors self.nc_score_out = self.num_anchors * 2 # target assigner self.target_assigner = TargetAssigner( model_config['target_assigner_config']) # bbox coder self.bbox_coder = self.target_assigner.bbox_coder self.use_iou = model_config.get('use_iou')
def init_param(self, model_config): classes = model_config['classes'] self.classes = classes self.n_classes = len(classes) self.class_agnostic = model_config['class_agnostic'] self.pooling_size = model_config['pooling_size'] self.pooling_mode = model_config['pooling_mode'] self.crop_resize_with_max_pool = model_config[ 'crop_resize_with_max_pool'] self.truncated = model_config['truncated'] self.use_focal_loss = model_config['use_focal_loss'] self.subsample_twice = model_config['subsample_twice'] self.rcnn_batch_size = model_config['rcnn_batch_size'] # some submodule config self.feature_extractor_config = model_config[ 'feature_extractor_config'] self.rpn_config = model_config['rpn_config'] # assigner self.target_assigner = TargetAssigner( model_config['target_assigner_config']) # sampler self.sampler = BalancedSampler(model_config['sampler_config'])
def build_target_assigner(target_assigner_config, bv_range, box_coder): """Builds a tensor dictionary based on the InputReader config. Args: input_reader_config: A input_reader_pb2.InputReader object. Returns: A tensor dict based on the input_reader_config. Raises: ValueError: On invalid input reader proto. ValueError: If no input paths are specified. """ anchor_cfg = target_assigner_config.ANCHOR_GENERATORS anchor_generators = [] for a_cfg in anchor_cfg: anchor_generator = build_anchor_generator(a_cfg) anchor_generators.append(anchor_generator) similarity_calc = build_similarity_calculator( target_assigner_config.REGION_SIMILARITY_CALCULATOR) positive_fraction = target_assigner_config.SAMPLE_POSITIVE_FRACTION if positive_fraction < 0: positive_fraction = None target_assigner = TargetAssigner( box_coder=box_coder, anchor_generators=anchor_generators, region_similarity_calculator=similarity_calc, positive_fraction=positive_fraction, sample_size=target_assigner_config.SAMPLE_SIZE) return target_assigner
def init_params(self, model_config): self.feature_extractor_config = model_config[ 'feature_extractor_config'] self.multibox_cfg = model_config['multibox_cfg'] self.target_assigner = TargetAssigner( model_config['target_assigner_config'])
def __init__(self, layer_config): super().__init__() # some parameters self.rpn_positive_weight = layer_config['rpn_positive_weight'] self.rpn_negative_overlaps = layer_config['rpn_negative_overlaps'] self.rpn_positive_overlaps = layer_config['rpn_positive_overlaps'] self.rpn_batch_size = layer_config['rpn_batch_size'] # subsample score and iou or subsample score only self.subsample_twice = layer_config['subsample_twice'] self.subsample_type = layer_config['subsample_type'] self.target_assigner = TargetAssigner() self.sampler = Sampler(self.subsample_type)
def init_param(self, model_config): self.feat_size = model_config['common_feat_size'] self.batch_size = model_config['batch_size'] self.sample_size = model_config['sample_size'] self.pooling_size = model_config['pooling_size'] self.n_classes = model_config['num_classes'] self.use_focal_loss = model_config['use_focal_loss'] self.feature_extractor_config = model_config[ 'feature_extractor_config'] self.voxel_generator = VoxelGenerator( model_config['voxel_generator_config']) self.voxel_generator.init_voxels() self.integral_map_generator = IntegralMapGenerator() self.oft_target_assigner = OFTargetAssigner( model_config['target_assigner_config']) self.target_assigner = TargetAssigner( model_config['eval_target_assigner_config']) self.target_assigner.analyzer.append_gt = False self.sampler = DetectionSampler(model_config['sampler_config']) self.bbox_coder = self.oft_target_assigner.bbox_coder # find the most expensive operators self.profiler = Profiler() # self.multibin = model_config['multibin'] self.num_bins = model_config['num_bins'] self.reg_channels = 3 + 3 + self.num_bins * 4 # score, pos, dim, ang self.rcnn_output_channels = self.n_classes + self.reg_channels self.rpn_output_channels = 2 + 3 + 3 nms_deltas = model_config.get('nms_deltas') if nms_deltas is None: nms_deltas = 1 self.nms_deltas = nms_deltas
def init_param(self, model_config): self.feature_extractor_config = model_config['feature_extractor_config'] self.multibox_cfg = [3, 3, 3, 3, 3, 3] self.n_classes = len(model_config['classes']) self.sampler = DetectionSampler(model_config['sampler_config']) self.batch_size = model_config['batch_size'] self.use_focal_loss = model_config['use_focal_loss'] # self.multibox_cfg = model_config['multibox_config'] self.target_assigner = TargetAssigner( model_config['target_assigner_config']) # import ipdb # ipdb.set_trace() self.anchor_generator = AnchorGenerator( model_config['anchor_generator_config']) self.bbox_coder = self.target_assigner.bbox_coder