def create_generators(args): """ 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, 'input_size': args.input_size, } # create random transform generator for augmenting training data if args.random_transform: misc_effect = MiscEffect(border_value=0) visual_effect = VisualEffect() else: misc_effect = None visual_effect = None if args.dataset_type == 'coco': from generators.coco import CocoGenerator train_generator = CocoGenerator(args.coco_path, 'train', misc_effect=misc_effect, visual_effect=visual_effect, **common_args) validation_generator = CocoGenerator(args.coco_path, 'val', shuffle_groups=False, **common_args) else: raise ValueError('Invalid data type received: {}'.format( args.dataset_type)) return train_generator, validation_generator
def create_generators(args): """ 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, 'phi': args.phi, 'detect_text': args.detect_text, 'detect_quadrangle': args.detect_quadrangle } # create random transform generator for augmenting training data if args.random_transform: misc_effect = MiscEffect() visual_effect = VisualEffect() else: misc_effect = None visual_effect = None if args.dataset_type == 'pascal': from generators.pascal import PascalVocGenerator train_generator = PascalVocGenerator(args.pascal_path, 'trainval', skip_difficult=True, misc_effect=misc_effect, visual_effect=visual_effect, **common_args) validation_generator = PascalVocGenerator(args.pascal_path, 'val', skip_difficult=True, shuffle_groups=False, **common_args) elif args.dataset_type == 'csv': from generators.csv_ import CSVGenerator train_generator = CSVGenerator(args.annotations_path, args.classes_path, misc_effect=misc_effect, visual_effect=visual_effect, **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 import CocoGenerator train_generator = CocoGenerator(args.coco_path, 'train2017', misc_effect=misc_effect, visual_effect=visual_effect, group_method='random', **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
tag = '{}. {}'.format(index + 1, coco_tag[index]) tf.summary.scalar(tag, result, epoch) if __name__ == '__main__': from model import efficientdet import os from generators.coco import CocoGenerator os.environ['CUDA_VISIBLE_DEVICES'] = '0' phi = 2 weighted_bifpn = True model_path = 'efficientdet-d2.h5' common_args = { 'batch_size': 1, 'phi': phi, } test_generator = CocoGenerator('datasets/coco', 'test-dev2017', shuffle_groups=False, **common_args) num_classes = test_generator.num_classes() model, prediction_model = efficientdet(phi=phi, num_classes=num_classes, weighted_bifpn=weighted_bifpn, score_threshold=0.01) prediction_model.load_weights(model_path, by_name=True) evaluate(test_generator, prediction_model, threshold=0.01)
if __name__ == '__main__': # from generators.pascal import PascalVocGenerator # # train_generator = PascalVocGenerator( # 'datasets/VOC0712', # 'trainval', # skip_difficult=True, # batch_size=1, # shuffle_groups=False # ) from generators.coco import CocoGenerator train_generator = CocoGenerator( '/home/adam/.keras/datasets/coco/2017_118_5', 'train2017', batch_size=1, shuffle_groups=False ) misc_effect = MiscEffect() for i in range(train_generator.size()): image = train_generator.load_image(i) image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) annotations = train_generator.load_annotations(i) boxes = annotations['bboxes'] for box in boxes.astype(np.int32): cv2.rectangle(image, (box[0], box[1]), (box[2], box[3]), (0, 0, 255), 2) src_image = image.copy() # cv2.namedWindow('src_image', cv2.WINDOW_NORMAL) cv2.imshow('src_image', src_image) image, boxes = misc_effect(image, boxes) # image, boxes = multi_scale(image, boxes)
if coco_eval_stats is not None and self.tensorboard is not None and self.tensorboard.writer is not None: import tensorflow as tf summary = tf.Summary() for index, result in enumerate(coco_eval_stats): summary_value = summary.value.add() summary_value.simple_value = result summary_value.tag = '{}. {}'.format(index + 1, coco_tag[index]) self.tensorboard.writer.add_summary(summary, epoch) logs[coco_tag[index]] = result if __name__ == '__main__': dataset_dir = '/home/adam/.keras/datasets/coco/2017_118_5' test_generator = CocoGenerator( anchors_path='yolo_anchors.txt', data_dir=dataset_dir, set_name='test-dev2017', shuffle_groups=False, ) input_shape = (416, 416) model, prediction_model = yolo_body(test_generator.anchors, num_classes=80) model.load_weights('checkpoints/yolov3_weights.h5', by_name=True) coco_eval_stats = evaluate(test_generator, model) coco_tag = [ 'AP @[ IoU=0.50:0.95 | area= all | maxDets=100 ]', 'AP @[ IoU=0.50 | area= all | maxDets=100 ]', 'AP @[ IoU=0.75 | area= all | maxDets=100 ]', 'AP @[ IoU=0.50:0.95 | area= small | maxDets=100 ]', 'AP @[ IoU=0.50:0.95 | area=medium | maxDets=100 ]', 'AP @[ IoU=0.50:0.95 | area= large | maxDets=100 ]', 'AR @[ IoU=0.50:0.95 | area= all | maxDets= 1 ]', 'AR @[ IoU=0.50:0.95 | area= all | maxDets= 10 ]',
tag = '{}. {}'.format(index + 1, coco_tag[index]) tf.summary.scalar(tag, result, epoch) if __name__ == '__main__': from model import efficientdet import os from generators.coco import CocoGenerator os.environ['CUDA_VISIBLE_DEVICES'] = '0' phi = 1 weighted_bifpn = True model_path = 'checkpoints/colab_efficientdet.h5' common_args = { 'batch_size': 1, 'phi': phi, } test_generator = CocoGenerator('G:\datasets\COCO', 'train2017', shuffle_groups=False, **common_args) num_classes = test_generator.num_classes() model, prediction_model = efficientdet(phi=phi, num_classes=num_classes, weighted_bifpn=weighted_bifpn, score_threshold=0.01) prediction_model.load_weights(model_path, by_name=True) evaluate(test_generator, prediction_model, threshold=0.01)
def create_generators(args): """ 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, 'input_size': args.input_size, } # create random transform generator for augmenting training data if args.random_transform: misc_effect = MiscEffect(border_value=0) visual_effect = VisualEffect() else: misc_effect = None visual_effect = None if args.dataset_type == 'pascal': from generators.pascal import PascalVocGenerator train_generator = PascalVocGenerator( args.pascal_path, 'trainval', skip_difficult=True, multi_scale=args.multi_scale, misc_effect=misc_effect, visual_effect=visual_effect, **common_args ) validation_generator = PascalVocGenerator( '/opt/train_data/VOC_data/VOCdevkit/VOC2007/', 'test', skip_difficult=True, shuffle_groups=False, **common_args ) elif args.dataset_type == 'csv': from generators.csv_ import CSVGenerator train_generator = CSVGenerator( args.annotations_path, args.classes_path, misc_effect=misc_effect, visual_effect=visual_effect, **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': from generators.coco import CocoGenerator train_generator = CocoGenerator( args.coco_path, 'train2017', misc_effect=misc_effect, visual_effect=visual_effect, **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
self.tensorboard.writer.add_summary(summary, epoch) logs[coco_tag[index]] = result if __name__ == '__main__': from model import efficientdet import os from generators.coco import CocoGenerator os.environ['CUDA_VISIBLE_DEVICES'] = '1' phi = 0 weighted_bifpn = True common_args = { 'batch_size': 1, 'phi': phi, } test_generator = CocoGenerator('/home/adam/workspace/datasets/coco', 'val2017', shuffle_groups=False, **common_args) model_path = 'checkpoints/2019-12-06/coco_14_1.6369_1.6223.h5' num_classes = test_generator.num_classes() model, prediction_model = efficientdet(phi=phi, num_classes=num_classes, weighted_bifpn=weighted_bifpn, score_threshold=0.01) prediction_model.load_weights(model_path, by_name=True) evaluate(test_generator, prediction_model, threshold=0.01)