예제 #1
0
from data_augmentation import SSDAugmentation
from utils.datasets import DataManager
from utils.preprocessing import load_image
from utils.datasets import get_arg_to_class
from utils.visualizer import draw_image_boxes
import cv2
# import numpy as np

size = 300
dataset_name = 'VOC2007'
class_names = ['background', 'aeroplane']
class_to_arg = get_arg_to_class(class_names)
# transformer = SSDAugmentation(size, mean=(104, 117, 123))
transformer = SSDAugmentation(size, mean=(0, 0, 0))
data_manager = DataManager(dataset_name, class_names)
data = data_manager.load_data()
for image_key in data.keys():
    image_path = data_manager.image_prefix + image_key
    print(cv2.imread(image_path))
    image_array = load_image(image_path, (size, size))[0]
    original_image_array = load_image(image_path, None)[0]
    ground_truth_data = data[image_key]
    boxes = ground_truth_data[:, :4]
    labels = ground_truth_data[:, 4:]
    transformed_data = transformer(image_array, boxes, labels)
    image_array, boxes, labels = transformed_data
    # image_array = image_array[:, :, ::-1]
    image_array = image_array.astype('uint8')
    draw_image_boxes(boxes, image_array, class_to_arg, normalized=True)
iou_threshold = .45

average_precisions = []
# range(1, 21)
for ground_truth_class_arg in range(1, 21):
    labels = []
    scores = []
    class_names = get_class_names(dataset_name)
    # ground_truth_class_arg = class_arg
    selected_classes = [class_names[0]] + [class_names[ground_truth_class_arg]]
    num_ground_truth_boxes = 0
    class_decoder = get_arg_to_class(class_names)
    num_classes = len(class_names)
    data_manager = DataManager(dataset_name, selected_classes, data_prefix,
                               image_prefix)
    ground_truth_data = data_manager.load_data()
    difficult_data_flags = data_manager.parser.difficult_objects

    image_names = sorted(list(ground_truth_data.keys()))
    # print('Number of images found:', len(image_names))
    for image_name in image_names:
        ground_truth_sample = ground_truth_data[image_name]
        image_prefix = data_manager.image_prefix
        image_path = image_prefix + image_name
        image_array, original_image_size = load_image(image_path, input_shape)
        image_array = preprocess_images(image_array)
        predicted_data = predict(model, image_array, prior_boxes,
                                 original_image_size, 21, class_threshold,
                                 iou_threshold)
        ground_truth_sample = denormalize_box(ground_truth_sample,
                                              original_image_size)