def __init__()

in models/vision/detection/awsdet/models/bbox_heads/bbox_head.py [0:0]


    def __init__(self, 
                 num_classes, 
                 pool_size=(7, 7), # ROI feature size
                 target_means=(0., 0., 0., 0.), 
                 target_stds=(0.1, 0.1, 0.2, 0.2),
                 min_confidence=0.7,
                 nms_threshold=0.3,
                 max_instances=100,
                 num_rcnn_deltas=512,
                 weight_decay=1e-4,
                 use_conv=False,
                 use_bn=False,
                 use_smooth_l1=True,
                 label_smoothing=0.0,
                 soft_nms_sigma=0.0,
                 reg_class_agnostic=False,
                 **kwags):
        super(BBoxHead, self).__init__(**kwags)
        
        self.num_classes = num_classes
        self.pool_size = tuple(pool_size)
        self.target_means = target_means
        self.target_stds = target_stds
        self.min_confidence = min_confidence
        self.nms_threshold = nms_threshold
        self.max_instances = max_instances
        self.num_rcnn_deltas=num_rcnn_deltas
        self.rcnn_class_loss = losses.rcnn_class_loss
        self.rcnn_bbox_loss = functools.partial(losses.rcnn_bbox_loss, use_smooth_l1=use_smooth_l1)
        self.use_conv = use_conv
        self.use_bn = (use_bn and not use_conv)
        self.label_smoothing = label_smoothing
        self.soft_nms_sigma = soft_nms_sigma
        self.reg_class_agnostic = reg_class_agnostic
        self.num_reg_outputs = num_classes * 4 if not reg_class_agnostic else 4
        roi_feature_size=(7, 7, 256)
        if not use_conv:
            self._flatten_layer = layers.Flatten()
            
            self._flatten_bn = layers.BatchNormalization(scale=True, epsilon=1e-5, name='flatten_bn')
            
            self._fc1 = layers.Dense(1024, name='fc1', activation=None, use_bias=False,
                                     kernel_initializer='glorot_uniform',
                                     kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                     input_shape=[roi_feature_size]
                                     )
            self._fc1_bn = layers.BatchNormalization(name='fc1_bn')
            
            self._fc2 = layers.Dense(1024, name='fc2', activation=None, use_bias=False,
                                     kernel_initializer='glorot_uniform',
                                     kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                     )
            
            self._fc2_bn = layers.BatchNormalization(name='fc2_bn')

            self.rcnn_class_logits = layers.Dense(num_classes,
                                                  kernel_initializer='glorot_uniform',
                                                  kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                                  name='rcnn_class_logits')
            self.rcnn_delta_fc = layers.Dense(self.num_reg_outputs, 
                                              kernel_initializer='glorot_uniform',
                                              kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                              name='rcnn_bbox_fc')
        else:
            self._conv1 = layers.Conv2D(1024, (3, 3), padding='same',
                                        kernel_initializer=tf.keras.initializers.TruncatedNormal(mean=0.0, stddev=0.01),
                                        kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                        activation='relu',
                                        name='rcnn_conv_1')
            
            self._conv2 = layers.Conv2D(1024, self.pool_size, padding='valid',
                                        kernel_initializer=tf.keras.initializers.TruncatedNormal(mean=0.0, stddev=0.01),
                                        kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                        activation='relu',
                                        name='rcnn_conv_2')

            self.rcnn_class_logits = layers.Conv2D(num_classes, (1, 1),
                                        kernel_initializer=tf.keras.initializers.TruncatedNormal(mean=0.0, stddev=0.01),
                                        kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                        activation='linear',
                                        name='rcnn_class_logit')
            self.rcnn_delta_cv = layers.Conv2D(self.num_reg_outputs, (1, 1),
                                            kernel_initializer=tf.keras.initializers.TruncatedNormal(mean=0.0, stddev=0.01),
                                            kernel_regularizer=tf.keras.regularizers.l2(weight_decay),
                                            activation='linear',
                                            name='rcnn_delta_cv')