def _main_(args): config_path = args.conf with open(config_path) as config_buffer: config = json.loads(config_buffer.read()) test_imgs, test_labels = parse_annotation( config['test']['test_annot_folder'], config['test']['test_image_folder'], config['model']['labels']) ############################### # Construct the model ############################### yolo = YOLO(feature_extractor=config['model']['backend'], input_size=config['model']['input_size'], labels=config['model']['labels'], max_box_per_image=config['model']['max_box_per_image'], anchors=config['model']['anchors']) yolo.load_weights(config['train']['saved_weights_name']) print('weights loaded from {}'.format( config['train']['saved_weights_name'])) yolo.evaluate(test_imgs[:500], iou_threshold=0.3, obj_threshold=0.2, nms_threshold=0.2)
def _main_(args): config_path = args.conf weights_path = args.weights with open(config_path) as config_buffer: config = json.load(config_buffer) yolo = YOLO(backend=config['model']['backend'], input_size=config['model']['input_size'], labels=config['model']['labels'], max_box_per_image=config['model']['max_box_per_image'], anchors=config['model']['anchors']) yolo.load_weights(weights_path) valid_imgs, valid_labels = parse_annotation( config['valid']['valid_annot_folder'], config['valid']['valid_image_folder'], config['model']['labels']) yolo.batch_size = config['train']['batch_size'] yolo.sequence_length = 1 generator_config = { 'IMAGE_H': yolo.input_size, 'IMAGE_W': yolo.input_size, 'GRID_H': yolo.grid_h, 'GRID_W': yolo.grid_w, 'BOX': yolo.nb_box, 'LABELS': yolo.labels, 'CLASS': len(yolo.labels), 'ANCHORS': yolo.anchors, 'BATCH_SIZE': yolo.batch_size, 'TRUE_BOX_BUFFER': yolo.max_box_per_image, 'SEQUENCE_LENGTH': yolo.sequence_length } valid_generator = BatchGenerator(valid_imgs, generator_config, norm=yolo.feature_extractor.normalize, jitter=False) ave_precisions = yolo.evaluate(valid_generator, iou_threshold=0.3, score_threshold=0.2) print("ave precisions: ", ave_precisions) print('mAP: {:.4f}'.format( sum(ave_precisions.values()) / len(ave_precisions)))
yolo = YOLO(backend = None, input_size = config['model']['input_size'], labels = config['model']['labels'], max_box_per_image = config['model']['max_box_per_image'], anchors = config['model']['anchors'], load_from_json = model_path, trained_weights = weights_path) yolo.set_batch(config['train']['batch_size']) #TODO insert bactch generator here if os.path.exists(config['valid']['valid_annot_folder']): valid_imgs, valid_labels = parse_annotation(config['valid']['valid_annot_folder'], config['valid']['valid_image_folder'], config['model']['labels']) else: valid_imgs, valid_labels = parse_annotation(config['train']['train_annot_folder'], config['train']['train_image_folder'], config['model']['labels']) valid_generator = yolo.get_generator_from_data(valid_imgs) average_precisions, average_speed = yolo.evaluate(valid_generator) # print evaluation for label, average_precision in average_precisions.items(): print(yolo.get_label(label), '{:.4f}'.format(average_precision)) print('mAP: {:.4f}'.format(sum(average_precisions.values()) / len(average_precisions))) print('speed: {:.4f}'.format(average_speed))
yolo = YOLO(backend=config['model']['backend'], input_size=config['model']['input_size'], labels=config['model']['labels'], max_box_per_image=config['model']['max_box_per_image'], anchors=config['model']['anchors']) yolo.load_weights(config['train']['pretrained_weights']) generator_config = { 'IMAGE_H': config['model']['input_size'], 'IMAGE_W': config['model']['input_size'], 'GRID_H': config['model']['input_size'] // 32, 'GRID_W': config['model']['input_size'] // 32, 'BOX': len(config['model']['anchors']), 'LABELS': config['model']['labels'], 'CLASS': len(config['model']['labels']), 'ANCHORS': config['model']['anchors'], 'BATCH_SIZE': 1, 'TRUE_BOX_BUFFER': config['model']['max_box_per_image'], } val_generator = BatchGenerator( valid_imgs, generator_config, norm=normalize, flipflop=False, shoechanger=False, zeropad=False, ) yolo.evaluate(val_generator)
def _main_(args): config_path = args.conf weights_path = args.weights with open(config_path) as config_buffer: config = json.load(config_buffer) # parse annotations of the validation set, if any, otherwise raise an error if os.path.exists(config['valid']['valid_annot_folder']): valid_imgs, valid_labels = parse_annotation( config['valid']['valid_annot_folder'], config['valid']['valid_image_folder'], config['model']['labels']) else: print('Folder ' + config['valid']['valid_annot_folder'] + 'does not exist') ############################### # Make the model ############################### yolo = YOLO(backend=config['model']['backend'], input_size=config['model']['input_size'], labels=config['model']['labels'], max_box_per_image=config['model']['max_box_per_image'], anchors=config['model']['anchors']) ############################### # Load trained weights ############################### yolo.load_weights(weights_path) ############################################ # Make validation generators ############################################ generator_config = { 'IMAGE_H': yolo.input_size, 'IMAGE_W': yolo.input_size, 'GRID_H': yolo.grid_h, 'GRID_W': yolo.grid_w, 'BOX': yolo.nb_box, 'LABELS': yolo.labels, 'CLASS': len(yolo.labels), 'ANCHORS': yolo.anchors, 'BATCH_SIZE': config['train']['batch_size'], 'TRUE_BOX_BUFFER': yolo.max_box_per_image, } valid_generator = BatchGenerator(valid_imgs, generator_config, norm=yolo.feature_extractor.normalize, jitter=False) ############################################ # Compute mAP on the validation set ############################################ average_precisions = yolo.evaluate(valid_generator) # print evaluation for label, average_precision in average_precisions.items(): print(yolo.labels[label], '{:.4f}'.format(average_precision)) print('mAP: {:.4f}'.format( sum(average_precisions.values()) / len(average_precisions)))