def verify_no_negative_regr(): transform_generator = random_transform_generator( min_rotation=-0.1, max_rotation=0.1, min_translation=(-0.1, -0.1), max_translation=(0.1, 0.1), min_shear=-0.1, max_shear=0.1, min_scaling=(0.9, 0.9), max_scaling=(1.1, 1.1), flip_x_chance=0.5, flip_y_chance=0.5, ) visual_effect_generator = random_visual_effect_generator( contrast_range=(0.9, 1.1), brightness_range=(-.1, .1), hue_range=(-0.05, 0.05), saturation_range=(0.95, 1.05) ) common_args = { 'batch_size': 1, 'image_min_side': 800, 'image_max_side': 1333, 'preprocess_image': preprocess_image, } generator = PascalVocGenerator( 'datasets/voc_trainval/VOC0712', 'trainval', transform_generator=transform_generator, visual_effect_generator=visual_effect_generator, skip_difficult=True, **common_args ) i = 0 for image_group, targets in generator: i += 1 if i > 20000: break
def create_generators(args, preprocess_image): """ Create generators for training and validation. Args args: parseargs object containing configuration for generators. preprocess_image: Function that preprocesses an image for the network. """ common_args = { 'batch_size': args.batch_size, 'config': args.config, 'image_min_side': args.image_min_side, 'image_max_side': args.image_max_side, 'preprocess_image': preprocess_image, } # create random transform generator for augmenting training data if args.random_transform: transform_generator = random_transform_generator( min_rotation=-0.1, max_rotation=0.1, min_translation=(-0.1, -0.1), max_translation=(0.1, 0.1), min_shear=-0.1, max_shear=0.1, min_scaling=(0.9, 0.9), max_scaling=(1.1, 1.1), flip_x_chance=0.5, flip_y_chance=0.5, ) visual_effect_generator = random_visual_effect_generator( contrast_range=(0.9, 1.1), brightness_range=(-.1, .1), hue_range=(-0.05, 0.05), saturation_range=(0.95, 1.05) ) else: transform_generator = random_transform_generator(flip_x_chance=0.5) visual_effect_generator = None if args.dataset_type == 'pascal': train_generator = PascalVocGenerator( args.pascal_path, 'trainval', transform_generator=transform_generator, visual_effect_generator=visual_effect_generator, skip_difficult=True, **common_args ) validation_generator = PascalVocGenerator( args.pascal_path, 'val', shuffle_groups=False, skip_difficult=True, **common_args ) elif args.dataset_type == 'csv': train_generator = CSVGenerator( args.annotations_path, args.classes_path, transform_generator=transform_generator, visual_effect_generator=visual_effect_generator, **common_args ) if args.val_annotations_path: validation_generator = CSVGenerator( args.val_annotations_path, args.classes_path, shuffle_groups=False, **common_args ) else: validation_generator = None elif args.dataset_type == 'coco': # import here to prevent unnecessary dependency on cocoapi from generators.coco_generator import CocoGenerator train_generator = CocoGenerator( args.coco_path, 'train2017', transform_generator=transform_generator, visual_effect_generator=visual_effect_generator, **common_args ) validation_generator = CocoGenerator( args.coco_path, 'val2017', shuffle_groups=False, **common_args ) else: raise ValueError('Invalid data type received: {}'.format(args.dataset_type)) return train_generator, validation_generator
from utils.image import random_visual_effect_generator import cv2 img = cv2.imread('test/demo.jpg') aug = random_visual_effect_generator() while True: gen = next(aug)(img) print(type(gen)) cv2.imshow("trest", gen) if cv2.waitKey() == 27: break cv2.destroyAllWindows()