Example #1
0
 def __get_input_template(self):
     scales = np.linspace(self.default_boxes_config["min_scale"],
                          self.default_boxes_config["max_scale"],
                          len(self.default_boxes_config["layers"]))
     mbox_conf_layers = []
     mbox_loc_layers = []
     mbox_default_boxes_layers = []
     for i, layer in enumerate(self.default_boxes_config["layers"]):
         layer_default_boxes = ssd_utils.generate_default_boxes_for_feature_map(
             feature_map_size=layer["size"],
             image_size=self.input_size,
             offset=layer["offset"],
             scale=scales[i],
             next_scale=scales[i + 1] if
             i + 1 <= len(self.default_boxes_config["layers"]) - 1 else 1,
             aspect_ratios=layer["aspect_ratios"],
             variances=self.default_boxes_config["variances"],
             extra_box_for_ar_1=self.extra_box_for_ar_1)
         layer_default_boxes = np.reshape(layer_default_boxes, (-1, 8))
         layer_conf = np.zeros(
             (layer_default_boxes.shape[0], self.num_classes))
         layer_conf[:, 0] = 1  # all classes are background by default
         mbox_conf_layers.append(layer_conf)
         mbox_loc_layers.append(np.zeros(
             (layer_default_boxes.shape[0], 12)))
         mbox_default_boxes_layers.append(layer_default_boxes)
     mbox_conf = np.concatenate(mbox_conf_layers, axis=0)
     mbox_loc = np.concatenate(mbox_loc_layers, axis=0)
     mbox_default_boxes = np.concatenate(mbox_default_boxes_layers, axis=0)
     template = np.concatenate([mbox_conf, mbox_loc, mbox_default_boxes],
                               axis=-1)
     template = np.expand_dims(template, axis=0)
     return np.tile(template, (self.batch_size, 1, 1))
Example #2
0
 def call(self, inputs):
     default_boxes = generate_default_boxes_for_feature_map(
         feature_map_size=self.feature_map_size,
         image_size=self.image_size,
         offset=self.offset,
         scale=self.scale,
         next_scale=self.next_scale,
         aspect_ratios=self.aspect_ratios,
         variances=self.variances,
         extra_box_for_ar_1=self.extra_box_for_ar_1)
     default_boxes = np.expand_dims(default_boxes, axis=0)
     default_boxes = tf.constant(default_boxes, dtype='float32')
     default_boxes = tf.tile(default_boxes,
                             (tf.shape(inputs)[0], 1, 1, 1, 1))
     return default_boxes
print("generating default boxes")
scales = np.linspace(default_boxes_config["min_scale"],
                     default_boxes_config["max_scale"],
                     len(default_boxes_config["layers"]))
mbox_conf_layers = []
mbox_loc_layers = []
mbox_default_boxes_layers = []
for i, layer in enumerate(default_boxes_config["layers"]):
    temp_image = image.copy()
    print(f"displaying default boxes for layer: {layer['name']}")
    layer_default_boxes = ssd_utils.generate_default_boxes_for_feature_map(
        feature_map_size=layer["size"],
        image_size=input_size,
        offset=layer["offset"],
        scale=scales[i],
        next_scale=scales[i + 1]
        if i + 1 <= len(default_boxes_config["layers"]) - 1 else 1,
        aspect_ratios=layer["aspect_ratios"],
        variances=default_boxes_config["variances"],
        extra_box_for_ar_1=extra_box_for_ar_1)

    grid_size = input_size / layer["size"]
    offset = layer["offset"]
    offset_x, offset_y = offset

    cx = np.linspace(offset_x * grid_size, input_size - (offset_x * grid_size),
                     layer["size"])
    cy = np.linspace(offset_y * grid_size, input_size - (offset_y * grid_size),
                     layer["size"])

    for n in range(len(cx)):