吃吃吃&& 2024-11-22 00:18 采纳率: 0%
浏览 569
已结题

VQAV2现在都是怎么做evaluation的啊

求问VQAV2现在都是怎么做evaluation的啊,EvalAI里好像不能上传了?或者应该怎么在线评?或者离线怎么评啊

  • 写回答

39条回答 默认 最新

  • 问答-莫得感情 2024-11-22 00:20
    关注

    ️题主您好️,目前由我为您解答👇🏼
    🧡参考谷歌智能助手,由吾为汝整理提供🧡

    VQAv2 在 EvalAI 上的评估已经停止了。目前,VQAv2 的评估主要依靠官方提供的评估脚本进行离线评估。

    以下是详细的离线评估步骤及代码示例:

    1. 下载官方评估代码和数据:

      你需要下载 VQAv2 的数据集和评估代码。 官方推荐的方式是使用 tcm-qa 库,它包含了下载和评估的工具。

      pip install tcm-qa
      

      然后使用 download_tcm 命令下载数据集和评估脚本:

      python -m tcm_qa.download_tcm --dataset vqa --split {'val', 'test-dev'}
      

      这会下载 vqa_v2 数据集的 valtest-dev 分割。 你也可以只下载其中一个。

    2. 生成预测结果文件:

      你的模型需要生成一个 JSON 文件,包含对验证集或测试集每个问题的预测答案。 JSON 文件的格式应该如下:

      [
          {"question_id": 1, "answer": "yes"},
          {"question_id": 2, "answer": "blue"},
          {"question_id": 3, "answer": "4"},
          ...
      ]
      

      确保 question_id 与 VQAv2 数据集中的 question_id 对应,answer 是模型预测的答案字符串。

    3. 使用官方脚本进行评估:

      下载完成后,vqa_v2 目录下会有一个 vqa_v2_eval 文件夹,其中包含评估脚本 vqaEval.py。 你可以使用以下命令进行评估:

      python vqa_v2_eval/vqaEval.py --annotation-file vqa_v2/val/vqa_v2_val_annotations.json --result-file <path_to_your_results.json>
      

      <path_to_your_results.json> 替换为你生成的预测结果文件的路径。

      对于 test-dev 集的评估,使用以下命令:

      python vqa_v2_eval/vqaEval.py --annotation-file vqa_v2/test-dev/vqa_v2_test-dev_annotations.json --result-file <path_to_your_results.json> --no-ground-truth
      

      注意 --no-ground-truth 参数,因为 test-dev 集没有公开的 ground truth 答案。

    4. 理解评估结果:

      评估脚本会输出多个指标,包括 overall accuracy 和各个答案类型的准确率。 最重要的指标是 overall accuracy。

    代码示例 (Python):

    import json
    
    #  假设你的模型预测结果存储在 results 列表中
    results = [
        {"question_id": 1, "answer": "yes"},
        {"question_id": 2, "answer": "blue"},
        {"question_id": 3, "answer": "4"},
        # ... more results
    ]
    
    # 保存结果到 JSON 文件
    with open("results.json", "w") as f:
        json.dump(results, f)
    
    
    # 运行评估脚本 (假设你已经下载了数据集和评估脚本)
    import subprocess
    
    command = ["python", "vqa_v2_eval/vqaEval.py", "--annotation-file", "vqa_v2/val/vqa_v2_val_annotations.json", "--result-file", "results.json"]
    
    process = subprocess.Poplex(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    
    print(stdout.decode())  # 打印评估结果
    if stderr:
        print(stderr.decode()) # 打印错误信息
    
    

    总结:

    现在 VQAv2 的评估主要依赖于官方提供的离线评估脚本。 确保你的结果文件格式正确,并使用正确的命令运行评估脚本。 理解评估输出的各项指标,特别是 overall accuracy,可以帮助你评估模型的性能。 通过 tcm-qa 库可以方便的下载数据集和评估脚本。 记住,test-dev 集没有 ground truth,评估结果仅供参考,不能用于模型选择或调参。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 创建了问题 11月22日