iou_nms_threshold = .45 iou_threshold = .5 num_classes = 21 image_prefix = '../datasets/VOCdevkit/VOC2007/JPEGImages/' with_difficult_objects = False split = 'test' class_names = get_class_names(dataset_name) class_names = class_names[1:] average_precisions = [] for class_name in class_names: selected_classes = ['background'] + [class_name] data_manager = DataManager(dataset_name, split, selected_classes, with_difficult_objects) ground_truth_data = data_manager.load_data() difficult_data_flags = data_manager.parser.difficult_objects scores = [] labels = [] num_gt_boxes = 0 for image_name, gt_sample in tqdm(ground_truth_data.items()): image_path = image_prefix + image_name reference_size = get_image_size(image_path) detections = infer_from_path(image_path, model, prior_boxes) gt_sample = denormalize_boxes(gt_sample, reference_size) num_gt_boxes = num_gt_boxes + len(gt_sample) already_detected = np.zeros(shape=len(gt_sample), dtype=bool) for detection in detections: ious = calculate_intersection_over_union(detection, gt_sample) score = np.max(detection[4:]) best_iou = np.max(ious)
datasets = ['VOC2007', 'VOC2012'] splits = ['trainval', 'trainval'] class_names = 'all' difficult_boxes = True model_path = '../trained_models/SSD_scratch_all/' save_path = model_path + 'weights.{epoch:02d}-{val_loss:.2f}.hdf5' frozen_layers = ['input_1', 'conv1_1', 'conv1_2', 'pool1', 'conv2_1', 'conv2_2', 'pool2', 'conv3_1', 'conv3_2', 'conv3_3', 'pool3', 'conv4_1', 'conv4_2', 'conv4_3', 'pool4', 'conv5_1', 'conv5_2', 'conv5_3', 'pool5', 'fc6', 'fc7'] dataset_manager = DataManager(datasets, splits, class_names, difficult_boxes) train_data = dataset_manager.load_data() val_data = test_data = DataManager('VOC2007', 'test').load_data() class_names = dataset_manager.class_names num_classes = len(class_names) # generator prior_boxes = to_point_form(create_prior_boxes()) generator = ImageGenerator(train_data, val_data, prior_boxes, batch_size, box_scale_factors, num_classes) # model multibox_loss = MultiboxLoss(num_classes, negative_positive_ratio, batch_size) model = SSD300(image_shape, num_classes, weights_path, frozen_layers, randomize_top) model.compile(optimizer, loss=multibox_loss.compute_loss)
decay = 0.1 step_epochs = [154, 193, 232] randomize_top = True weights_path = '../trained_models/VGG16_weights.hdf5' train_datasets = ['VOC2007', 'VOC2012'] train_splits = ['trainval', 'trainval'] val_dataset = 'VOC2007' val_split = 'test' class_names = 'all' difficult_boxes = True model_path = '../trained_models/SSD_SGD_scratch_all2/' save_path = model_path + 'weights.{epoch:02d}-{val_loss:.2f}.hdf5' train_data_manager = DataManager(train_datasets, train_splits, class_names, difficult_boxes) train_data = train_data_manager.load_data() class_names = train_data_manager.class_names num_classes = len(class_names) val_data_manager = DataManager(val_dataset, val_split, class_names, False) val_data = val_data_manager.load_data() # generator prior_boxes = to_point_form(create_prior_boxes()) generator = ImageGenerator(train_data, val_data, prior_boxes, batch_size, box_scale_factors, num_classes) # model multibox_loss = MultiboxLoss(num_classes, negative_positive_ratio, batch_size) model = SSD300(image_shape, num_classes, weights_path) model.compile(optimizer, loss=multibox_loss.compute_loss)
from utils.data_augmentation import ToAbsoluteCoords from utils.data_augmentation import PhotometricDistort2 from utils.data_augmentation import Expand from utils.data_augmentation import RandomSampleCrop from utils.data_augmentation import HorizontalFlip from utils.data_augmentation import ToPercentCoords from utils.data_augmentation import Resize from utils.data_augmentation import SubtractMeans from utils.preprocessing import load_image from utils.preprocessing import B_MEAN, G_MEAN, R_MEAN from datasets import DataManager import matplotlib.pyplot as plt data_manager = DataManager('VOC2007', 'train') class_names = data_manager.class_names train_data = data_manager.load_data() image_path = sorted(list(train_data.keys()))[7] box_data = train_data[image_path] image_array = load_image(image_path, RGB=False).copy() data = (image_array, box_data[:, :4], box_data[:, 4:]) convert_from_ints = ConvertFromInts() to_absolute_coords = ToAbsoluteCoords() photometric_distort = PhotometricDistort2() expand = Expand((B_MEAN, G_MEAN, R_MEAN)) random_sample_crop = RandomSampleCrop() horizontal_flip = HorizontalFlip() to_percent_coords = ToPercentCoords() resize = Resize(300) subtract_means = SubtractMeans((B_MEAN, G_MEAN, R_MEAN))
from datasets import DataManager data_manager = DataManager('VOC2007', split='test') gt = data_manager.load_data() print(len(gt.keys()))