|
import argparse |
|
from pycocotools.coco import COCO |
|
from pycocoevalcap.eval import COCOEvalCap |
|
|
|
def parse_args(): |
|
parser = argparse.ArgumentParser(description="GLaMM Inference - Region Captioning") |
|
|
|
parser.add_argument("--annotation_file", |
|
default="./data/region_caption/mdetr_annotations/finetune_refcocog_val_captions.json", type=str, |
|
help="Replace with 'data/visual_genome/test_caption.json' for VG.") |
|
parser.add_argument("--results_dir", default="results", type=str, help="The path to save the results.") |
|
|
|
return parser.parse_args() |
|
|
|
|
|
def main(): |
|
args = parse_args() |
|
|
|
|
|
coco = COCO(args.annotation_file) |
|
coco_result = coco.loadRes(args.results_dir) |
|
|
|
|
|
coco_eval = COCOEvalCap(coco, coco_result) |
|
|
|
|
|
coco_eval.params['image_id'] = coco_result.getImgIds() |
|
coco_eval.evaluate() |
|
|
|
|
|
output_file_path = f"./region_cap_metrics.txt" |
|
f = open(output_file_path, 'w') |
|
for metric, score in coco_eval.eval.items(): |
|
print(f'{metric}: {score:.3f}') |
|
f.write(f"{metric}: {score:.3f}\n") |
|
f.close() |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|