コード例 #1
0
 def forward(self, box_data, prior_boxes):
     regressed_boxes = box_data[:, :4]
     class_predictions = box_data[:, 4:]
     decoded_boxes = unregress_boxes(regressed_boxes, prior_boxes,
                                     self.variance)
     for class_arg in range(1, self.num_classes):
         class_mask = class_predictions[class_arg] > (self.conf_thresh)
         scores = class_predictions[class_arg][class_mask]
         if len(scores) == 0:
             continue
         boxes = decoded_boxes[class_mask]
         indices = apply_non_max_suppression(boxes, scores, self.nms_thresh,
                                             self.top_k)
         count = len(indices)
         selections = np.concatenate((scores[indices, None], boxes[indices,
                                                                   None]))
         self.output[1, class_arg, :count] = selections
     return self.output
コード例 #2
0
    def forward(self, box_data, prior_boxes):
        box_data = np.squeeze(box_data)
        regressed_boxes = box_data[:, :4]
        class_predictions = box_data[:, 4:]
        decoded_boxes = unregress_boxes(regressed_boxes, prior_boxes,
                                        self.variance)
        output = np.zeros((1, self.num_classes, self.top_k, 5))
        class_selections = []
        for class_arg in range(1, self.num_classes):
            conf_mask = class_predictions[:, class_arg] >= (self.conf_thresh)
            scores = class_predictions[:, class_arg][conf_mask]
            if len(scores) == 0:
                continue
            boxes = decoded_boxes[conf_mask]
            """
            indices = apply_non_max_suppression(boxes, scores,
                                                self.nms_thresh,
                                                self.top_k)
            count = len(indices)
            """
            pickle.dump(boxes, open('numpy_boxes.pkl', 'wb'))
            pickle.dump(scores, open('numpy_scores.pkl', 'wb'))

            indices, count = nms(boxes, scores, self.nms_thresh, self.top_k)
            # print('indices:', indices)
            # print('indices_shape:', indices.shape)
            scores = np.expand_dims(scores, -1)
            # print('scores_shape:', scores[indices].shape)
            # print('boxes_shape:', boxes[indices].shape)
            selections = np.concatenate(
                (scores[indices[:count]], boxes[indices[:count]]), axis=1)

            class_selections.append(selections)
            # pickle.dump(selections, open('numpy_selections.pkl', 'wb'))
            # print('selections_shape', selections.shape)
            # print('count:', count)
            # self.output[0, class_arg, :count] = selections
            # print('numpy_selections:', selections)
            print('numpy class_arg:', class_arg)
            print('numpy count', count)
            # self.output[0, class_arg, :count, :] = selections
            output[0, class_arg, :count, :] = selections
        pickle.dump(class_selections, open('numpy_selections.pkl', 'wb'))
        return output
コード例 #3
0
                                              box_data,
                                              len(class_names),
                                              regress=True,
                                              overlap_threshold=.5)
positive_mask = assigned_regressed_boxes[:, 4] != 1
regressed_positive_boxes = assigned_regressed_boxes[positive_mask]
image_array = load_image(image_path, input_shape)
plot_box_data(regressed_positive_boxes,
              image_array,
              arg_to_class,
              colors=colors)
plt.imshow(image_array)
plt.show()

# un-regressed boxes
assigned_unregressed_boxes = unregress_boxes(assigned_regressed_boxes,
                                             prior_boxes)
unregressed_positive_boxes = assigned_unregressed_boxes[positive_mask]
image_array = load_image(image_path, input_shape)
plot_box_data(unregressed_positive_boxes,
              image_array,
              arg_to_class,
              colors=colors)
plt.imshow(image_array)
plt.show()

# data augmentations
# ------------------------------------------------------------------
data_manager = DataManager(dataset_name, 'train')
train_data = data_manager.load_data()
arg_to_class = data_manager.arg_to_class
colors = get_colors(25)
コード例 #4
0
# parameters
dataset_name = 'VOC2012'
batch_size = 20
colors = get_colors(25)
prior_boxes = to_point_form(create_prior_boxes())

# loading training data
data_manager = DataManager(dataset_name, 'train')
train_data = data_manager.load_data()
arg_to_class = data_manager.arg_to_class
# loading validation data
val_data = DataManager(dataset_name, 'val').load_data()

# generating output
generator = ImageGenerator(train_data, val_data, prior_boxes, batch_size)
generated_data = next(generator.flow('train'))
transformed_image_batch = generated_data[0]['input_1']
generated_output = generated_data[1]['predictions']

for batch_arg, transformed_image in enumerate(transformed_image_batch):
    positive_mask = generated_output[batch_arg, :, 4] != 1
    regressed_boxes = generated_output[batch_arg]
    unregressed_boxes = unregress_boxes(regressed_boxes, prior_boxes)
    unregressed_positive_boxes = unregressed_boxes[positive_mask]
    plot_box_data(unregressed_positive_boxes,
                  transformed_image,
                  arg_to_class,
                  colors=colors)
    plt.imshow(transformed_image.astype('uint8'))
    plt.show()