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)))
예제 #3
0
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))

예제 #4
0
    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)
예제 #5
0
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)))