Spaces:
Paused
Paused
| # Copyright (c) Meta Platforms, Inc. and affiliates. | |
| # All rights reserved. | |
| # | |
| # This source code is licensed under the license found in the | |
| # LICENSE file in the root directory of this source tree. | |
| from argparse import ArgumentParser | |
| import mmengine | |
| from mmengine.logging import print_log | |
| from mmdet.datasets import CocoDataset | |
| from mmdet.evaluation import CocoOccludedSeparatedMetric | |
| def main(): | |
| parser = ArgumentParser( | |
| description='Compute recall of COCO occluded and separated masks ' | |
| 'presented in paper https://arxiv.org/abs/2210.10046.') | |
| parser.add_argument('result', help='result file (pkl format) path') | |
| parser.add_argument('--out', help='file path to save evaluation results') | |
| parser.add_argument( | |
| '--score-thr', | |
| type=float, | |
| default=0.3, | |
| help='Score threshold for the recall calculation. Defaults to 0.3') | |
| parser.add_argument( | |
| '--iou-thr', | |
| type=float, | |
| default=0.75, | |
| help='IoU threshold for the recall calculation. Defaults to 0.75.') | |
| parser.add_argument( | |
| '--ann', | |
| default='data/coco/annotations/instances_val2017.json', | |
| help='coco annotation file path') | |
| args = parser.parse_args() | |
| results = mmengine.load(args.result) | |
| assert 'masks' in results[0]['pred_instances'], \ | |
| 'The results must be predicted by instance segmentation model.' | |
| metric = CocoOccludedSeparatedMetric( | |
| ann_file=args.ann, iou_thr=args.iou_thr, score_thr=args.score_thr) | |
| metric.dataset_meta = CocoDataset.METAINFO | |
| for datasample in results: | |
| metric.process(data_batch=None, data_samples=[datasample]) | |
| metric_res = metric.compute_metrics(metric.results) | |
| if args.out is not None: | |
| mmengine.dump(metric_res, args.out) | |
| print_log(f'Evaluation results have been saved to {args.out}.') | |
| if __name__ == '__main__': | |
| main() | |