voc_eval.py 1.28 KB
Newer Older
1
2
3
4
5
6
7
8
from argparse import ArgumentParser

import mmcv

from mmdet import datasets
from mmdet.core import eval_map


9
def voc_eval(result_file, dataset, iou_thr=0.5, nproc=4):
10
    det_results = mmcv.load(result_file)
11
    annotations = [dataset.get_ann_info(i) for i in range(len(dataset))]
12
13
14
15
16
17
    if hasattr(dataset, 'year') and dataset.year == 2007:
        dataset_name = 'voc07'
    else:
        dataset_name = dataset.CLASSES
    eval_map(
        det_results,
18
        annotations,
19
20
21
        scale_ranges=None,
        iou_thr=iou_thr,
        dataset=dataset_name,
22
23
        logger='print',
        nproc=nproc)
24
25
26
27
28
29
30
31
32
33
34


def main():
    parser = ArgumentParser(description='VOC Evaluation')
    parser.add_argument('result', help='result file path')
    parser.add_argument('config', help='config file path')
    parser.add_argument(
        '--iou-thr',
        type=float,
        default=0.5,
        help='IoU threshold for evaluation')
35
36
37
38
39
    parser.add_argument(
        '--nproc',
        type=int,
        default=4,
        help='Processes to be used for computing mAP')
40
41
42
    args = parser.parse_args()
    cfg = mmcv.Config.fromfile(args.config)
    test_dataset = mmcv.runner.obj_from_dict(cfg.data.test, datasets)
43
    voc_eval(args.result, test_dataset, args.iou_thr, args.nproc)
44
45
46
47


if __name__ == '__main__':
    main()