예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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()))